105 lines
3.2 KiB
C#
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; }
|
|
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|