
package de.ivu.elect.presentation.veranstaltung.dokumente;

import javax.inject.Inject;
import javax.inject.Named;

import de.ivu.elect.presentation.hilfe.OnlineHilfeId;
import org.apache.deltaspike.core.api.scope.ConversationGroup;
import org.apache.deltaspike.core.api.scope.GroupedConversationScoped;

import de.ivu.elect.business.dokumente.boundary.AbstractDokumentGenerator;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.business.veranstaltung.boundary.VeranstaltungenAlsListeDokumentGenerator;
import de.ivu.elect.business.veranstaltung.control.VeranstaltungenAlsListeDokumentContext;
import de.ivu.elect.jee.presentation.redirect.Redirect;
import de.ivu.elect.presentation.View;
import de.ivu.elect.presentation.dokumente.AbstractDokumentErzeugenView;
import de.ivu.elect.presentation.dokumente.ElectDokumentContextGenerator;


import static java.util.Arrays.asList;

@OnlineHilfeId("161")
@GroupedConversationScoped
@ConversationGroup(VeranstaltungenAlsListeDokumentErzeugenView.class)
@Named(VeranstaltungenAlsListeDokumentErzeugenView.COMPONENT_NAME)
@View(viewId = VeranstaltungenAlsListeDokumentErzeugenView.VIEW_ID, useCase = UseCasePermission.VERANSTALTUNG_DOKUMENT_ERZEUGEN)
public class VeranstaltungenAlsListeDokumentErzeugenView extends AbstractDokumentErzeugenView</** Deaktiviert wegen Weld-Bug List<Veranstaltung>*/ Object, VeranstaltungenAlsListeDokumentContext> {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "veranstaltungenAlsListeDokumentErzeugenView";

  public static final String VIEW_ID = "/veranstaltung/veranstaltungen-als-liste-dokument-erzeugen-view.xhtml";

  @Inject
  protected transient VeranstaltungenAlsListeDokumentGenerator dokumentGenerator;

  @Inject
  ElectDokumentContextGenerator electDokumentContextGenerator;

  private Object teilnahmen;

  @Override
  public String getViewId() {
    return VIEW_ID;
  }

  @Redirect
  public String initVeranstaltungen(Object veranstaltung) {
    return super.init(asList(veranstaltung));
  }

  @Override
  protected VeranstaltungenAlsListeDokumentContext getContext() {
    return new VeranstaltungenAlsListeDokumentContext(electDokumentContextGenerator.createElectDokumentContext());
  }

  @Override
  protected AbstractDokumentGenerator getDokumentGenerator() {
    return dokumentGenerator;
  }

  @Override
  protected UseCasePermission getRequiredPermission() {
    return UseCasePermission.VERANSTALTUNG_DOKUMENT_ERZEUGEN;
  }

}
