package de.ivu.elect.business.mandant.entity;

import javax.annotation.Nullable;
import javax.servlet.http.HttpServletRequest;

import de.ivu.elect.business.mandant.boundary.AbstractMandantDAO;
import de.ivu.elect.jee.faces.FacesContextUtil;
import de.ivu.elect.presentation.system.BasisUrlResolver;

public abstract class AbstractMandant implements MandantBase, EntityMitMandant {

  private static final long serialVersionUID = 1L;

  public static final Long SYSTEM_MANDANT_NUMMER = 0L;

  @Deprecated // NUR FÜR ALTEN CODE IN SYSTEMEN OHNE MANDANTEN-UNTERSTÜTZUNG
  public static Mandant getSystemMandant(AbstractMandantDAO mandantDAO) {
    return mandantDAO.findByAll().stream().filter(m -> m.getArt().isSystemMandant()).findAny().orElse(null);
  }

  @Deprecated // NUR FÜR ALTEN CODE IN SYSTEMEN OHNE MANDANTEN-UNTERSTÜTZUNG
  public static Mandant getCustomerMandant(AbstractMandantDAO mandantDAO) {
    return mandantDAO.findByAll().stream().filter(m -> m.getArt().isCustomerMandant()).findAny().orElse(null);
  }

  @Override
  @Nullable
  public EntityMitMandant getParent() {
    return null;
  }

  @Override
  public Mandant getMandant() {
    return (Mandant) this;
  }

  public String getLoginUrl(BasisUrlResolver basisUrlResolver) {
    return basisUrlResolver.bestimmeBasisUrl() + "login.xhtml?mandant=" + getNummer();
  }

}
