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

import javax.enterprise.event.Observes;
import javax.enterprise.event.Reception;
import javax.inject.Inject;

import de.ivu.elect.business.konfiguration.entity.KonfigurationNotify;
import de.ivu.elect.business.konfiguration.entity.KonfigurationWertGeaendertEvent;
import de.ivu.elect.business.mandant.entity.Mandant;
import de.ivu.elect.business.system.boundary.SystemLogWriter;
import de.ivu.elect.business.system.entity.SystemLogQuelle;
import de.ivu.elect.jee.faces.Messages;

public class NotifyKonfigurationswertGeaendertListener {

  @Inject
  private transient SystemLogWriter systemLogWriter;

  @Inject
  private transient Messages messages;

  public NotifyKonfigurationswertGeaendertListener() {
    super();
  }

  public void listen(@Observes(notifyObserver = Reception.ALWAYS) KonfigurationWertGeaendertEvent event) {
    Mandant mandant = event.getMandant();

    if (event.getKey() == null || mandant == null || mandant.getArt().isSystemMandant()) {
      return;
    }

    KonfigurationNotify konfigurationNotify = event.getKey().getKonfigurationNotify();

    if (konfigurationNotify.isBenachrichtigen()) {
      String nachricht;

      if (konfigurationNotify.isWerteAusgeben()) {
        nachricht = messages.getMessageForMessageKey(konfigurationNotify.getMsgKey(), messages.lokalisiere((Enum< ? >) event.getKey()), mandant.getNummer(), event.getNeuerWert());
      } else {
        nachricht = messages.getMessageForMessageKey(konfigurationNotify.getMsgKey(), messages.lokalisiere((Enum< ? >) event.getKey()), mandant.getNummer());
      }

      systemLogWriter.writeWarnLogMessageFuerSystemMandant(nachricht, SystemLogQuelle.KONFIGURATION_GEAENDERT);
    }
  }
}
