using Newtonsoft.Json; using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.BusinessMgr.Web.Control.Components; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Dbas; using Sarand.Net.Standard.Base.Helpers; using Sarand.Net.Standard.Base.Utils; using System; namespace Sarand.BusinessMgr.Web.Control.App { //======================================================================= public class SbmSessionData_Control : SbmSessionData_Web, ISbmSessionData_Control { //------------------------------------------------------------------- // Construction. [JsonConstructor] private SbmSessionData_Control(long sessionIdx, SbmSessionContext sessionContext) : base(sessionIdx, sessionContext) { } /// /// SessionData construction. /// SessionContext and UserAccount must be supplied. /// public SbmSessionData_Control(SbmSessionContext sessionContext, SbmcUserAccount userAccount) : base(sessionContext) { User = new UserData_Control(sessionContext, userAccount); } //------------------------------------------------------------------- // Properties. [JsonIgnore] public override String UserDisplayName { get { return User?.DisplayName; } } [JsonIgnore] public override String UserEmailAddress { get { return User?.EmailAddress; } } [JsonIgnore] public override bool ValidUser { get { return SysId.IsValid(User?.UserAccountId); } } [JsonIgnore] public override bool KeepLoggedIn { get { return User.KeepLoggedIn; } } [JsonIgnore] public override DbUpdateInfo DbUpdateInfo { get { return new DbUpdateInfo(User?.UserAccountId, StringUtil.OnEmpty(User.DisplayName, User.EmailAddress), SbmSystem.ComputerName); } } //------------------------------------------------------------------- // User details. public class UserData_Control : UserData { [JsonConstructor] private UserData_Control() { } internal UserData_Control(SbmSessionContext sessionContext, SbmcUserAccount userAccount) : base(sessionContext) { UserAccountId = userAccount.Id; if (SysId.IsValid(UserAccountId)) { UserAccountSupplied = true; DisplayName = userAccount.GetDisplayName(); Title = userAccount.Title; FirstName = userAccount.FirstName; LastName = userAccount.LastName; EmailAddress = userAccount.EmailAddress; } } internal UserData_Control(UserData userData) : base(userData) { UserData_Control userData_Control = userData as UserData_Control; if (userData_Control != null) { UserAccountId = userData_Control.UserAccountId; UserAccountSupplied = userData_Control.UserAccountSupplied; KeepLoggedIn = userData_Control.KeepLoggedIn; } DisplayName = userData.DisplayName; Title = userData.Title; FirstName = userData.FirstName; LastName = userData.LastName; EmailAddress = userData.EmailAddress; } // Properties. public SysId UserAccountId { get; private set; } public bool UserAccountSupplied { get; private set; } public bool KeepLoggedIn { get; private set; } } protected UserData CreateUserData(SbmSessionContext sessionContext, SbmcUserAccount userAccount) { return null; } /// User - JSON deserialisation route. public UserData_Control User { get; private set; } //------------------------------------------------------------------- /// /// User Profile. /// - Filter settings. /// public class UserProfileData { public UserProfileData() { } // Common filter. public class FilterData { /// Currently selected Repository Context public String RepositoryContext { get; set; } } /// /// Common filter properties. /// public FilterData Filter { get; private set; } = new FilterData(); } public UserProfileData Profile { get; protected set; } = new UserProfileData(); //------------------------------------------------------------------- // System. public class SystemData { // Databases. public class DatabaseData { } public DatabaseData Database { get; private set; } = new DatabaseData(); // Logs. public class LogsData { public class FilterData { public String Folder { get; set; } public String Year { get; set; } public String Month { get; set; } } public FilterData Filter { get; private set; } = new FilterData(); } public LogsData Logs { get; private set; } = new LogsData(); } public SystemData System { get; private set; } = new SystemData(); //------------------------------------------------------------------- // Control application encryption IV value - for consistent encryption during session. public String Base64IV_ControlApp { get; private set; } = SacsEncryptionHelper.InitSymmetricEncryptionIV(SbmController_Control.Base64Key_ControlApp); //------------------------------------------------------------------- } //======================================================================= }