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

import de.ivu.elect.business.email.boundary.EmailLayoutDAO;
import de.ivu.elect.business.email.entity.EmailLayout;
import de.ivu.elect.business.email.entity.EmailLayoutVerwendungType;
import de.ivu.elect.business.email.entity.EmailVorlage;
import de.ivu.elect.business.wahl.boundary.WahlterminDAO;
import de.ivu.elect.business.wahl.control.WahlAttacher;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.Wahltermin;

import javax.inject.Inject;
import java.util.List;

public class EmailVorlageCreate extends AbstractEmailVorlageCreate {

  @Inject
  private transient EmailLayoutDAO emailLayoutDao;

  @Inject
  private transient WahlAttacher wahlAttacher;

  @Inject
  private transient WahlterminDAO wahlterminDAO;

  public EmailVorlageCreate() {
    super();
  }

  public void save(EmailVorlage emailVorlage, Wahl wahl, Wahltermin wahltermin) {
    List<EmailLayout> erzwungeneEmailLayouts = emailLayoutDao.findByVerwendungTyp(EmailLayoutVerwendungType.ERZWUNGEN);
    if (erzwungeneEmailLayouts.size() > 0) {
      emailVorlage.setEmailLayout(erzwungeneEmailLayouts.get(0));
    } else {
      emailVorlage.setEmailLayout(emailLayoutDao.attach(emailVorlage.getEmailLayout()));
    }

    emailVorlage.setWahl(wahlAttacher.attach(wahl));

    if (wahltermin == null && wahl != null) {
      wahltermin = wahl.getWahltermin(); // in WAS ist nicht unbedingt ein Wahltermin ausgewählt
    }
    emailVorlage.setWahltermin(wahlterminDAO.attach(wahltermin));

    super.save(emailVorlage);
  }
}
