using Newtonsoft.Json; using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Dbas; using Sarand.Net.Standard.Base.Helpers; using System; namespace Sarand.BusinessMgr.Net.Standard.Base.App { //======================================================================= /// /// Basic user session data, shared by Portal and Control applications. /// public abstract class SbmSessionData : ISbmUserContext { //------------------------------------------------------------------- // Definitions. // User. public class UserData { protected UserData() { } protected UserData(SbmSessionContext sessionContext) { } protected UserData(UserData userData) { Title = userData.Title; FirstName = userData.FirstName; LastName = userData.LastName; DisplayName = userData.DisplayName; EmailAddress = userData.EmailAddress; } // Properties. public String Title { get; protected set; } public String FirstName { get; protected set; } public String LastName { get; protected set; } public String DisplayName { get; protected set; } public String EmailAddress { get; protected set; } // Refresh properties. protected bool Refresh() { return true; } } //------------------------------------------------------------------- // Data members. private static long sessionIdxNext { get; set; } = SacsRandomHelper.GetInt32(100001, 199999); private static long dataIdxNext { get; set; } = 1000001; //------------------------------------------------------------------- // Construction. /// /// Constructor to persist the Session index, eg. for deserialisation from Session. /// - Session index of zero indicates sessionless data, eg. background tasks. /// - Session index less than zero will assign a new value. /// protected SbmSessionData(long sessionIdx, SbmSessionContext sessionContext) { SessionIdx = sessionIdx >= 0 ? sessionIdx : sessionIdxNext++; DataIdx = dataIdxNext++; SessionContext = sessionContext; } /// /// Main constructor. /// - SessionContext must be supplied. /// protected SbmSessionData(SbmSessionContext sessionContext) { SessionIdx = sessionIdxNext++; DataIdx = dataIdxNext++; SessionContext = sessionContext; } //------------------------------------------------------------------- // Properties. /// /// Session Index - assigned in sequence and persistent when data is serialised/deserialised. /// public long SessionIdx { get; } /// /// Data Index - assigned in sequence for each object constructed. /// public long DataIdx { get; } // Session context. public SbmSessionContext SessionContext { get; } // User properties. [JsonIgnore] public abstract String UserEmailAddress { get; } [JsonIgnore] public abstract String UserDisplayName { get; } [JsonIgnore] public abstract bool ValidUser { get; } [JsonIgnore] public abstract DbUpdateInfo DbUpdateInfo { get; } //------------------------------------------------------------------- } //======================================================================= }