v1.2.4.1
This commit is contained in:
@@ -41,7 +41,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
}
|
||||
private void PopulateProfileSportResponseData(Model_Account model, SaxUserSport userSport, SaxSport sport, ProfileSportResponseData_Item data)
|
||||
{
|
||||
data.Id = SysId.ToString(userSport.Id);
|
||||
data.Id = model.EncryptId(userSport.Id);
|
||||
data.SportId = model.GetEncryptedSportId(userSport.SportId);
|
||||
data.SportName = sport.Name;
|
||||
data.SportSpecialityLabel = model.GetSportSpecialityLabel(userSport.SportId);
|
||||
@@ -113,7 +113,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
SysId sportId = new SysId(values.GetLong(colSportId.DataName));
|
||||
ProfileSportResponseData_List userSportData = new ProfileSportResponseData_List()
|
||||
{
|
||||
Id = values.GetLong(colId.DataName).ToString(),
|
||||
Id = model.EncryptId(new SysId(values.GetLong(colId.DataName))),
|
||||
SportId = model.GetEncryptedSportId(sportId),
|
||||
SportName = values.GetString(colSportName.DataName),
|
||||
SportSpecialityLabel = model.GetSportSpecialityLabel(sportId),
|
||||
@@ -158,30 +158,37 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData);
|
||||
RefreshModel(model);
|
||||
|
||||
// Identify item.
|
||||
SysId userSportId = model.ExtractSysId(model.UserSportId);
|
||||
if (!SysId.IsValid(userSportId))
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
|
||||
|
||||
// Retrieve item.
|
||||
SaxUserSport userSport = AccountMgr.GetUserSportById(userSportId);
|
||||
if (userSport == null)
|
||||
// Record disposable items as they are created so all can be disposed when needed.
|
||||
using (DisposableCollection<SacsHierarchyItem> disposableItems = new DisposableCollection<SacsHierarchyItem>())
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve User Sport for Id: '" + model.UserSportId + "'");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
|
||||
}
|
||||
|
||||
// Retrieve sport.
|
||||
SaxSport sport = ReferenceMgr.GetSportById(userSport.SportId);
|
||||
if (sport == null)
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve Sport for Id: '" + userSport.SportId + "'");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
|
||||
}
|
||||
// Identify item.
|
||||
SysId userSportId = model.ExtractSysId(model.UserSportId);
|
||||
if (!SysId.IsValid(userSportId))
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
|
||||
|
||||
// Construct response.
|
||||
PopulateProfileSportResponseData(model, userSport, sport, responseData.Sport);
|
||||
responseData.Success = true;
|
||||
// Retrieve item.
|
||||
SaxUserSport userSport = AccountMgr.GetUserSportById(userSportId);
|
||||
disposableItems.Add(userSport);
|
||||
if (userSport == null)
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve User Sport for Id: '" + model.UserSportId + "'");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
|
||||
}
|
||||
|
||||
// Retrieve sport.
|
||||
SaxSport sport = ReferenceMgr.GetSportById(userSport.SportId);
|
||||
disposableItems.Add(sport);
|
||||
if (sport == null)
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve Sport for Id: '" + userSport.SportId + "'");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
|
||||
}
|
||||
|
||||
// Construct response.
|
||||
PopulateProfileSportResponseData(model, userSport, sport, responseData.Sport);
|
||||
responseData.Success = true;
|
||||
}
|
||||
return Json(responseData);
|
||||
}
|
||||
|
||||
@@ -201,108 +208,119 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData);
|
||||
RefreshModel(model);
|
||||
|
||||
// Validate item properties.
|
||||
model.ValidateProfileSportData(responseData);
|
||||
if (responseData.HasControlErrors())
|
||||
return Json(responseData);
|
||||
// Record disposable items as they are created so all can be disposed when needed.
|
||||
using (DisposableCollection<SacsHierarchyItem> disposableItems = new DisposableCollection<SacsHierarchyItem>())
|
||||
{
|
||||
|
||||
// Validate Profile Sport Id against 'Exists' flag.
|
||||
SysId userSportId = model.ExtractSysId(model.UserSportId);
|
||||
bool profileSportExists = StringUtil.ToBool(model.ProfileSportExists);
|
||||
if (profileSportExists && !SysId.IsValid(userSportId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Id not specified for existing Profile Sport.");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
if (!profileSportExists && SysId.IsValid(userSportId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Id specified for new Profile Sport: '" + model.UserSportId + "'");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
// Validate item properties.
|
||||
model.ValidateProfileSportData(responseData);
|
||||
if (responseData.HasControlErrors())
|
||||
return Json(responseData);
|
||||
|
||||
// Retrieve the sport.
|
||||
SysId sportId = model.ExtractSysId(model.ProfileSportId);
|
||||
SaxSport sport = ReferenceMgr.GetSportById(sportId);
|
||||
if (sport == null)
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve Sport for Id: " + sportId);
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
|
||||
// Retrieve existing item.
|
||||
SaxUserSport userSport = AccountMgr.GetUserSportById(userSportId);
|
||||
if (userSport == null && SysId.IsValid(userSportId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve User Sport for Id: '" + model.UserSportId + "'");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
|
||||
}
|
||||
// Validate user sport properties.
|
||||
if (userSport != null)
|
||||
{
|
||||
if (!userSport.SportId.Equals(sportId))
|
||||
// Validate Profile Sport Id against 'Exists' flag.
|
||||
SysId userSportId = model.ExtractSysId(model.UserSportId);
|
||||
bool profileSportExists = StringUtil.ToBool(model.ProfileSportExists);
|
||||
if (profileSportExists && !SysId.IsValid(userSportId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Inconsistent Sport Id specified for User Sport. Expected: " + userSport.SportId + ". Found: " + sportId);
|
||||
SaLogger.Warn(fn + " Id not specified for existing Profile Sport.");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
if (!profileSportExists && SysId.IsValid(userSportId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Id specified for new Profile Sport: '" + model.UserSportId + "'");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
}
|
||||
|
||||
// If sport doesn't exist for the user, it may have been previously deleted.
|
||||
if (userSport == null)
|
||||
{
|
||||
SaxUserSport.Params prmUserSport = new SaxUserSport.Params();
|
||||
prmUserSport.UserAccountIdsIncluded.Add(UserAccountId);
|
||||
prmUserSport.SportIdsIncluded.Add(sportId);
|
||||
prmUserSport.StatusCat = SaxUserSport.StatusCat.Any;
|
||||
userSport = AccountMgr.GetUserSport(prmUserSport);
|
||||
// Retrieve the sport.
|
||||
SysId sportId = model.ExtractSysId(model.ProfileSportId);
|
||||
SaxSport sport = ReferenceMgr.GetSportById(sportId);
|
||||
disposableItems.Add(sport);
|
||||
if (sport == null)
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve Sport for Id: " + sportId);
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
|
||||
// Retrieve existing item.
|
||||
SaxUserSport userSport = AccountMgr.GetUserSportById(userSportId);
|
||||
disposableItems.Add(userSport);
|
||||
if (userSport == null && SysId.IsValid(userSportId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve User Sport for Id: '" + model.UserSportId + "'");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
|
||||
}
|
||||
// Validate user sport properties.
|
||||
if (userSport != null)
|
||||
{
|
||||
if (userSport.Status == SaStatus.Deleted)
|
||||
if (!userSport.SportId.Equals(sportId))
|
||||
{
|
||||
SaLogger.Info(fn + " Resurrecting User Sport with status: " + userSport.StatusDesc + ". Id: " + SysId.ToString(userSport.Id));
|
||||
userSport.Status = SaxUserSport.DefaultStatus;
|
||||
SaLogger.Warn(fn + " Inconsistent Sport Id specified for User Sport. Expected: " + userSport.SportId + ". Found: " + sportId);
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
}
|
||||
|
||||
// If sport doesn't exist for the user, it may have been previously deleted.
|
||||
if (userSport == null)
|
||||
{
|
||||
SaxUserSport.Params prmUserSport = new SaxUserSport.Params();
|
||||
prmUserSport.UserAccountIdsIncluded.Add(UserAccountId);
|
||||
prmUserSport.SportIdsIncluded.Add(sportId);
|
||||
prmUserSport.StatusCat = SaxUserSport.StatusCat.Any;
|
||||
userSport = AccountMgr.GetUserSport(prmUserSport);
|
||||
if (userSport != null)
|
||||
{
|
||||
disposableItems.Add(userSport);
|
||||
if (userSport.Status == SaStatus.Deleted)
|
||||
{
|
||||
SaLogger.Info(fn + " Resurrecting User Sport with status: " + userSport.StatusDesc + ". Id: " + SysId.ToString(userSport.Id));
|
||||
userSport.Status = SaxUserSport.DefaultStatus;
|
||||
}
|
||||
else
|
||||
{
|
||||
responseData.SetControlError(nameof(model.ProfileSportId), Localiser["msg.validation.duplicate.value"]);
|
||||
return Json(responseData);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
responseData.SetControlError(nameof(model.ProfileSportId), Localiser["msg.validation.duplicate.value"]);
|
||||
return Json(responseData);
|
||||
userSport = AccountMgr.CreateUserSport(UserAccountId, sportId);
|
||||
disposableItems.Add(userSport);
|
||||
}
|
||||
}
|
||||
|
||||
// Populate item properties.
|
||||
if (model.ProfileSportAbout != null)
|
||||
userSport.About = model.ProfileSportAbout;
|
||||
if (model.ProfileSportParticipationCode != null)
|
||||
userSport.Participation = model.ProfileSportParticipation;
|
||||
if (model.ProfileSportOfficiatingCode != null)
|
||||
userSport.Officiating = model.ProfileSportOfficiating;
|
||||
|
||||
// Store item.
|
||||
if (!SysId.IsValid(userSport.Id))
|
||||
{
|
||||
if (!AccountMgr.InsertUserSport(userSport, DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to insert user sport: " + AccountMgr.ErrorStateMessage);
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"]));
|
||||
}
|
||||
}
|
||||
else
|
||||
userSport = AccountMgr.CreateUserSport(UserAccountId, sportId);
|
||||
}
|
||||
|
||||
// Populate item properties.
|
||||
if (model.ProfileSportAbout != null)
|
||||
userSport.About = model.ProfileSportAbout;
|
||||
if (model.ProfileSportParticipationCode != null)
|
||||
userSport.Participation = model.ProfileSportParticipation;
|
||||
if (model.ProfileSportOfficiatingCode != null)
|
||||
userSport.Officiating = model.ProfileSportOfficiating;
|
||||
|
||||
// Store item.
|
||||
if (!SysId.IsValid(userSport.Id))
|
||||
{
|
||||
if (!AccountMgr.InsertUserSport(userSport, DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to insert user sport: " + AccountMgr.ErrorStateMessage);
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"]));
|
||||
if (!AccountMgr.UpdateUserSport(userSport, DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to update user sport [Id:" + SysId.ToString(userSport.Id) + "]: " + AccountMgr.ErrorStateMessage);
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"]));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!AccountMgr.UpdateUserSport(userSport, DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to update user sport [Id:" + SysId.ToString(userSport.Id) + "]: " + AccountMgr.ErrorStateMessage);
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"]));
|
||||
}
|
||||
}
|
||||
|
||||
// Refresh list of profile sports for Activity Index.
|
||||
RefreshSessionProfileSports();
|
||||
// Refresh list of profile sports for Activity Index.
|
||||
RefreshSessionProfileSports();
|
||||
|
||||
// Construct response.
|
||||
PopulateProfileSportResponseData(model, userSport, sport, responseData.Sport);
|
||||
responseData.Success = true;
|
||||
// Construct response.
|
||||
PopulateProfileSportResponseData(model, userSport, sport, responseData.Sport);
|
||||
responseData.Success = true;
|
||||
}
|
||||
return Json(responseData);
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -29,9 +29,8 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Common response data.
|
||||
private class SportExperienceResponseData_List
|
||||
private class SportExperienceResponseData_List : AjaxResponse_Data.ItemData_Base
|
||||
{
|
||||
public String Id { get; set; }
|
||||
public String UserSportId { get; set; }
|
||||
public String Period { get; set; }
|
||||
public String PeriodFrom { get; set; }
|
||||
|
||||
@@ -182,8 +182,18 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
indexContext.EffectiveTo = DateTime.Today;
|
||||
|
||||
// Sport and region combinations.
|
||||
List<SysId> sportIds = new List<SysId>();
|
||||
foreach (SysId sportId in sessionData.Profile.Sports.Select(item => item.SportId))
|
||||
{
|
||||
if (sportIds.Contains(sportId)) continue;
|
||||
sportIds.AddId(sportId);
|
||||
// Include child sports.
|
||||
sportIds.AddIds(model.GetChildSports_Active(sportId).Select(item => item.Id));
|
||||
model.GetSportCaption(sportId);
|
||||
}
|
||||
foreach (SysId sportId in sportIds)
|
||||
{
|
||||
// Regions.
|
||||
if (SysId.IsValid(sessionData.User.RegionIdProvince))
|
||||
indexContext.SportRegionIdsIncluded.Add(new SaxActivityIndex.SportRegionIds(sportId, sessionData.User.RegionIdProvince));
|
||||
else if (SysId.IsValid(sessionData.User.RegionIdCountry))
|
||||
|
||||
@@ -53,6 +53,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
private class ArticleData_List : AjaxResponse_Data.ItemData_Base
|
||||
{
|
||||
public String OrganisationId { get; set; }
|
||||
public String OrganisationName { get; set; }
|
||||
public String Headline { get; set; }
|
||||
public String Summary { get; set; }
|
||||
public String RegionCaptionPrimary { get; set; }
|
||||
@@ -69,7 +70,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
public String PublishedOn_Calendar { get; set; }
|
||||
public ArticleContentData Content { get; } = new ArticleContentData();
|
||||
}
|
||||
private void PopulateArticleResponseData(Model_Article model, SaxArticle article, ArticleData_List data)
|
||||
private void PopulateArticleResponseData(Model_Article model, SaxArticle article, SaxOrganisation organisation, ArticleData_List data)
|
||||
{
|
||||
data.Id = model.EncryptId(article.Id);
|
||||
data.OrganisationId = SysId.ToString(article.OrganisationId);
|
||||
@@ -82,9 +83,9 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
data.StatusCode = article.StatusCode;
|
||||
data.StatusDesc = article.StatusDesc;
|
||||
}
|
||||
private void PopulateArticleResponseData(Model_Article model, SaxArticle article, ArticleData_Full data)
|
||||
private void PopulateArticleResponseData(Model_Article model, SaxArticle article, SaxOrganisation organisation, ArticleData_Full data)
|
||||
{
|
||||
PopulateArticleResponseData(model, article, data as ArticleData_List);
|
||||
PopulateArticleResponseData(model, article, organisation, data as ArticleData_List);
|
||||
data.RegionIdPrimary = model.GetEncryptedRegionId(article.RegionIdPrimary);
|
||||
data.SportIdPrimary = model.GetEncryptedSportId(article.SportIdPrimary);
|
||||
data.Published = DateUtil.IsValid(article.PublishedAt) ? true : (bool?)null;
|
||||
@@ -207,6 +208,8 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
prmArticle.UserAccountIdsAuthorIncluded.Add(sessionData.User.UserAccountId);
|
||||
if (SysId.IsValid(organisationIdFilter))
|
||||
prmArticle.OrganisationIdsIncluded.Add(organisationIdFilter);
|
||||
else
|
||||
prmArticle.ExcludeOrganisationArticles = true;
|
||||
prmArticle.ArticleFilter = model.Filter.Article;
|
||||
prmArticle.StatusCat = SaxArticle.StatusCat.NotDeleted;
|
||||
model.Paging.ItemTotal = (ulong)ActivityMgr.GetArticleCount(prmArticle);
|
||||
@@ -215,6 +218,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
// Item columns.
|
||||
ColumnDfn colId = ActivityMgr.GetArticleColumnDfn(SaxArticle.Column.Id);
|
||||
ColumnDfn colOrganisationId = ActivityMgr.GetArticleColumnDfn(SaxArticle.Column.OrganisationId);
|
||||
ColumnDfn colOrganisationName = ActivityMgr.GetArticleColumnDfn(SaxArticle.Column.Organisation_Name);
|
||||
ColumnDfn colHeadline = ActivityMgr.GetArticleColumnDfn(SaxArticle.Column.Headline);
|
||||
ColumnDfn colSummary = ActivityMgr.GetArticleColumnDfn(SaxArticle.Column.Summary);
|
||||
ColumnDfn colRegionIdPrimary = ActivityMgr.GetArticleColumnDfn(SaxArticle.Column.RegionIdPrimary);
|
||||
@@ -224,7 +228,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
ColumnDfn colCreatedOn = ActivityMgr.GetArticleColumnDfn(SaxArticle.Column.CreateOn_Date);
|
||||
List<ColumnDfn> columns = new List<ColumnDfn>()
|
||||
{
|
||||
colId, colOrganisationId, colHeadline, colSummary,
|
||||
colId, colOrganisationId, colOrganisationName, colHeadline, colSummary,
|
||||
colRegionIdPrimary, colSportIdPrimary, colPublishedOn,
|
||||
colStatus, colCreatedOn
|
||||
};
|
||||
@@ -243,6 +247,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
{
|
||||
Id = model.EncryptId(new SysId(values.GetLong(colId.DataName))),
|
||||
OrganisationId = model.EncryptId(new SysId(values.GetLong(colOrganisationId.DataName))),
|
||||
OrganisationName = values.GetString(colOrganisationName.DataName),
|
||||
Headline = values.GetString(colHeadline.DataName),
|
||||
Summary = values.GetString(colSummary.DataName),
|
||||
RegionCaptionPrimary = model.GetRegionCaption(values.GetString(colRegionIdPrimary.DataName).ToSysId()),
|
||||
@@ -315,6 +320,10 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
|
||||
// Organisation.
|
||||
SaxOrganisation organisation = AccountMgr.GetOrganisationById(article.OrganisationId);
|
||||
disposableItems.Add(organisation);
|
||||
|
||||
// Delete upload images.
|
||||
SaxItemImage.Params prmItemImage = new SaxItemImage.Params();
|
||||
prmItemImage.ItemIdsIncluded.Add(new ItemId((short)Sax.DataItemType.Article, articleId));
|
||||
@@ -330,7 +339,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
}
|
||||
|
||||
// Construct response.
|
||||
PopulateArticleResponseData(model, article, responseData.Article);
|
||||
PopulateArticleResponseData(model, article, organisation, responseData.Article);
|
||||
}
|
||||
responseData.Success = true;
|
||||
return Json(responseData);
|
||||
@@ -484,188 +493,202 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
SaxSessionData_Online sessionData = SessionData_Online;
|
||||
RefreshModel(model);
|
||||
|
||||
// Validate item properties.
|
||||
model.ValidateArticleData(responseData);
|
||||
if (responseData.HasControlErrors())
|
||||
return Json(responseData);
|
||||
|
||||
// Validate User & Organisation.
|
||||
SysId userAccountId = UserAccountId;
|
||||
SysId organisationId = model.ExtractSysId(model.ArticleOrganisationId);
|
||||
if (SysId.IsValid(organisationId))
|
||||
// Record disposable items as they are created so all can be disposed when needed.
|
||||
using (DisposableCollection<SacsHierarchyItem> disposableItems = new DisposableCollection<SacsHierarchyItem>())
|
||||
{
|
||||
// Organisation specified - User must have Article Admin role.
|
||||
if (!AccountMgr.UserHasAnyOrganisationRole(userAccountId, organisationId, new[] { Sax.OrganisationRole.Admin, Sax.OrganisationRole.ArticleAdmin }))
|
||||
|
||||
// Validate item properties.
|
||||
model.ValidateArticleData(responseData);
|
||||
if (responseData.HasControlErrors())
|
||||
return Json(responseData);
|
||||
|
||||
// Validate User & Organisation.
|
||||
SysId userAccountId = UserAccountId;
|
||||
SysId organisationId = model.ExtractSysId(model.ArticleOrganisationId);
|
||||
if (SysId.IsValid(organisationId))
|
||||
{
|
||||
SaLogger.Warn(fn + " User does not have Article Admin role for organisation." + GetLogSuffix());
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Organisation not specified - User must be a Journalist.
|
||||
if (!UserIsJournalist)
|
||||
{
|
||||
SaLogger.Warn(fn + " User is not a Journalist for non-organisation article." + GetLogSuffix());
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
}
|
||||
|
||||
// Validate item Id against 'Exists' flag.
|
||||
SysId articleId = model.ExtractSysId(model.ArticleId);
|
||||
bool articleExists = StringUtil.ToBool(model.ArticleExists);
|
||||
if (articleExists && !SysId.IsValid(articleId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Id not specified for existing Article.");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
if (!articleExists && SysId.IsValid(articleId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Id specified for new Article: '" + model.ArticleId + "'");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
|
||||
// Retrieve existing item.
|
||||
SaxArticle article = ActivityMgr.GetArticleById(articleId);
|
||||
if (article == null && SysId.IsValid(articleId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve article for Id: '" + model.ArticleId + "'");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
|
||||
}
|
||||
if (article != null)
|
||||
{
|
||||
// Validate existing article.
|
||||
if (SysId.ToLong(article.UserAccountIdAuthor) != SysId.ToLong(userAccountId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Inconsistent Article Author." + GetLogSuffix());
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
if (SysId.ToLong(article.OrganisationId) != SysId.ToLong(organisationId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Inconsistent Article Organisation." + GetLogSuffix());
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
}
|
||||
|
||||
// Create new item if required.
|
||||
if (article == null)
|
||||
article = ActivityMgr.CreateArticle(sessionData.User.UserAccountId, organisationId);
|
||||
|
||||
// Populate item properties.
|
||||
if (model.ArticleRegionId != null)
|
||||
article.RegionIdPrimary = model.ExtractSysId(model.ArticleRegionId);
|
||||
if (model.ArticleSportId != null)
|
||||
article.SportIdPrimary = model.ExtractSysId(model.ArticleSportId);
|
||||
if (model.ArticleHeadline != null)
|
||||
article.Headline = model.ArticleHeadline;
|
||||
if (model.ArticleSummary != null)
|
||||
article.Summary = model.ArticleSummary;
|
||||
if (!model.ArticlePublished.ToBool())
|
||||
{
|
||||
if (model.ArticlePublish)
|
||||
article.PublishedAt = model.GetArticlePublishOn();
|
||||
else
|
||||
article.PublishedAt = DateTime.MinValue;
|
||||
}
|
||||
if (model.ArticleStatusCode != null)
|
||||
article.Status = model.ArticleStatus;
|
||||
|
||||
// Retrieve all article images - before new article is created as uploaded images are assigned to user first.
|
||||
SaxItemImage.Params prmItemImage = new SaxItemImage.Params();
|
||||
if (SysId.IsValid(article.Id))
|
||||
prmItemImage.ItemIdsIncluded.Add(article.GetItemId());
|
||||
else
|
||||
prmItemImage.ItemIdsIncluded.Add(new ItemId((short)Sax.DataItemType.UserAccount, sessionData.User.UserAccountId));
|
||||
prmItemImage.ImageTypesIncluded.Add(Sax.ImageType.Article);
|
||||
prmItemImage.ImageTypesIncluded.Add(Sax.ImageType.ArticleUpload);
|
||||
prmItemImage.StatusCat = SaxItemImage.StatusCat.NotDeleted;
|
||||
List<SaxItemImage> itemImages = ItemDataMgr.GetItemImageList(prmItemImage);
|
||||
|
||||
// If Article doesn't yet exist, create it now so that images can be assigned.
|
||||
bool articleCreated = false;
|
||||
if (!SysId.IsValid(article.Id))
|
||||
{
|
||||
if (!ActivityMgr.InsertArticle(article, DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to insert article: " + ActivityMgr.ErrorStateMessage);
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"]));
|
||||
}
|
||||
articleCreated = true;
|
||||
}
|
||||
|
||||
// Content.
|
||||
if (model.ArticleContentSegmentBodies != null)
|
||||
{
|
||||
SaxArticle.ContentData articleContent = new SaxArticle.ContentData();
|
||||
for (int segmentIdx = 0; segmentIdx < model.ArticleContentSegmentBodies.Count; segmentIdx++)
|
||||
{
|
||||
String segmentBody = model.ArticleContentSegmentBodies[segmentIdx];
|
||||
String segmentItemImageId = model.ArticleContentSegmentItemImageIds.Count > segmentIdx ? model.ArticleContentSegmentItemImageIds[segmentIdx] : "";
|
||||
String segmentImageIdx = model.ArticleContentSegmentImageIdxs.Count > segmentIdx ? model.ArticleContentSegmentImageIdxs[segmentIdx] : "";
|
||||
if (!StringUtil.IsEmpty(segmentBody))
|
||||
// Organisation specified - User must have Article Admin role.
|
||||
if (!AccountMgr.UserHasAnyOrganisationRole(userAccountId, organisationId, new[] { Sax.OrganisationRole.Admin, Sax.OrganisationRole.ArticleAdmin }))
|
||||
{
|
||||
// HTML Body segment.
|
||||
var segment = articleContent.AddSegment();
|
||||
segment.Body.Html = segmentBody;
|
||||
SaLogger.Warn(fn + " User does not have Article Admin role for organisation." + GetLogSuffix());
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
else if (!StringUtil.IsEmpty(segmentItemImageId) || !StringUtil.IsEmpty(segmentImageIdx))
|
||||
}
|
||||
else
|
||||
{
|
||||
// Organisation not specified - User must be a Journalist.
|
||||
if (!UserIsJournalist)
|
||||
{
|
||||
SysId itemImageId = model.ExtractSysId(segmentItemImageId);
|
||||
int imageIdx = StringUtil.ToInt(segmentImageIdx);
|
||||
SaLogger.Warn(fn + " User is not a Journalist for non-organisation article." + GetLogSuffix());
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
}
|
||||
|
||||
// Check for new image first.
|
||||
SaxItemImage itemImage = itemImages.GetItemImageBySessionImage(sessionData.SessionIdx, imageIdx);
|
||||
if (itemImage == null)
|
||||
itemImage = itemImages.GetItemImageById(itemImageId);
|
||||
if (itemImage != null)
|
||||
// Validate item Id against 'Exists' flag.
|
||||
SysId articleId = model.ExtractSysId(model.ArticleId);
|
||||
bool articleExists = StringUtil.ToBool(model.ArticleExists);
|
||||
if (articleExists && !SysId.IsValid(articleId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Id not specified for existing Article.");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
if (!articleExists && SysId.IsValid(articleId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Id specified for new Article: '" + model.ArticleId + "'");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
|
||||
// Retrieve existing item.
|
||||
SaxArticle article = ActivityMgr.GetArticleById(articleId);
|
||||
disposableItems.Add(article);
|
||||
if (article == null && SysId.IsValid(articleId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve article for Id: '" + model.ArticleId + "'");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
|
||||
}
|
||||
if (article != null)
|
||||
{
|
||||
// Validate existing article.
|
||||
if (SysId.ToLong(article.UserAccountIdAuthor) != SysId.ToLong(userAccountId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Inconsistent Article Author." + GetLogSuffix());
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
if (SysId.ToLong(article.OrganisationId) != SysId.ToLong(organisationId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Inconsistent Article Organisation." + GetLogSuffix());
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
}
|
||||
|
||||
// Organisation.
|
||||
SaxOrganisation organisation = AccountMgr.GetOrganisationById(article.OrganisationId);
|
||||
disposableItems.Add(organisation);
|
||||
|
||||
// Create new item if required.
|
||||
if (article == null)
|
||||
{
|
||||
article = ActivityMgr.CreateArticle(sessionData.User.UserAccountId, organisationId);
|
||||
disposableItems.Add(article);
|
||||
}
|
||||
|
||||
// Populate item properties.
|
||||
if (model.ArticleRegionId != null)
|
||||
article.RegionIdPrimary = model.ExtractSysId(model.ArticleRegionId);
|
||||
if (model.ArticleSportId != null)
|
||||
article.SportIdPrimary = model.ExtractSysId(model.ArticleSportId);
|
||||
if (model.ArticleHeadline != null)
|
||||
article.Headline = model.ArticleHeadline;
|
||||
if (model.ArticleSummary != null)
|
||||
article.Summary = model.ArticleSummary;
|
||||
if (!model.ArticlePublished.ToBool())
|
||||
{
|
||||
if (model.ArticlePublish)
|
||||
article.PublishedAt = model.GetArticlePublishOn();
|
||||
else
|
||||
article.PublishedAt = DateTime.MinValue;
|
||||
}
|
||||
if (model.ArticleStatusCode != null)
|
||||
article.Status = model.ArticleStatus;
|
||||
|
||||
// Retrieve all article images - before new article is created as uploaded images are assigned to user first.
|
||||
SaxItemImage.Params prmItemImage = new SaxItemImage.Params();
|
||||
if (SysId.IsValid(article.Id))
|
||||
prmItemImage.ItemIdsIncluded.Add(article.GetItemId());
|
||||
else
|
||||
prmItemImage.ItemIdsIncluded.Add(new ItemId((short)Sax.DataItemType.UserAccount, sessionData.User.UserAccountId));
|
||||
prmItemImage.ImageTypesIncluded.Add(Sax.ImageType.Article);
|
||||
prmItemImage.ImageTypesIncluded.Add(Sax.ImageType.ArticleUpload);
|
||||
prmItemImage.StatusCat = SaxItemImage.StatusCat.NotDeleted;
|
||||
List<SaxItemImage> itemImages = ItemDataMgr.GetItemImageList(prmItemImage);
|
||||
disposableItems.AddRange(itemImages);
|
||||
|
||||
// If Article doesn't yet exist, create it now so that images can be assigned.
|
||||
bool articleCreated = false;
|
||||
if (!SysId.IsValid(article.Id))
|
||||
{
|
||||
if (!ActivityMgr.InsertArticle(article, DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to insert article: " + ActivityMgr.ErrorStateMessage);
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"]));
|
||||
}
|
||||
articleCreated = true;
|
||||
}
|
||||
|
||||
// Content.
|
||||
if (model.ArticleContentSegmentBodies != null)
|
||||
{
|
||||
SaxArticle.ContentData articleContent = new SaxArticle.ContentData();
|
||||
for (int segmentIdx = 0; segmentIdx < model.ArticleContentSegmentBodies.Count; segmentIdx++)
|
||||
{
|
||||
String segmentBody = model.ArticleContentSegmentBodies[segmentIdx];
|
||||
String segmentItemImageId = model.ArticleContentSegmentItemImageIds.Count > segmentIdx ? model.ArticleContentSegmentItemImageIds[segmentIdx] : "";
|
||||
String segmentImageIdx = model.ArticleContentSegmentImageIdxs.Count > segmentIdx ? model.ArticleContentSegmentImageIdxs[segmentIdx] : "";
|
||||
if (!StringUtil.IsEmpty(segmentBody))
|
||||
{
|
||||
// Ensure that the image is correctly identified for the Article.
|
||||
itemImage.ItemId = article.GetItemId();
|
||||
itemImage.ImageType = Sax.ImageType.Article;
|
||||
itemImage.SessionUid = 0;
|
||||
itemImage.ImageUid = 0;
|
||||
itemImage.Status = SaxItemImage.DefaultStatus;
|
||||
if (ItemDataMgr.UpdateItemImage(itemImage, DbUpdateInfo))
|
||||
// HTML Body segment.
|
||||
var segment = articleContent.AddSegment();
|
||||
segment.Body.Html = segmentBody;
|
||||
}
|
||||
else if (!StringUtil.IsEmpty(segmentItemImageId) || !StringUtil.IsEmpty(segmentImageIdx))
|
||||
{
|
||||
SysId itemImageId = model.ExtractSysId(segmentItemImageId);
|
||||
int imageIdx = StringUtil.ToInt(segmentImageIdx);
|
||||
|
||||
// Check for new image first.
|
||||
SaxItemImage itemImage = itemImages.GetItemImageBySessionImage(sessionData.SessionIdx, imageIdx);
|
||||
if (itemImage == null)
|
||||
itemImage = itemImages.GetItemImageById(itemImageId);
|
||||
if (itemImage != null)
|
||||
{
|
||||
// Assign the image segment to the article.
|
||||
var segment = articleContent.AddSegment();
|
||||
segment.Image.ItemImageId = itemImage.Id;
|
||||
// Remove the image from the list as it's now been handled.
|
||||
itemImages.Remove(itemImage);
|
||||
// Ensure that the image is correctly identified for the Article.
|
||||
itemImage.ItemId = article.GetItemId();
|
||||
itemImage.ImageType = Sax.ImageType.Article;
|
||||
itemImage.SessionUid = 0;
|
||||
itemImage.ImageUid = 0;
|
||||
itemImage.Status = SaxItemImage.DefaultStatus;
|
||||
if (ItemDataMgr.UpdateItemImage(itemImage, DbUpdateInfo))
|
||||
{
|
||||
// Assign the image segment to the article.
|
||||
var segment = articleContent.AddSegment();
|
||||
segment.Image.ItemImageId = itemImage.Id;
|
||||
// Remove the image from the list as it's now been handled.
|
||||
itemImages.Remove(itemImage);
|
||||
}
|
||||
else
|
||||
SaLogger.Warn(fn + " Failed to update article image: " + ItemDataMgr.ErrorStateMessage);
|
||||
}
|
||||
else
|
||||
SaLogger.Warn(fn + " Failed to update article image: " + ItemDataMgr.ErrorStateMessage);
|
||||
SaLogger.Warn(fn + " Failed to identify article image. ItemImageId: " + itemImageId.ToInt() + ". SessionIdx: " + sessionData.SessionIdx + ". ImageIdx: " + imageIdx + ".");
|
||||
}
|
||||
else
|
||||
SaLogger.Warn(fn + " Failed to identify article image. ItemImageId: " + itemImageId.ToInt() + ". SessionIdx: " + sessionData.SessionIdx + ". ImageIdx: " + imageIdx + ".");
|
||||
}
|
||||
article.BodyData = SaxArticle.GetContentData(articleContent);
|
||||
}
|
||||
article.BodyData = SaxArticle.GetContentData(articleContent);
|
||||
|
||||
// Update the Article.
|
||||
if (!ActivityMgr.UpdateArticle(article, DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to update article [Id:" + SysId.ToString(article.Id) + "]: " + ActivityMgr.ErrorStateMessage);
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"]));
|
||||
}
|
||||
SaLogger.Info(fn + " Article " + (articleCreated ? "created" : "updated") + ". Id: " + article.Id.ToString() + ". User: " + SessionData.User.EmailAddress, true);
|
||||
|
||||
// Store Article Activity Index data.
|
||||
ActivityConsole.StoreActivityIndex(article, DbUpdateInfo);
|
||||
|
||||
// Delete remaining images as they are no longer required.
|
||||
foreach (SaxItemImage itemImage in itemImages)
|
||||
{
|
||||
itemImage.SessionUid = 0;
|
||||
itemImage.ImageUid = 0;
|
||||
itemImage.Status = SaStatus.Deleted;
|
||||
ItemDataMgr.UpdateItemImage(itemImage, DbUpdateInfo);
|
||||
}
|
||||
|
||||
// Construct response.
|
||||
PopulateArticleResponseData(model, article, organisation, responseData.Article);
|
||||
responseData.Success = true;
|
||||
}
|
||||
|
||||
// Update the Article.
|
||||
if (!ActivityMgr.UpdateArticle(article, DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to update article [Id:" + SysId.ToString(article.Id) + "]: " + ActivityMgr.ErrorStateMessage);
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"]));
|
||||
}
|
||||
SaLogger.Info(fn + " Article " + (articleCreated ? "created" : "updated") + ". Id: " + article.Id.ToString() + ". User: " + SessionData.User.EmailAddress, true);
|
||||
|
||||
// Store Article Activity Index data.
|
||||
ActivityConsole.StoreActivityIndex(article, DbUpdateInfo);
|
||||
|
||||
// Delete remaining images as they are no longer required.
|
||||
foreach (SaxItemImage itemImage in itemImages)
|
||||
{
|
||||
itemImage.SessionUid = 0;
|
||||
itemImage.ImageUid = 0;
|
||||
itemImage.Status = SaStatus.Deleted;
|
||||
ItemDataMgr.UpdateItemImage(itemImage, DbUpdateInfo);
|
||||
}
|
||||
|
||||
// Construct response.
|
||||
PopulateArticleResponseData(model, article, responseData.Article);
|
||||
responseData.Success = true;
|
||||
return Json(responseData);
|
||||
}
|
||||
|
||||
|
||||
@@ -129,73 +129,52 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
}
|
||||
private OrganisationData GetOrganisationForFilter(SysId filterOrganisationId, String filterOrganisationCaption, Sax.OrganisationRole organisationRole)
|
||||
{
|
||||
// Check that user is associated with organisations.
|
||||
SaxUserOrganisation.Params prmUserOrganisation = new SaxUserOrganisation.Params();
|
||||
prmUserOrganisation.UserAccountIdsIncluded.Add(UserAccountId);
|
||||
prmUserOrganisation.OrganisationStatusCat = SaxOrganisation.StatusCat.ActiveOnly;
|
||||
prmUserOrganisation.StatusCat = SaxUserOrganisation.StatusCat.ActiveOnly;
|
||||
if (AccountMgr.GetUserOrganisationCount(prmUserOrganisation) < 1)
|
||||
return null;
|
||||
OrganisationData organisationData = null;
|
||||
|
||||
// Roles (any) required for organisation list.
|
||||
List<Sax.OrganisationRole> requiredRoles = new List<Sax.OrganisationRole>() { Sax.OrganisationRole.Admin };
|
||||
List <Sax.OrganisationRole> requiredRoles = new List<Sax.OrganisationRole>() { Sax.OrganisationRole.Admin };
|
||||
if (organisationRole > 0)
|
||||
requiredRoles.Add(organisationRole);
|
||||
|
||||
// Retrieve specified organisation.
|
||||
OrganisationData organisationData = null;
|
||||
// Filter to identify suitable organisations that user is a member of and has the appropriate rights.
|
||||
SaxUserOrganisation.Params prmUserOrganisation = new SaxUserOrganisation.Params();
|
||||
prmUserOrganisation.UserAccountIdsIncluded.Add(UserAccountId);
|
||||
prmUserOrganisation.OrganisationStatusCat = SaxOrganisation.StatusCat.ActiveOnly;
|
||||
prmUserOrganisation.OrganisationMembersOnly = true;
|
||||
prmUserOrganisation.OrganisationRolesAny.AddRange(requiredRoles);
|
||||
prmUserOrganisation.StatusCat = SaxUserOrganisation.StatusCat.ActiveOnly;
|
||||
|
||||
// Restrict to specified Organisation.
|
||||
if (SysId.IsValid(filterOrganisationId))
|
||||
{
|
||||
organisationData = new OrganisationData(filterOrganisationId) { Caption = filterOrganisationCaption };
|
||||
using (SaxOrganisation organisation = AccountMgr.GetOrganisationById(organisationData.Id))
|
||||
{
|
||||
// Validate organisation.
|
||||
if (organisation != null && organisation.IsStatusActive && AccountMgr.UserHasAnyOrganisationRole(UserAccountId, organisation.Id, requiredRoles))
|
||||
organisationData.Caption = organisation.Name;
|
||||
else
|
||||
organisationData = null;
|
||||
}
|
||||
// Verify that the specified organisation is valid for the filter conditions.
|
||||
prmUserOrganisation.OrganisationIdsIncluded.Add(filterOrganisationId);
|
||||
if (AccountMgr.GetUserOrganisationCount(prmUserOrganisation) < 1)
|
||||
// Specified organisation is not valid - remove restriction.
|
||||
prmUserOrganisation.OrganisationIdsIncluded.Clear();
|
||||
}
|
||||
|
||||
if (organisationData == null)
|
||||
// Pick the first valid Organisation.
|
||||
ColumnDfn colOrganisationId = AccountMgr.GetUserOrganisationColumnDfn(SaxUserOrganisation.Column.OrganisationId);
|
||||
ColumnDfn colOrganisationName = AccountMgr.GetUserOrganisationColumnDfn(SaxUserOrganisation.Column.Organisation_Name);
|
||||
prmUserOrganisation.SortColumns.Add(colOrganisationName);
|
||||
prmUserOrganisation.ResultsPaging.PageLength = 1;
|
||||
prmUserOrganisation.ResultsPaging.PageNo = 1;
|
||||
using (DbResultSet resultSet = AccountMgr.ExecuteUserOrganisationQuery(new List<ColumnDfn>() { colOrganisationId, colOrganisationName }, prmUserOrganisation))
|
||||
{
|
||||
// Pick the first valid Organisation that the user is a member of.
|
||||
ColumnDfn colOrganisationId = AccountMgr.GetUserOrganisationColumnDfn(SaxUserOrganisation.Column.OrganisationId);
|
||||
ColumnDfn colOrganisationName = AccountMgr.GetUserOrganisationColumnDfn(SaxUserOrganisation.Column.Organisation_Name);
|
||||
prmUserOrganisation = new SaxUserOrganisation.Params();
|
||||
prmUserOrganisation.UserAccountIdsIncluded.Add(UserAccountId);
|
||||
if (organisationData != null && SysId.IsValid(organisationData.Id))
|
||||
prmUserOrganisation.OrganisationIdsIncluded.Add(organisationData.Id);
|
||||
prmUserOrganisation.OrganisationStatusCat = SaxOrganisation.StatusCat.ActiveOnly;
|
||||
prmUserOrganisation.OrganisationMembersOnly = true;
|
||||
prmUserOrganisation.StatusCat = SaxUserOrganisation.StatusCat.ActiveOnly;
|
||||
prmUserOrganisation.SortColumns.Add(colOrganisationName);
|
||||
prmUserOrganisation.ResultsPaging.PageLength = 1;
|
||||
prmUserOrganisation.ResultsPaging.PageNo = 1;
|
||||
using (DbResultSet resultSet = AccountMgr.ExecuteUserOrganisationQuery(new List<ColumnDfn>() { colOrganisationId, colOrganisationName }, prmUserOrganisation))
|
||||
if (resultSet != null && resultSet.HasRows && resultSet.NextRecord())
|
||||
{
|
||||
while (resultSet != null && resultSet.HasRows && resultSet.NextRecord())
|
||||
NamedValue.Map values = resultSet.GetRecordValues();
|
||||
SysId organisationId = new SysId(values.GetLong(colOrganisationId.DataName));
|
||||
if (SysId.IsValid(organisationId))
|
||||
{
|
||||
NamedValue.Map values = resultSet.GetRecordValues();
|
||||
SysId organisationId = new SysId(values.GetLong(colOrganisationId.DataName));
|
||||
if (SysId.IsValid(organisationId))
|
||||
organisationData = new OrganisationData(organisationId)
|
||||
{
|
||||
organisationData = new OrganisationData(organisationId);
|
||||
organisationData.Caption = values.GetString(colOrganisationName.DataName);
|
||||
break;
|
||||
}
|
||||
Caption = values.GetString(colOrganisationName.DataName)
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
if (SysId.IsValid(organisationData.Id) && StringUtil.IsEmpty(organisationData.Caption))
|
||||
{
|
||||
// Organisation has been identified but no caption available as yet.
|
||||
using (SaxOrganisation organisation = AccountMgr.GetOrganisationById(organisationData.Id))
|
||||
{
|
||||
if (organisation != null)
|
||||
organisationData.Caption = organisation.Name;
|
||||
}
|
||||
}
|
||||
return organisationData;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user