1.2.11.12 Online Events

This commit is contained in:
2024-08-20 17:51:32 +01:00
parent 780e6778e5
commit 41db4e63d4
158 changed files with 6945 additions and 666 deletions
@@ -1,4 +1,6 @@
using Sarand.Net.Standard.Base.App;
using Microsoft.AspNetCore.Mvc.Rendering;
using NPOI.SS.Formula.Functions;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
@@ -16,12 +18,23 @@ namespace Saxonite.Net.Core.Web.Online.Models
//=======================================================================
public class Model_Organisation_Events : SaxModel_Online
{
//-------------------------------------------------------------------
// Definitions.
public enum PeriodType
{
FromThisWeek,
FromThisMonth,
FromLastMonth,
FromNextMonth,
Past,
}
//-------------------------------------------------------------------
// Construction.
public Model_Organisation_Events(SaxLocaliser localiser) :
base(localiser)
{
//AdditionalFiles_CSS.Add("css/sax-org-evt.css");
AdditionalFiles_CSS.Add("css/sax-org-evt.css");
AdditionalFiles_JS.Add("js/sax-org-evt.js");
}
@@ -31,6 +44,14 @@ namespace Saxonite.Net.Core.Web.Online.Models
{
public String OrganisationId { get; set; }
public String OrganisationCaption { get; set; }
public class PeriodData
{
public String Type { get; set; }
public PeriodType PeriodType { get { return EnumUtil.ParseEnum(Type, PeriodType.FromThisWeek); } }
public String FromDate { get; set; }
public String ToDate { get; set; }
}
public PeriodData Period { get; } = new PeriodData();
public String Event { get; set; }
}
public EventFilterData Filter { get; } = new EventFilterData();
@@ -46,14 +67,36 @@ namespace Saxonite.Net.Core.Web.Online.Models
// Region.
public String EventRegionIdCountry { get; set; }
// Event Content.
public String EventDate { get; set; }
public String EventTime { get; set; }
public String EventAtDate { get; set; }
public bool EventAtTimeSet { get; set; }
public String EventAtTime { get; set; }
public String EventDuration { get; set; }
public String EventDurationType { get; set; }
public String EventToDate { get; set; }
public bool EventToDateSet { get; set; }
public String EventToTime { get; set; }
public bool EventToTimeSet { get; set; }
public String EventTypeCode { get; set; }
public String EventSummary { get; set; }
public String EventDetails { get; set; }
public String EventStatusCode { get; set; }
public SaStatus EventStatus { get { return SacsSystem.GetStatusForCode(EventStatusCode); } }
//-------------------------------------------------------------------
// Period types.
public IEnumerable<SelectListItem> EventPeriodTypesForDropdown
{
get
{
List<SelectListItem> values = new List<SelectListItem>();
values.Add(new SelectListItem("From this week", PeriodType.FromThisWeek.ToString(), true));
values.Add(new SelectListItem("From this month", PeriodType.FromThisMonth.ToString()));
values.Add(new SelectListItem("From last month", PeriodType.FromLastMonth.ToString()));
values.Add(new SelectListItem("From next month", PeriodType.FromNextMonth.ToString()));
return values;
}
}
//-------------------------------------------------------------------
// Validation.
//-------------------------------------------------------------------
@@ -63,64 +106,125 @@ namespace Saxonite.Net.Core.Web.Online.Models
// Event type.
if (EventTypeCode != null)
{
String controlName = nameof(EventTypeCode);
if (StringUtil.IsEmpty(EventTypeCode))
responseData.SetControlError(nameof(EventTypeCode), Localiser["msg.validation.mandatory.value"]);
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
}
// Event date.
if (EventDate != null)
// Event At date.
if (EventAtDate != null)
{
DateTime eventOn = ParseDateFromForm(EventDate);
String controlName = nameof(EventAtDate);
DateTime eventOn = ParseDateFromForm(EventAtDate);
if (!DateUtil.IsValid(eventOn))
responseData.SetControlError(nameof(EventDate), Localiser["msg.validation.mandatory.value"]);
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
}
// Event time.
if (EventTime != null)
// Event At Time Set flag.
if (EventAtTimeSet)
{
String controlName = nameof(EventAtTime);
if (StringUtil.IsBlank(EventAtTime))
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
}
// Event At time.
if (EventAtTime != null && EventAtTimeSet)
{
String controlName = nameof(EventAtTime);
DateTime eventAt = DateUtil.ParseExact(EventAtTime, "HH:mm");
if (StringUtil.IsBlank(EventAtTime))
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
else if (!DateUtil.IsValid(eventAt))
responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]);
}
// Event duration.
if (EventDuration != null)
{
String controlName = nameof(EventDuration);
}
// Event duration type.
if (EventDurationType != null)
{
String controlName = nameof(EventDurationType);
}
// Event To date.
if (EventToDate != null && EventToDateSet)
{
String controlName = nameof(EventToDate);
DateTime eventOn = ParseDateFromForm(EventToDate);
if (!DateUtil.IsValid(eventOn))
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
}
// Event To Time Set flag.
if (EventToTimeSet)
{
String controlName = nameof(EventToTime);
if (StringUtil.IsBlank(EventToTime))
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
}
// Event To time.
if (EventToTime != null && EventToTimeSet)
{
String controlName = nameof(EventToTime);
DateTime eventTo = DateUtil.ParseExact(EventToTime, "HH:mm");
if (StringUtil.IsBlank(EventToTime))
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
else if (!DateUtil.IsValid(eventTo))
responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]);
}
// Event summary.
if (EventSummary != null)
{
responseData.SetControlValue(nameof(EventSummary), EventSummary);
String controlName = nameof(EventSummary);
responseData.SetControlValue(controlName, EventSummary);
if (StringUtil.IsEmpty(EventSummary))
responseData.SetControlError(nameof(EventSummary), Localiser["msg.validation.mandatory.value"]);
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
else if (StringUtil.GetLength(EventSummary) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Summary))
responseData.SetControlError(nameof(EventSummary), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Summary)]);
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Summary)]);
}
// Event details.
if (EventDetails != null)
{
responseData.SetControlValue(nameof(EventDetails), EventDetails);
String controlName = nameof(EventDetails);
responseData.SetControlValue(controlName, EventDetails);
if (StringUtil.GetLength(EventDetails) > GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Details))
responseData.SetControlError(nameof(EventDetails), Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Details)]);
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Details)]);
}
// Event sport.
if (EventSportIdPrimary != null)
{
String controlName = "EventSportPrimary";
SysId articleSportId = ExtractSysId(EventSportIdPrimary);
if (!SysId.IsValid(articleSportId))
responseData.SetControlError("EventSportPrimary", Localiser["msg.validation.mandatory.value"]);
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
}
// Event region.
if (EventRegionIdCountry != null)
{
String controlName = "EventRegionCountry";
SysId articleRegionId = ExtractSysId(EventRegionIdCountry);
if (!SysId.IsValid(articleRegionId))
responseData.SetControlError("EventRegionCountry", Localiser["msg.validation.mandatory.value"]);
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
}
// Event status.
if (EventStatusCode != null)
{
String controlName = nameof(EventStatus);
if (StringUtil.IsEmpty(EventStatusCode))
responseData.SetControlError(nameof(EventStatus), Localiser["msg.validation.mandatory.value"]);
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
else if (!SaxOrganisationEvent.ValidStatuses.Contains(EventStatus))
responseData.SetControlError(nameof(EventStatus), Localiser["msg.validation.invalid.value"]);
responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]);
}
return !responseData.HasControlErrors();