
package de.ivu.elect.presentation.personenpruefung;

import javax.inject.Inject;

import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.business.personenpruefung.entity.PersonenKonfliktArt;
import de.ivu.elect.jee.presentation.dynamicform.AdvancedDynaFormModel;
import de.ivu.elect.jee.presentation.dynamicform.FormBuilder;
import de.ivu.elect.presentation.person.form.PersonendatenViewFormBuilder;

public abstract class AbstractPersonenKonfliktKontoverbindungKontodatenUngueltigAufloesenView extends AbstractPersonenKonfliktAufloesenView {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "personenKonfliktKontoverbindungKontodatenUngueltigAufloesenView";

  public static final String VIEW_ID = "/personenpruefung/personen-konflikt-kontoverbindung-kontodaten-ungueltig-aufloesen.xhtml";

  @Inject
  private transient PersonendatenViewFormBuilder personendatenViewFormBuilder;

  private AdvancedDynaFormModel model;

  protected AbstractPersonenKonfliktKontoverbindungKontodatenUngueltigAufloesenView() {
    super();
  }

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

  @Override
  public PersonenKonfliktArt getExpectedKonfliktArt() {
    return PersonenKonfliktArt.KONTOVERBINDUNG_KONTODATEN_UNGUELTIG;
  }

  public String getPersonendatenHeader() {
    return konfliktMeta.getPersonendatenEinzahlMessage();
  }

  public AdvancedDynaFormModel getPersonendatenModel() {
    if (model == null) {
      FormBuilder formBuilder = new FormBuilder();

      Personendaten personendaten = getPersonendaten();

      personendatenViewFormBuilder.addBasicPersonendatenProperties(formBuilder, personendaten, true);

      addEinsatzbereitschaftProperties(formBuilder, personendaten, true);

      personendatenViewFormBuilder.addDefaultErreichbarkeitsdatenProperties(formBuilder, personendaten, true);

      personendatenViewFormBuilder.addDefaultKontoverbindungProperties(formBuilder, personendaten, personendaten.getKontoverbindung(), false);

      model = formBuilder.createModel();
    }

    return model;
  }

  @Override
  public String getMarkPersonendatenValidMsgKey() {
    return "personen.konflikt.aufloesen.action.personendaten.kontodaten.commit";
  }

  @Override
  public boolean isBtnMarkPersonendatenInvalidRendered() {
    return false;
  }

  protected abstract void addEinsatzbereitschaftProperties(FormBuilder formBuilder, Personendaten personendaten, boolean readonly);
}
