package de.ivu.elect.business.stimmeingabe.control;

import java.io.Serializable;

import javax.inject.Inject;

import de.ivu.elect.business.gebietsbaum.entity.Wahldurchfuehrungsgebiet;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.presentation.gebietsbaum.GebietNummerFormatter;

public class GebietAusbleibendToggle implements Serializable {

  private static final long serialVersionUID = 1L;

  @Inject
  protected transient Messages messages;

  @Inject
  protected transient GebietNummerFormatter gebietNummerFormatter;

  public void setzeGebietAusbleibend(Wahldurchfuehrungsgebiet wahldurchfuehrungsgebiet) {
    if (wahldurchfuehrungsgebiet.getErfasstIn()==null) {
      wahldurchfuehrungsgebiet.setTextFuerPraesentation(getGebietstext(wahldurchfuehrungsgebiet, "gebiet.als.ausbleibend.markiert.text.praesentation"));
    } else {
      wahldurchfuehrungsgebiet.setTextFuerPraesentation(getGebietstext(wahldurchfuehrungsgebiet, wahldurchfuehrungsgebiet.getErfasstIn(), "gebiet.als" +
          ".ausbleibend.markiert.erfassung.anderes.gebiet" +
          ".text.praesentation"));
    }
  }

  protected String getGebietstext(Wahldurchfuehrungsgebiet wahldurchfuehrungsgebiet, String msgKey) {
    return messages
        .getMessageForMessageKey(msgKey, gebietNummerFormatter.getNummer(wahldurchfuehrungsgebiet),
            wahldurchfuehrungsgebiet.getGebietsart().getTitel(), gebietNummerFormatter.getName(wahldurchfuehrungsgebiet),
            wahldurchfuehrungsgebiet.getKuerzel(), gebietNummerFormatter.getDarstellung(wahldurchfuehrungsgebiet));
  }

  protected String getGebietstext(Wahldurchfuehrungsgebiet wahldurchfuehrungsgebiet, Wahldurchfuehrungsgebiet erfasstIn, String msgKey) {
    return messages
        .getMessageForMessageKey(msgKey, gebietNummerFormatter.getNummer(wahldurchfuehrungsgebiet),
            wahldurchfuehrungsgebiet.getGebietsart().getTitel(), gebietNummerFormatter.getName(wahldurchfuehrungsgebiet),
            wahldurchfuehrungsgebiet.getKuerzel(), gebietNummerFormatter.getDarstellung(wahldurchfuehrungsgebiet),
            gebietNummerFormatter.getNummer(erfasstIn),
            erfasstIn.getGebietsart().getTitel(), gebietNummerFormatter.getName(erfasstIn),
            erfasstIn.getKuerzel(), gebietNummerFormatter.getDarstellung(erfasstIn)
            );
  }

  public void setzeGebietNichtMehrAusbleibend(Wahldurchfuehrungsgebiet wahldurchfuehrungsgebiet) {
    wahldurchfuehrungsgebiet.setTextFuerPraesentation(null);
  }

}
