using System; using System.Web.Mvc; using System.Web.Security; using BeWo.Service.ServiceContracts; using BeWoPlanerMobil.Models; using BeWoPlanerMobil.Service; using BS.Shared.DataContracts; namespace BeWoPlanerMobil.Controllers { public abstract class AbstractBaseController : Controller { protected readonly ICustomerService CustomerService = new MobileSessionFacade().CustomerService; protected readonly IOperationsService OperationsService = new MobileSessionFacade().OperationsService; protected readonly IEmployeeService EmployeeService = new MobileSessionFacade().EmployeeService; protected readonly IValueListService ValueListService = new MobileSessionFacade().ValueListService; protected readonly IResourceService KalenderService = new MobileSessionFacade().ResourceService; protected readonly IUserService UserService = new MobileSessionFacade().UserService; protected const string _LeerzeichenFuerGetMethoden = " "; protected static readonly log4net.ILog Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); public static readonly string IsSessionTimedOut = "isSessionTimedOut"; protected ActionResult Logout() { MobileSessionFacade.LogUserOut(); FormsAuthentication.SignOut(); AbstractModel.TimeOfLastAction = null; return RedirectToActionPermanent("Index", "Login", new {tenant = MobileSessionFacade.Tenant}); } protected UserDC GetUser() { return UserService.LoadUser(MobileSessionFacade.LoggedInUser.Oid.Value); } protected override void OnActionExecuting(ActionExecutingContext filterContext) { if(MobileSessionFacade.IsUserLoggedIn()) { AbstractModel.TimeOfLastAction = $"{DateTime.Now:yyyy-MM-dd}T{DateTime.Now:HH:mm:ss}"; } } public static int TimeoutLimit { get { var timeUntilUILock = BS.Shared.Settings.ApplicationSettings.TimeUntilUILock; if(timeUntilUILock > 0 && System.Web.HttpContext.Current.Session.Timeout > timeUntilUILock) { return timeUntilUILock; } return System.Web.HttpContext.Current.Session.Timeout; } } } }