
package de.ivu.elect.presentation.wahlrechtspruefung.form;

import java.io.Serializable;

import javax.inject.Inject;

import de.ivu.elect.business.wahlrechtspruefung.entity.Pruefkriterium;
import de.ivu.elect.business.wahlrechtspruefung.entity.PruefkriteriumProperties;
import de.ivu.elect.business.wahlrechtspruefung.entity.PruefkriteriumProperties.PruefkriteriumBezugMitLeererAuswahlProperty;
import de.ivu.elect.jee.presentation.dynamicform.FormBuilder;
import de.ivu.elect.jee.presentation.dynamicform.PropertyType;

public class PruefkriteriumPropertiesModel implements Serializable {

  private static final long serialVersionUID = 1L;

  @Inject
  private PruefkriteriumUniqueUKFacesValidator pruefkriteriumUniqueTKFacesValidator;

  public PruefkriteriumPropertiesModel() {
    super();
  }

  public void buildModel(FormBuilder formBuilder, Pruefkriterium pruefkriterium, boolean mitBezugAuswahl) {
    PruefkriteriumProperties pruefkriteriumProperties = pruefkriterium.getProperties();

    formBuilder.addProperty(pruefkriteriumProperties.getPositionProperty()).withValidatorAndPk(pruefkriteriumUniqueTKFacesValidator,
        pruefkriterium.getPk());

    if (mitBezugAuswahl) {
      // ELECT-3115
      formBuilder.addProperty(new PruefkriteriumBezugMitLeererAuswahlProperty(pruefkriterium)).required();
    } else {
      formBuilder.addProperty(pruefkriteriumProperties.getPruefkriteriumBezugProperty()).readonly(); // Nachträglich nicht mehr änderbar, da alle Wahlrechtsprüfungen bereits angelegt sind...
    }

    formBuilder.addProperty(pruefkriteriumProperties.getKategorieProperty());
    formBuilder.addProperty(pruefkriteriumProperties.getUnterkategorieProperty());
    formBuilder.addProperty(pruefkriteriumProperties.getKriteriumtextProperty());
    formBuilder.addProperty(pruefkriteriumProperties.getTextFuerProtokollErfuelltProperty()).withType(PropertyType.INPUT_TEXTAREA);
    formBuilder.addProperty(pruefkriteriumProperties.getTextFuerProtokollNichtErfuelltProperty()).withType(PropertyType.INPUT_TEXTAREA);
    formBuilder.addProperty(pruefkriteriumProperties.getTextFuerProtokollFristProperty()).withType(PropertyType.INPUT_TEXTAREA);
    formBuilder.addProperty(pruefkriteriumProperties.getHeilungsfaehigProperty());
    formBuilder.addProperty(pruefkriteriumProperties.getFristInTagenBisZurWahlProperty());
    formBuilder.addProperty(pruefkriteriumProperties.getKannIrrelevantSeinProperty());
    formBuilder.addProperty(pruefkriteriumProperties.getTeilDerSofortpruefungProperty());
    formBuilder.addProperty(pruefkriteriumProperties.getWahlrechtlichRelevantProperty());

  }

}
