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

import javax.inject.Inject;

import de.ivu.elect.business.kandidatur.boundary.KandidaturZuTestzweckenZulasser;
import de.ivu.elect.business.kandidatur.entity.Listenkandidatur;
import de.ivu.elect.business.wahlvorschlag.boundary.ListeConversationSelect;
import de.ivu.elect.presentation.View;
import de.ivu.elect.presentation.kandidatur.ListenkandidaturSearchView;
import de.ivu.elect.presentation.wahlvorschlag.menu.AbstractWahlvorschlagZuTestzweckenZulassenMenuItemEntry;

public class ListenkandidaturZuTestzweckenZulassenMenuItemEntry extends AbstractWahlvorschlagZuTestzweckenZulassenMenuItemEntry implements KandidaturZulassungspruefungMenuItemEntry<Listenkandidatur> {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient ListeConversationSelect listeSelect;

  @Inject
  @View
  private transient ListenkandidaturSearchView listenkandidaturSearchView;

  @Inject
  private transient KandidaturZuTestzweckenZulasser kandidaturZuTestzweckenZulasser;

  public ListenkandidaturZuTestzweckenZulassenMenuItemEntry() {
    super();
  }

  @Override
  public boolean isDisabledInternal() {
    return super.isDisabledInternal() || !listeSelect.isSelected();
  }

  @Override
  protected String getSearchViewId() {
    return ListenkandidaturSearchView.VIEW_ID;
  }

  @Override
  protected void doActionInternal() {
    try {
      for (Listenkandidatur listenkandidatur : listenkandidaturSearchView.getSearchResult()) {
        kandidaturZuTestzweckenZulasser.lasseListenkandidaturZu(listenkandidatur);
      }
    } finally {
      listenkandidaturSearchView.resetSearchResult(); // Neu laden, um geänderte Daten anzuzeigen
    }
  }

  @Override
  protected String getLabel() {
    return getMessage(getLabelKey(), "Ungeprüfte Listenandidaturen zulassen (NUR ZUR ENTWICKLUNG)");
  }
}
