package de.ivu.elect.business.person;

import javax.enterprise.event.Event;
import javax.inject.Inject;

import de.ivu.elect.business.mandant.entity.MandantPK;
import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.business.person.entity.PersonendatenPK;
import de.ivu.elect.business.system.entity.BackgroundServiceEvent;
import de.ivu.elect.business.system.entity.SystemLogQuelle;

public class TagUpdaterEvent implements BackgroundServiceEvent {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient Event<TagUpdaterEvent> event;

  private MandantPK mandantPK;

  private PersonendatenPK personendatenPK;

  public TagUpdaterEvent() {
  }

  public TagUpdaterEvent(MandantPK mandantPK) {
    this.mandantPK = mandantPK;
  }

  public TagUpdaterEvent(PersonendatenPK personendatenPK) {
    this.personendatenPK = personendatenPK;
  }

  public void sendStartEvent(Personendaten personendaten) {
    if (personendaten != null && personendaten.getPk() != null) {
      sendStartEvent(personendaten.getPk());
    }
  }

  public void sendStartEvent(PersonendatenPK personendatenPK) {
    event.fire(new TagUpdaterEvent(personendatenPK));
  }

  public void sendStartEvent(MandantPK mandantPK) {
    event.fire(new TagUpdaterEvent(mandantPK));
  }

  @Override
  @Deprecated // Do not use, MandantPK angaben
  public void sendEvent() {
    sendStartEvent((MandantPK) null);
  }

  public PersonendatenPK getPersonendatenPK() {
    return personendatenPK;
  }

  public void setPersonendatenPK(PersonendatenPK personendatenPK) {
    this.personendatenPK = personendatenPK;
  }

  @Override
  public SystemLogQuelle getServiceName() {
    return SystemLogQuelle.TAG_UPDATES;
  }

  public MandantPK getMandantPK() {
    return mandantPK;
  }

  public void setMandantPK(MandantPK mandantPK) {
    this.mandantPK = mandantPK;
  }
}

