
package de.ivu.elect.business.wahl.boundary;

import java.io.Serializable;

import javax.ejb.Stateless;
import javax.inject.Inject;

import de.ivu.elect.business.konfiguration.entity.KonfigurationLoader;
import de.ivu.elect.business.konfiguration.entity.MandantKonfigurationWerte;
import de.ivu.elect.business.mandant.entity.Mandant;
import de.ivu.elect.business.wahl.entity.WahlkonfigurationAnpassbarArt;

/**
 * Hintergrund: Wahlarten, Gebietsarten und Gebietsarteigenschaften waren zunächst kundenspezifisch fest kodiert. Dieses Verhalten soll bei diesen Kunden so bleiben
 */
@Stateless
public class WahlkonfigurationAnpassbar implements Serializable {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient KonfigurationLoader konfigurationLoader;

  public WahlkonfigurationAnpassbar() {
    super();
  }

  public boolean isWahlkonfigurationAnpassbar(Mandant mandant) {
    return getWahlkonfigurationAnpassbarArt(mandant).isAnpassbar();
  }

  public boolean isWahlkonfigurationBeimStartAktualisieren(Mandant mandant) {
    return getWahlkonfigurationAnpassbarArt(mandant).isBeimStartAktualisieren();
  }

  protected WahlkonfigurationAnpassbarArt getWahlkonfigurationAnpassbarArt(Mandant mandant) {
    WahlkonfigurationAnpassbarArt wahlkonfigurationAnpassbarArt = konfigurationLoader.resolveEnumValue(mandant, MandantKonfigurationWerte.WAHLKONFIGURATION_ANPASSBAR,
        WahlkonfigurationAnpassbarArt.class);

    if (wahlkonfigurationAnpassbarArt == null) { // DD, DESTATIS, MUC
      return WahlkonfigurationAnpassbarArt.NICHT_ANPASSBAR_BEIM_START_NICHT_AKTUALISIEREN;
    }

    return wahlkonfigurationAnpassbarArt;
  }
}
