
package de.ivu.elect.presentation.wahlvorschlagsperson;

import javax.annotation.Nullable;
import javax.inject.Inject;

import de.ivu.elect.business.wahlvorschlag.boundary.WahlvorschlagConversationSelect;
import de.ivu.elect.business.wahlvorschlag.boundary.WahlvorschlagNichtAusgewaehltException;
import de.ivu.elect.business.wahlvorschlag.entity.Wahlvorschlag;
import de.ivu.elect.business.wahlvorschlagsperson.entity.WahlvorschlagsPerson;
import de.ivu.elect.business.wahlvorschlagsperson.entity.WahlvorschlagsPersonTyp;
import de.ivu.elect.presentation.personenregister.AbstractPersonenregisterPersonendatenSelectionViewCreateViewHelper;

public abstract class AbstractWahlvorschlagspersonCreateViewHelper extends AbstractPersonenregisterPersonendatenSelectionViewCreateViewHelper<WahlvorschlagsPerson> {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient WahlvorschlagConversationSelect wahlvorschlagConversationSelect;

  public AbstractWahlvorschlagspersonCreateViewHelper() {
    super();
  }

  public abstract WahlvorschlagsPersonTyp getInitialierWahlvorschlagsPersonTyp();

  @Override
  @Nullable
  public String checkPreCondition() {
    if (isWahlvorschlagSelected()) {
      return null;
    }

    throw new WahlvorschlagNichtAusgewaehltException();
  }

  @Override
  public String getParentViewId() {
    return AbstractWahlvorschlagsPersonCreateNoScopeView.VIEW_ID;
  }

  private boolean isWahlvorschlagSelected() {
    return wahlvorschlagConversationSelect.isSelected();
  }

  private Wahlvorschlag getSelectedWahlvorschlag() {
    return wahlvorschlagConversationSelect.getEntity();
  }

  public String getWahlvorschlagKennwort() {
    return getSelectedWahlvorschlag().getKennwort();
  }
}
