using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Helpers; 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.Standard.Base.App; using Saxonite.Net.Standard.Base.Bus; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Saxonite.Net.Core.Web.Online.Models { //======================================================================= public class Model_Organisation : SaxModel_Online { //------------------------------------------------------------------- // Construction. public Model_Organisation(SaxLocaliser localiser) : base(localiser) { //AdditionalFiles_CSS.Add("css/sax-org.css"); AdditionalFiles_JS.Add("js/sax-org.js"); } //------------------------------------------------------------------- // List configuration. public class OrganisationFilterData { public String Organisation { get; set; } public String RegionId { get; set; } public String SportId { get; set; } } public OrganisationFilterData Filter { get; } = new OrganisationFilterData(); //------------------------------------------------------------------- // Organisation properties. public String OrganisationName { get; set; } public String OrganisationType { get; set; } public Sax.OrganisationType GetOrganisationType() { return (Sax.OrganisationType)OrganisationTypeCodes.GetTypeForCode(OrganisationType); } public String OrganisationCategory { get; set; } public Sax.OrganisationCategory GetOrganisationCategory() { return (Sax.OrganisationCategory)OrganisationCategoryCodes.GetTypeForCode(OrganisationCategory); } public String OrganisationSportId { get; set; } public String OrganisationRegionIdCountry { get; set; } public String OrganisationPhoneMain { get; set; } // Organisation address public String OrganisationAddressLine1 { get; set; } public String OrganisationAddressLine2 { get; set; } public String OrganisationAddressLine3 { get; set; } public String OrganisationAddressTown { get; set; } public String OrganisationAddressProvince { get; set; } public String OrganisationAddressRegionIdProvince { get; set; } public String OrganisationAddressCountry { get; set; } public String OrganisationAddressPostalCode { get; set; } // User - for organisation request. public String ContactEmailAddress { get; set; } public String ContactFirstName { get; set; } public String ContactLastName { get; set; } //------------------------------------------------------------------- // Validation. //------------------------------------------------------------------- // Organisation. public bool ValidateOrganisationRequestData(SaxController_Base.AjaxResponse_Data responseData) { // User Email Address - mandatory when supplied. if (ContactEmailAddress != null) { responseData.SetControlValue(nameof(ContactEmailAddress), ContactEmailAddress); if (StringUtil.IsEmpty(ContactEmailAddress)) responseData.SetControlError(nameof(ContactEmailAddress), Localiser["msg.validation.mandatory.value"]); else if (!SacsDataValidationHelper.IsValidEmailAddress(ContactEmailAddress)) responseData.SetControlError(nameof(ContactEmailAddress), Localiser["msg.validation.invalid.value"]); else if (StringUtil.GetLength(ContactEmailAddress) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress)) responseData.SetControlError(nameof(ContactEmailAddress), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress)]); else if (AccountMgr.UserAccountExistsByEmailAddress(ContactEmailAddress)) responseData.SetControlError(nameof(ContactEmailAddress), Localiser["msg.validation.duplicate.value"]); } // User First Name - mandatory when supplied. if (ContactFirstName != null) { responseData.SetControlValue(nameof(ContactFirstName), ContactFirstName); if (StringUtil.IsEmpty(ContactFirstName)) responseData.SetControlError(nameof(ContactFirstName), Localiser["msg.validation.mandatory.value"]); else if (StringUtil.GetLength(ContactFirstName) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName)) responseData.SetControlError(nameof(ContactFirstName), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName)]); } // User Last Name - mandatory when supplied. if (ContactLastName != null) { responseData.SetControlValue(nameof(ContactLastName), ContactLastName); if (StringUtil.IsEmpty(ContactLastName)) responseData.SetControlError(nameof(ContactLastName), Localiser["msg.validation.mandatory.value"]); else if (StringUtil.GetLength(ContactLastName) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName)) responseData.SetControlError(nameof(ContactLastName), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName)]); } // Organisation Name - mandatory. responseData.SetControlValue(nameof(OrganisationName), OrganisationName); if (StringUtil.IsEmpty(OrganisationName)) responseData.SetControlError(nameof(OrganisationName), Localiser["msg.validation.mandatory.value"]); else if (StringUtil.GetLength(OrganisationName) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Organisation_Name)) responseData.SetControlError(nameof(OrganisationName), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Organisation_Name)]); else if (SysId.IsValid(ExtractSysId(OrganisationRegionIdCountry))) { // Ensure that the organisation name is unique within the country. SaxOrganisation.Params prmOrganisation = new SaxOrganisation.Params(); prmOrganisation.NameFull = OrganisationName; prmOrganisation.RegionIdsIncluded.Add(ExtractSysId(OrganisationRegionIdCountry)); prmOrganisation.StatusCat = SaxOrganisation.StatusCat.Any; if (AccountMgr.GetOrganisationCount(prmOrganisation) > 0) responseData.SetControlError(nameof(OrganisationName), Localiser["msg.validation.duplicate.value"]); } // Organisation Category - mandatory. if (StringUtil.IsEmpty(OrganisationCategory)) responseData.SetControlError(nameof(OrganisationCategory), Localiser["msg.validation.mandatory.value"]); // Organisation Type - mandatory. if (StringUtil.IsEmpty(OrganisationType)) responseData.SetControlError(nameof(OrganisationType), Localiser["msg.validation.mandatory.value"]); // Organisation Sport - mandatory for certain organisation categories. if (StringUtil.IsEmpty(OrganisationSportId) && SaxOrganisation.IsSportMandatory(GetOrganisationCategory())) responseData.SetControlError(nameof(OrganisationSportId), Localiser["msg.validation.mandatory.value"]); else if (!StringUtil.IsEmpty(OrganisationSportId) && !SysId.IsValid(ExtractSysId(OrganisationSportId))) responseData.SetControlError(nameof(OrganisationSportId), Localiser["msg.validation.invalid.value"]); // Organisation Region Country - mandatory. if (StringUtil.IsEmpty(OrganisationRegionIdCountry)) responseData.SetControlError(nameof(OrganisationRegionIdCountry), Localiser["msg.validation.mandatory.value"]); else if (!SysId.IsValid(ExtractSysId(OrganisationRegionIdCountry))) responseData.SetControlError(nameof(OrganisationRegionIdCountry), Localiser["msg.validation.invalid.value"]); // Organisation Address Line 1 - mandatory. responseData.SetControlValue(nameof(OrganisationAddressLine1), OrganisationAddressLine1); if (StringUtil.IsEmpty(OrganisationAddressLine1)) responseData.SetControlError(nameof(OrganisationAddressLine1), Localiser["msg.validation.mandatory.value"]); else if (StringUtil.GetLength(OrganisationAddressLine1) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Line1)) responseData.SetControlError(nameof(OrganisationAddressLine1), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Line1)]); // Organisation Address Line 2 - optional. if (OrganisationAddressLine2 != null) { responseData.SetControlValue(nameof(OrganisationAddressLine2), OrganisationAddressLine2); if (!StringUtil.IsEmpty(OrganisationAddressLine2)) { if (StringUtil.GetLength(OrganisationAddressLine2) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Line2)) responseData.SetControlError(nameof(OrganisationAddressLine2), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Line2)]); } } // Organisation Address Line 3 - optional. if (OrganisationAddressLine3 != null) { responseData.SetControlValue(nameof(OrganisationAddressLine3), OrganisationAddressLine3); if (!StringUtil.IsEmpty(OrganisationAddressLine3)) { if (StringUtil.GetLength(OrganisationAddressLine3) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Line3)) responseData.SetControlError(nameof(OrganisationAddressLine3), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Line3)]); } } // Organisation Address Town - mandatory. responseData.SetControlValue(nameof(OrganisationAddressTown), OrganisationAddressTown); if (StringUtil.IsEmpty(OrganisationAddressTown)) responseData.SetControlError(nameof(OrganisationAddressTown), Localiser["msg.validation.mandatory.value"]); else if (StringUtil.GetLength(OrganisationAddressTown) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Town)) responseData.SetControlError(nameof(OrganisationAddressTown), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Town)]); // Organisation Address Province - optional. if (OrganisationAddressProvince != null) { responseData.SetControlValue(nameof(OrganisationAddressProvince), OrganisationAddressProvince); if (!StringUtil.IsEmpty(OrganisationAddressProvince)) { if (StringUtil.GetLength(OrganisationAddressProvince) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Province)) responseData.SetControlError(nameof(OrganisationAddressProvince), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Province)]); } } // Organisation Address Country - optional. if (OrganisationAddressCountry != null) { responseData.SetControlValue(nameof(OrganisationAddressCountry), OrganisationAddressCountry); if (!StringUtil.IsEmpty(OrganisationAddressCountry)) { if (StringUtil.GetLength(OrganisationAddressCountry) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Country)) responseData.SetControlError(nameof(OrganisationAddressCountry), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Country)]); } } // Organisation Address PostalCode - optional. if (OrganisationAddressPostalCode != null) { responseData.SetControlValue(nameof(OrganisationAddressPostalCode), OrganisationAddressPostalCode); if (!StringUtil.IsEmpty(OrganisationAddressPostalCode)) { if (StringUtil.GetLength(OrganisationAddressPostalCode) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_PostalCode)) responseData.SetControlError(nameof(OrganisationAddressPostalCode), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_PostalCode)]); } } // Organisation Phone Main - optional. if (OrganisationPhoneMain != null) { responseData.SetControlValue(nameof(OrganisationPhoneMain), OrganisationPhoneMain); if (!StringUtil.IsEmpty(OrganisationPhoneMain)) { if (!SacsDataValidationHelper.IsValidPhone(OrganisationPhoneMain)) responseData.SetControlError(nameof(OrganisationPhoneMain), Localiser["msg.validation.invalid.value"]); else if (StringUtil.GetLength(OrganisationPhoneMain) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Organisation_PhoneMain)) responseData.SetControlError(nameof(OrganisationPhoneMain), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Organisation_PhoneMain)]); } } return !responseData.HasControlErrors(); } //------------------------------------------------------------------- } //======================================================================= }