package de.ivu.elect.presentation.wahlvorschlag.action;

import javax.annotation.Nonnull;
import javax.enterprise.inject.Specializes;
import javax.inject.Inject;

import de.ivu.elect.business.wahl.boundary.WahlSessionSelect;
import de.ivu.elect.business.wahl.entity.NlWahlart;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahlvorschlag.entity.Liste;

@Specializes
public class NlListeGruppeWechselnAction extends ListeGruppeWechselnAction {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient NlListeActionDisabled nlListeActionDisabled;

  @Inject
  private transient WahlSessionSelect wahlSessionSelect;

  @Override
  public boolean isDisabledInternal(@Nonnull Liste liste) {
    return nlListeActionDisabled.isDisabled(liste) || super.isDisabledInternal(liste) || !isWahlartErlaubtGruppeWechsel() /*ELECT-14548*/;
  }

  private boolean isWahlartErlaubtGruppeWechsel() {
    Wahl wahl = wahlSessionSelect.getEntity();
    if (wahl == null) {
      return false;
    }

    return NlWahlart.valueOf(wahl).isGruppenAendernErlaubt();
  }
}
