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

import javax.ejb.Stateless;
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;

/**
 *  on 07.02.2017.
 */
@Stateless
public class BenutzerEinsatzortEdit extends AbstractBenutzerEinsatzortEdit {

  @Inject
  private UniqueBenutzerEinsatzortUKValidator uniqueBenutzerEinsatzortUkValidator;

  @Override
  protected boolean usesMixedTransactionalContexts() {
    // ELECT-945, Validator verwendet 'einfaches' DAO!
    return true;
  }

  @Override
  protected void validate(BenutzerEinsatzort benutzerEinsatzort) {
    assertUniqueBenutzerTk(benutzerEinsatzort);
  }

  protected void assertUniqueBenutzerTk(BenutzerEinsatzort benutzerEinsatzort) {
    if (!isBenutzerEinsatzortTkUnique(benutzerEinsatzort)) {
      throw new NonUniqueBenutzerEinsatzortUKException(benutzerEinsatzort.getUk());
    }
  }

  protected boolean isBenutzerEinsatzortTkUnique(BenutzerEinsatzort benutzerEinsatzort) {
    return uniqueBenutzerEinsatzortUkValidator.isUniqueBenutzerEinsatzortUK(benutzerEinsatzort.getPk(), benutzerEinsatzort.getUk());
  }

}
