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.Linq; using System.Threading.Tasks; namespace Saxonite.Net.Core.Web.Admin.Models { //======================================================================= public class Model_Sport : SaxModel_Admin { //------------------------------------------------------------------- // Construction. public Model_Sport(SaxLocaliser localiser) : base(localiser) { AdditionalFiles_JS.Add("js/sax-sport.js"); } //------------------------------------------------------------------- // Sport list configuration. public class FilterData { public String Sport { get; set; } } public FilterData Filter { get; } = new FilterData(); //------------------------------------------------------------------- // Sport properties. public String SportId { get; set; } public String SportName { get; set; } public String SportGroupingCode { get; set; } public Sax.SportGrouping SportGrouping { get { return (Sax.SportGrouping)SportGroupingCodes.GetTypeForCode(SportGroupingCode); } } public String SportIdParent { get; set; } public String SportIdsParents { get; set; } public String SportIdsChildren { get; set; } public String SportSpecialityLabelCode { get; set; } public Sax.SportSpecialityLabel SportSpecialityLabel { get { return (Sax.SportSpecialityLabel)SportSpecialityLabelCodes.GetTypeForCode(SportSpecialityLabelCode); } } public String SportStatusCode { get; set; } public SaStatus SportStatus { get { return SacsSystem.GetStatusForCode(SportStatusCode); } } //------------------------------------------------------------------- // Validation. //------------------------------------------------------------------- // Sport. public bool ValidateSportData(SaxController_Base.AjaxResponse_Data responseData) { // Record disposable items as they are created so all can be disposed when needed. using (DisposableCollection disposableItems = new DisposableCollection()) { // Sport Grouping. if (SportGroupingCode != null) { String controlName = nameof(SportGrouping); if (StringUtil.IsEmpty(SportGroupingCode)) responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]); else if (SportGrouping <= 0) responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]); } // Parent sport. SysId sportIdParent = SysId.ToSysId(SportIdParent); if (SportIdParent != null && SysId.IsValid(sportIdParent)) { String controlName = "SportParent"; SaxSport sport = ReferenceMgr.GetSportById(SysId.ToSysId(SportIdParent)); disposableItems.Add(sport); if (sport == null) responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]); else if (SysId.IsValid(sport.SportIdParent)) responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]); } // Sport name. if (SportName != null) { String controlName = nameof(SportName); responseData.SetControlValue(controlName, SportName); if (StringUtil.IsEmpty(SportName)) responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]); else if (StringUtil.GetLength(SportName) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Sport_Name)) responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Sport_Name)]); else { // Check for duplicate name. SaxSport.Params prmSport = new SaxSport.Params(); SysId sportId = SysId.ToSysId(SportId); if (SysId.IsValid(sportId)) prmSport.IdsExcluded.Add(sportId); prmSport.NameFull = SportName; prmSport.StatusCat = SaxSport.StatusCat.Any; if (ReferenceMgr.GetSportCount(prmSport) > 0) responseData.SetControlError(controlName, Localiser["msg.validation.duplicate.value"]); } } // Sport Speciality Label. if (SportSpecialityLabelCode != null) { String controlName = nameof(SportSpecialityLabel); if (!StringUtil.IsEmpty(SportSpecialityLabelCode)) { if (SportSpecialityLabel <= 0) responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]); } } // Sport status. if (SportStatusCode != null) { String controlName = nameof(SportStatus); if (StringUtil.IsEmpty(SportStatusCode)) responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]); else if (!SaxSport.ValidStatuses.Contains(SportStatus)) responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]); } } return !responseData.HasControlErrors(); } //------------------------------------------------------------------- } //======================================================================= }