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

import javax.inject.Inject;

import de.ivu.elect.business.benutzerverwaltung.entity.BenutzerEinsatzort;
import de.ivu.elect.business.benutzerverwaltung.entity.NonUniqueBenutzerEinsatzortUKException;
import de.ivu.elect.business.benutzerverwaltung.entity.UniqueBenutzerEinsatzortUKValidator;
import de.ivu.elect.business.mandant.boundary.MandantDAO;

/**
 *  on 07.02.2017.
 */
public class BenutzerEinsatzortCreate extends AbstractBenutzerEinsatzortCreate {

  @Inject
  private transient UniqueBenutzerEinsatzortUKValidator uniqueBenutzerEinsatzortUKValidator;

  @Inject
  private transient MandantDAO mandantDAO;

  @Override
  public void save(BenutzerEinsatzort entity) {
    assertUniqueBenutzerEinsatzortTk(entity);
    entity.setMandant(mandantDAO.attach(entity.getMandant()));
    super.save(entity);
  }

  private void assertUniqueBenutzerEinsatzortTk(BenutzerEinsatzort entity) {
    if (!isUniqueBenutzerEinsatzortUK(entity)) {
      throw new NonUniqueBenutzerEinsatzortUKException(entity.getBenutzerEinsatzortUK());
    }
  }

  protected boolean isUniqueBenutzerEinsatzortUK(BenutzerEinsatzort entity) {
    return uniqueBenutzerEinsatzortUKValidator.isUniqueBenutzerEinsatzortUK(entity);
  }
}
