Files
Saxonite/SaxoniteCoreWebOnline/Online/Models/Model_Organisation.cs
T
2021-08-19 17:25:41 +01:00

230 lines
12 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.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();
}
//-------------------------------------------------------------------
}
//=======================================================================
}