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 MemberRoleCodes { get; set; } public List GetMemberRoleCodes() { List codes = new List(); 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(); } //------------------------------------------------------------------- } //======================================================================= }