v1.0.8.0
This commit is contained in:
@@ -4,6 +4,7 @@ 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 Sarand.Net.Standard.Base.Utils;
|
||||
using Saxonite.Net.Core.Web.Base.App;
|
||||
using Saxonite.Net.Core.Web.Online.App;
|
||||
using Saxonite.Net.Core.Web.Online.Models;
|
||||
@@ -30,6 +31,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data definitions.
|
||||
/// <summary>Activity details for home page list.</summary>
|
||||
public class ActivityResponseData
|
||||
{
|
||||
public short ItemType { get; set; }
|
||||
@@ -39,7 +41,61 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
public String Blurb { get; set; }
|
||||
public String Sport { get; set; }
|
||||
public String Region { get; set; }
|
||||
public String PublishedOnFmt{ get; set; }
|
||||
public String PublishedOnFmt { get; set; }
|
||||
}
|
||||
/// <summary>Article activity info. </summary>
|
||||
public class ActivityResponseData_Article
|
||||
{
|
||||
public ActivityResponseData_Article(SaxModel_Online model, SaxJournalistArticle article)
|
||||
{
|
||||
Headline = article.Headline;
|
||||
Summary = article.Summary;
|
||||
Sport = model.GetSportCaption(article.SportIdPrimary);
|
||||
Region = model.GetRegionCaption(article.RegionIdPrimary);
|
||||
PublishedOnFmt = model.Localiser.FormatDate(article.PublishedAt);
|
||||
SaxJournalistArticle.ContentData content = SaxJournalistArticle.ExtractContent(article.BodyData);
|
||||
foreach (SaxJournalistArticle.ContentData.SegmentData segment in content.Segments)
|
||||
Content.Segments.Add(new ContentData.SegmentData(segment));
|
||||
}
|
||||
public String Headline { get; set; }
|
||||
public String Summary { get; set; }
|
||||
public String Sport { get; set; }
|
||||
public String Region { get; set; }
|
||||
public String PublishedOnFmt { get; set; }
|
||||
public class ContentData
|
||||
{
|
||||
public class SegmentData
|
||||
{
|
||||
public SegmentData(SaxJournalistArticle.ContentData.SegmentData segment)
|
||||
{
|
||||
Body.Html = segment.Body.Html;
|
||||
}
|
||||
public class BodyData
|
||||
{
|
||||
public String Html { get; set; }
|
||||
}
|
||||
public BodyData Body { get; } = new BodyData();
|
||||
}
|
||||
public List<SegmentData> Segments { get; } = new List<SegmentData>();
|
||||
}
|
||||
public ContentData Content { get; } = new ContentData();
|
||||
}
|
||||
/// <summary>Opportunity activity info. </summary>
|
||||
public class ActivityResponseData_Opportunity
|
||||
{
|
||||
public ActivityResponseData_Opportunity(SaxModel_Online model, SaxOrganisationOpportunity opportunity)
|
||||
{
|
||||
Position = opportunity.Position;
|
||||
Outline = opportunity.Outline;
|
||||
Sport = model.GetSportCaption(opportunity.SportIdPrimary);
|
||||
Region = model.GetRegionCaption(opportunity.RegionIdPrimary);
|
||||
PublishedOnFmt = model.Localiser.FormatDate(opportunity.PublishedAt);
|
||||
}
|
||||
public String Position { get; set; }
|
||||
public String Outline { get; set; }
|
||||
public String Sport { get; set; }
|
||||
public String Region { get; set; }
|
||||
public String PublishedOnFmt { get; set; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
@@ -104,6 +160,72 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
return Json(responseData);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Activity Info
|
||||
//-------------------------------------------------------------------
|
||||
public class AjaxResponse_ActivityInfo : AjaxResponse_Base
|
||||
{
|
||||
public ActivityResponseData_Article Article { get; set; }
|
||||
public ActivityResponseData_Opportunity Opportunity { get; set; }
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
[HttpPost]
|
||||
[Route("Activity/Ajax/GetInfo")]
|
||||
[Route("Activity/Ajax/GetItemInfo")]
|
||||
[Route("Activity/Ajax/GetActivityInfo")]
|
||||
[Route("Activity/Ajax/GetActivity")]
|
||||
public IActionResult Ajax_GetActivityInfo(Model_Activity model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetActivityInfo";
|
||||
String messageTitle = Localiser["activity.caption.activity"];
|
||||
AjaxResponse_ActivityInfo responseData = new AjaxResponse_ActivityInfo();
|
||||
|
||||
// Validate session and referrer.
|
||||
if (!ValidReferer)
|
||||
return Forbid();
|
||||
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);
|
||||
SysId itemId = model.ActivityIdx.ToSysId();
|
||||
if (itemType <= 0 || !SysId.IsValid(itemId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Activity type/Id inncorrectly specified." + getLogSuffix());
|
||||
return Json(responseData);
|
||||
}
|
||||
|
||||
// Retrieve activity details.
|
||||
if (itemType == Sax.DataItemType.JournalistArticle)
|
||||
{
|
||||
// Journalist article.
|
||||
SaxJournalistArticle article = ActivityMgr.GetJournalistArticleById(itemId);
|
||||
if (article == null)
|
||||
{
|
||||
SaLogger.Warn(fn + " Article not found for Activity Id: " + itemId.ToString() + "." + getLogSuffix());
|
||||
return Json(responseData);
|
||||
}
|
||||
responseData.Article = new ActivityResponseData_Article(model, article);
|
||||
}
|
||||
else if (itemType == Sax.DataItemType.OrganisationOpportunity)
|
||||
{
|
||||
// Organisation Opportunity.
|
||||
SaxOrganisationOpportunity opportunity = ActivityMgr.GetOrganisationOpportunityById(itemId);
|
||||
if (opportunity == null)
|
||||
{
|
||||
SaLogger.Warn(fn + " Opportunity not found for Activity Id: " + itemId.ToString() + "." + getLogSuffix());
|
||||
return Json(responseData);
|
||||
}
|
||||
responseData.Opportunity = new ActivityResponseData_Opportunity(model, opportunity);
|
||||
}
|
||||
|
||||
// Complete response.
|
||||
responseData.Success = true;
|
||||
return Json(responseData);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
|
||||
@@ -20,6 +20,21 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
//=======================================================================
|
||||
partial class JournalistController
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Journalist Article Content data.
|
||||
public class ArticleContentData
|
||||
{
|
||||
public List<ArticleContentSegmentData> Segments { get; } = new List<ArticleContentSegmentData>();
|
||||
}
|
||||
public class ArticleContentSegmentData
|
||||
{
|
||||
public ArticleContentSegmentBodyData Body { get; } = new ArticleContentSegmentBodyData();
|
||||
}
|
||||
public class ArticleContentSegmentBodyData
|
||||
{
|
||||
public String Html { get; set; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Journalist Article data.
|
||||
public class ArticleData_List
|
||||
@@ -39,6 +54,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
public String RegionIdPrimary { get; set; }
|
||||
public String SportIdPrimary { get; set; }
|
||||
public String PublishedOn_YYYYMMDD { get; set; }
|
||||
public ArticleContentData Content { get; } = new ArticleContentData();
|
||||
}
|
||||
private void PopulateArticleResponseData(Model_Journalist model, SaxJournalistArticle article, ArticleData_List data)
|
||||
{
|
||||
@@ -58,6 +74,15 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
data.RegionIdPrimary = SysId.ToString(article.RegionIdPrimary);
|
||||
data.SportIdPrimary = SysId.ToString(article.SportIdPrimary);
|
||||
data.PublishedOn_YYYYMMDD = DateUtil.Format(article.PublishedAt, "yyyyMMdd");
|
||||
|
||||
// Article content.
|
||||
SaxJournalistArticle.ContentData articleContent = SaxJournalistArticle.ExtractContent(article.BodyData);
|
||||
foreach (var contentSegment in articleContent.Segments)
|
||||
{
|
||||
var segmentData = new ArticleContentSegmentData();
|
||||
segmentData.Body.Html = contentSegment.Body.Html;
|
||||
data.Content.Segments.Add(segmentData);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
@@ -247,6 +272,19 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
if (model.ArticleStatusCode != null)
|
||||
article.Status = model.ArticleStatus;
|
||||
|
||||
// Content.
|
||||
if (model.ArticleContentSegments != null)
|
||||
{
|
||||
SaxJournalistArticle.ContentData articleContent = new SaxJournalistArticle.ContentData();
|
||||
foreach (String contentSegment in model.ArticleContentSegments)
|
||||
{
|
||||
if (StringUtil.IsEmpty(contentSegment)) continue;
|
||||
var segment = articleContent.AddSegment();
|
||||
segment.Body.Html = contentSegment;
|
||||
}
|
||||
article.BodyData = SaxJournalistArticle.GetContentData(articleContent);
|
||||
}
|
||||
|
||||
// Store item.
|
||||
if (!SysId.IsValid(article.Id))
|
||||
{
|
||||
|
||||
@@ -236,6 +236,20 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
return keepLoggedInParams;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Logging.
|
||||
protected String getLogSuffix()
|
||||
{
|
||||
List<String> logSuffix = new List<string>();
|
||||
SaxSessionData_Online sessionData = SessionData_Online;
|
||||
if (sessionData != null)
|
||||
{
|
||||
if (!StringUtil.IsEmpty(sessionData.User.EmailAddress))
|
||||
logSuffix.Add("User: " + sessionData.User.EmailAddress);
|
||||
}
|
||||
return logSuffix.Concat("", " ", ".");
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
|
||||
Reference in New Issue
Block a user