251 lines
11 KiB
C#
251 lines
11 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
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.Models;
|
|
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? PriorityProvincePopulate { get; set; }
|
|
public long? ProvinceCount { get; set; }
|
|
public long? ProvinceCountActive { get; set; }
|
|
public long? FacilityCount { get; set; }
|
|
public long? FacilityCountActive { get; set; }
|
|
}
|
|
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? PriorityProvincePopulate { get; set; }
|
|
public long? FacilityCount { get; set; }
|
|
public long? FacilityCountActive { get; set; }
|
|
public long? CourseCount { get; set; }
|
|
public long? CourseCountActive { get; set; }
|
|
}
|
|
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);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// 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<UsgaCountryListData> Countries { get; } = new List<UsgaCountryListData>();
|
|
}
|
|
//-------------------------------------------------------------------
|
|
[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 fn = GetType().Name + ".Ajax_GetCountryList";
|
|
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 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
|
|
};
|
|
|
|
// 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),
|
|
PriorityProvincePopulate = 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),
|
|
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<UsgaProvinceListData> Provinces { get; } = new List<UsgaProvinceListData>();
|
|
}
|
|
//-------------------------------------------------------------------
|
|
[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 fn = GetType().Name + ".Ajax_GetProvinceList";
|
|
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 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
|
|
};
|
|
|
|
// Item filter.
|
|
SaxGolfUsgaProvince.Params prmUsgaProvince = new SaxGolfUsgaProvince.Params();
|
|
if (StringUtil.ToLong(model.Filter.CountryId) > 0)
|
|
prmUsgaProvince.CountryIdsIncluded.Add(StringUtil.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),
|
|
PriorityProvincePopulate = 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),
|
|
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);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|