Files
Saxonite/SaxoniteCoreWebOnline/Online/Models/Model_UserEligibility.cs
T
2022-10-25 11:55:32 +01:00

113 lines
4.1 KiB
C#

using Microsoft.AspNetCore.Http;
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.Linq;
using System.Reflection;
using System.Threading.Tasks;
namespace Saxonite.Net.Core.Web.Online.Models
{
//=======================================================================
public class Model_UserEligibility : SaxModel_Online
{
//-------------------------------------------------------------------
// Construction.
public Model_UserEligibility(SaxLocaliser localiser) :
base(localiser)
{
}
//-------------------------------------------------------------------
// User properties.
public class UserAccountData
{
public String Id { get; set; }
}
public UserAccountData UserAccount { get; } = new UserAccountData();
// Eligibility properties.
public class EligibilityData
{
/// <summary>User Experience Id.</summary>
public String Id { get; set; }
/// <summary>Flag to indicate whether item is being updated.</summary>
public String Exists { get; set; }
/// <summary>User Experience Region Id.</summary>
public String RegionId { get; set; }
/// <summary>User Experience Type.</summary>
public String Type { get; set; }
/// <summary>User Experience Info.</summary>
public String Info { get; set; }
public Sax.EligibilityType getEligibilityType()
{
if (Type != null)
return (Sax.EligibilityType)SaxSystem.GetCodesOfType(Sax.CodeType.EligibilityType).GetTypeForCode(Type);
return Sax.EligibilityType.Unknown;
}
/// <summary>User Experience Expiry date.</summary>
public String ExpiresOn { get; set; }
}
public EligibilityData Eligibility { get; } = new EligibilityData();
//-------------------------------------------------------------------
// Validate model data.
//-------------------------------------------------------------------
// Validate eligibility details.
public bool ValidateEligibilityDetails(SaxController_Base.AjaxResponse_Data responseData)
{
// Eligibility type.
String controlName = "EligibilityType";
if (Eligibility.Type == null || Eligibility.getEligibilityType() <= 0)
{
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
}
// Eligibility Region - mandatory for new eligibility.
controlName = "EligibilityRegion";
SysId eligibilityRegionId = ExtractSysId(Eligibility.RegionId);
if ((Eligibility.RegionId == null || !SysId.IsValid(eligibilityRegionId)) && !StringUtil.ToBool(Eligibility.Exists))
{
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
}
else if (Eligibility.RegionId != null)
{
SaxRegion.Data eligibilityRegion = Internals.GetRegion(eligibilityRegionId);
if (eligibilityRegion == null)
responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]);
}
// Eligibility info.
controlName = "EligibilityInfo";
if (Eligibility.Info != null)
{
responseData.SetControlValue(controlName, Eligibility.Info);
if (StringUtil.GetLength(Eligibility.Info) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserEligibility_Info))
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserEligibility_Info)]);
}
// Eligibility Expiry date.
controlName = "EligibilityExpiry";
if (Eligibility.ExpiresOn != null)
{
if (!StringUtil.IsBlank(Eligibility.ExpiresOn) && !DateUtil.IsValid(ParseDateFromForm(Eligibility.ExpiresOn)))
{
responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]);
}
}
return !responseData.HasControlErrors();
}
//-------------------------------------------------------------------
}
//=======================================================================
}