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

import java.io.Serializable;

import javax.inject.Inject;

import org.apache.commons.lang3.StringUtils;

import de.ivu.elect.business.konfiguration.entity.CustomParameterKategorie;
import de.ivu.elect.business.konfiguration.entity.Konfiguration;
import de.ivu.elect.business.konfiguration.entity.KonfigurationLoader;
import de.ivu.elect.business.konfiguration.entity.MandantKonfigurationWerte;
import de.ivu.elect.business.wahl.boundary.WahlParameterDAO;
import de.ivu.elect.business.wahl.entity.WahlOderWahltermin;
import de.ivu.elect.business.wahl.entity.WahlParameter;
import de.ivu.elect.business.wahl.entity.WahlParameterLoader;
import de.ivu.elect.business.wahl.entity.WahlParameterWerte;

public class DokumentPlatzhalterAnWahlOderWahlterminUebernehmen implements Serializable {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient KonfigurationLoader konfigurationLoader;

  @Inject
  private transient WahlParameterLoader wahlParameterLoader;

  @Inject
  private transient WahlParameterDAO wahlParameterDAO;

  public void uebernehmeDokumentplatzhalterDefaults(WahlOderWahltermin wahlOderWahltermin) {
    wahlParameterDAO.flush();
    for (WahlParameterWerte value : WahlParameterWerte.values()) {
      if (CustomParameterKategorie.DOKUMENTPLATZHALTER.equals(value.getKategorie())) {
        WahlParameter parameterWahl = wahlParameterLoader.getParameter(wahlOderWahltermin, value);
        if (parameterWahl != null && StringUtils.isBlank(parameterWahl.getWert())) {
          MandantKonfigurationWerte mandantKonfigurationWerte = value.getKorresponierendenMandantParameter();
          if (mandantKonfigurationWerte != null) {
            Konfiguration parameterMandat = konfigurationLoader.getParameter(wahlOderWahltermin.getMandant(), mandantKonfigurationWerte);
            if (parameterMandat != null && StringUtils.isNotBlank(parameterMandat.getWert())) {
              parameterWahl.setWert(parameterMandat.getWert());
            }
          }
        }
      }
    }
  }
}
