v1.2.9.1
This commit is contained in:
@@ -74,7 +74,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
// Utilites.
|
||||
private ItemId GetUserItemId(SysId userAccountId)
|
||||
{
|
||||
return new ItemId((short)Sax.DataItemType.UserAccount, UserAccountId);
|
||||
return new ItemId((short)Sax.DataItemType.UserAccount, userAccountId);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
@@ -122,11 +122,11 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
responseData.ImageContentTypes = SaxItemImage.GetValidContentTypes(Sax.DataItemType.UserAccount);
|
||||
|
||||
// Retrieve user details.
|
||||
SaxUserAccount userAccount = AccountMgr.GetUserAccountById(UserAccountId);
|
||||
SaxUserAccount userAccount = AccountMgr.GetUserAccountById(SessionUserAccountId);
|
||||
disposableItems.Add(userAccount);
|
||||
if (userAccount == null)
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve user account for Id: " + SysId.ToString(UserAccountId));
|
||||
SaLogger.Warn(fn + " Failed to retrieve user account for Id: " + SysId.ToString(SessionUserAccountId));
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.something.gone.wrong"]));
|
||||
}
|
||||
|
||||
@@ -218,7 +218,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
return Json(responseData.SetControlError("AccountContactImage", Localiser["msg.upload.image.resize.failed"]));
|
||||
|
||||
// Image belongs to the user's account.
|
||||
ItemId userItemId = GetUserItemId(UserAccountId);
|
||||
ItemId userItemId = GetUserItemId(SessionUserAccountId);
|
||||
|
||||
// Store uploaded image as 'Upload' Avatar - awaiting confirmation that the contact details are to be saved.
|
||||
SaxItemImage itemImage = ItemDataMgr.GetItemImage(userItemId, Sax.ImageType.Avatar_Upload, SaxItemImage.StatusCat.Any);
|
||||
@@ -291,11 +291,11 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
return Json(responseData);
|
||||
|
||||
// Retrieve user details.
|
||||
SaxUserAccount userAccount = AccountMgr.GetUserAccountById(UserAccountId);
|
||||
SaxUserAccount userAccount = AccountMgr.GetUserAccountById(SessionUserAccountId);
|
||||
disposableItems.Add(userAccount);
|
||||
if (userAccount == null)
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve user account for Id: " + SysId.ToString(UserAccountId));
|
||||
SaLogger.Warn(fn + " Failed to retrieve user account for Id: " + SysId.ToString(SessionUserAccountId));
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.something.gone.wrong"]));
|
||||
}
|
||||
if (!userAccount.EmailAddress.EqualsCI(SessionData.User.EmailAddress))
|
||||
|
||||
@@ -0,0 +1,462 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Saxonite.Net.Core.Web.Online.Models;
|
||||
using Saxonite.Net.Core.Web.Base.App;
|
||||
using Saxonite.Net.Core.Web.Base.Controllers;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Saxonite.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.App;
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
using Sarand.Net.Standard.Base.Core;
|
||||
using Sarand.Net.Standard.Base.Dbas;
|
||||
using Saxonite.Net.Standard.Base.App;
|
||||
using MailKit;
|
||||
using Org.BouncyCastle.Asn1.Mozilla;
|
||||
|
||||
namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
{
|
||||
//=======================================================================
|
||||
// Online Account Controller - User Eligibility - Ajax actions.
|
||||
//=======================================================================
|
||||
partial class AccountController
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data definitions.
|
||||
private class UserEligibilityResponseListData : AjaxResponse_Data.ItemData_Base
|
||||
{
|
||||
public String UserAccountId { get; set; }
|
||||
public String RegionName { get; set; }
|
||||
public String EligibilityTypeDesc { get; set; }
|
||||
public String Info { get; set; }
|
||||
public String ExpiresOnFmt { get; set; }
|
||||
}
|
||||
private class UserEligibilityResponseItemData : UserEligibilityResponseListData
|
||||
{
|
||||
public String RegionId { get; set; }
|
||||
public String EligibilityType { get; set; }
|
||||
public String ExpiresOnFrm { get; set; }
|
||||
}
|
||||
private void PopulateUserEligibilityResponseListData(SaxModel_Online model, SaxUserEligibility userEligibility, UserEligibilityResponseListData data)
|
||||
{
|
||||
data.Id = model.EncryptId(userEligibility.Id);
|
||||
data.UserAccountId = model.EncryptId(userEligibility.UserAccountId);
|
||||
data.RegionName = model.GetRegionCaption(userEligibility.RegionId);
|
||||
data.EligibilityTypeDesc = Localiser.GetEligibilityTypeCaption(userEligibility.EligibilityType);
|
||||
data.Info = userEligibility.Info;
|
||||
data.ExpiresOnFmt = model.FormatDateForDisplay(userEligibility.ExpiresOn);
|
||||
}
|
||||
private void PopulateUserEligibilityResponseItemData(SaxModel_Online model, SaxUserEligibility userEligibility, UserEligibilityResponseItemData data)
|
||||
{
|
||||
PopulateUserEligibilityResponseListData(model, userEligibility, data);
|
||||
data.RegionId = model.GetEncryptedRegionId(userEligibility.RegionId);
|
||||
data.EligibilityType = EligibilityTypeCodes.GetCodeForType(userEligibility.EligibilityType);
|
||||
data.ExpiresOnFrm = model.FormatDateForForm(userEligibility.ExpiresOn);
|
||||
data.CreatedOnFmt = model.FormatDateForDisplay(userEligibility.CreateStamp.On);
|
||||
data.StatusCode = userEligibility.StatusCode;
|
||||
data.StatusDesc = userEligibility.StatusDesc;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Account - Get User Eligibility list.
|
||||
//-------------------------------------------------------------------
|
||||
private class EligibilityTypeData
|
||||
{
|
||||
public String Code { get; set; }
|
||||
public String Desc { get; set; }
|
||||
/// <summary>Does the eligibility type allow a date range.</summary>
|
||||
public bool? Dates { get; set; } = null;
|
||||
}
|
||||
private class AjaxResponse_UserEligibilityListData : AjaxResponse_Data
|
||||
{
|
||||
// Construction.
|
||||
public AjaxResponse_UserEligibilityListData(SaxModel_Online model) : base(model) { }
|
||||
// Eligibility list.
|
||||
public List<UserEligibilityResponseListData> Eligibilities { get; } = new List<UserEligibilityResponseListData>();
|
||||
// Eligibility types.
|
||||
public List<EligibilityTypeData> Types { get; } = new List<EligibilityTypeData>();
|
||||
}
|
||||
// Ajax request.
|
||||
[HttpPost]
|
||||
[Route("Account/Ajax/GetUserEligibilities")]
|
||||
[Route("Account/Ajax/GetUserEligibilityList")]
|
||||
public IActionResult GetUserEligibilities(Model_UserEligibility model)
|
||||
{
|
||||
String fn = GetType().Name + ".GetUserEligibilities";
|
||||
AjaxResponse_UserEligibilityListData responseData = new AjaxResponse_UserEligibilityListData(model);
|
||||
String messageTitle = Localiser["account.caption.profile.eligibility"];
|
||||
|
||||
// Validate session and referrer.
|
||||
if (!ValidReferer) return Forbid();
|
||||
if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData);
|
||||
RefreshModel(model);
|
||||
|
||||
// Eligibility types.
|
||||
foreach (Sax.EligibilityType eligibilityType in EnumUtil.GetValues<Sax.EligibilityType>())
|
||||
{
|
||||
EligibilityTypeData typeData = new EligibilityTypeData();
|
||||
typeData.Code = model.EligibilityTypeCodes.GetCodeForType(eligibilityType);
|
||||
if (StringUtil.IsBlank(typeData.Code)) continue;
|
||||
typeData.Desc = Localiser.GetEligibilityTypeCaption(eligibilityType);
|
||||
if (SaxUserEligibility.AllowsApplicablePeriod(eligibilityType))
|
||||
typeData.Dates = true;
|
||||
responseData.Types.Add(typeData);
|
||||
}
|
||||
|
||||
// User account.
|
||||
SysId userAccountId = StringUtil.ToSysId(model.UserAccount.Id);
|
||||
if (!SysId.IsValid(userAccountId))
|
||||
userAccountId = SessionUserAccountId;
|
||||
|
||||
// Item filter.
|
||||
SaxUserEligibility.Params prmUserEligibility = new SaxUserEligibility.Params();
|
||||
prmUserEligibility.UserAccountIdsIncluded.Add(userAccountId);
|
||||
prmUserEligibility.StatusCat = SaxUserEligibility.StatusCat.NotDeleted;
|
||||
prmUserEligibility.SortColumns.Add(AccountMgr.GetUserEligibilityColumnDfn(SaxUserEligibility.Column.EligibilityType));
|
||||
model.Paging.ItemTotal = (ulong)AccountMgr.GetUserEligibilityCount(prmUserEligibility);
|
||||
model.PopulatePagingTo(prmUserEligibility.ResultsPaging);
|
||||
|
||||
// Item columns.
|
||||
ColumnDfn colId = AccountMgr.GetUserEligibilityColumnDfn(SaxUserEligibility.Column.Id);
|
||||
ColumnDfn colUserAccountId = AccountMgr.GetUserEligibilityColumnDfn(SaxUserEligibility.Column.UserAccountId);
|
||||
ColumnDfn colRegionName = AccountMgr.GetUserEligibilityColumnDfn(SaxUserEligibility.Column.Region_Name);
|
||||
ColumnDfn colEligibilityType = AccountMgr.GetUserEligibilityColumnDfn(SaxUserEligibility.Column.EligibilityType);
|
||||
ColumnDfn colInfo = AccountMgr.GetUserEligibilityColumnDfn(SaxUserEligibility.Column.Info);
|
||||
ColumnDfn colExpires = AccountMgr.GetUserEligibilityColumnDfn(SaxUserEligibility.Column.ExpiresOn);
|
||||
ColumnDfn colStatus = AccountMgr.GetUserEligibilityColumnDfn(SaxUserEligibility.Column.Status);
|
||||
List<ColumnDfn> columns = new List<ColumnDfn>()
|
||||
{
|
||||
colId,colUserAccountId,
|
||||
colRegionName, colEligibilityType,
|
||||
colInfo, colExpires,
|
||||
colStatus,
|
||||
};
|
||||
|
||||
// Sort columns.
|
||||
prmUserEligibility.SortColumns.Add(colRegionName);
|
||||
|
||||
// Query items.
|
||||
using (DbResultSet resultSet = AccountMgr.ExecuteUserEligibilityQuery(columns, prmUserEligibility))
|
||||
{
|
||||
while (resultSet != null && resultSet.HasRows && resultSet.NextRecord())
|
||||
{
|
||||
NamedValue.Map values = resultSet.GetRecordValues();
|
||||
Sax.EligibilityType eligibilityType = (Sax.EligibilityType)values.GetLong(colEligibilityType.DataName);
|
||||
UserEligibilityResponseListData userEligibilityData = new UserEligibilityResponseListData()
|
||||
{
|
||||
Id = model.EncryptId(new SysId(values.GetLong(colId.DataName))),
|
||||
UserAccountId = model.EncryptId(new SysId(values.GetLong(colUserAccountId.DataName))),
|
||||
RegionName = values.GetString(colRegionName.DataName),
|
||||
EligibilityTypeDesc = Localiser.GetEligibilityTypeCaption(eligibilityType),
|
||||
Info = values.GetString(colInfo.DataName),
|
||||
ExpiresOnFmt = model.FormatDateForDisplay(values.GetDate(colExpires.DataName)),
|
||||
StatusCode = values.GetString(colStatus.DataName),
|
||||
StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName))
|
||||
};
|
||||
responseData.Eligibilities.Add(userEligibilityData);
|
||||
}
|
||||
}
|
||||
if (model.Paging.IsPaged)
|
||||
model.Paging.ItemCount = (ushort)responseData.Eligibilities.Count;
|
||||
|
||||
// Complete response.
|
||||
responseData.SetPaging(model);
|
||||
responseData.Success = true;
|
||||
return Json(responseData);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get User Eligibility ajax request.
|
||||
//-------------------------------------------------------------------
|
||||
private class AjaxResponse_UserEligibility : AjaxResponse_Data
|
||||
{
|
||||
// Construction.
|
||||
public AjaxResponse_UserEligibility(SaxModel_Online model) : base(model) { }
|
||||
// Eligibility details.
|
||||
public UserEligibilityResponseItemData Eligibility { get; } = new UserEligibilityResponseItemData();
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
[HttpPost]
|
||||
[Route("Account/Ajax/GetUserEligibility")]
|
||||
public IActionResult Ajax_GetUserEligibility(Model_UserEligibility model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_GetUserEligibility";
|
||||
String messageTitle = Localiser["account.caption.profile.eligibility"];
|
||||
AjaxResponse_UserEligibility responseData = new AjaxResponse_UserEligibility(model);
|
||||
|
||||
// Validate session and referrer.
|
||||
if (!ValidReferer) return Forbid();
|
||||
if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData);
|
||||
RefreshModel(model);
|
||||
|
||||
// Record disposable items as they are created so all can be disposed when needed.
|
||||
using (DisposableCollection<SacsHierarchyItem> disposableItems = new DisposableCollection<SacsHierarchyItem>())
|
||||
{
|
||||
|
||||
// Identify item.
|
||||
SysId userEligibilityId = model.ExtractSysId(model.Eligibility.Id);
|
||||
if (!SysId.IsValid(userEligibilityId))
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
|
||||
|
||||
// Retrieve item.
|
||||
SaxUserEligibility userEligibility = AccountMgr.GetUserEligibilityById(userEligibilityId);
|
||||
disposableItems.Add(userEligibility);
|
||||
if (userEligibility == null)
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve User Eligibility for Id: '" + model.Eligibility.Id + "'");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
|
||||
}
|
||||
|
||||
// Construct response.
|
||||
PopulateUserEligibilityResponseItemData(model, userEligibility, responseData.Eligibility);
|
||||
responseData.Success = true;
|
||||
}
|
||||
return Json(responseData);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Store User Eligibility ajax request.
|
||||
//-------------------------------------------------------------------
|
||||
private class AjaxResponse_StoreUserEligibility : AjaxResponse_Data
|
||||
{
|
||||
// Construction.
|
||||
public AjaxResponse_StoreUserEligibility(SaxModel_Online model) : base(model) { }
|
||||
// Eligibility details.
|
||||
public UserEligibilityResponseItemData Eligibility { get; } = new UserEligibilityResponseItemData();
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
[HttpPost]
|
||||
[Route("Account/Ajax/StoreUserEligibility")]
|
||||
public IActionResult Ajax_StoreUserEligibility(Model_UserEligibility model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_StoreUserEligibility";
|
||||
String messageTitle = Localiser["account.caption.profile.eligibility"];
|
||||
AjaxResponse_StoreUserEligibility responseData = new AjaxResponse_StoreUserEligibility(model);
|
||||
|
||||
// Validate session and referrer.
|
||||
if (!ValidReferer) return Forbid();
|
||||
if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData);
|
||||
RefreshModel(model);
|
||||
|
||||
// Record disposable items as they are created so all can be disposed when needed.
|
||||
using (DisposableCollection<SacsHierarchyItem> disposableItems = new DisposableCollection<SacsHierarchyItem>())
|
||||
{
|
||||
|
||||
// Validate item properties.
|
||||
model.ValidateEligibilityDetails(responseData);
|
||||
if (responseData.HasControlErrors())
|
||||
return Json(responseData);
|
||||
|
||||
// User account.
|
||||
SysId userAccountId = StringUtil.ToSysId(model.UserAccount.Id);
|
||||
if (!SysId.IsValid(userAccountId))
|
||||
userAccountId = SessionUserAccountId;
|
||||
|
||||
// Validate User Eligibility Id against 'Exists' flag.
|
||||
SysId userEligibilityId = model.ExtractSysId(model.Eligibility.Id);
|
||||
bool eligibilityExists = StringUtil.ToBool(model.Eligibility.Exists);
|
||||
if (eligibilityExists && !SysId.IsValid(userEligibilityId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Id not specified for existing User Eligibility.");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
if (!eligibilityExists && SysId.IsValid(userEligibilityId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Id specified for new User Eligibility: '" + model.Eligibility.Id + "'");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
|
||||
// Retrieve existing item.
|
||||
SaxUserEligibility userEligibility = AccountMgr.GetUserEligibilityById(userEligibilityId);
|
||||
disposableItems.Add(userEligibility);
|
||||
if (userEligibility == null && SysId.IsValid(userEligibilityId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve User Eligibility for Id: '" + model.Eligibility.Id + "'");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
|
||||
}
|
||||
|
||||
// Validate user eligibility properties.
|
||||
if (userEligibility != null)
|
||||
{
|
||||
if (!userEligibility.UserAccountId.Equals(userAccountId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Inconsistent User Account Id specified for User Eligibility. Expected: " + userEligibility.UserAccountId + ". Found: " + userAccountId);
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
}
|
||||
|
||||
// Region.
|
||||
SysId regionId = model.Eligibility.RegionId != null ? model.DecryptId(model.Eligibility.RegionId) : userEligibility != null ? userEligibility.RegionId : null;
|
||||
if (!SysId.IsValid(regionId))
|
||||
{
|
||||
// Shouldn't get here.
|
||||
SaLogger.Warn(fn + " Region Id not supplied for " + (eligibilityExists ? "existing" : "new") + " eligibility.");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
SaxRegion.Data region = Internals.GetRegion(regionId);
|
||||
|
||||
// Eligibility type.
|
||||
Sax.EligibilityType eligibilityType = userEligibility != null ? userEligibility.EligibilityType : model.Eligibility.getEligibilityType();
|
||||
if (eligibilityType <= 0)
|
||||
{
|
||||
// Shouldn't get here.
|
||||
SaLogger.Warn(fn + " Eligibility type not specified for " + (eligibilityExists ? "existing" : "new") + " eligibility.");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
|
||||
// Check for duplicate data.
|
||||
// ToDo Should include date range in checking for duplicate eligibility?
|
||||
{
|
||||
// First check without region.
|
||||
SaxUserEligibility.Params prmUserEligibility = new SaxUserEligibility.Params();
|
||||
if (userEligibility != null)
|
||||
prmUserEligibility.IdsExcluded.Add(userEligibility.Id);
|
||||
prmUserEligibility.UserAccountIdsIncluded.Add(userAccountId);
|
||||
prmUserEligibility.EligibilityTypesIncluded.Add(eligibilityType);
|
||||
prmUserEligibility.StatusCat = SaxUserEligibility.StatusCat.NotDeleted;
|
||||
long eligibilityCount = AccountMgr.GetUserEligibilityCount(prmUserEligibility);
|
||||
// Selected Eligibility types have a limit on the number of instances allowed.
|
||||
if (eligibilityCount >= SaxUserEligibility.GetMaxInstances(eligibilityType))
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.validation.duplicate.value"]));
|
||||
// Now include region - only allow one eligibility of each type.
|
||||
prmUserEligibility.RegionIdsIncluded.Add(regionId);
|
||||
eligibilityCount = AccountMgr.GetUserEligibilityCount(prmUserEligibility);
|
||||
if (eligibilityCount >= 1)
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.validation.duplicate.value"]));
|
||||
}
|
||||
|
||||
// If eligibility doesn't exist for the user, it may have been previously deleted.
|
||||
if (userEligibility == null)
|
||||
{
|
||||
SaxUserEligibility.Params prmUserEligibility = new SaxUserEligibility.Params();
|
||||
prmUserEligibility.UserAccountIdsIncluded.Add(userAccountId);
|
||||
prmUserEligibility.RegionIdsIncluded.Add(regionId);
|
||||
prmUserEligibility.EligibilityTypesIncluded.Add(eligibilityType);
|
||||
prmUserEligibility.StatusCat = SaxUserEligibility.StatusCat.Any;
|
||||
userEligibility = AccountMgr.GetUserEligibility(prmUserEligibility);
|
||||
if (userEligibility != null)
|
||||
{
|
||||
disposableItems.Add(userEligibility);
|
||||
if (userEligibility.Status == SaStatus.Deleted)
|
||||
{
|
||||
SaLogger.Info(fn + " Resurrecting User Eligibility with status: " + userEligibility.StatusDesc + ". Id: " + SysId.ToString(userEligibility.Id));
|
||||
userEligibility.Status = SaxUserEligibility.DefaultStatus;
|
||||
}
|
||||
else
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.validation.duplicate.value"]));
|
||||
}
|
||||
else
|
||||
{
|
||||
userEligibility = AccountMgr.CreateUserEligibility(userAccountId, regionId, eligibilityType);
|
||||
disposableItems.Add(userEligibility);
|
||||
}
|
||||
}
|
||||
|
||||
// Populate item properties.
|
||||
if (model.Eligibility.Info != null)
|
||||
userEligibility.Info = model.Eligibility.Info;
|
||||
if (model.Eligibility.ExpiresOn != null)
|
||||
userEligibility.ExpiresOn = model.ParseDateFromForm(model.Eligibility.ExpiresOn);
|
||||
|
||||
// Store item.
|
||||
if (!SysId.IsValid(userEligibility.Id))
|
||||
{
|
||||
if (!AccountMgr.InsertUserEligibility(userEligibility, DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to insert user eligibility: " + AccountMgr.ErrorStateMessage);
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"]));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!AccountMgr.UpdateUserEligibility(userEligibility, DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to update user eligibility [Id:" + SysId.ToString(userEligibility.Id) + "]: " + AccountMgr.ErrorStateMessage);
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"]));
|
||||
}
|
||||
}
|
||||
|
||||
// Construct response.
|
||||
PopulateUserEligibilityResponseItemData(model, userEligibility, responseData.Eligibility);
|
||||
responseData.Success = true;
|
||||
}
|
||||
return Json(responseData);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Remove User Eligibility ajax request.
|
||||
//-------------------------------------------------------------------
|
||||
private class AjaxResponse_RemoveUserEligibility : AjaxResponse_Data
|
||||
{
|
||||
// Construction.
|
||||
public AjaxResponse_RemoveUserEligibility(SaxModel_Online model) : base(model) { }
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
[HttpPost]
|
||||
[Route("Account/Ajax/RemoveUserEligibility")]
|
||||
public IActionResult Ajax_RemoveUserEligibility(Model_UserEligibility model)
|
||||
{
|
||||
String fn = GetType().Name + ".Ajax_RemoveUserEligibility";
|
||||
String messageTitle = Localiser["account.caption.profile.eligibility"];
|
||||
AjaxResponse_UserEligibility responseData = new AjaxResponse_UserEligibility(model);
|
||||
|
||||
// Validate session and referrer.
|
||||
if (!ValidReferer) return Forbid();
|
||||
if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData);
|
||||
RefreshModel(model);
|
||||
|
||||
// User account.
|
||||
SysId userAccountId = StringUtil.ToSysId(model.UserAccount.Id);
|
||||
if (!SysId.IsValid(userAccountId))
|
||||
userAccountId = SessionUserAccountId;
|
||||
|
||||
// Record disposable items as they are created so all can be disposed when needed.
|
||||
using (DisposableCollection<SacsHierarchyItem> disposableItems = new DisposableCollection<SacsHierarchyItem>())
|
||||
{
|
||||
|
||||
// User Eligibility Id.
|
||||
SysId userEligibilityId = model.ExtractSysId(model.Eligibility.Id);
|
||||
if (!SysId.IsValid(userEligibilityId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Id not specified to remove User Eligibility.");
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
|
||||
// Retrieve existing item.
|
||||
SaxUserEligibility userEligibility = AccountMgr.GetUserEligibilityById(userEligibilityId);
|
||||
disposableItems.Add(userEligibility);
|
||||
if (userEligibility == null)
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to retrieve User Eligibility for Id: '" + model.Eligibility.Id + "'");
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
|
||||
}
|
||||
|
||||
// Validate user eligibility properties.
|
||||
if (!userEligibility.UserAccountId.Equals(userAccountId))
|
||||
{
|
||||
SaLogger.Warn(fn + " Inconsistent User Account Id specified for User Eligibility. Expected: " + userEligibility.UserAccountId + ". Found: " + userAccountId);
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
}
|
||||
|
||||
// Delete item.
|
||||
if (!AccountMgr.DeleteUserEligibility(userEligibility, DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to delete user eligibility [Id:" + SysId.ToString(userEligibility.Id) + "]: " + AccountMgr.ErrorStateMessage);
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"]));
|
||||
}
|
||||
|
||||
// Construct response.
|
||||
PopulateUserEligibilityResponseItemData(model, userEligibility, responseData.Eligibility);
|
||||
responseData.Success = true;
|
||||
}
|
||||
return Json(responseData);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -166,7 +166,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
|
||||
// Query organisations that user is a member of.
|
||||
SaxUserOrganisation.Params prmUserOrganisation = new SaxUserOrganisation.Params();
|
||||
prmUserOrganisation.UserAccountIdsIncluded.Add(UserAccountId);
|
||||
prmUserOrganisation.UserAccountIdsIncluded.Add(SessionUserAccountId);
|
||||
prmUserOrganisation.OrganisationStatusCat = SaxOrganisation.StatusCat.ActiveOnly;
|
||||
prmUserOrganisation.OrganisationMembersOnly = true;
|
||||
prmUserOrganisation.StatusCat = SaxUserOrganisation.StatusCat.ActiveOnly;
|
||||
@@ -294,7 +294,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
disposableItems.Add(address);
|
||||
|
||||
// Check whether user is a member of this organisation.
|
||||
SaxUserOrganisation userOrganisation = AccountMgr.GetUserOrganisationByUserOrganisation(UserAccountId, organisationId);
|
||||
SaxUserOrganisation userOrganisation = AccountMgr.GetUserOrganisationByUserOrganisation(SessionUserAccountId, organisationId);
|
||||
disposableItems.Add(userOrganisation);
|
||||
if (userOrganisation != null)
|
||||
{
|
||||
@@ -402,7 +402,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
}
|
||||
|
||||
// Check whether user is a member of this organisation.
|
||||
SaxUserOrganisation userOrganisation = AccountMgr.GetUserOrganisationByUserOrganisation(UserAccountId, organisationId);
|
||||
SaxUserOrganisation userOrganisation = AccountMgr.GetUserOrganisationByUserOrganisation(SessionUserAccountId, organisationId);
|
||||
disposableItems.Add(userOrganisation);
|
||||
if (userOrganisation == null)
|
||||
{
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
data.SportAbout = userSport.About;
|
||||
data.SportParticipationCode = SportParticipationCodes.GetCodeForType(userSport.Participation);
|
||||
data.SportOfficiatingCode = SportOfficiatingCodes.GetCodeForType(userSport.Officiating);
|
||||
data.CreatedOnFmt = DateUtil.Format(userSport.CreateStamp.On, "d-MMM-yyyy");
|
||||
data.CreatedOnFmt = model.FormatDateForDisplay(userSport.CreateStamp.On);
|
||||
data.StatusCode = userSport.StatusCode;
|
||||
data.StatusDesc = userSport.StatusDesc;
|
||||
}
|
||||
@@ -85,7 +85,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
|
||||
// Item filter.
|
||||
SaxUserSport.Params prmUserSport = new SaxUserSport.Params();
|
||||
prmUserSport.UserAccountIdsIncluded.Add(UserAccountId);
|
||||
prmUserSport.UserAccountIdsIncluded.Add(SessionUserAccountId);
|
||||
prmUserSport.StatusCat = SaxUserSport.StatusCat.NotDeleted;
|
||||
model.Paging.ItemTotal = (ulong)AccountMgr.GetUserSportCount(prmUserSport);
|
||||
model.PopulatePagingTo(prmUserSport.ResultsPaging);
|
||||
@@ -267,7 +267,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
if (userSport == null)
|
||||
{
|
||||
SaxUserSport.Params prmUserSport = new SaxUserSport.Params();
|
||||
prmUserSport.UserAccountIdsIncluded.Add(UserAccountId);
|
||||
prmUserSport.UserAccountIdsIncluded.Add(SessionUserAccountId);
|
||||
prmUserSport.SportIdsIncluded.Add(sportId);
|
||||
prmUserSport.StatusCat = SaxUserSport.StatusCat.Any;
|
||||
userSport = AccountMgr.GetUserSport(prmUserSport);
|
||||
@@ -287,7 +287,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
}
|
||||
else
|
||||
{
|
||||
userSport = AccountMgr.CreateUserSport(UserAccountId, sportId);
|
||||
userSport = AccountMgr.CreateUserSport(SessionUserAccountId, sportId);
|
||||
disposableItems.Add(userSport);
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -129,7 +129,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
SysId userSportId = model.ExtractSysId(model.UserSportId);
|
||||
SaxUserSport userSport = AccountMgr.GetUserSportById(userSportId);
|
||||
disposableItems.Add(userSport);
|
||||
if (userSport == null || !userSport.UserAccountId.Equals(UserAccountId))
|
||||
if (userSport == null || !userSport.UserAccountId.Equals(SessionUserAccountId))
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.something.gone.wrong"]));
|
||||
|
||||
// Sport details.
|
||||
@@ -226,7 +226,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
disposableItems.Add(userSportExperience);
|
||||
SaxUserSport userSport = AccountMgr.GetUserSportById(userSportExperience?.UserSportId ?? null);
|
||||
disposableItems.Add(userSport);
|
||||
if (userSportExperience == null || userSport == null || !userSport.UserAccountId.Equals(UserAccountId))
|
||||
if (userSportExperience == null || userSport == null || !userSport.UserAccountId.Equals(SessionUserAccountId))
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.something.gone.wrong"]));
|
||||
|
||||
// Populate data to response.
|
||||
@@ -285,7 +285,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
disposableItems.Add(userSportExperience);
|
||||
userSport = AccountMgr.GetUserSportById(userSportExperience?.UserSportId ?? null);
|
||||
disposableItems.Add(userSport);
|
||||
if (userSportExperience == null || userSport == null || !userSport.UserAccountId.Equals(UserAccountId))
|
||||
if (userSportExperience == null || userSport == null || !userSport.UserAccountId.Equals(SessionUserAccountId))
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.something.gone.wrong"]));
|
||||
}
|
||||
else
|
||||
@@ -295,7 +295,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
SysId userSportId = model.ExtractSysId(model.UserSportId);
|
||||
userSport = AccountMgr.GetUserSportById(userSportId);
|
||||
disposableItems.Add(userSport);
|
||||
if (userSport == null || !userSport.UserAccountId.Equals(UserAccountId))
|
||||
if (userSport == null || !userSport.UserAccountId.Equals(SessionUserAccountId))
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.something.gone.wrong"]));
|
||||
// Create User Sport Experience.
|
||||
userSportExperience = AccountMgr.CreateUserSportExperience(userSport.Id);
|
||||
|
||||
@@ -47,6 +47,30 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
return View(model);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
[HttpGet]
|
||||
public IActionResult Sports()
|
||||
{
|
||||
// Validate session.
|
||||
if (!ValidUserSession)
|
||||
return RedirectToAction("", "");
|
||||
|
||||
Model_Account model = new Model_Account(Localiser);
|
||||
return View(model);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
[HttpGet]
|
||||
public IActionResult Organisations()
|
||||
{
|
||||
// Validate session.
|
||||
if (!ValidUserSession)
|
||||
return RedirectToAction("", "");
|
||||
|
||||
Model_Account model = new Model_Account(Localiser);
|
||||
return View(model);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
|
||||
@@ -116,7 +116,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
Organisation = model.GetOrganisationName(organisationEvent.OrganisationId);
|
||||
if (controller.ItemDataMgr.ItemHasActiveImage(organisation?.GetItemId() ?? null, Sax.ImageType.OrganisationLogo))
|
||||
OrganisationLogoUrl = controller.GetOrganisationLogoLink(organisation.Id, false);
|
||||
EventAt = DateUtil.Format(organisationEvent.EventAt, "d-MMM-yy");
|
||||
EventAt = model.FormatDateForDisplay(organisationEvent.EventAt);
|
||||
if (organisationEvent.EventAt.Hour > 0 || organisationEvent.EventAt.Minute > 0)
|
||||
EventAt += DateUtil.Format(organisationEvent.EventAt, " HH:ss");
|
||||
Summary = organisationEvent.Summary;
|
||||
@@ -182,7 +182,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
SaxSessionData_Online sessionData = SessionData_Online;
|
||||
|
||||
// User context.
|
||||
SysId userAccountId = UserAccountId;
|
||||
SysId userAccountId = SessionUserAccountId;
|
||||
SaxActivityConsole.IndexContext indexContext = new SaxActivityConsole.IndexContext(userAccountId);
|
||||
if (SysId.IsValid(userAccountId))
|
||||
indexContext.UserAccountIdsOwner.Add(userAccountId);
|
||||
@@ -389,8 +389,8 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
responseData.Opportunity = new ActivityResponseData_Opportunity(this, model, opportunity, organisation);
|
||||
}
|
||||
|
||||
// Record activty viewing.
|
||||
if (!ActivityConsole.RecordUserActivityViewed(UserAccountId, new ItemId((short)itemType, itemId), DbUpdateInfo))
|
||||
// Record activity viewing.
|
||||
if (!ActivityConsole.RecordUserActivityViewed(SessionUserAccountId, new ItemId((short)itemType, itemId), DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to record Activity Viewing: " + ActivityConsole.ErrorStateMessage + "." + GetLogSuffix());
|
||||
return Json(responseData);
|
||||
@@ -435,7 +435,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
}
|
||||
|
||||
// Record activity reaction.
|
||||
if (!ActivityConsole.RecordUserActivityReaction(UserAccountId, new ItemId((short)itemType, itemId), model.GetActivityReaction(), DbUpdateInfo))
|
||||
if (!ActivityConsole.RecordUserActivityReaction(SessionUserAccountId, new ItemId((short)itemType, itemId), model.GetActivityReaction(), DbUpdateInfo))
|
||||
{
|
||||
SaLogger.Warn(fn + " Failed to record Activity Reaction: " + ActivityConsole.ErrorStateMessage + "." + GetLogSuffix());
|
||||
return Json(responseData);
|
||||
|
||||
@@ -87,8 +87,8 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
PopulateFeedbackResponseListData(activityFeedback, data);
|
||||
data.RegionCaptionPrimary = model.GetRegionCaption(article.RegionIdPrimary);
|
||||
data.SportCaptionPrimary = model.GetSportCaption(article.SportIdPrimary);
|
||||
data.CreatedOnFmt = DateUtil.Format(article.CreateStamp.On, "d-MMM-yyyy");
|
||||
data.PublishedOnFmt = DateUtil.Format(article.PublishedAt, "d-MMM-yyyy");
|
||||
data.CreatedOnFmt = model.FormatDateForDisplay(article.CreateStamp.On);
|
||||
data.PublishedOnFmt = model.FormatDateForDisplay(article.PublishedAt);
|
||||
data.StatusCode = article.StatusCode;
|
||||
data.StatusDesc = article.StatusDesc;
|
||||
}
|
||||
@@ -173,14 +173,14 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
if (!ValidReferer) return Forbid();
|
||||
if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData);
|
||||
SaxSessionData_Online sessionData = SessionData_Online;
|
||||
SysId userAccountId = UserAccountId;
|
||||
SysId userAccountId = SessionUserAccountId;
|
||||
RefreshModel(model);
|
||||
|
||||
// Record disposable items as they are created so all can be disposed when needed.
|
||||
using (DisposableCollection<SacsHierarchyItem> disposableItems = new DisposableCollection<SacsHierarchyItem>())
|
||||
{
|
||||
// User account.
|
||||
SaxUserAccount userAccount = AccountMgr.GetUserAccountById(UserAccountId);
|
||||
SaxUserAccount userAccount = AccountMgr.GetUserAccountById(userAccountId);
|
||||
disposableItems.Add(userAccount);
|
||||
|
||||
// Organisations that the user has rights to author articles for.
|
||||
@@ -292,8 +292,8 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
Summary = values.GetString(colSummary.DataName),
|
||||
RegionCaptionPrimary = model.GetRegionCaption(values.GetString(colRegionIdPrimary.DataName).ToSysId()),
|
||||
SportCaptionPrimary = model.GetSportCaption(values.GetString(colSportIdPrimary.DataName).ToSysId()),
|
||||
CreatedOnFmt = DateUtil.Format(values.GetDateTime(colCreatedOn.DataName), "d-MMM-yyyy"),
|
||||
PublishedOnFmt = DateUtil.Format(values.GetDateTime(colPublishedOn.DataName), "d-MMM-yyyy"),
|
||||
CreatedOnFmt = model.FormatDateForDisplay(values.GetDateTime(colCreatedOn.DataName)),
|
||||
PublishedOnFmt = model.FormatDateForDisplay(values.GetDateTime(colPublishedOn.DataName)),
|
||||
StatusCode = values.GetString(colStatus.DataName),
|
||||
StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName))
|
||||
};
|
||||
@@ -338,7 +338,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
// Validate session and referrer.
|
||||
if (!ValidReferer) return Forbid();
|
||||
if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData);
|
||||
SysId userAccountId = UserAccountId;
|
||||
SysId userAccountId = SessionUserAccountId;
|
||||
RefreshModel(model);
|
||||
|
||||
// Record disposable items as they are created so all can be disposed when needed.
|
||||
@@ -552,7 +552,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
return Json(responseData);
|
||||
|
||||
// Validate User & Organisation.
|
||||
SysId userAccountId = UserAccountId;
|
||||
SysId userAccountId = SessionUserAccountId;
|
||||
SysId organisationId = model.ExtractSysId(model.ArticleOrganisationId);
|
||||
if (SysId.IsValid(organisationId))
|
||||
{
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
return RedirectToAction("", "");
|
||||
|
||||
// User must either be a Journalist or have Article Admin rights with at least one organisation.
|
||||
List<SaxAccountMgr.OrganisationIdName> organisations = AccountMgr.GetOrganisationsForAnyUserRole(UserAccountId, new [] { Sax.OrganisationRole.Admin, Sax.OrganisationRole.ArticleAdmin });
|
||||
List<SaxAccountMgr.OrganisationIdName> organisations = AccountMgr.GetOrganisationsForAnyUserRole(SessionUserAccountId, new [] { Sax.OrganisationRole.Admin, Sax.OrganisationRole.ArticleAdmin });
|
||||
if (organisations.Count < 1 && !UserIsJournalist)
|
||||
return RedirectToAction("", "");
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
String userAccountIdParam = "";// ToDo Decrypt from uaie value.
|
||||
SysId userAccountId = userAccountIdParam.ToSysId();
|
||||
if (!SysId.IsValid(userAccountId))
|
||||
userAccountId = UserAccountId;
|
||||
userAccountId = SessionUserAccountId;
|
||||
return GetAccountContactImage(userAccountId, Sax.ImageType.Avatar);
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
// Response should not be cached.
|
||||
Response.Headers[HeaderNames.CacheControl] = "no-cache, no-store, must-revalidate, max-age=0";
|
||||
Response.Headers[HeaderNames.Expires] = "-1";
|
||||
SysId userAccountId = UserAccountId;
|
||||
SysId userAccountId = SessionUserAccountId;
|
||||
return GetAccountContactImage(userAccountId, Sax.ImageType.Avatar_Upload);
|
||||
}
|
||||
|
||||
@@ -206,7 +206,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
// Validate session and referrer.
|
||||
if (!ValidReferer) return Forbid();
|
||||
if (!ValidUserSession) return Forbid();
|
||||
ItemId userItemId = new ItemId((short)Sax.DataItemType.UserAccount, UserAccountId);
|
||||
ItemId userItemId = new ItemId((short)Sax.DataItemType.UserAccount, SessionUserAccountId);
|
||||
|
||||
// Extract encrypted parameters.
|
||||
NameValueCollection parameters = ExtractOnlineParams(iie);
|
||||
|
||||
@@ -116,7 +116,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
if (!ValidReferer) return Forbid();
|
||||
if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData);
|
||||
RefreshModel(model);
|
||||
SysId userAccountId = UserAccountId;
|
||||
SysId userAccountId = SessionUserAccountId;
|
||||
|
||||
// Record disposable items as they are created so all can be disposed when needed.
|
||||
using (DisposableCollection<SacsHierarchyItem> disposableItems = new DisposableCollection<SacsHierarchyItem>())
|
||||
@@ -370,7 +370,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
}
|
||||
|
||||
// Ensure that the user has the correct role to update Events for this organisation.
|
||||
if (!AccountMgr.UserHasAnyOrganisationRole(UserAccountId, organisationId, new[] { Sax.OrganisationRole.Admin, Sax.OrganisationRole.ScheduleAdmin }))
|
||||
if (!AccountMgr.UserHasAnyOrganisationRole(SessionUserAccountId, organisationId, new[] { Sax.OrganisationRole.Admin, Sax.OrganisationRole.ScheduleAdmin }))
|
||||
{
|
||||
SaLogger.Warn(fn + " User doesn't have 'Event Admin' role for Organisation Id: " + organisationId);
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
{
|
||||
data.Id = model.EncryptId(userOrganisation.Id);
|
||||
data.UserAccountId = model.EncryptId(userOrganisation.UserAccountId);
|
||||
if (userOrganisation.UserAccountId.Equals(UserAccountId)) data.CurrentUser = true;
|
||||
if (userOrganisation.UserAccountId.Equals(SessionUserAccountId)) data.CurrentUser = true;
|
||||
data.EmailAddress = userAccount.EmailAddress;
|
||||
data.DisplayName = userAccount.GetDisplayName();
|
||||
data.RoleCodes.Clear();
|
||||
@@ -133,7 +133,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
responseData.MemberRoles.Add(memberRole.Code, Localiser.GetOrganisationRoleCaption((Sax.OrganisationRole)memberRole.Type));
|
||||
|
||||
// Session User roles.
|
||||
responseData.User.CanManage = AccountMgr.UserHasAnyOrganisationRole(UserAccountId, organisation.Id, new List<Sax.OrganisationRole> { Sax.OrganisationRole.Admin, Sax.OrganisationRole.MemberAdmin });
|
||||
responseData.User.CanManage = AccountMgr.UserHasAnyOrganisationRole(SessionUserAccountId, organisation.Id, new List<Sax.OrganisationRole> { Sax.OrganisationRole.Admin, Sax.OrganisationRole.MemberAdmin });
|
||||
|
||||
// Item filter.
|
||||
SaxUserOrganisation.Params prmMember = new SaxUserOrganisation.Params();
|
||||
@@ -183,7 +183,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
StatusCode = values.GetString(colUserStatus.DataName),
|
||||
StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colUserStatus.DataName))
|
||||
};
|
||||
if (model.ExtractSysId(memberData.UserAccountId).Equals(UserAccountId)) memberData.CurrentUser = true;
|
||||
if (model.ExtractSysId(memberData.UserAccountId).Equals(SessionUserAccountId)) memberData.CurrentUser = true;
|
||||
String memberRoleCodes = values.GetString(colOrganisationRoleCodes.DataName);
|
||||
foreach (String memberRoleCode in StringListUtil.Split(memberRoleCodes, SaxUserOrganisation.UserOrgnisationRoleDelim))
|
||||
{
|
||||
@@ -259,7 +259,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
}
|
||||
|
||||
// Session User roles.
|
||||
bool userCanManageMembers = AccountMgr.UserHasAnyOrganisationRole(UserAccountId, organisation.Id, new List<Sax.OrganisationRole> { Sax.OrganisationRole.Admin, Sax.OrganisationRole.MemberAdmin });
|
||||
bool userCanManageMembers = AccountMgr.UserHasAnyOrganisationRole(SessionUserAccountId, organisation.Id, new List<Sax.OrganisationRole> { Sax.OrganisationRole.Admin, Sax.OrganisationRole.MemberAdmin });
|
||||
|
||||
// Validate user account.
|
||||
SaxUserAccount userAccount = AccountMgr.GetUserAccountById(userOrganisation.UserAccountId);
|
||||
@@ -369,7 +369,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
}
|
||||
|
||||
// Ensure that the user has the correct role to update Members for this organisation.
|
||||
bool userCanManageMembers = AccountMgr.UserHasAnyOrganisationRole(UserAccountId, organisationId, new List<Sax.OrganisationRole> { Sax.OrganisationRole.Admin, Sax.OrganisationRole.MemberAdmin });
|
||||
bool userCanManageMembers = AccountMgr.UserHasAnyOrganisationRole(SessionUserAccountId, organisationId, new List<Sax.OrganisationRole> { Sax.OrganisationRole.Admin, Sax.OrganisationRole.MemberAdmin });
|
||||
if (!userCanManageMembers)
|
||||
{
|
||||
SaLogger.Warn(fn + " User doesn't have 'Member Admin' role for Organisation Id: " + organisationId);
|
||||
@@ -395,7 +395,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
}
|
||||
|
||||
// Validate roles for current user.
|
||||
if (userOrganisation.UserAccountId.Equals(UserAccountId))
|
||||
if (userOrganisation.UserAccountId.Equals(SessionUserAccountId))
|
||||
{
|
||||
// User is modifying their own organisation member.
|
||||
if (userOrganisation.CanManageOrganisation && !model.OrganisationRoleCodes.Any(item => item.Type == (int)Sax.OrganisationRole.Admin))
|
||||
@@ -562,7 +562,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
}
|
||||
|
||||
// Ensure that the user has the correct role to update Members for this organisation.
|
||||
bool userCanManageMembers = AccountMgr.UserHasAnyOrganisationRole(UserAccountId, organisation.Id, new List<Sax.OrganisationRole> { Sax.OrganisationRole.Admin, Sax.OrganisationRole.MemberAdmin });
|
||||
bool userCanManageMembers = AccountMgr.UserHasAnyOrganisationRole(SessionUserAccountId, organisation.Id, new List<Sax.OrganisationRole> { Sax.OrganisationRole.Admin, Sax.OrganisationRole.MemberAdmin });
|
||||
if (!userCanManageMembers)
|
||||
{
|
||||
SaLogger.Warn(fn + " User doesn't have 'Member Admin' role for Organisation Id: " + organisation.Id);
|
||||
@@ -678,7 +678,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
}
|
||||
|
||||
// Ensure that the user has the correct role to update Members for this organisation.
|
||||
bool userCanManageMembers = AccountMgr.UserHasAnyOrganisationRole(UserAccountId, organisation.Id, new List<Sax.OrganisationRole> { Sax.OrganisationRole.Admin, Sax.OrganisationRole.MemberAdmin });
|
||||
bool userCanManageMembers = AccountMgr.UserHasAnyOrganisationRole(SessionUserAccountId, organisation.Id, new List<Sax.OrganisationRole> { Sax.OrganisationRole.Admin, Sax.OrganisationRole.MemberAdmin });
|
||||
if (!userCanManageMembers)
|
||||
{
|
||||
SaLogger.Warn(fn + " User doesn't have 'Member Admin' role for Organisation Id: " + organisation.Id);
|
||||
|
||||
+2
-2
@@ -106,7 +106,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
if (!ValidReferer) return Forbid();
|
||||
if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData);
|
||||
RefreshModel(model);
|
||||
SysId userAccountId = UserAccountId;
|
||||
SysId userAccountId = SessionUserAccountId;
|
||||
|
||||
// Record disposable items as they are created so all can be disposed when needed.
|
||||
using (DisposableCollection<SacsHierarchyItem> disposableItems = new DisposableCollection<SacsHierarchyItem>())
|
||||
@@ -357,7 +357,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
}
|
||||
|
||||
// Ensure that the user has the correct role to update Opportunities for this organisation.
|
||||
if (!AccountMgr.UserHasAnyOrganisationRole(UserAccountId, organisationId, new[] { Sax.OrganisationRole.Admin, Sax.OrganisationRole.OpportunityAdmin }))
|
||||
if (!AccountMgr.UserHasAnyOrganisationRole(SessionUserAccountId, organisationId, new[] { Sax.OrganisationRole.Admin, Sax.OrganisationRole.OpportunityAdmin }))
|
||||
{
|
||||
SaLogger.Warn(fn + " User doesn't have 'Opportunity Admin' role for Organisation Id: " + organisationId);
|
||||
return Json(responseData.SetGoHome(messageTitle, Localiser["msg.error.system"]));
|
||||
|
||||
@@ -153,7 +153,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
|
||||
// Organisation filter
|
||||
SaxUserOrganisation.Params prmUserOrganisation = new SaxUserOrganisation.Params();
|
||||
prmUserOrganisation.UserAccountIdsIncluded.Add(UserAccountId);
|
||||
prmUserOrganisation.UserAccountIdsIncluded.Add(SessionUserAccountId);
|
||||
prmUserOrganisation.OrganisationStatusCat = SaxOrganisation.StatusCat.ActiveOnly;
|
||||
prmUserOrganisation.OrganisationMembersOnly = true;
|
||||
prmUserOrganisation.OrganisationRolesAny.Add(Sax.OrganisationRole.Admin);
|
||||
@@ -228,7 +228,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
|
||||
// Organisation filter
|
||||
SaxUserOrganisation.Params prmUserOrganisation = new SaxUserOrganisation.Params();
|
||||
prmUserOrganisation.UserAccountIdsIncluded.Add(UserAccountId);
|
||||
prmUserOrganisation.UserAccountIdsIncluded.Add(SessionUserAccountId);
|
||||
prmUserOrganisation.OrganisationStatusCat = SaxOrganisation.StatusCat.ActiveOnly;
|
||||
prmUserOrganisation.OrganisationMembersOnly = true;
|
||||
prmUserOrganisation.OrganisationRolesAny.Add(Sax.OrganisationRole.Admin);
|
||||
@@ -303,7 +303,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
|
||||
// Organisation filter
|
||||
SaxUserOrganisation.Params prmUserOrganisation = new SaxUserOrganisation.Params();
|
||||
prmUserOrganisation.UserAccountIdsIncluded.Add(UserAccountId);
|
||||
prmUserOrganisation.UserAccountIdsIncluded.Add(SessionUserAccountId);
|
||||
prmUserOrganisation.OrganisationStatusCat = SaxOrganisation.StatusCat.ActiveOnly;
|
||||
prmUserOrganisation.OrganisationMembersOnly = true;
|
||||
prmUserOrganisation.OrganisationRolesAny.Add(Sax.OrganisationRole.Admin);
|
||||
|
||||
@@ -138,7 +138,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
|
||||
// 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.UserAccountIdsIncluded.Add(SessionUserAccountId);
|
||||
prmUserOrganisation.OrganisationStatusCat = SaxOrganisation.StatusCat.ActiveOnly;
|
||||
prmUserOrganisation.OrganisationMembersOnly = true;
|
||||
prmUserOrganisation.OrganisationRolesAny.AddRange(requiredRoles);
|
||||
|
||||
Reference in New Issue
Block a user