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

import javax.enterprise.inject.Specializes;
import javax.inject.Inject;

import de.ivu.elect.business.gebietsbaum.boundary.WahldurchfuehrungsgebietDAO;
import de.ivu.elect.business.gebietsbaum.boundary.WasGebietEditHelper;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gebietsbaum.entity.Wahldurchfuehrungsgebiet;
import de.ivu.elect.business.wahl.entity.Wahl;

@Specializes
public class NlWasGebietCreate extends WasGebietCreate {

  @Inject
  private transient WahldurchfuehrungsgebietDAO wahldurchfuehrungsgebietDAO;

  @Inject
  private transient WasGebietEditHelper wasGebietEditHelper;

  @Override
  public void saveFromView(Gebiet entity) {
    super.saveFromView(entity);
    Wahl wahl = entity.getWahl();
    if (wahl != null && wahl.isPersistent()) {
      dao.flush();
      Wahldurchfuehrungsgebiet wahldurchfuehrungsgebiet = entity.castTo(Wahldurchfuehrungsgebiet.class).getEntity();
      AWerteAktualisierer aWerteAktualisierer = new AWerteAktualisierer(
          wahl,
          wahldurchfuehrungsgebietDAO,
          wasGebietEditHelper.getUmgangHinterlegteAWerte(wahl));

      aWerteAktualisierer.aktualisiereAWerteFuerUebergeordneteGebieteVon(wahldurchfuehrungsgebiet);
    }
  }

}
