1.2.11.10 Golf Courses

This commit is contained in:
2024-06-18 18:08:11 +01:00
parent 1c77a2b2e9
commit 8f73e616ca
56 changed files with 802 additions and 316 deletions
@@ -26,11 +26,13 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Reference
{
public String Code { get; set; }
public String Name { get; set; }
public bool? PriorityProvincePopulate { get; set; }
public bool? PriorityPopulate { get; set; }
public long? ProvinceCount { get; set; }
public long? ProvinceCountActive { get; set; }
public long? FacilityCount { get; set; }
public long? FacilityCountActive { get; set; }
public decimal? CoursesPercent { get; set; }
public String? CoursesPercentFmt { get { return (CoursesPercent ?? 0.0m) > 0 ? $"{((decimal)CoursesPercent).ToString("N0")}%" : ""; } }
}
private class UsgaCountryItemData : UsgaCountryListData
{
@@ -54,11 +56,13 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Reference
{
public String Code { get; set; }
public String Name { get; set; }
public bool? PriorityProvincePopulate { get; set; }
public bool? PriorityPopulate { get; set; }
public long? FacilityCount { get; set; }
public long? FacilityCountActive { get; set; }
public long? CourseCount { get; set; }
public long? CourseCountActive { get; set; }
public decimal? MarkersPercent { get; set; }
public String? MarkersPercentFmt { get { return (MarkersPercent ?? 0.0m) > 0 ? $"{((decimal)MarkersPercent).ToString("N0")}%" : ""; } }
}
private class UsgaProvinceItemData : UsgaProvinceListData
{
@@ -76,6 +80,41 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Reference
PopulateUsgaProvinceResponseListData(province, data);
}
//-------------------------------------------------------------------
// USGA Course data.
private class UsgaCourseListData : AjaxResponse_Data.ItemData_Base
{
public long? UsgaCourseId { get; set; }
public String Caption { get; set; }
public String Name { get; set; }
public String FullName { get; set; }
public String Address1 { get; set; }
public String Address2 { get; set; }
public String City { get; set; }
public bool? PriorityPopulate { get; set; }
public long? MarkerCount { get; set; }
public long? MarkerCountActive { get; set; }
}
private class UsgaCourseItemData : UsgaCourseListData
{
}
private void PopulateUsgaCourseResponseListData(SaxGolfUsgaCourse course, UsgaCourseListData data)
{
data.Id = SysId.ToString(course.Id);
data.Caption = course.Caption;
data.Name = course.CourseName;
data.FullName = course.FullName;
data.Address1 = course.Address1;
data.Address2 = course.Address2;
data.City = course.City;
data.StatusCode = course.StatusCode;
data.StatusDesc = course.StatusDesc;
}
private void PopulateUsgaCourseResponseItemData(SaxGolfUsgaCourse course, UsgaCourseItemData data)
{
PopulateUsgaCourseResponseListData(course, data);
}
//-------------------------------------------------------------------
// Get Country List ajax request.
//-------------------------------------------------------------------
@@ -110,11 +149,12 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Reference
ColumnDfn colProvinceCount_Active = ReferenceGolfMgr.GetUsgaCountryColumnDfn(SaxGolfUsgaCountry.Column.ProvinceCount_Active);
ColumnDfn colFacilityCount_All = ReferenceGolfMgr.GetUsgaCountryColumnDfn(SaxGolfUsgaCountry.Column.FacilityCount_All);
ColumnDfn colFacilityCount_Active = ReferenceGolfMgr.GetUsgaCountryColumnDfn(SaxGolfUsgaCountry.Column.FacilityCount_Active);
ColumnDfn colCoursesPercent = ReferenceGolfMgr.GetUsgaCountryColumnDfn(SaxGolfUsgaCountry.Column.FacilityPercent);
ColumnDfn colFlags = ReferenceGolfMgr.GetUsgaCountryColumnDfn(SaxGolfUsgaCountry.Column.Flags);
ColumnDfn colStatus = ReferenceGolfMgr.GetUsgaCountryColumnDfn(SaxGolfUsgaCountry.Column.Status);
List<ColumnDfn> columns = new List<ColumnDfn>()
{
colId, colCode, colName, colProvinceCount_All, colProvinceCount_Active, colFacilityCount_All, colFacilityCount_Active, colFlags, colStatus
colId, colCode, colName, colProvinceCount_All, colProvinceCount_Active, colFacilityCount_All, colFacilityCount_Active, colCoursesPercent, colFlags, colStatus
};
// Item filter.
@@ -139,11 +179,12 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Reference
Id = values.GetString(colId.DataName),
Code = values.GetString(colCode.DataName),
Name = values.GetString(colName.DataName),
PriorityProvincePopulate = SacsHierarchyItem.GetFlag(flags, SaxGolfUsgaCountry.Flag_Priority),
PriorityPopulate = SacsHierarchyItem.GetFlag(flags, SaxGolfUsgaCountry.Flag_Priority),
ProvinceCount = values.GetLong(colProvinceCount_All.DataName),
ProvinceCountActive = values.GetLong(colProvinceCount_Active.DataName),
FacilityCount = values.GetLong(colFacilityCount_All.DataName),
FacilityCountActive = values.GetLong(colFacilityCount_Active.DataName),
CoursesPercent = values.GetDecimal(colCoursesPercent.DataName),
StatusCode = values.GetString(colStatus.DataName),
StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName))
};
@@ -193,11 +234,12 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Reference
ColumnDfn colFacilityCount_Active = ReferenceGolfMgr.GetUsgaProvinceColumnDfn(SaxGolfUsgaProvince.Column.FacilityCount_Active);
ColumnDfn colCourseCount_All = ReferenceGolfMgr.GetUsgaProvinceColumnDfn(SaxGolfUsgaProvince.Column.CourseCount_All);
ColumnDfn colCourseCount_Active = ReferenceGolfMgr.GetUsgaProvinceColumnDfn(SaxGolfUsgaProvince.Column.CourseCount_Active);
ColumnDfn colMarkersPercent = ReferenceGolfMgr.GetUsgaProvinceColumnDfn(SaxGolfUsgaProvince.Column.MarkerPercent);
ColumnDfn colFlags = ReferenceGolfMgr.GetUsgaProvinceColumnDfn(SaxGolfUsgaProvince.Column.Flags);
ColumnDfn colStatus = ReferenceGolfMgr.GetUsgaProvinceColumnDfn(SaxGolfUsgaProvince.Column.Status);
List<ColumnDfn> columns = new List<ColumnDfn>()
{
colId, colCode, colName, colFacilityCount_All, colFacilityCount_Active, colCourseCount_All, colCourseCount_Active, colFlags, colStatus
colId, colCode, colName, colFacilityCount_All, colFacilityCount_Active, colCourseCount_All, colCourseCount_Active, colMarkersPercent, colFlags, colStatus
};
// Item filter.
@@ -224,11 +266,12 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Reference
Id = values.GetString(colId.DataName),
Code = values.GetString(colCode.DataName),
Name = values.GetString(colName.DataName),
PriorityProvincePopulate = SacsHierarchyItem.GetFlag(flags, SaxGolfUsgaProvince.Flag_Priority),
PriorityPopulate = SacsHierarchyItem.GetFlag(flags, SaxGolfUsgaProvince.Flag_Priority),
FacilityCount = values.GetLong(colFacilityCount_All.DataName),
FacilityCountActive = values.GetLong(colFacilityCount_Active.DataName),
CourseCount = values.GetLong(colCourseCount_All.DataName),
CourseCountActive = values.GetLong(colCourseCount_Active.DataName),
MarkersPercent = values.GetDecimal(colMarkersPercent.DataName),
StatusCode = values.GetString(colStatus.DataName),
StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName))
};
@@ -244,6 +287,103 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Reference
return Json(responseData);
}
//-------------------------------------------------------------------
// Get Course List ajax request.
//-------------------------------------------------------------------
private class AjaxResponse_ReferenceGolf_CourseList : AjaxResponse_Data
{
// Construction.
public AjaxResponse_ReferenceGolf_CourseList(SaxModel_Admin model) : base(model) { }
// Course list.
public List<UsgaCourseListData> Courses { get; } = new List<UsgaCourseListData>();
}
//-------------------------------------------------------------------
[HttpPost]
[Route("Reference/Golf/Ajax/GetUsgaCourseList")]
[Route("Reference/Golf/Ajax/GetUsgaCourses")]
[Route("Reference/Golf/Ajax/GetCourseList")]
[Route("Reference/Golf/Ajax/GetCourses")]
public IActionResult Ajax_GetCourseList(Model_ReferenceGolf model)
{
String fn = GetType().Name + ".Ajax_GetCourseList";
String messageTitle = Localiser["caption.reference.golf"];
AjaxResponse_ReferenceGolf_CourseList responseData = new AjaxResponse_ReferenceGolf_CourseList(model);
// Validate session.
if (!ValidUserSession)
return GetAjaxResult_InvalidSession(responseData);
// Item columns.
ColumnDfn colId = ReferenceGolfMgr.GetUsgaCourseColumnDfn(SaxGolfUsgaCourse.Column.Id);
ColumnDfn colUsgaCourseId = ReferenceGolfMgr.GetUsgaCourseColumnDfn(SaxGolfUsgaCourse.Column.UsgaCourseId);
ColumnDfn colCaption = ReferenceGolfMgr.GetUsgaCourseColumnDfn(SaxGolfUsgaCourse.Column.Caption);
ColumnDfn colCourseName = ReferenceGolfMgr.GetUsgaCourseColumnDfn(SaxGolfUsgaCourse.Column.CourseName);
ColumnDfn colFullName = ReferenceGolfMgr.GetUsgaCourseColumnDfn(SaxGolfUsgaCourse.Column.FullName);
ColumnDfn colAddress1 = ReferenceGolfMgr.GetUsgaCourseColumnDfn(SaxGolfUsgaCourse.Column.Address1);
ColumnDfn colAddress2 = ReferenceGolfMgr.GetUsgaCourseColumnDfn(SaxGolfUsgaCourse.Column.Address2);
ColumnDfn colCity = ReferenceGolfMgr.GetUsgaCourseColumnDfn(SaxGolfUsgaCourse.Column.City);
ColumnDfn colMarkerCount_All = ReferenceGolfMgr.GetUsgaCourseColumnDfn(SaxGolfUsgaCourse.Column.MarkerCount_All);
ColumnDfn colMarkerCount_Active = ReferenceGolfMgr.GetUsgaCourseColumnDfn(SaxGolfUsgaCourse.Column.MarkerCount_Active);
ColumnDfn colFlags = ReferenceGolfMgr.GetUsgaCourseColumnDfn(SaxGolfUsgaCourse.Column.Flags);
ColumnDfn colStatus = ReferenceGolfMgr.GetUsgaCourseColumnDfn(SaxGolfUsgaCourse.Column.Status);
List<ColumnDfn> columns = new List<ColumnDfn>()
{
colId, colUsgaCourseId, colCaption, colCourseName, colFullName, colAddress1, colAddress2, colCity, colMarkerCount_All, colMarkerCount_Active, colFlags, colStatus
};
// Item filter.
SaxGolfUsgaCourse.Params prmUsgaCourse = new SaxGolfUsgaCourse.Params();
if (StringUtil.ToLong(model.Filter.ProvinceId) > 0)
prmUsgaCourse.ProvinceIdsIncluded.Add(StringUtil.ToSysId(model.Filter.ProvinceId));
prmUsgaCourse.CourseFilter = model.Filter.CourseSearch;
prmUsgaCourse.StatusCat = SaxGolfUsgaCourse.StatusCat.Any;
model.Paging.ItemTotal = (ulong)ReferenceGolfMgr.GetUsgaCourseCount(prmUsgaCourse);
model.PopulatePagingTo(prmUsgaCourse.ResultsPaging);
// Restrict results is not paged.
if (!prmUsgaCourse.ResultsPaging.Paged)
{
prmUsgaCourse.ResultsPaging.PageNo = 1;
prmUsgaCourse.ResultsPaging.PageLength = 200;
}
// Sort order.
prmUsgaCourse.SortColumns.Add(colCaption);
// Query items.
using (DbResultSet resultSet = ReferenceGolfMgr.ExecuteUsgaCourseQuery(columns, prmUsgaCourse))
{
while (resultSet != null && resultSet.HasRows && resultSet.NextRecord())
{
NamedValue.Map values = resultSet.GetRecordValues();
ushort flags = (ushort)values.GetLong(colFlags.DataName);
UsgaCourseListData courseData = new UsgaCourseListData()
{
Id = values.GetString(colId.DataName),
UsgaCourseId = values.GetLong(colUsgaCourseId.DataName),
Caption = values.GetString(colCaption.DataName),
Name = values.GetString(colCourseName.DataName),
FullName = values.GetString(colFullName.DataName),
Address1 = values.GetString(colAddress1.DataName),
Address2 = values.GetString(colAddress2.DataName),
City = values.GetString(colCity.DataName),
PriorityPopulate = SacsHierarchyItem.GetFlag(flags, SaxGolfUsgaCourse.Flag_Priority),
MarkerCount = values.GetLong(colMarkerCount_All.DataName),
MarkerCountActive = values.GetLong(colMarkerCount_Active.DataName),
StatusCode = values.GetString(colStatus.DataName),
StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName))
};
responseData.Courses.Add(courseData);
}
}
if (model.Paging.IsPaged)
model.Paging.ItemCount = (ushort)responseData.Courses.Count;
// Complete response.
responseData.SetPaging(model);
responseData.Success = true;
return Json(responseData);
}
//-------------------------------------------------------------------
}
//=======================================================================