
package de.ivu.elect.presentation.dokumente;

import java.io.Serializable;

import javax.inject.Inject;

import de.ivu.elect.business.dokumente.control.ElectDokumentContext;
import de.ivu.elect.business.security.control.ElectCommonPrincipal;
import de.ivu.elect.business.wahl.boundary.WahlSessionSelector;
import de.ivu.elect.business.wahl.boundary.WahlterminSessionSelect;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.Wahltermin;
import de.ivu.elect.jee.faces.Messages;

public class ElectDokumentContextGenerator implements Serializable {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient Messages messages;

  @Inject
  private transient ElectCommonPrincipal principal;

  @Inject
  private transient WahlSessionSelector wahlSelect;

  @Inject
  private transient WahlterminSessionSelect wahlterminSelect;

  public ElectDokumentContextGenerator() {
    super();
  }

  public ElectDokumentContext createElectDokumentContext() {
    return createElectDokumentContext(wahlterminSelect.getEntity(), wahlSelect.getEntity());
  }

  public ElectDokumentContext createElectDokumentContext(Wahltermin wahltermin) {
    return createElectDokumentContext(wahltermin, null);
  }

  public ElectDokumentContext createElectDokumentContext(Wahl wahl) {
    return createElectDokumentContext(wahl.getWahltermin(), wahl);
  }

  public ElectDokumentContext createElectDokumentContext(Wahltermin wahltermin, Wahl wahl) {
    var electDokumentContext = new ElectDokumentContext(principal.getLogin(), messages, wahltermin, wahl);
    electDokumentContext.getNow(); // ELECTVAPP-2034 Zeit fixieren
    return electDokumentContext;
  }
}
