
package de.ivu.elect.presentation.wahlvorschlag;

import javax.inject.Inject;
import javax.inject.Named;

import de.ivu.elect.business.wahlvorschlag.entity.Listenverbindung;
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.wahlvorschlag.form.ListenverbindungViewFormBuilder;

@OnlineHilfeId("264")
@Named(ListenverbindungEditView.COMPONENT_NAME)
public class ListenverbindungEditView extends AbstractListenverbindungEditView {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient ListenverbindungViewFormBuilder listenverbindungViewFormBuilder;

  public ListenverbindungEditView() {
    super();
  }

  @Override
  protected String getParentViewId() {
    return ListeSearchView.VIEW_ID;
  }

  @Override
  protected boolean isGebietBearbeitenRechtPruefen() {
    return true;
  }

  @Override
  @PreConditionCheck
  public String checkPreCondition() {
    if (isListenverbindungSelected() && isListengebietSelected()) {
      return null;
    }

    return cancel();
  }

  private boolean isListenverbindungSelected() {
    return isEntitySet();
  }

  private boolean isListengebietSelected() {
    return isGebietSelected() && getSelectedGebiet().isListenwahlgebiet();
  }

  public String getListenverbindungBezeichnung() {
    return getEntity().getBezeichnung();
  }

  public String getGebietName() {
    return getSelectedGebietNameFormatted();
  }

  @Override
  public void addProperties(FormBuilder formBuilder, Listenverbindung listenverbindung) {
    listenverbindungViewFormBuilder.addProperties(formBuilder, listenverbindung, getSelectedGebiet());
  }
}
