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

import de.ivu.elect.business.CurrentCustomer;
import de.ivu.elect.business.benutzerverwaltung.boundary.AbstractBenutzerDAO;
import de.ivu.elect.business.benutzerverwaltung.boundary.AbstractBenutzerEinsatzortDAO;
import de.ivu.elect.business.benutzerverwaltung.boundary.AbstractRolleDAO;
import de.ivu.elect.business.benutzerverwaltung.control.AbstractBenutzerEinsatzortBestimmer;
import de.ivu.elect.business.benutzerverwaltung.entity.BenutzerPK;
import de.ivu.elect.business.konfiguration.entity.AbstractKonfigurationLoader;
import de.ivu.elect.business.mandant.entity.Mandant;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.business.security.control.PrincipalBenutzerCreator;
import de.ivu.elect.business.security.control.TfaPrincipalStatus;
import de.ivu.elect.business.system.control.SystemStatusPermissions;
import de.ivu.elect.jee.security.PrincipalContext;
import de.ivu.elect.presentation.security.PrincipalNameFormatter;

public interface ElectPricipalContext extends PrincipalContext<UseCasePermission, BenutzerPK> {

  AbstractBenutzerDAO getBenutzerDao();

  AbstractRolleDAO getRolleDao();

  AbstractBenutzerEinsatzortDAO getBenutzerEinsatzortDAO();

  PrincipalBenutzerCreator getPrincipalBenutzerCreator();

  PrincipalNameFormatter getPrincipalNameFormatter();

  AbstractKonfigurationLoader getKonfigurationLoader();

  AbstractBenutzerEinsatzortBestimmer getBenutzerEinsatzortBestimmer();

  SystemStatusPermissions getSystemStatusPermissions();

  Mandant getLogInMandant(Long mandantenNummer);

  void setzeLoginMandant(Long mandantenNummer);

  TfaPrincipalStatus getTfaPrincipalStatus();

  CurrentCustomer getCurrentCustomer();

}
