
package de.ivu.elect.presentation.kandidatur;

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

import de.ivu.elect.business.wahlvorschlag.entity.Direktkandidat;
import de.ivu.elect.presentation.kandidatur.form.DirektkandidaturViewFormBuilder;
import de.ivu.elect.presentation.wahlvorschlag.WahlvorschlagGruppeFinder;

public class DirektkandidaturCreateViewHelper extends AbstractDirektkandidaturCreateViewHelper {

  private static final long serialVersionUID = 1L;

  @Inject
  protected transient WahlvorschlagGruppeFinder direktkandidatGruppeFinder;

  @Inject
  protected transient DirektkandidaturViewFormBuilder direktkandidaturViewFormBuilder;

  public DirektkandidaturCreateViewHelper() {
    super();
  }

  @Override
  @Nullable
  public String checkPreCondition() {
    if (isGebietSelected() && direktkandidatGruppeFinder.findSupportedPolitischeGruppen(getSelectedGebiet(), new Direktkandidat()).isEmpty()) {
      addWarningMessage("direktkandidatur.create.keine.gruppe.message", getSelectedGebietNameFormatted());
    }

    return super.checkPreCondition();
  }

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

  @Override
  public String getParentViewId() {
    return DirektkandidaturCreateView.PARENT_VIEW_ID;
  }

  @Override
  protected DirektkandidaturViewFormBuilder getViewFormBuilder() {
    return direktkandidaturViewFormBuilder;
  }

  @Override
  public String getEntityEinzahlMessage() {
    return getViewFormBuilder().getEntityEinzahlMessage(getSelectedGebiet());
  }
}
