Files
Saxonite/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationMembers.cs
T
2022-03-04 18:15:23 +00:00

110 lines
3.9 KiB
C#

using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Base.App;
using Saxonite.Net.Core.Web.Base.App;
using Saxonite.Net.Core.Web.Base.Controllers;
using Saxonite.Net.Core.Web.Base.Models;
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace Saxonite.Net.Core.Web.Admin.Models
{
//=======================================================================
public class Model_OrganisationMembers : SaxModel_Admin
{
//-------------------------------------------------------------------
// Construction.
public Model_OrganisationMembers(SaxLocaliser localiser) :
base(localiser)
{
AdditionalFiles_JS.Add("js/sax-org-mbr.js");
}
//-------------------------------------------------------------------
// List configuration.
public class FilterData
{
public String OrganisationId { get; set; }
}
public FilterData Filter { get; } = new FilterData();
public String OrganisationId { get { return Filter.OrganisationId; } set { Filter.OrganisationId = value; } }
//-------------------------------------------------------------------
// User Organisation (member) properties.
public String UserOrganisationId { get; set; }
[EmailAddress]
public String MemberUserEmailAddress{ get; set; }
public String MemberUserAccountId { get; set; }
public String MemberOrganisationId { get; set; }
public String MemberOrganisationName { get; set; }
public String MemberRoleCodeDelim = ",";
public List<String> MemberRoleCodes { get; set; }
public List<String> GetMemberRoleCodes()
{
List<String> codes = new List<string>();
foreach (String code in MemberRoleCodes)
{
if (StringUtil.IsEmpty(code)) continue;
codes.AddRange(code.Split(MemberRoleCodeDelim));
}
return codes;
}
public String MemberStatusCode { get; set; }
public SaStatus MemberStatus { get { return SacsSystem.GetStatusForCode(MemberStatusCode); } }
//-------------------------------------------------------------------
// Validation.
//-------------------------------------------------------------------
// Organisation member validation.
public bool ValidateOrganisationMemberData(SaxController_Base.AjaxResponse_Data responseData)
{
// User email address.
if (MemberUserEmailAddress != null)
{
responseData.SetControlValue(nameof(MemberUserEmailAddress), MemberUserEmailAddress);
if (StringUtil.IsEmpty(MemberUserEmailAddress))
responseData.SetControlError(nameof(MemberUserEmailAddress), Localiser["msg.validation.mandatory.value"]);
else if (!AccountMgr.UserAccountExistsByEmailAddress(MemberUserEmailAddress))
responseData.SetControlError(nameof(MemberUserEmailAddress), Localiser["msg.validation.invalid.value"]);
}
else
{
// User Account.
if (MemberUserAccountId != null)
{
SysId memberUserAccountId = MemberUserAccountId.ToSysId();
if (!SysId.IsValid(memberUserAccountId))
responseData.SetControlError(nameof(MemberUserAccountId), Localiser["msg.validation.mandatory.value"]);
}
}
// Member roles.
if (MemberRoleCodes != null)
{
// Roles can be left empty as the 'Member' role is automatically applied.
}
// User Organisation status.
if (MemberStatusCode != null)
{
if (StringUtil.IsEmpty(MemberStatusCode))
responseData.SetControlError(nameof(MemberStatus), Localiser["msg.validation.mandatory.value"]);
else if (!SaxOrganisation.ValidStatuses.Contains(MemberStatus))
responseData.SetControlError(nameof(MemberStatus), Localiser["msg.validation.invalid.value"]);
}
return !responseData.HasControlErrors();
}
//-------------------------------------------------------------------
}
//=======================================================================
}