This commit is contained in:
2021-06-18 19:57:52 +01:00
parent f9c3c01b28
commit 558be9063f
35 changed files with 875 additions and 75 deletions
@@ -15,7 +15,7 @@ namespace Saxonite.Net.Standard.Base.Consoles
// to identifying the activities that are relevant to a User or other context
// that defines at least one region/sport combination and an effective date (usually today).
//=======================================================================
public abstract class SaxActivityConsole : SacsDisposable
public abstract class SaxActivityConsole : SaErrorStateItem
{
//-------------------------------------------------------------------
// Definitions.
@@ -24,6 +24,11 @@ namespace Saxonite.Net.Standard.Base.Consoles
/// </summary>
public class IndexContext
{
public IndexContext (SysId userAccountId)
{
UserAccountId = userAccountId;
}
public SysId UserAccountId { get; }
public List<SysId> SportIds { get; } = new List<SysId>();
public List<SysId> RegionIds { get; } = new List<SysId>();
// Default period is ~3 months up to today.
@@ -55,10 +60,15 @@ namespace Saxonite.Net.Standard.Base.Consoles
public DateTime EffectiveOn { get; }
public String Caption { get; protected set; }
public String Blurb { get; protected set; }
public SysId SportId{ get; protected set; }
public String SportName{ get; protected set; }
public SysId SportId { get; protected set; }
public String SportName { get; protected set; }
public SysId RegionId { get; protected set; }
public String RegionName{ get; protected set; }
public String RegionName { get; protected set; }
// User Activity.
public DateTime LastListedAt { get; protected set; }
public DateTime LastViewedAt { get; protected set; }
public Sax.ActivityReaction Reaction { get; protected set; }
public DateTime LastReactedAt { get; protected set; }
}
public List<ActivityData> Items { get; } = new List<ActivityData>();
}
@@ -105,6 +115,8 @@ namespace Saxonite.Net.Standard.Base.Consoles
/// </summary>
public bool StoreActivityIndex(SaxJournalistArticle article, DbUpdateInfo dbUpdateInfo)
{
ClearErrorState();
// Only active articles have an activity index.
if (!article.IsStatusActive) ClearActivityIndex(article.GetItemId(), dbUpdateInfo);
@@ -128,6 +140,8 @@ namespace Saxonite.Net.Standard.Base.Consoles
/// </summary>
public bool StoreActivityIndex(SaxOrganisationOpportunity opportunity, DbUpdateInfo dbUpdateInfo)
{
ClearErrorState();
// Only active opportunities have an activity index.
if (!opportunity.IsStatusActive) ClearActivityIndex(opportunity.GetItemId(), dbUpdateInfo);
@@ -209,16 +223,15 @@ namespace Saxonite.Net.Standard.Base.Consoles
}
//-------------------------------------------------------------------
// Activity Index data.
protected abstract bool StoreActivityIndexData(IndexData indexData, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
protected abstract bool ClearActivityIndex(ItemId itemId, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
// Utilities.
//-------------------------------------------------------------------
// Activity Index Utilities.
protected List<IndexEntryData> GetEntriesForIndex(IndexData indexData)
{
ClearErrorState();
List<IndexEntryData> indexEntries = new List<IndexEntryData>();
if (ItemId.IsValid(indexData.ItemId) && DateUtil.IsValid(indexData.EffectiveOn))
{
@@ -235,6 +248,13 @@ namespace Saxonite.Net.Standard.Base.Consoles
return indexEntries;
}
//-------------------------------------------------------------------
// User Activities
//-------------------------------------------------------------------
public abstract bool RecordUserActivitiesListed(SysId userAccountId, List<ItemId> activityItemIds, DbUpdateInfo dbUpdateInfo);
public abstract bool RecordUserActivityViewed(SysId userAccountId, ItemId activityItemId, DbUpdateInfo dbUpdateInfo);
public abstract bool RecordUserActivityReaction(SysId userAccountId, ItemId activityItemId, Sax.ActivityReaction activityReaction, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
}
//=======================================================================