using Microsoft.AspNetCore.Mvc; 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.Dbas; using Sarand.Net.Standard.Base.Utils; using Saxonite.Net.Core.Web.Admin.Consoles; using Saxonite.Net.Core.Web.Admin.Models; using Saxonite.Net.Core.Web.Admin.Models.Reference; using Saxonite.Net.Core.Web.Admin.Procs; using Saxonite.Net.Core.Web.Base.Procs; using Saxonite.Net.Standard.Base.App; using Saxonite.Net.Standard.Base.Bus; using Saxonite.Net.Standard.Base.Bus.Reference; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Saxonite.Net.Core.Web.Admin.Controllers.Reference { //======================================================================= // Reference Golf Controller - Ajax requests. //======================================================================= partial class ReferenceGolfController { //------------------------------------------------------------------- // USGA Country data. private class UsgaCountryListData : AjaxResponse_Data.ItemData_Base { public String Code { get; set; } public String Name { 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")}%" : null; } } } private class UsgaCountryItemData : UsgaCountryListData { } private void PopulateUsgaCountryResponseListData(SaxGolfUsgaCountry country, UsgaCountryListData data) { data.Id = SysId.ToString(country.Id); data.Code = country.CountryCode; data.Name = country.CountryName; data.StatusCode = country.StatusCode; data.StatusDesc = country.StatusDesc; } private void PopulateUsgaCountryResponseItemData(SaxGolfUsgaCountry country, UsgaCountryItemData data) { PopulateUsgaCountryResponseListData(country, data); } //------------------------------------------------------------------- // USGA Province data. private class UsgaProvinceListData : AjaxResponse_Data.ItemData_Base { public String Code { get; set; } public String Name { 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")}%" : null; } } } private class UsgaProvinceItemData : UsgaProvinceListData { } private void PopulateUsgaProvinceResponseListData(SaxGolfUsgaProvince province, UsgaProvinceListData data) { data.Id = SysId.ToString(province.Id); data.Code = province.ProvinceCode; data.Name = province.ProvinceName; data.StatusCode = province.StatusCode; data.StatusDesc = province.StatusDesc; } private void PopulateUsgaProvinceResponseItemData(SaxGolfUsgaProvince province, UsgaProvinceItemData data) { 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); } //------------------------------------------------------------------- // USGA Marker data. private class UsgaMarkerListData : AjaxResponse_Data.ItemData_Base { public long? UsgaMarkerId { get; set; } public String Caption { get; set; } public short? Holes { get; set; } public String HolesCaption { get; set; } public String Tee { get; set; } public String Gender { get; set; } public short? SlopeRating { get; set; } public short? Par { get; set; } public decimal? CourseRating { get; set; } public decimal? BogeyRating { get; set; } public short? Length { get; set; } } private class UsgaMarkerItemData : UsgaMarkerListData { } private void PopulateUsgaMarkerResponseListData(SaxGolfUsgaMarker marker, UsgaMarkerListData data) { data.Id = SysId.ToString(marker.Id); data.Caption = marker.Caption; data.Holes = marker.Holes; data.HolesCaption = marker.HolesCaption; data.Tee = marker.Tee; data.Gender = marker.Gender; data.SlopeRating = marker.SlopeRating; data.Par = marker.Par; data.Gender = marker.Gender; data.BogeyRating = marker.BogeyRating; data.Length = marker.Length; data.StatusCode = marker.StatusCode; data.StatusDesc = marker.StatusDesc; } private void PopulateUsgaMarkerResponseItemData(SaxGolfUsgaMarker course, UsgaMarkerItemData data) { PopulateUsgaMarkerResponseListData(course, data); } //------------------------------------------------------------------- // Get Country List ajax request. //------------------------------------------------------------------- private class AjaxResponse_ReferenceGolf_CountryList : AjaxResponse_Data { // Construction. public AjaxResponse_ReferenceGolf_CountryList(SaxModel_Admin model) : base(model) { } // Country list. public List Countries { get; } = new List(); } //------------------------------------------------------------------- [HttpPost] [Route("Reference/Golf/Ajax/GetUsgaCountryList")] [Route("Reference/Golf/Ajax/GetUsgaCountries")] [Route("Reference/Golf/Ajax/GetCountryList")] [Route("Reference/Golf/Ajax/GetCountries")] public IActionResult Ajax_GetCountryList(Model_ReferenceGolf model) { String messageTitle = Localiser["caption.reference.golf"]; AjaxResponse_ReferenceGolf_CountryList responseData = new AjaxResponse_ReferenceGolf_CountryList(model); // Validate session. if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData); // Item columns. ColumnDfn colId = ReferenceGolfMgr.GetUsgaCountryColumnDfn(SaxGolfUsgaCountry.Column.Id); ColumnDfn colCode = ReferenceGolfMgr.GetUsgaCountryColumnDfn(SaxGolfUsgaCountry.Column.CountryCode); ColumnDfn colName = ReferenceGolfMgr.GetUsgaCountryColumnDfn(SaxGolfUsgaCountry.Column.CountryName); ColumnDfn colProvinceCount_All = ReferenceGolfMgr.GetUsgaCountryColumnDfn(SaxGolfUsgaCountry.Column.ProvinceCount_All); 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 columns = new List() { colId, colCode, colName, colProvinceCount_All, colProvinceCount_Active, colFacilityCount_All, colFacilityCount_Active, colCoursesPercent, colFlags, colStatus }; // Item filter. SaxGolfUsgaCountry.Params prmUsgaCountry = new SaxGolfUsgaCountry.Params(); prmUsgaCountry.CountryFilter = model.Filter.CountrySearch; prmUsgaCountry.StatusCat = SaxGolfUsgaCountry.StatusCat.Any; model.Paging.ItemTotal = (ulong)ReferenceGolfMgr.GetUsgaCountryCount(prmUsgaCountry); model.PopulatePagingTo(prmUsgaCountry.ResultsPaging); // Sort order. prmUsgaCountry.SortColumns.Add(colName); // Query items. using (DbResultSet resultSet = ReferenceGolfMgr.ExecuteUsgaCountryQuery(columns, prmUsgaCountry)) { while (resultSet != null && resultSet.HasRows && resultSet.NextRecord()) { NamedValue.Map values = resultSet.GetRecordValues(); ushort flags = (ushort)values.GetLong(colFlags.DataName); UsgaCountryListData provinceData = new UsgaCountryListData() { Id = values.GetString(colId.DataName), Code = values.GetString(colCode.DataName), Name = values.GetString(colName.DataName), 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)) }; responseData.Countries.Add(provinceData); } } if (model.Paging.IsPaged) model.Paging.ItemCount = (ushort)responseData.Countries.Count; // Complete response. responseData.SetPaging(model); responseData.Success = true; return Json(responseData); } //------------------------------------------------------------------- // Get Province List ajax request. //------------------------------------------------------------------- private class AjaxResponse_ReferenceGolf_ProvinceList : AjaxResponse_Data { // Construction. public AjaxResponse_ReferenceGolf_ProvinceList(SaxModel_Admin model) : base(model) { } // Province list. public List Provinces { get; } = new List(); } //------------------------------------------------------------------- [HttpPost] [Route("Reference/Golf/Ajax/GetUsgaProvinceList")] [Route("Reference/Golf/Ajax/GetUsgaProvinces")] [Route("Reference/Golf/Ajax/GetProvinceList")] [Route("Reference/Golf/Ajax/GetProvinces")] public IActionResult Ajax_GetProvinceList(Model_ReferenceGolf model) { String messageTitle = Localiser["caption.reference.golf"]; AjaxResponse_ReferenceGolf_ProvinceList responseData = new AjaxResponse_ReferenceGolf_ProvinceList(model); // Validate session. if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData); // Item columns. ColumnDfn colId = ReferenceGolfMgr.GetUsgaProvinceColumnDfn(SaxGolfUsgaProvince.Column.Id); ColumnDfn colCode = ReferenceGolfMgr.GetUsgaProvinceColumnDfn(SaxGolfUsgaProvince.Column.ProvinceCode); ColumnDfn colName = ReferenceGolfMgr.GetUsgaProvinceColumnDfn(SaxGolfUsgaProvince.Column.ProvinceName); ColumnDfn colFacilityCount_All = ReferenceGolfMgr.GetUsgaProvinceColumnDfn(SaxGolfUsgaProvince.Column.FacilityCount_All); 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 columns = new List() { colId, colCode, colName, colFacilityCount_All, colFacilityCount_Active, colCourseCount_All, colCourseCount_Active, colMarkersPercent, colFlags, colStatus }; // Item filter. SaxGolfUsgaProvince.Params prmUsgaProvince = new SaxGolfUsgaProvince.Params(); if (StringUtil.ToLong(model.Filter.CountryId) > 0) prmUsgaProvince.CountryIdsIncluded.Add(SysId.ToSysId(model.Filter.CountryId)); prmUsgaProvince.ProvinceFilter = model.Filter.ProvinceSearch; prmUsgaProvince.StatusCat = SaxGolfUsgaProvince.StatusCat.Any; model.Paging.ItemTotal = (ulong)ReferenceGolfMgr.GetUsgaProvinceCount(prmUsgaProvince); model.PopulatePagingTo(prmUsgaProvince.ResultsPaging); // Sort order. prmUsgaProvince.SortColumns.Add(colCode); // Query items. using (DbResultSet resultSet = ReferenceGolfMgr.ExecuteUsgaProvinceQuery(columns, prmUsgaProvince)) { while (resultSet != null && resultSet.HasRows && resultSet.NextRecord()) { NamedValue.Map values = resultSet.GetRecordValues(); ushort flags = (ushort)values.GetLong(colFlags.DataName); UsgaProvinceListData provinceData = new UsgaProvinceListData() { Id = values.GetString(colId.DataName), Code = values.GetString(colCode.DataName), Name = values.GetString(colName.DataName), 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)) }; responseData.Provinces.Add(provinceData); } } if (model.Paging.IsPaged) model.Paging.ItemCount = (ushort)responseData.Provinces.Count; // Complete response. responseData.SetPaging(model); responseData.Success = true; 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 Courses { get; } = new List(); } //------------------------------------------------------------------- [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 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 columns = new List() { 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(SysId.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); } //------------------------------------------------------------------- // Get Marker List ajax request. //------------------------------------------------------------------- private class AjaxResponse_ReferenceGolf_CleanseUsgaCourseCaptions : AjaxResponse_Data { // Construction. public AjaxResponse_ReferenceGolf_CleanseUsgaCourseCaptions(SaxModel_Admin model) : base(model) { } } //------------------------------------------------------------------- [HttpPost] [Route("Reference/Golf/Ajax/CleanseUsgaCourseCaptions")] public IActionResult Ajax_CleanseUsgaCourseCaptions(Model_ReferenceGolf model) { String messageTitle = Localiser["caption.reference.golf"]; AjaxResponse_ReferenceGolf_CleanseUsgaCourseCaptions responseData = new AjaxResponse_ReferenceGolf_CleanseUsgaCourseCaptions(model); // Validate session. if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData); // Record disposable items as they are created so all can be disposed when needed. using (DisposableCollection disposableItems = new DisposableCollection()) { // Process console. SaxProcessConsole_Admin processConsole = GetProcessConsole_Admin(SessionContext); if (processConsole == null) return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); try { // Check whether process is in progress. if (processConsole.IsProcessing(SaxProcessConsole_Admin.ProcessType.GolfUsgaDataLookup)) return Json(responseData.SetMessage(messageTitle, Localiser["msg.process.in.progress"])); // Configure the process. SaxGolfUsgaDataLookup.Config processConfig = new SaxGolfUsgaDataLookup.Config(SessionContext, DbUpdateInfo); processConfig.Tasks.Add(SaxGolfUsgaDataLookup.Task.CleanseCourses); SaxGolfUsgaDataLookup process = new SaxGolfUsgaDataLookup(processConfig); // Store the process and run. processConsole.SetProcess(process); process.RunAsync(); } catch (Exception exc) { SaLogger.Warn($"{SysUtil.Fn} {exc.GetType().Name} initialising organisation uploader."); return Json(responseData.SetMessage(messageTitle, exc.GetType().Name + " initialising USGA Golf Data Loader.")); } } // Complete response. Json(responseData.SetMessage(messageTitle, "Course caption cleansing is underway.")); responseData.Success = true; return Json(responseData); } //------------------------------------------------------------------- // Get Marker List ajax request. //------------------------------------------------------------------- private class AjaxResponse_ReferenceGolf_MarkerList : AjaxResponse_Data { // Construction. public AjaxResponse_ReferenceGolf_MarkerList(SaxModel_Admin model) : base(model) { } // Marker list. public List Markers { get; } = new List(); } //------------------------------------------------------------------- [HttpPost] [Route("Reference/Golf/Ajax/GetUsgaMarkerList")] [Route("Reference/Golf/Ajax/GetUsgaMarkers")] [Route("Reference/Golf/Ajax/GetMarkerList")] [Route("Reference/Golf/Ajax/GetMarkers")] public IActionResult Ajax_GetMarkerList(Model_ReferenceGolf model) { String messageTitle = Localiser["caption.reference.golf"]; AjaxResponse_ReferenceGolf_MarkerList responseData = new AjaxResponse_ReferenceGolf_MarkerList(model); // Validate session. if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData); // Item columns. ColumnDfn colId = ReferenceGolfMgr.GetUsgaMarkerColumnDfn(SaxGolfUsgaMarker.Column.Id); ColumnDfn colUsgaMarkerId = ReferenceGolfMgr.GetUsgaMarkerColumnDfn(SaxGolfUsgaMarker.Column.UsgaMarkerId); ColumnDfn colCaption = ReferenceGolfMgr.GetUsgaMarkerColumnDfn(SaxGolfUsgaMarker.Column.Caption); ColumnDfn colHoles = ReferenceGolfMgr.GetUsgaMarkerColumnDfn(SaxGolfUsgaMarker.Column.Holes); ColumnDfn colHolesCaption = ReferenceGolfMgr.GetUsgaMarkerColumnDfn(SaxGolfUsgaMarker.Column.HolesCaption); ColumnDfn colTee = ReferenceGolfMgr.GetUsgaMarkerColumnDfn(SaxGolfUsgaMarker.Column.Tee); ColumnDfn colGender = ReferenceGolfMgr.GetUsgaMarkerColumnDfn(SaxGolfUsgaMarker.Column.Gender); ColumnDfn colSlopeRating = ReferenceGolfMgr.GetUsgaMarkerColumnDfn(SaxGolfUsgaMarker.Column.SlopeRating); ColumnDfn colPar = ReferenceGolfMgr.GetUsgaMarkerColumnDfn(SaxGolfUsgaMarker.Column.Par); ColumnDfn colCourseRating = ReferenceGolfMgr.GetUsgaMarkerColumnDfn(SaxGolfUsgaMarker.Column.CourseRating); ColumnDfn colBogeyRating = ReferenceGolfMgr.GetUsgaMarkerColumnDfn(SaxGolfUsgaMarker.Column.BogeyRating); ColumnDfn colLength = ReferenceGolfMgr.GetUsgaMarkerColumnDfn(SaxGolfUsgaMarker.Column.Length); ColumnDfn colFlags = ReferenceGolfMgr.GetUsgaMarkerColumnDfn(SaxGolfUsgaMarker.Column.Flags); ColumnDfn colStatus = ReferenceGolfMgr.GetUsgaMarkerColumnDfn(SaxGolfUsgaMarker.Column.Status); List columns = new List() { colId, colUsgaMarkerId, colCaption, colHoles, colHolesCaption, colTee, colGender, colSlopeRating, colPar, colCourseRating, colBogeyRating, colLength, colFlags, colStatus }; // Item filter. SaxGolfUsgaMarker.Params prmUsgaMarker = new SaxGolfUsgaMarker.Params(); if (StringUtil.ToLong(model.Filter.CourseId) > 0) prmUsgaMarker.CourseIdsIncluded.Add(SysId.ToSysId(model.Filter.CourseId)); prmUsgaMarker.MarkerFilter = model.Filter.MarkerSearch; prmUsgaMarker.StatusCat = SaxGolfUsgaMarker.StatusCat.Any; model.Paging.ItemTotal = (ulong)ReferenceGolfMgr.GetUsgaMarkerCount(prmUsgaMarker); model.PopulatePagingTo(prmUsgaMarker.ResultsPaging); // Restrict results is not paged. if (!prmUsgaMarker.ResultsPaging.Paged) { prmUsgaMarker.ResultsPaging.PageNo = 1; prmUsgaMarker.ResultsPaging.PageLength = 200; } // Sort order. prmUsgaMarker.SortColumns.Add(colCaption); // Query items. using (DbResultSet resultSet = ReferenceGolfMgr.ExecuteUsgaMarkerQuery(columns, prmUsgaMarker)) { while (resultSet != null && resultSet.HasRows && resultSet.NextRecord()) { NamedValue.Map values = resultSet.GetRecordValues(); ushort flags = (ushort)values.GetLong(colFlags.DataName); UsgaMarkerListData markerData = new UsgaMarkerListData() { Id = values.GetString(colId.DataName), UsgaMarkerId = values.GetLong(colUsgaMarkerId.DataName), Caption = values.GetString(colCaption.DataName), Holes = (short)values.GetLong(colHoles.DataName), HolesCaption = values.GetString(colHolesCaption.DataName), Tee = values.GetString(colTee.DataName), Gender = values.GetString(colGender.DataName), SlopeRating = (short)values.GetLong(colSlopeRating.DataName), Par = (short)values.GetLong(colPar.DataName), CourseRating = values.GetDecimal(colCourseRating.DataName), BogeyRating = values.GetDecimal(colBogeyRating.DataName), Length = (short)values.GetLong(colLength.DataName), StatusCode = values.GetString(colStatus.DataName), StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName)) }; responseData.Markers.Add(markerData); } } if (model.Paging.IsPaged) model.Paging.ItemCount = (ushort)responseData.Markers.Count; // Complete response. responseData.SetPaging(model); responseData.Success = true; return Json(responseData); } //------------------------------------------------------------------- } //======================================================================= }