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
@@ -41,6 +41,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
public String Blurb { get; set; }
public String Sport { get; set; }
public String Region { get; set; }
public int Reaction { get; set; }
public String PublishedOnFmt { get; set; }
}
/// <summary>Article activity info. </summary>
@@ -124,7 +125,8 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
SaxSessionData_Online sessionData = SessionData_Online;
// User context.
SaxActivityConsole.IndexContext indexContext = new SaxActivityConsole.IndexContext();
SysId userAccountId = SessionData.User.UserAccountId;
SaxActivityConsole.IndexContext indexContext = new SaxActivityConsole.IndexContext(userAccountId);
// Regions.
if (SysId.IsValid(sessionData.User.RegionIdProvince))
@@ -136,9 +138,11 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
indexContext.SportIds.AddRange(sessionData.Profile.Sports.Select(item => item.SportId));
// Populate activities.
List<ItemId> activityItemIds = new List<ItemId>();
SaxActivityConsole.IndexResults indexResults = ActivityConsole.QueryIndex(indexContext);
foreach (SaxActivityConsole.IndexResults.ActivityData itemData in indexResults.Items)
{
activityItemIds.Add(itemData.ItemId);
ActivityResponseData activityData = new ActivityResponseData();
activityData.ItemType = itemData.ItemId.Type;
if (itemData.ItemId.Type == (int)Sax.DataItemType.JournalistArticle)
@@ -151,10 +155,14 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
activityData.Blurb = itemData.Blurb;
activityData.Sport = Localiser.GetSportName(itemData.SportId, itemData.SportName);
activityData.Region = Localiser.GetRegionName(itemData.RegionId, itemData.RegionName);
activityData.Reaction = (int)itemData.Reaction;
activityData.PublishedOnFmt = Localiser.FormatDate(itemData.EffectiveOn);
responseData.Activities.Add(activityData);
}
if (!activityItemIds.IsEmpty())
ActivityConsole.RecordUserActivitiesListed(userAccountId, activityItemIds, DbUpdateInfo);
// Complete response.
responseData.Success = true;
return Json(responseData);
@@ -186,7 +194,6 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
if (!ValidUserSession)
return GetAjaxResult_InvalidSession(responseData);
SaxSessionData_Online sessionData = SessionData_Online;
String logSuffix = " User: " + sessionData.User.EmailAddress;
// Identify activity.
Sax.DataItemType itemType = (Sax.DataItemType)StringUtil.ToShort(model.ActivityType);
@@ -221,11 +228,64 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
responseData.Opportunity = new ActivityResponseData_Opportunity(model, opportunity);
}
// Record activty viewing.
if (!ActivityConsole.RecordUserActivityViewed(SessionData.User.UserAccountId, new ItemId((short)itemType, itemId), DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to record Activity Viewing: " + ActivityConsole.ErrorStateMessage + "." + getLogSuffix());
return Json(responseData);
}
// Complete response.
responseData.Success = true;
return Json(responseData);
}
//-------------------------------------------------------------------
// Activity Reaction.
//-------------------------------------------------------------------
public class AjaxResponse_ActivityReaction : AjaxResponse_Base
{
public int Reaction { get; set; }
}
//-------------------------------------------------------------------
[HttpPost]
[Route("Activity/Ajax/React")]
[Route("Activity/Ajax/Reaction")]
public IActionResult Ajax_SetActivityReaction(Model_Activity model)
{
String fn = GetType().Name + ".Ajax_SetActivityReaction";
String messageTitle = Localiser["activity.caption.activity"];
AjaxResponse_ActivityReaction responseData = new AjaxResponse_ActivityReaction();
// Validate session and referrer.
if (!ValidReferer)
return Forbid();
if (!ValidUserSession)
return GetAjaxResult_InvalidSession(responseData);
SaxSessionData_Online sessionData = SessionData_Online;
// Identify activity.
Sax.DataItemType itemType = (Sax.DataItemType)StringUtil.ToShort(model.ActivityType);
SysId itemId = model.ActivityIdx.ToSysId();
if (itemType <= 0 || !SysId.IsValid(itemId))
{
SaLogger.Warn(fn + " Activity type/Id inncorrectly specified." + getLogSuffix());
return Json(responseData);
}
// Record activity reaction.
if (!ActivityConsole.RecordUserActivityReaction(SessionData.User.UserAccountId, new ItemId((short)itemType, itemId), model.GetActivityReaction(), DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to record Activity Reaction: " + ActivityConsole.ErrorStateMessage + "." + getLogSuffix());
return Json(responseData);
}
// Complete response.
responseData.Reaction = (int)model.GetActivityReaction();
responseData.Success = true;
return Json(responseData);
}
//-------------------------------------------------------------------
}
//=======================================================================