
package de.ivu.elect.presentation.wahlrechtspruefung;

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

import de.ivu.elect.business.wahlrechtspruefung.boundary.WusPruefkriteriumBoundaryCreate;
import de.ivu.elect.business.wahlrechtspruefung.entity.Pruefkriterium;
import de.ivu.elect.jee.faces.PreConditionCheck;
import de.ivu.elect.jee.presentation.dynamicform.FormBuilder;
import de.ivu.elect.presentation.hilfe.OnlineHilfeId;
import de.ivu.elect.presentation.wahlrechtspruefung.form.PruefkriteriumViewFormBuilder;

@OnlineHilfeId(value = "303", mehrfachVergebenOk = true)
@Named(AbstractPruefkriteriumCreateNoScopeView.COMPONENT_NAME)
public class PruefkriteriumCreateView extends AbstractPruefkriteriumCreateView {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient PruefkriteriumViewFormBuilder viewFormBuilder;

  @Inject
  private transient WusPruefkriteriumBoundaryCreate create;

  public PruefkriteriumCreateView() {
    super();
  }

  @Nullable
  @PreConditionCheck
  public String checkCondition() {
    if (!isWahlSelected()) {
      addErrorMessage("wahl.selected.missing");

      return getStartViewId();
    }

    return null;
  }

  @Override
  @PostConstruct
  public void init() {
    super.init();

    var wahl = getSelectedWahl();

    var pruefkriterium = getEntity();
    pruefkriterium.setWahl(wahl);
    pruefkriterium.setPosition(create.bestimmeLetzteVergebenePosition(wahl) + 1L);
  }

  @Override
  public void addProperties(FormBuilder formBuilder, Pruefkriterium pruefkriterium) {
    viewFormBuilder.buildModel(formBuilder, pruefkriterium);
  }
}
