Files
BeWoPlaner/BeWoPlanerMobil/Controllers/AbstractBaseController.cs

109 lines
4.1 KiB
C#
Raw Normal View History

using System;
using System.Diagnostics;
using System.Web.Mvc;
2016-06-27 01:45:38 +02:00
using System.Web.Security;
using BeWo.Service.ServiceContracts;
using BeWoPlanerMobil.Models;
2016-06-27 01:45:38 +02:00
using BeWoPlanerMobil.Service;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using ReportingService.ServiceContracts;
2016-06-27 01:45:38 +02:00
namespace BeWoPlanerMobil.Controllers
{
public abstract class AbstractBaseController : Controller
{
protected readonly ICustomerService CustomerService = new MobileSessionFacade().CustomerService;
2016-06-27 01:45:38 +02:00
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 readonly IDownloadService DownloadService = new MobileSessionFacade().DownloadService;
protected readonly IReportService ReportService = new MobileSessionFacade().ReportService;
protected readonly IQueryService QueryService = new MobileSessionFacade().QueryService;
protected const string LeerzeichenFuerGetMethoden = " ";
2016-06-27 01:45:38 +02:00
protected static readonly log4net.ILog Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
2016-06-27 01:45:38 +02:00
public static readonly string IsSessionTimedOut = "isSessionTimedOut";
protected ActionResult Logout()
2016-06-27 01:45:38 +02:00
{
#if DEBUG
Debug.WriteLine($"+++>Logout aufrufende Methode: {(new StackTrace()).GetFrame(1).GetMethod().Name}");
#endif
MobileSessionFacade.LogUserOut();
2016-06-27 01:45:38 +02:00
FormsAuthentication.SignOut();
AbstractModel.TimeOfLastAction = null;
return RedirectToActionPermanent("Index", "Login", new {tenant = MobileSessionFacade.Tenant});
2016-06-27 01:45:38 +02:00
}
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;
}
}
[Authorize]
public ActionResult UpdateApplicationSettings(string pKey, string pValue)
{
var userSettings = GetUser().Settings;
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, pKey, pValue, userSettings);
var loggedInUser = GetUser();
if(loggedInUser?.UserOid.HasValue ?? false)
{
UserService.UpdateUserSettings(loggedInUser.UserOid.Value, userSettings);
}
return RedirectToAction("Main");
}
[Authorize]
public void UpdateUserSettingsWithoutReload(string key, string value)
{
var userSettings = GetUser().Settings;
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, key, value, userSettings);
var loggedInUser = GetUser();
if(loggedInUser?.UserOid.HasValue ?? false)
{
UserService.UpdateUserSettings(loggedInUser.UserOid.Value, userSettings);
}
}
2016-06-27 01:45:38 +02:00
}
}