106 lines
4.0 KiB
C#
106 lines
4.0 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.Extensions.Logging;
|
|
using Sarand.Net.Standard.Base.App;
|
|
using Sarand.Net.Standard.Base.Bus;
|
|
using Sarand.Net.Standard.Base.Core;
|
|
using Sarand.Net.Standard.Base.Dbas;
|
|
using Saxonite.Net.Core.Web.Base.App;
|
|
using Saxonite.Net.Core.Web.Online.App;
|
|
using Saxonite.Net.Core.Web.Online.Models;
|
|
using Saxonite.Net.Standard.Base.App;
|
|
using Saxonite.Net.Standard.Base.Bus;
|
|
using Saxonite.Net.Standard.Base.Consoles;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Saxonite.Net.Core.Web.Online.Controllers
|
|
{
|
|
//=======================================================================
|
|
// Online Activity Controller - Ajax actions only.
|
|
//=======================================================================
|
|
public partial class ActivityController : SaxController_Online
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Construction.
|
|
public ActivityController(SaxLocaliser localiser, ILogger<HomeController> logger) :
|
|
base(localiser, logger)
|
|
{ }
|
|
|
|
//-------------------------------------------------------------------
|
|
// Data definitions.
|
|
public class ActivityResponseData
|
|
{
|
|
public short ItemType { get; set; }
|
|
public long ItemIdx { get; set; }
|
|
public String Caption { get; set; }
|
|
public String Blurb { get; set; }
|
|
public String Sport { get; set; }
|
|
public String Region { get; set; }
|
|
public String PublishedOnFmt{ get; set; }
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Activities
|
|
//-------------------------------------------------------------------
|
|
public class AjaxResponse_ActivityList : AjaxResponse_Base
|
|
{
|
|
public List<ActivityResponseData> Activities { get; } = new List<ActivityResponseData>();
|
|
}
|
|
//-------------------------------------------------------------------
|
|
[HttpPost]
|
|
[Route("Activity/Ajax/GetList")]
|
|
[Route("Activity/Ajax/GetActivityList")]
|
|
[Route("Activity/Ajax/GetActivities")]
|
|
public IActionResult Ajax_GetActivityList(Model_Activity model)
|
|
{
|
|
String fn = GetType().Name + ".Ajax_GetActivityList";
|
|
String messageTitle = Localiser["activity.caption.activities"];
|
|
AjaxResponse_ActivityList responseData = new AjaxResponse_ActivityList();
|
|
|
|
// Validate session and referrer.
|
|
if (!ValidReferer)
|
|
return Forbid();
|
|
if (!ValidUserSession)
|
|
return GetAjaxResult_InvalidSession(responseData);
|
|
SaxSessionData_Online sessionData = SessionData_Online;
|
|
|
|
// User context.
|
|
SaxActivityConsole.IndexContext indexContext = new SaxActivityConsole.IndexContext();
|
|
|
|
// Regions.
|
|
if (SysId.IsValid(sessionData.User.RegionIdProvince))
|
|
indexContext.RegionIds.Add(sessionData.User.RegionIdProvince);
|
|
else if (SysId.IsValid(sessionData.User.RegionIdCountry))
|
|
indexContext.RegionIds.Add(sessionData.User.RegionIdCountry);
|
|
|
|
// Sports.
|
|
indexContext.SportIds.AddRange(sessionData.Profile.Sports.Select(item => item.SportId));
|
|
|
|
// Populate activities.
|
|
SaxActivityConsole.IndexResults indexResults = ActivityConsole.QueryIndex(indexContext);
|
|
foreach (SaxActivityConsole.IndexResults.ActivityData itemData in indexResults.Items)
|
|
{
|
|
ActivityResponseData activityData = new ActivityResponseData();
|
|
activityData.ItemType = itemData.ItemId.Type;
|
|
// ToDo Mask activity index Id with cross-reference stored in session data.
|
|
activityData.ItemIdx = SysId.ToLong(itemData.ItemId.Id);
|
|
activityData.Caption = itemData.Caption;
|
|
activityData.Blurb = itemData.Blurb;
|
|
activityData.Sport = Localiser.GetSportName(itemData.SportId, itemData.SportName);
|
|
activityData.Region = Localiser.GetRegionName(itemData.RegionId, itemData.RegionName);
|
|
activityData.PublishedOnFmt = Localiser.FormatDate(itemData.EffectiveOn);
|
|
responseData.Activities.Add(activityData);
|
|
}
|
|
|
|
// Complete response.
|
|
responseData.Success = true;
|
|
return Json(responseData);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|