110 lines
3.9 KiB
C#
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-organisationMembers.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();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|