Files
Saxonite/SaxoniteCoreWebAdmin/Admin/Models/Model_Sport.cs
T
2024-08-20 17:51:32 +01:00

136 lines
5.2 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.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<SacsHierarchyItem> disposableItems = new DisposableCollection<SacsHierarchyItem>())
{
// 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 = SportIdParent.ToSysId();
if (SportIdParent != null && SysId.IsValid(sportIdParent))
{
String controlName = "SportParent";
SaxSport sport = ReferenceMgr.GetSportById(SportIdParent.ToSysId());
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 = SportId.ToSysId();
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();
}
//-------------------------------------------------------------------
}
//=======================================================================
}