
package de.ivu.elect.presentation.wahl;

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

import de.ivu.elect.business.wahl.boundary.WahlExtendedDAO;
import de.ivu.elect.business.wahl.boundary.WahlSessionSelect;
import de.ivu.elect.business.wahl.boundary.WahlterminSessionSelect;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.Wahltermin;

/**
 *  on 26.07.2016.
 */
@Specializes
public class CommonWahlEditView extends WahlEditView {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient WahlterminSessionSelect wahlterminSessionSelect;

  @Inject
  private transient WahlSessionSelect wahlSessionSelect;

  @Inject
  private transient WahlExtendedDAO wahlExtendedDAO;

  public CommonWahlEditView() {
    super();
  }

  @Override
  protected void preSave(Wahl wahl) {
    super.preSave(wahl);
//    if (Boolean.TRUE.equals(wahl.getGesperrt()) && equalsWahlSessionSelect(getEntity())) {
//      // ELECT-3281 (Gesperrte Wahl lässt sich noch bearbeiten)
//      resetWahlSessionSelect();
//    }
  }

  @Override
  protected void preDelete() {
    if (equalsWahlSessionSelect(getEntity())) {
      resetWahlSessionSelect();
      wahlExtendedDAO.clear(); // ELECT-8936
    }
  }

  private boolean equalsWahlSessionSelect(Wahl wahl) {
    return wahlSessionSelect.isSelected() && wahlSessionSelect.getEntity().equals(wahl);
  }

  private void resetWahlSessionSelect() {
    wahlSessionSelect.setEntity((Wahl) null);
    wahlterminSessionSelect.setEntity((Wahltermin) null);
  }
}
