Files
BusinessMgr-2019/SaBusMgrStandardBase/Base/App/SbmSessionData.cs
T
2025-01-22 08:01:51 +00:00

105 lines
3.2 KiB
C#

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
{
//=======================================================================
/// <summary>
/// Basic user session data, shared by Portal and Control applications.
/// </summary>
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.
/// <summary>
/// Constructor to persist the Session index, eg. for deserialisation from Session.
/// <para>- Session index of zero indicates sessionless data, eg. background tasks.</para>
/// <para>- Session index less than zero will assign a new value.</para>
/// </summary>
protected SbmSessionData(long sessionIdx, SbmSessionContext sessionContext)
{
SessionIdx = sessionIdx >= 0 ? sessionIdx : sessionIdxNext++;
DataIdx = dataIdxNext++;
SessionContext = sessionContext;
}
/// <summary>
/// Main constructor.
/// <para>- SessionContext must be supplied.</para>
/// </summary>
protected SbmSessionData(SbmSessionContext sessionContext)
{
SessionIdx = sessionIdxNext++;
DataIdx = dataIdxNext++;
SessionContext = sessionContext;
}
//-------------------------------------------------------------------
// Properties.
/// <summary>
/// Session Index - assigned in sequence and persistent when data is serialised/deserialised.
/// </summary>
public long SessionIdx { get; }
/// <summary>
/// Data Index - assigned in sequence for each object constructed.
/// </summary>
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; }
//-------------------------------------------------------------------
}
//=======================================================================
}