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

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import de.ivu.elect.business.konfiguration.entity.ElectKonfigurationWerte;
import de.ivu.elect.business.konfiguration.entity.KonfigurationWertGeaendertEvent;
import de.ivu.elect.business.konfiguration.entity.LoginMandantAuswahlArt;
import de.ivu.elect.business.system.control.HttpHeaderKonfigurationAktualisieren;
import de.ivu.elect.jee.faces.FacesMessageUtil;
import de.ivu.elect.presentation.mandant.MandantSessionSelect;
import de.ivu.elect.presentation.system.BasisUrlResolver;

public class LoginMandantAuswahlArtKonfigurationChangeListener {
  private static final Logger LOG = LoggerFactory.getLogger(LoginMandantAuswahlArtKonfigurationChangeListener.class);

  @Inject
  private transient HttpHeaderKonfigurationAktualisieren httpHeaderKonfigurationAktualisieren;

  @Inject
  private transient MandantSessionSelect mandantSessionSelect;

  @Inject
  private transient BasisUrlResolver basisUrlResolver;

  public void listen(@Observes(during = TransactionPhase.AFTER_COMPLETION, notifyObserver = Reception.ALWAYS) KonfigurationWertGeaendertEvent konfigurationWertGeaendertEvent) {
    try {
      if (ElectKonfigurationWerte.LOGIN_MANDANT_AUSWAHL_ART.equals(konfigurationWertGeaendertEvent.getKey())) {
        if (!LoginMandantAuswahlArt.valueOf(konfigurationWertGeaendertEvent.getNeuerWert()).isLoginAuswahlAnzeigen()) {
          FacesMessageUtil.addWarnMessage("mandant.auswahl.art.verlangt.mandant.nummer.url", "mandant.auswahl.art.verlangt.mandant.nummer.url",
              mandantSessionSelect.getMandant().getLoginUrl(basisUrlResolver));
        }

      }
    } catch (Exception e) {
      LOG.warn("Fehler bei Warnmeldung: " + e.getMessage(), e);
    }

  }
}
