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

import java.math.BigDecimal;
import java.util.Currency;

import javax.enterprise.event.Observes;
import javax.inject.Inject;

import de.ivu.elect.business.entschaedigung.entity.EntschaedigungsartTemplate;
import de.ivu.elect.business.wahl.boundary.WahlCreateEvent;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahlausschuss.boundary.WahlausschussEntschaedigungDAO;
import de.ivu.elect.business.wahlausschuss.entity.WahlausschussEntschaedigung;
import de.ivu.elect.business.wahlausschuss.entity.Wahlausschussrolle;

/**
 * @deprecated ELECTMUC-1268, aber aufgrund von ELECTMUC-1285 weiterhin verwendet!
 * @see CoreEntschaedigungsartCreator
 */
@Deprecated
public class WahlausschussEntschaedigungAnlegenWahlCreateEventListener {

  private static final BigDecimal DEFAULT_BETRAG = new BigDecimal("0.00");

  private static final Currency DEFAULT_WAEHRUNG = EntschaedigungsartTemplate.DEFAULT_WAEHRUNG;

  @Inject
  private WahlausschussEntschaedigungCreate wahlausschussEntschaedigungCreate;

  @Inject
  private WahlausschussEntschaedigungDAO wahlausschussEntschaedigungDAO;

  public WahlausschussEntschaedigungAnlegenWahlCreateEventListener() {
    super();
  }

  public void onWahlCreate(@Observes WahlCreateEvent wahlCreateEvent) {
    Wahl wahl = wahlCreateEvent.getEntity();

    for (Wahlausschussrolle wahlausschussrolle : Wahlausschussrolle.values()) {
      WahlausschussEntschaedigung wahlausschussEntschaedigung = new WahlausschussEntschaedigung();
      wahlausschussEntschaedigung.setWahl(wahl);
      wahlausschussEntschaedigung.setWahlausschussrolle(wahlausschussrolle);
      wahlausschussEntschaedigung.setWaehrungAlsIsoCode(DEFAULT_WAEHRUNG.getCurrencyCode());
      wahlausschussEntschaedigung.setBetrag(DEFAULT_BETRAG);
      wahlausschussEntschaedigungCreate.save(wahlausschussEntschaedigung);
    }

    wahlausschussEntschaedigungDAO.flush(); // damit neu angelegte Entitäten für anschließende Importe über Finder gefunden werden
  }
}
