
package de.ivu.elect.presentation.staat;

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

import de.ivu.elect.business.staat.entity.StaatenGruppe;
import de.ivu.elect.business.wahl.entity.Wahl;
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.staat.form.StaatenGruppeViewFormBuilder;

@OnlineHilfeId("319")
@Named(StaatenGruppeCreateView.COMPONENT_NAME)
public class StaatenGruppeCreateView extends AbstractStaatenGruppeCreateView {

  private static final long serialVersionUID = 1L;

  @Inject
  private StaatenGruppeViewFormBuilder staatenGruppeViewFormBuilder;

  public StaatenGruppeCreateView() {
    super();
  }

  @PreConditionCheck
  public String checkPreCondition() {
    if (isWahlSelected() || isWahlterminSelected()) {
      return null;
    }

    return getStartViewId();
  }

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

    StaatenGruppe staatenGruppe = getEntity();

    if (isWahlSelected()) {
      Wahl wahl = getSelectedWahl();

      staatenGruppe.setWahl(wahl);
      staatenGruppe.setWahltermin(wahl.getWahltermin());
    } else {
      staatenGruppe.setWahltermin(getSelectedWahltermin());
    }
  }

  @Override
  public void addProperties(FormBuilder formBuilder, StaatenGruppe staatenGruppe) {
    staatenGruppeViewFormBuilder.addProperties(formBuilder, staatenGruppe);
  }
}
