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

import static java.util.Arrays.asList;

import java.util.Collection;

import javax.faces.event.ActionEvent;
import javax.inject.Inject;

import de.ivu.elect.business.WusFeaturesAktiviert;
import de.ivu.elect.business.person.entity.CorePersonendatenArt;
import de.ivu.elect.business.person.entity.PersonendatenArt;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.business.wahlvorschlag.boundary.WahlvorschlagConversationSelect;
import de.ivu.elect.business.wahlvorschlagsperson.entity.WahlvorschlagsPersonMeta;
import de.ivu.elect.jee.entity.Meta;
import de.ivu.elect.presentation.wahlvorschlagsperson.WahlvorschlagsPersonSearchView;

public class WahlvorschlagsPersonTeilnehmerEinladenMenuItemEntry extends AbstractTeilnehmerEinladenMenuItemEntry {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient WusFeaturesAktiviert wusFeaturesAktiviert;

  @Inject
  private transient WahlvorschlagConversationSelect wahlvorschlagSelect;

  @Inject
  private transient WahlvorschlagsPersonMeta wahlvorschlagsPersonMeta;

  public WahlvorschlagsPersonTeilnehmerEinladenMenuItemEntry() {
    super();
  }

  @Override
  public boolean isDisabledInternal() {
    return super.isDisabledInternal() || wusFeaturesAktiviert.isNurWas();
  }

  @Override
  protected UseCasePermission getSearchPermisson() {
    return UseCasePermission.WAHLVORSCHLAGS_PERSON_SEARCH_ALL; // ELECT-10614
  }

  @Override
  public Collection<PersonendatenArt> getPersonendatenArten() {
    return asList(CorePersonendatenArt.WAHLVORSCHLAGS_PERSON);
  }

  @Override
  protected Meta getMeta() {
    return wahlvorschlagsPersonMeta;
  }

  @Override
  protected String getViewId() {
    return WahlvorschlagsPersonSearchView.VIEW_ID;
  }

  @Override
  public void processAction(ActionEvent event) {
    // NOTE, dass bei Aufruf der Seite über diese Klasse, alle Wahlvorschlagspersonen angezeigt werden sollen, bei einem
    // ausgewählten Wahlvorschlag, aber nur dessen Wahlvorschlagspersonen angezeigt werden!
    wahlvorschlagSelect.clearEntity();

    super.processAction(event);
  }
}
