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
@@ -303,11 +303,11 @@ namespace Saxonite.Net.Core.Web.Base.Procs
{
if (usgaCountry != null)
{
markersData = usgaDataLookup.LookupUsgaMarkersForCourse(usgaCourse.CourseId);
markersData = usgaDataLookup.LookupUsgaMarkersForCourse(usgaCourse.UsgaCourseId);
List<String> annotations = new List<string>();
if (usgaCourse.Priority) annotations.Add("Priority");
if (fallback) annotations.Add("Fallback");
SaLogger.Info($"{SysUtil.Fn} USGA Markers " + (refresh ? "refreshed" : "populated") + $" for {usgaCountry.CountryCode} {usgaCountry.CountryName} - {usgaProvince.ProvinceCode} {usgaProvince.ProvinceName} - {usgaCourse.Caption} [Id: {usgaCourse.CourseId}" + (annotations.Any() ? $"{annotations.Concat("",", ")}" : "") + $"]: {markersData.Count}.", true);
SaLogger.Info($"{SysUtil.Fn} USGA Markers " + (refresh ? "refreshed" : "populated") + $" for {usgaCountry.CountryCode} {usgaCountry.CountryName} - {usgaProvince.ProvinceCode} {usgaProvince.ProvinceName} - {usgaCourse.Caption} [Id: {usgaCourse.UsgaCourseId}" + (annotations.Any() ? $"{annotations.Concat("",", ")}" : "") + $"]: {markersData.Count}.", true);
}
else SaLogger.Error($"{SysUtil.Fn} Missing Country for Province {usgaProvince.ProvinceName}. Country Id: {usgaProvince.CountryId}.");
}
@@ -78,12 +78,12 @@ namespace Saxonite.Net.Core.Web.Base.Procs
public class CourseData
{
public string CourseId { get; set; }
public string UsgaCourseId { get; set; }
public string LegacyCrpCourseId { get; set; }
public string Caption { get; set; }
public string CourseName { get; set; }
public string FullName { get; set; }
public string FacilityId { get; set; }
public string UsgaFacilityId { get; set; }
public string FacilityName { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
@@ -126,7 +126,7 @@ namespace Saxonite.Net.Core.Web.Base.Procs
//if (!SysId.IsValid(MarkerId)) return false;
if (Holes < 1) return false;
if (StringUtil.IsBlank(Tee)) return false;
if (StringUtil.IsBlank(Gender)) return false;
//if (StringUtil.IsBlank(Gender)) return false;
if (SlopeRating == 0) return false;
if (!ignorePar && Par == 0) return false;
if (CourseRating == 0) return false;
@@ -395,7 +395,10 @@ namespace Saxonite.Net.Core.Web.Base.Procs
ReferenceGolfMgr.BulkUpdateUsgaProvinces(provincesData, DbUpdateInfo);
if (!ReferenceGolfMgr.HasErrorState())
{
// Provinces updates OK.
// Provinces stored OK = update Country.
usgaCountry.ProvincesUpdateAt = DateTime.Now;
usgaCountry.Priority = false;
ReferenceGolfMgr.UpdateUsgaCountry(usgaCountry, DbUpdateInfo);
}
else SaLogger.Warn($"{SysUtil.Fn} Error bulk updating USGA provinces: {ReferenceGolfMgr.ErrorStateMessage}.");
}
@@ -487,13 +490,13 @@ namespace Saxonite.Net.Core.Web.Base.Procs
String propertyName = courseProperty.Name;
String propertyStringValue = StringUtil.TrimWhitespace(courseProperty.Value.ToString());
if (propertyName.EqualsCI("courseId"))
courseData.CourseId = propertyStringValue;
courseData.UsgaCourseId = propertyStringValue;
else if (propertyName.EqualsCI("legacyCRPCourseId"))
courseData.LegacyCrpCourseId = propertyStringValue;
else if (propertyName.EqualsCI("courseName"))
courseData.CourseName = propertyStringValue;
else if (propertyName.EqualsCI("facilityId"))
courseData.FacilityId = propertyStringValue;
courseData.UsgaFacilityId = propertyStringValue;
else if (propertyName.EqualsCI("facilityName"))
courseData.FacilityName = propertyStringValue;
else if (propertyName.EqualsCI("fullName"))
@@ -526,7 +529,7 @@ namespace Saxonite.Net.Core.Web.Base.Procs
else UnrecognisedCourseProperties.Add(propertyName);
}
}
if (!StringUtil.IsBlank(courseData.CourseId) && !StringUtil.IsBlank(courseData.CourseName))
if (!StringUtil.IsBlank(courseData.UsgaCourseId) && !StringUtil.IsBlank(courseData.CourseName))
{
// Populate caption and add to list.
SetCourseCaption(courseData);
@@ -569,17 +572,17 @@ namespace Saxonite.Net.Core.Web.Base.Procs
Dictionary<SysId, SaxReferenceGolfMgr.UsgaFacilityData> facilitiesData = new Dictionary<SysId, SaxReferenceGolfMgr.UsgaFacilityData>();
foreach (CourseData usgaCourse in usgaCourses)
{
if (StringUtil.IsBlank(usgaCourse.FacilityId)) continue;
if (StringUtil.IsBlank(usgaCourse.UsgaFacilityId)) continue;
SaxReferenceGolfMgr.UsgaFacilityData facilityData = new SaxReferenceGolfMgr.UsgaFacilityData();
facilityData.ProvinceCode = provinceCode;
facilityData.FacilityId = StringUtil.ToSysId(usgaCourse.FacilityId);
facilityData.UsgaFacilityId = StringUtil.ToSysId(usgaCourse.UsgaFacilityId);
facilityData.FacilityName = usgaCourse.FacilityName;
if (!SysId.IsValid(facilityData.FacilityId))
if (!SysId.IsValid(facilityData.UsgaFacilityId))
{
SaLogger.Warn($"{SysUtil.Fn} Invalid Facility Id for {usgaCourse.CourseName}: {usgaCourse.FacilityId}.");
SaLogger.Warn($"{SysUtil.Fn} Invalid Facility Id for {usgaCourse.CourseName}: {usgaCourse.UsgaFacilityId}.");
continue;
}
facilitiesData[facilityData.FacilityId] = facilityData;
facilitiesData[facilityData.UsgaFacilityId] = facilityData;
}
ReferenceGolfMgr.BulkUpdateUsgaFacilities(facilitiesData.Values.ToList(), DbUpdateInfo);
if (ReferenceGolfMgr.HasErrorState())
@@ -589,10 +592,10 @@ namespace Saxonite.Net.Core.Web.Base.Procs
Dictionary<SysId, SaxReferenceGolfMgr.UsgaCourseData> coursesData = new Dictionary<SysId, SaxReferenceGolfMgr.UsgaCourseData>();
foreach (CourseData usgaCourse in usgaCourses)
{
if (StringUtil.IsBlank(usgaCourse.CourseId)) continue;
if (StringUtil.IsBlank(usgaCourse.UsgaCourseId)) continue;
SaxReferenceGolfMgr.UsgaCourseData courseData = new SaxReferenceGolfMgr.UsgaCourseData();
courseData.FacilityId = StringUtil.ToSysId(usgaCourse.FacilityId);
courseData.CourseId = StringUtil.ToSysId(usgaCourse.CourseId);
courseData.UsgaFacilityId = StringUtil.ToSysId(usgaCourse.UsgaFacilityId);
courseData.UsgaCourseId = StringUtil.ToSysId(usgaCourse.UsgaCourseId);
courseData.LegacyCrpCourseId = StringUtil.ToSysId(usgaCourse.LegacyCrpCourseId);
courseData.Caption = usgaCourse.Caption;
courseData.CourseName = usgaCourse.CourseName;
@@ -602,17 +605,20 @@ namespace Saxonite.Net.Core.Web.Base.Procs
courseData.City = usgaCourse.City;
courseData.Email = usgaCourse.Email;
courseData.Telephone = usgaCourse.Telephone;
if (!SysId.IsValid(courseData.CourseId))
if (!SysId.IsValid(courseData.UsgaCourseId))
{
SaLogger.Warn($"{SysUtil.Fn} Invalid Course Id for {usgaCourse.CourseName}: {usgaCourse.CourseId}.");
SaLogger.Warn($"{SysUtil.Fn} Invalid Course Id for {usgaCourse.CourseName}: {usgaCourse.UsgaCourseId}.");
continue;
}
coursesData[courseData.CourseId] = courseData;
coursesData[courseData.UsgaCourseId] = courseData;
}
ReferenceGolfMgr.BulkUpdateUsgaCourses(coursesData.Values.ToList(), DbUpdateInfo);
if (!ReferenceGolfMgr.HasErrorState())
{
// Courses updates OK.
// Courses stored OK - update Province.
usgaProvince.CoursesUpdateAt = DateTime.Now;
usgaProvince.Priority = false;
ReferenceGolfMgr.UpdateUsgaProvince(usgaProvince, DbUpdateInfo);
}
else SaLogger.Warn($"{SysUtil.Fn} Error bulk updating USGA courses: {ReferenceGolfMgr.ErrorStateMessage}.");
}
@@ -646,15 +652,13 @@ namespace Saxonite.Net.Core.Web.Base.Procs
/// <summary>
/// Cleanse Facility name by removing generic phrases, eg. golf club, hotel etc.
/// </summary>
private String CleanseFacilityName(String facilityName)
public static String CleanseFacilityName(String facilityName)
{
facilityName = Regex.Replace(facilityName, "Hotel\\s*(and|&)\\s*(Golf|Country)\\s*Club", "", RegexOptions.IgnoreCase);
facilityName = Regex.Replace(facilityName, "Hotel,*\\s*Golf\\s*(and|&)\\s*Spa", "", RegexOptions.IgnoreCase);
facilityName = Regex.Replace(facilityName, "Golf\\s*(and|&)\\s*(Country|Sailing)\\s*Club", "", RegexOptions.IgnoreCase);
facilityName = Regex.Replace(facilityName, "Golf\\s*Club\\s*(and|&)\\s*Hotel", "", RegexOptions.IgnoreCase);
facilityName = Regex.Replace(facilityName, "Golf\\s*Club\\s*Ltd", "", RegexOptions.IgnoreCase);
facilityName = Regex.Replace(facilityName, "Golf\\s*(Club|Course|Links|Centre|Academy|Resort|Klub)", "", RegexOptions.IgnoreCase);
facilityName = Regex.Replace(facilityName, "Hotel(,\\s*Golf)?\\s*(and|&)\\s*(Golf|Country|Sailing|Spa)(\\s*Club)?", "", RegexOptions.IgnoreCase);
facilityName = Regex.Replace(facilityName, "Golf(\\s*Club)?\\s*(and|&)\\s*(Hotel|Country|Sailing|Spa)\\s*Club", "", RegexOptions.IgnoreCase);
facilityName = Regex.Replace(facilityName, "Golf\\s*(Club|Course|Links|Centre|Academy|Resort|Klub)(\\s*(Ltd|Limited))?", "", RegexOptions.IgnoreCase);
facilityName = Regex.Replace(facilityName, "Club\\s*de\\s*Golf", "", RegexOptions.IgnoreCase);
facilityName = Regex.Replace(facilityName, "\\s*(Golf|Country\\s*Club|Club|Ltd)\\s*$", "", RegexOptions.IgnoreCase);
return StringUtil.TrimWhitespace(facilityName);
}
@@ -675,6 +679,8 @@ namespace Saxonite.Net.Core.Web.Base.Procs
if (Regex.Replace(courseName, "[\\s-',\\.]", "").EqualsCI(Regex.Replace(facilityName, "[\\s-',\\.]", ""))) return true;
// Course name can end on Golf or Course and still match facility.
if (Regex.Replace(courseName, "\\s*(Golf|Course)$", "").EqualsCI(facilityName)) return true;
// Course name can start with facility name or vice-versa.
if (courseName.StartsWithCI(facilityName) || facilityName.StartsWithCI(courseName)) return true;
return false;
}
@@ -721,7 +727,7 @@ namespace Saxonite.Net.Core.Web.Base.Procs
{
// Retrieve and validate course.
SaxGolfUsgaCourse.Params prmCourse = new SaxGolfUsgaCourse.Params();
prmCourse.CourseIdsIncluded.Add(usgaCourseId);
prmCourse.UsgaCourseIdsIncluded.Add(usgaCourseId);
SaxGolfUsgaCourse usgaCourse = ReferenceGolfMgr.GetUsgaCourse(prmCourse);
disposableItems.Add(usgaCourse);
if (usgaCourse == null)
@@ -907,8 +913,8 @@ namespace Saxonite.Net.Core.Web.Base.Procs
//if (!SysId.IsValid(usgaMarker.MarkerId)) continue;
if (StringUtil.IsBlank(usgaMarker.Caption)) continue;
SaxReferenceGolfMgr.UsgaMarkerData markerData = new SaxReferenceGolfMgr.UsgaMarkerData();
markerData.CourseId = usgaMarker.CourseId;
markerData.MarkerId = usgaMarker.MarkerId;
markerData.UsgaCourseId = usgaMarker.CourseId;
markerData.UsgaMarkerId = usgaMarker.MarkerId;
markerData.Caption = usgaMarker.Caption;
markerData.Holes = usgaMarker.Holes;
markerData.HolesCaption = usgaMarker.HolesCaption;
@@ -924,17 +930,14 @@ namespace Saxonite.Net.Core.Web.Base.Procs
ReferenceGolfMgr.BulkUpdateUsgaMarkers(markersUpdateData, DbUpdateInfo);
if (!ReferenceGolfMgr.HasErrorState())
{
// Markers updates OK.
}
else SaLogger.Warn($"{SysUtil.Fn} Error bulk updating USGA markers: {ReferenceGolfMgr.ErrorStateMessage}.");
// Store Marker data and clear Course 'priority' flag.
if (markersData.Markers.Any())
{
usgaCourse.MarkersData = JsonConvert.SerializeObject(markersData);
// Markers stored OK - update Course.
if (markersData.Markers.Any())
usgaCourse.MarkersData = JsonConvert.SerializeObject(markersData);
usgaCourse.MarkersUpdateAt = DateTime.Now;
usgaCourse.Priority = false;
ReferenceGolfMgr.UpdateUsgaCourse(usgaCourse, DbUpdateInfo);
}
else SaLogger.Warn($"{SysUtil.Fn} Error bulk updating USGA markers: {ReferenceGolfMgr.ErrorStateMessage}.");
}
catch (Exception exc)
{
@@ -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);
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -261,6 +261,9 @@
<data name="label.cancel" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="label.caption" xml:space="preserve">
<value>Caption</value>
</data>
<data name="label.category" xml:space="preserve">
<value>Category</value>
</data>
@@ -297,6 +300,12 @@
<data name="label.county" xml:space="preserve">
<value>County</value>
</data>
<data name="label.course" xml:space="preserve">
<value>Course</value>
</data>
<data name="label.course.id" xml:space="preserve">
<value>Course Id</value>
</data>
<data name="label.courses" xml:space="preserve">
<value>Courses</value>
</data>
@@ -354,6 +363,9 @@
<data name="label.forgotten.password" xml:space="preserve">
<value>Forgotten password?</value>
</data>
<data name="label.full.name" xml:space="preserve">
<value>Full name</value>
</data>
<data name="label.header.row" xml:space="preserve">
<value>Header row</value>
</data>
@@ -88,7 +88,7 @@
<div class="col"></div>
</div>
</div>
<div class="sax-content" style="min-height:48px;max-height:240px;margin:0px;padding:0px;">
<div style="min-height:48px;max-height:240px;overflow-y:auto;">
<div class="sax-panel-messages"></div>
<table class="sax-item-list">
<thead>
@@ -98,6 +98,7 @@
<th class="center">@Localiser["label.priority"]</th>
<th class="center">@Localiser["label.provinces"]</th>
<th class="center">@Localiser["label.clubs"]</th>
<th class="center">@Localiser["label.clubs"]%</th>
<th class="center">@Localiser["label.status"]</th>
</tr>
</thead>
@@ -111,6 +112,7 @@
<td><div class="CountryPriority center"></div></td>
<td><div class="CountryProvinces center"></div></td>
<td><div class="CountryClubs center"></div></td>
<td><div class="CountryClubsPercent center"></div></td>
<td><div class="CountryStatus center"></div></td>
</tr>
</table>
@@ -132,7 +134,7 @@
<div class="col"></div>
</div>
</div>
<div class="sax-content" style="min-height:48px;max-height:240px;margin:0px;padding:0px;">
<div style="min-height:48px;max-height:240px;overflow-y:auto;">
<div class="sax-panel-messages"></div>
<table class="sax-item-list">
<thead>
@@ -142,6 +144,7 @@
<th class="center">@Localiser["label.priority"]</th>
<th class="center">@Localiser["label.clubs"]</th>
<th class="center">@Localiser["label.courses"]</th>
<th class="center">@Localiser["label.markers"]</th>
<th class="center">@Localiser["label.status"]</th>
</tr>
</thead>
@@ -155,6 +158,7 @@
<td><div class="ProvincePriority center"></div></td>
<td><div class="ProvinceClubs center"></div></td>
<td><div class="ProvinceCourses center"></div></td>
<td><div class="ProvinceMarkers center"></div></td>
<td><div class="ProvinceStatus center"></div></td>
</tr>
</table>
@@ -162,11 +166,48 @@
}
@* Reference - Golf - Courses *@
<div class="sax-panel-info Courses">
<div class="sax-header">
<div class="sax-caption">@Localiser["label.courses"]</div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmCourses", @class = "sax-form", @onSubmit = "return false;" }))
{
@Html.HiddenFor(Model => Model.Filter.ProvinceId, new { @class = "FilterProvinceId" })
<div class="sax-panel-info Courses">
<div class="sax-header">
<div class="row">
<div class="col left">
<span class="sax-label">@Localiser["label.search"]</span>
<span><input type="search" name="Filter.CourseSearch" class="FilterCourseSearch" maxlength="16" style="width:33%;" /></span>
</div>
<div class="fixed"><div class="sax-caption">@Localiser["label.courses"]</div></div>
<div class="col"></div>
</div>
</div>
<div style="min-height:48px;max-height:240px;overflow-y:auto;">
<div class="sax-panel-messages"></div>
<table class="sax-item-list">
<thead>
<tr>
<th class="center">@Localiser["label.course.id"]</th>
<th class="">@Localiser["label.caption"]</th>
<th class="center">@Localiser["label.location"]</th>
<th class="center">@Localiser["label.priority"]</th>
<th class="center">@Localiser["label.markers"]</th>
<th class="center">@Localiser["label.status"]</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
<table class="sax-panel-item-template">
<tr class="sax-item GolfCourse">
<td><div class="CourseId center"></div></td>
<td><div class="CourseCaption"></div></td>
<td><div class="CourseLocation center"></div></td>
<td><div class="CoursePriority center"></div></td>
<td><div class="CourseMarkers center"></div></td>
<td><div class="CourseStatus center"></div></td>
</tr>
</table>
</div>
</div>
}
@* Icons. *@
<div class="sax-panel-item-template">
@@ -283,17 +283,22 @@ table.sax-item-list
{
width: 100%;
border-spacing: 0;
border-collapse: collapse;
border-collapse: separate;
overflow: auto;
}
table.sax-item-list thead tr
{
}
table.sax-item-list thead th
{
position: sticky;
top: 0;
padding:4px 2px 2px 2px;
padding: 4px 2px 2px 2px;
z-index: 1;
background-color: #f8f8f8;
border-bottom:1px solid #d0d0d0;
}
table.sax-item-list tbody th
@@ -7,7 +7,7 @@
.sax-panel-info, .sax-panel-form
{
max-width: 720px;
margin: 24px auto;
margin: 16px auto;
padding: 0;
background-color: #fff;
border: solid 1px #979797;
@@ -90,7 +90,8 @@
$('.CountryName', $item).text(item.name);
if (item.provinceCountActive) $('.CountryProvinces', $item).text(item.provinceCountActive);
if (item.facilityCountActive) $('.CountryClubs', $item).text(item.facilityCountActive);
if (item.priorityProvincePopulate) $('.CountryPriority', $item).append(rg.fn.getTickIcon());
$('.CountryClubsPercent', $item).text(item.coursesPercentFmt);
if (item.priorityPopulate) $('.CountryPriority', $item).append(rg.fn.getTickIcon());
$('.CountryStatus', $item).append(rg.fn.getStatusIcon(item.statusCode.toLowerCase()));
return $item;
}
@@ -110,8 +111,10 @@
/* Reference - Golf - Provinces. */
rg.fn.clearProvinces = function ()
{
rg.fn.clearCourses();
rg.$pnl.provincesMsgs.empty();
rg.$pnl.provincesList.find('tbody tr').remove();
$('.FilterCourseSearch', rg.$frm.courses).val('');
}
rg.fn.refreshProvinces = function (delay)
{
@@ -143,7 +146,8 @@
$('.ProvinceName', $item).text(item.name);
if (item.facilityCountActive) $('.ProvinceClubs', $item).text(item.facilityCountActive);
if (item.courseCountActive) $('.ProvinceCourses', $item).text(item.courseCountActive);
if (item.priorityClubPopulate) $('.ProvincePriority', $item).append(rg.fn.getTickIcon());
$('.ProvinceMarkers', $item).text(item.markersPercentFmt);
if (item.priorityPopulate) $('.ProvincePriority', $item).append(rg.fn.getTickIcon());
$('.ProvinceStatus', $item).append(rg.fn.getStatusIcon(item.statusCode.toLowerCase()));
return $item;
}
@@ -156,13 +160,60 @@
//sax.debug('selectProvince', $item, item)
$('table.sax-item-list tbody tr', rg.$pnl.provinces).removeClass(rg.class_sel);
$item.addClass(rg.class_sel);
setTimeout(rg.fn.refreshClubs(500), 100);
setTimeout(rg.fn.refreshCourses(500), 100);
}
//--------------------------------------------------------------
/* Reference - Golf - Clubs. */
rg.fn.refreshClubs = function (delay)
/* Reference - Golf - Courses. */
rg.fn.clearCourses = function ()
{
rg.$pnl.coursesMsgs.empty();
rg.$pnl.coursesList.find('tbody tr').remove();
}
rg.fn.refreshCourses = function (delay)
{
rg.fn.clearCourses();
let provinceId = rg.$pnl.provincesList.find('tbody tr.' + rg.class_sel).attr(rg.attr_id);
if (!provinceId)
{
rg.$pnl.coursesMsgs.empty().text('Province must be selected.');
return;
}
$('.FilterProvinceId', rg.$frm.courses).val(provinceId);
rg.ajaxGolfCourses = rg.ajaxGolfCourses || { url: sax.url.base + 'Reference/Golf/Ajax/GetCourses', formId: rg.$frm.courses.prop('id'), callbackFn: rg.fn.doRefreshCourses };
sax.doAjaxRequest(rg.ajaxGolfCourses, delay || 50);
}
rg.fn.doRefreshCourses = function (response)
{
//sax.debug('doRefreshCourses', response);
rg.fn.clearCourses();
if (!response.success) return;
let $list = rg.$pnl.coursesList;
$('tbody tr', $list).remove()
for (let courseIdx = 0; courseIdx < (response.courses || []).length; courseIdx++)
$list.append(rg.fn.populateCourse(rg.fn.getCourseTemplate(), response.courses[courseIdx]));
}
rg.fn.populateCourse = function ($item, item)
{
$item.attr(rg.attr_id, item.id).on('click', function () { rg.fn.selectCourse($item, item); })
$('.CourseId', $item).text(item.usgaCourseId);
$('.CourseCaption', $item).text(item.caption);
$('.CourseLocation', $item).text(item.city||item.address2||item.address1);
if (item.markerCountActive) $('.CourseMarkers', $item).text(item.markerCountActive);
if (item.priorityPopulate) $('.CoursePriority', $item).append(rg.fn.getTickIcon());
$('.CourseStatus', $item).append(rg.fn.getStatusIcon(item.statusCode.toLowerCase()));
return $item;
}
rg.fn.getCourseTemplate = function ()
{
return $('table.sax-panel-item-template tr.GolfCourse', rg.$pnl.courses).clone();
}
rg.fn.selectCourse = function ($item, item)
{
//sax.debug('selectCourse', $item, item)
$('table.sax-item-list tbody tr', rg.$pnl.courses).removeClass(rg.class_sel);
$item.addClass(rg.class_sel);
//setTimeout(rg.fn.refreshMarkers(500), 100);
}
//--------------------------------------------------------------
@@ -208,6 +259,11 @@
$('.FilterProvinceSearch', rg.$frm.provinces).on('input', function () { setTimeout(rg.fn.refreshProvinces(500), 100); });
// Courses.
rg.$pnl.courses = $('.sax-panel-info.Courses', rg.$pnl.golf);
rg.$pnl.coursesMsgs = $('.sax-panel-messages', rg.$pnl.courses);
rg.$pnl.coursesList = $('table.sax-item-list', rg.$pnl.courses);
rg.$frm.courses = $('#frmCourses', rg.$pnl.golf);
$('.FilterCourseSearch', rg.$frm.courses).on('input', function () { setTimeout(rg.fn.refreshCourses(500), 100); });
//$('.PagingPageNo', rg.$dlg).val(1);
//$('.PagingPageLength', rg.$dlg).val(16);
+1 -1
View File
@@ -18,7 +18,7 @@ namespace Saxonite.Net.Standard.Base.App
//-------------------------------------------------------------------
public static class Version
{
private static String version { get; } = "1.2.11.9";
private static String version { get; } = "1.2.11.10";
// Retrieve version.
public static String GetFullVersion () { return version; }
public static String GetAppVersion ()
@@ -6,7 +6,7 @@ using System.Collections.Generic;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Base.App
{
@@ -6,7 +6,7 @@ using System.Collections.Generic;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Base.App
{
@@ -33,6 +33,7 @@ namespace Saxonite.Base.App
UsgaCountry_CountryCode,
UsgaCountry_CountryName,
UsgaCountry_EntCountryCode,
UsgaCountry_ProvincesUpdateAt,
UsgaCountry_Notes,
UsgaCountry_Flags,
UsgaCountry_Status,
@@ -44,7 +45,7 @@ namespace Saxonite.Base.App
UsgaCountry_UpdateHost,
UsgaCourse_Id,
UsgaCourse_FacilityId,
UsgaCourse_CourseId,
UsgaCourse_UsgaCourseId,
UsgaCourse_LegacyCrpCourseId,
UsgaCourse_Caption,
UsgaCourse_CourseName,
@@ -57,6 +58,7 @@ namespace Saxonite.Base.App
UsgaCourse_Longitude,
UsgaCourse_Email,
UsgaCourse_Telephone,
UsgaCourse_MarkersUpdateAt,
UsgaCourse_MarkersData,
UsgaCourse_Notes,
UsgaCourse_Flags,
@@ -69,7 +71,7 @@ namespace Saxonite.Base.App
UsgaCourse_UpdateHost,
UsgaFacility_Id,
UsgaFacility_ProvinceId,
UsgaFacility_FacilityId,
UsgaFacility_UsgaFacilityId,
UsgaFacility_FacilityName,
UsgaFacility_Address1,
UsgaFacility_Address2,
@@ -90,7 +92,7 @@ namespace Saxonite.Base.App
UsgaFacility_UpdateHost,
UsgaMarker_Id,
UsgaMarker_CourseId,
UsgaMarker_MarkerId,
UsgaMarker_UsgaMarkerId,
UsgaMarker_Caption,
UsgaMarker_Holes,
UsgaMarker_HolesCaption,
@@ -115,6 +117,7 @@ namespace Saxonite.Base.App
UsgaProvince_ProvinceCode,
UsgaProvince_EntProvinceCode,
UsgaProvince_ProvinceName,
UsgaProvince_CoursesUpdateAt,
UsgaProvince_Notes,
UsgaProvince_Flags,
UsgaProvince_Status,
@@ -129,7 +132,7 @@ namespace Saxonite.Base.App
//-------------------------------------------------------------------
// Data members.
private static readonly int tableCount = 5;
private static readonly int columnCount = 95;
private static readonly int columnCount = 98;
private static ulong maxTextLen = 0;
//-------------------------------------------------------------------
@@ -334,6 +337,7 @@ namespace Saxonite.Base.App
new ColumnDfn(1,"CountryCode",0,12,false,10),
new ColumnDfn(1,"CountryName",0,-9,false,200),
new ColumnDfn(1,"EntCountryCode",0,12,false,10),
new ColumnDfn(1,"ProvincesUpdateAt",9,93,false,16),
new ColumnDfn(1,"Notes",0,-9,false,2000),
new ColumnDfn(1,"Flags",3,5,false,5),
new ColumnDfn(1,"Status",0,12,false,3),
@@ -345,7 +349,7 @@ namespace Saxonite.Base.App
new ColumnDfn(1,"UpdateHost",0,12,false,100),
new ColumnDfn(2,"Id",5,-5,true,19),
new ColumnDfn(2,"FacilityId",5,-5,false,19),
new ColumnDfn(2,"CourseId",5,-5,false,19),
new ColumnDfn(2,"UsgaCourseId",5,-5,false,19),
new ColumnDfn(2,"LegacyCrpCourseId",5,-5,false,19),
new ColumnDfn(2,"Caption",0,-9,false,200),
new ColumnDfn(2,"CourseName",0,-9,false,200),
@@ -358,6 +362,7 @@ namespace Saxonite.Base.App
new ColumnDfn(2,"Longitude",8,3,false,9),
new ColumnDfn(2,"Email",0,-9,false,200),
new ColumnDfn(2,"Telephone",0,-9,false,200),
new ColumnDfn(2,"MarkersUpdateAt",9,93,false,16),
new ColumnDfn(2,"MarkersData",0,-9,false,0),
new ColumnDfn(2,"Notes",0,-9,false,2000),
new ColumnDfn(2,"Flags",3,5,false,5),
@@ -370,7 +375,7 @@ namespace Saxonite.Base.App
new ColumnDfn(2,"UpdateHost",0,12,false,100),
new ColumnDfn(3,"Id",5,-5,true,19),
new ColumnDfn(3,"ProvinceId",5,-5,false,19),
new ColumnDfn(3,"FacilityId",5,-5,false,19),
new ColumnDfn(3,"UsgaFacilityId",5,-5,false,19),
new ColumnDfn(3,"FacilityName",0,-9,false,200),
new ColumnDfn(3,"Address1",0,-9,false,200),
new ColumnDfn(3,"Address2",0,-9,false,200),
@@ -391,7 +396,7 @@ namespace Saxonite.Base.App
new ColumnDfn(3,"UpdateHost",0,12,false,100),
new ColumnDfn(4,"Id",5,-5,true,19),
new ColumnDfn(4,"CourseId",5,-5,false,19),
new ColumnDfn(4,"MarkerId",5,-5,false,19),
new ColumnDfn(4,"UsgaMarkerId",5,-5,false,19),
new ColumnDfn(4,"Caption",0,-9,false,200),
new ColumnDfn(4,"Holes",3,5,false,5),
new ColumnDfn(4,"HolesCaption",0,-9,false,32),
@@ -416,6 +421,7 @@ namespace Saxonite.Base.App
new ColumnDfn(5,"ProvinceCode",0,12,false,20),
new ColumnDfn(5,"EntProvinceCode",0,12,false,20),
new ColumnDfn(5,"ProvinceName",0,-9,false,200),
new ColumnDfn(5,"CoursesUpdateAt",9,93,false,16),
new ColumnDfn(5,"Notes",0,-9,false,2000),
new ColumnDfn(5,"Flags",3,5,false,5),
new ColumnDfn(5,"Status",0,12,false,3),
@@ -6,7 +6,7 @@ using System.Collections.Generic;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:30
//---------------------------------------------------------------------------
namespace Saxonite.Base.App
{
@@ -26,11 +26,14 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
CountryCode,
EntCountryCode,
CountryName,
ProvincesUpdateAt_Date,
// Associated data.
ProvinceCount_All,
ProvinceCount_Active,
FacilityCount_All,
FacilityCount_Active,
/// <summary>Facility population %.</summary>
FacilityPercent,
// Common.
Notes,
Flags,
@@ -48,6 +51,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
public String CountryCode { get; set; } = String.Empty;
public String EntCountryCode { get; set; } = String.Empty;
public String CountryName { get; set; } = String.Empty;
public DateTime? ProvincesUpdateAt { get; set; } = null;
}
//-------------------------------------------------------------------
@@ -77,12 +81,18 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
get { return data.CountryName; }
set { CheckChanged(data.CountryName, value); data.CountryName = value; }
}
public DateTime? ProvincesUpdateAt
{
get { return data.ProvincesUpdateAt; }
set { CheckChangedNullable(data.ProvincesUpdateAt, value); data.ProvincesUpdateAt = value; }
}
// Population.
internal void PopulateFrom(Data data)
{
CountryCode = data.CountryCode;
EntCountryCode = data.EntCountryCode;
CountryName = data.CountryName;
ProvincesUpdateAt = data.ProvincesUpdateAt;
base.PopulateFrom(data);
}
public Data Clone()
@@ -101,6 +111,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
public ValidValue CountryCode { get; set; } = ValidValue.Valid;
public ValidValue EntCountryCode { get; set; } = ValidValue.Valid;
public ValidValue CountryName { get; set; } = ValidValue.Valid;
public ValidValue ProvincesUpdateAt { get; set; } = ValidValue.Valid;
}
//-------------------------------------------------------------------
@@ -166,6 +177,11 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
get { return data.CountryName; }
set { data.CountryName = value; }
}
public DateTime? ProvincesUpdateAt
{
get { return data.ProvincesUpdateAt; }
set { data.ProvincesUpdateAt = value; }
}
//-------------------------------------------------------------------
// Flags - positions 1-16 available.
@@ -27,7 +27,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
Province_Name,
FacilityId,
Facility_Name,
CourseId,
UsgaCourseId,
LegacyCrpCourseId,
Caption,
CourseName,
@@ -38,7 +38,10 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
PostalCode,
Email,
Telephone,
MarkersUpdateOn_Date,
// Associated data.
MarkerCount_All,
MarkerCount_Active,
// Common.
Notes,
Flags,
@@ -54,7 +57,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
public class DataProperties
{
public SysId FacilityId { get; set; }
public SysId CourseId { get; set; }
public SysId UsgaCourseId { get; set; }
public SysId LegacyCrpCourseId { get; set; }
public String Caption { get; set; } = String.Empty;
public String CourseName { get; set; } = String.Empty;
@@ -67,6 +70,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
public Decimal? Longitude { get; set; } = null;
public String Email { get; set; } = String.Empty;
public String Telephone { get; set; } = String.Empty;
public DateTime? MarkersUpdateAt { get; set; } = null;
public String MarkersData { get; set; } = String.Empty;
}
@@ -87,10 +91,10 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
get { return data.FacilityId; }
set { CheckChanged(data.FacilityId, value); data.FacilityId = value; }
}
public SysId CourseId
public SysId UsgaCourseId
{
get { return data.CourseId; }
set { CheckChanged(data.CourseId, value); data.CourseId = value; }
get { return data.UsgaCourseId; }
set { CheckChanged(data.UsgaCourseId, value); data.UsgaCourseId = value; }
}
public SysId LegacyCrpCourseId
{
@@ -152,6 +156,11 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
get { return data.Telephone; }
set { CheckChanged(data.Telephone, value); data.Telephone = value; }
}
public DateTime? MarkersUpdateAt
{
get { return data.MarkersUpdateAt; }
set { CheckChangedNullable(data.MarkersUpdateAt, value); data.MarkersUpdateAt = value; }
}
public String MarkersData
{
get { return data.MarkersData; }
@@ -161,7 +170,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
internal void PopulateFrom(Data data)
{
FacilityId = data.FacilityId;
CourseId = data.CourseId;
UsgaCourseId = data.UsgaCourseId;
LegacyCrpCourseId = data.LegacyCrpCourseId;
Caption = data.Caption;
CourseName = data.CourseName;
@@ -174,6 +183,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
Longitude = data.Longitude;
Email = data.Email;
Telephone = data.Telephone;
MarkersUpdateAt = data.MarkersUpdateAt;
MarkersData = data.MarkersData;
base.PopulateFrom(data);
}
@@ -204,6 +214,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
public ValidValue Longitude { get; set; } = ValidValue.Valid;
public ValidValue Email { get; set; } = ValidValue.Valid;
public ValidValue Telephone { get; set; } = ValidValue.Valid;
public ValidValue MarkersUpdateAt { get; set; } = ValidValue.Valid;
public ValidValue MarkersData { get; set; } = ValidValue.Valid;
}
@@ -261,10 +272,10 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
get { return data.FacilityId; }
set { data.FacilityId = value; }
}
public SysId CourseId
public SysId UsgaCourseId
{
get { return data.CourseId; }
set { data.CourseId = value; }
get { return data.UsgaCourseId; }
set { data.UsgaCourseId = value; }
}
public SysId LegacyCrpCourseId
{
@@ -326,6 +337,11 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
get { return data.Telephone; }
set { data.Telephone = value; }
}
public DateTime? MarkersUpdateAt
{
get { return data.MarkersUpdateAt; }
set { data.MarkersUpdateAt = value; }
}
public String MarkersData
{
get { return data.MarkersData; }
@@ -368,7 +384,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
public List<SysId> ProvinceIdsIncluded { get; } = new List<SysId>();
public List<SysId> FacilityIdsIncluded { get; } = new List<SysId>();
/// <summary>USGA Course Ids.</summary>
public List<SysId> CourseIdsIncluded { get; } = new List<SysId>();
public List<SysId> UsgaCourseIdsIncluded { get; } = new List<SysId>();
/// <summary>Generic filter - partial name, address etc.</summary>
public String CourseFilter { get; set; }
public String CourseNameFull { get; set; }
@@ -25,7 +25,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
Country_Name,
ProvinceId,
Province_Name,
FacilityId,
UsgaFacilityId,
FacilityName,
Address1,
Address2,
@@ -49,7 +49,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
public class DataProperties
{
public SysId ProvinceId { get; set; }
public SysId FacilityId { get; set; }
public SysId UsgaFacilityId { get; set; }
public String FacilityName { get; set; } = String.Empty;
public String Address1 { get; set; } = String.Empty;
public String Address2 { get; set; } = String.Empty;
@@ -78,10 +78,10 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
get { return data.ProvinceId; }
set { CheckChanged(data.ProvinceId, value); data.ProvinceId = value; }
}
public SysId FacilityId
public SysId UsgaFacilityId
{
get { return data.FacilityId; }
set { CheckChanged(data.FacilityId, value); data.FacilityId = value; }
get { return data.UsgaFacilityId; }
set { CheckChanged(data.UsgaFacilityId, value); data.UsgaFacilityId = value; }
}
public String FacilityName
{
@@ -132,7 +132,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
internal void PopulateFrom(Data data)
{
ProvinceId = data.ProvinceId;
FacilityId = data.FacilityId;
UsgaFacilityId = data.UsgaFacilityId;
FacilityName = data.FacilityName;
Address1 = data.Address1;
Address2 = data.Address2;
@@ -158,7 +158,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
{
// Identifies the field that has invalid data.
public ValidValue ProvinceId { get; set; } = ValidValue.Valid;
public ValidValue FacilityId { get; set; } = ValidValue.Valid;
public ValidValue UsgaFacilityId { get; set; } = ValidValue.Valid;
public ValidValue FacilityName { get; set; } = ValidValue.Valid;
public ValidValue Address1 { get; set; } = ValidValue.Valid;
public ValidValue Address2 { get; set; } = ValidValue.Valid;
@@ -224,10 +224,10 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
get { return data.ProvinceId; }
set { data.ProvinceId = value; }
}
public SysId FacilityId
public SysId UsgaFacilityId
{
get { return data.FacilityId; }
set { data.FacilityId = value; }
get { return data.UsgaFacilityId; }
set { data.UsgaFacilityId = value; }
}
public String FacilityName
{
@@ -304,7 +304,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
public List<SysId> IdsExcluded { get; } = new List<SysId>();
public List<SysId> ProvinceIdsIncluded { get; } = new List<SysId>();
/// <summary>USGA Facility Ids.</summary>
public List<SysId> FacilityIdsIncluded { get; } = new List<SysId>();
public List<SysId> UsgaFacilityIdsIncluded { get; } = new List<SysId>();
/// <summary>Generic filter - partial province code or name.</summary>
public String FacilityFilter { get; set; }
public String FacilityNameFull { get; set; }
@@ -28,8 +28,9 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
FacilityId,
Facility_Name,
CourseId,
UsgaCourseId,
Course_Name,
MarkerId,
UsgaMarkerId,
Caption,
Holes,
HolesCaption,
@@ -56,7 +57,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
public class DataProperties
{
public SysId CourseId { get; set; }
public SysId MarkerId { get; set; }
public SysId UsgaMarkerId { get; set; }
public String Caption { get; set; } = "";
public short Holes { get; set; }
public String HolesCaption { get; set; } = "";
@@ -86,10 +87,10 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
get { return data.CourseId; }
set { CheckChanged(data.CourseId, value); data.CourseId = value; }
}
public SysId MarkerId
public SysId UsgaMarkerId
{
get { return data.MarkerId; }
set { CheckChanged(data.MarkerId, value); data.MarkerId = value; }
get { return data.UsgaMarkerId; }
set { CheckChanged(data.UsgaMarkerId, value); data.UsgaMarkerId = value; }
}
public String Caption
{
@@ -145,7 +146,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
internal void PopulateFrom(Data data)
{
CourseId = data.CourseId;
MarkerId = data.MarkerId;
UsgaMarkerId = data.UsgaMarkerId;
Caption = data.Caption;
Holes = data.Holes;
HolesCaption = data.HolesCaption;
@@ -172,7 +173,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
{
// Identifies the field that has invalid data.
public ValidValue CourseId { get; set; } = ValidValue.Valid;
public ValidValue MarkerId { get; set; } = ValidValue.Valid;
public ValidValue UsgaMarkerId { get; set; } = ValidValue.Valid;
public ValidValue Caption { get; set; } = ValidValue.Valid;
public ValidValue Holes { get; set; } = ValidValue.Valid;
public ValidValue HolesCaption { get; set; } = ValidValue.Valid;
@@ -239,10 +240,10 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
get { return data.CourseId; }
set { data.CourseId = value; }
}
public SysId MarkerId
public SysId UsgaMarkerId
{
get { return data.MarkerId; }
set { data.MarkerId = value; }
get { return data.UsgaMarkerId; }
set { data.UsgaMarkerId = value; }
}
public String Caption
{
@@ -324,7 +325,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
public List<SysId> IdsExcluded { get; } = new List<SysId>();
public List<SysId> CourseIdsIncluded { get; } = new List<SysId>();
/// <summary>USGA Marker Ids.</summary>
public List<SysId> MarkerIdsIncluded { get; } = new List<SysId>();
public List<SysId> UsgaMarkerIdsIncluded { get; } = new List<SysId>();
/// <summary>Generic filter - partial caption, holes, tee, gender etc.</summary>
public String MarkerFilter { get; set; }
// Common properties.
@@ -26,11 +26,14 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
ProvinceCode,
EntProvinceCode,
ProvinceName,
CoursesUpdateAt_Date,
// Associated data.
FacilityCount_All,
FacilityCount_Active,
CourseCount_All,
CourseCount_Active,
/// <summary>Marker population %.</summary>
MarkerPercent,
// Common.
Notes,
Flags,
@@ -49,6 +52,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
public String ProvinceCode { get; set; } = String.Empty;
public String EntProvinceCode { get; set; } = String.Empty;
public String ProvinceName { get; set; } = String.Empty;
public DateTime? CoursesUpdateAt { get; set; } = null;
}
//-------------------------------------------------------------------
@@ -83,6 +87,11 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
get { return data.ProvinceName; }
set { CheckChanged(data.ProvinceName, value); data.ProvinceName = value; }
}
public DateTime? CoursesUpdateAt
{
get { return data.CoursesUpdateAt; }
set { CheckChangedNullable(data.CoursesUpdateAt, value); data.CoursesUpdateAt = value; }
}
// Population.
internal void PopulateFrom(Data data)
{
@@ -90,6 +99,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
ProvinceCode = data.ProvinceCode;
EntProvinceCode = data.EntProvinceCode;
ProvinceName = data.ProvinceName;
CoursesUpdateAt = data.CoursesUpdateAt;
base.PopulateFrom(data);
}
public Data Clone()
@@ -109,6 +119,7 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
public ValidValue ProvinceCode { get; set; } = ValidValue.Valid;
public ValidValue EntProvinceCode { get; set; } = ValidValue.Valid;
public ValidValue ProvinceName { get; set; } = ValidValue.Valid;
public ValidValue CoursesUpdateAt { get; set; } = ValidValue.Valid;
}
//-------------------------------------------------------------------
@@ -180,6 +191,11 @@ namespace Saxonite.Net.Standard.Base.Bus.Reference
get { return data.ProvinceName; }
set { data.ProvinceName = value; }
}
public DateTime? CoursesUpdateAt
{
get { return data.CoursesUpdateAt; }
set { data.CoursesUpdateAt = value; }
}
//-------------------------------------------------------------------
// Flags - positions 1-16 available.
@@ -68,7 +68,7 @@ namespace Saxonite.Net.Standard.Base.Mgr.Reference
return SetErrorState("Facility must be specified");
}
// Course Id.
if (errField.CourseId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.CourseId))
if (errField.CourseId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.UsgaCourseId))
{
errField.CourseId = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Course Id must be specified");
@@ -187,8 +187,8 @@ namespace Saxonite.Net.Standard.Base.Mgr.Reference
// Bulk updates.
public class UsgaCourseData
{
public SysId FacilityId { get; set; }
public SysId CourseId { get; set; }
public SysId UsgaFacilityId { get; set; }
public SysId UsgaCourseId { get; set; }
public SysId LegacyCrpCourseId { get; set; }
public string Caption { get; set; } = null;
public string CourseName { get; set; } = null;
@@ -68,9 +68,9 @@ namespace Saxonite.Net.Standard.Base.Mgr.Reference
return SetErrorState("Province must be specified");
}
// Facility code.
if (errField.FacilityId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.FacilityId))
if (errField.UsgaFacilityId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.UsgaFacilityId))
{
errField.FacilityId = SacsHierarchyItem.ValidValue.Invalid;
errField.UsgaFacilityId = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Facility Id must be specified");
}
// Facility name.
@@ -140,7 +140,7 @@ namespace Saxonite.Net.Standard.Base.Mgr.Reference
public class UsgaFacilityData
{
public String ProvinceCode { get; set; }
public SysId FacilityId { get; set; }
public SysId UsgaFacilityId { get; set; }
public String FacilityName { get; set; } = null;
public string Address1 { get; set; } = null;
public string Address2 { get; set; } = null;
@@ -68,9 +68,9 @@ namespace Saxonite.Net.Standard.Base.Mgr.Reference
return SetErrorState("Course must be specified");
}
// Marker Id.
if (errField.MarkerId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.MarkerId))
if (errField.UsgaMarkerId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.UsgaMarkerId))
{
errField.MarkerId = SacsHierarchyItem.ValidValue.Invalid;
errField.UsgaMarkerId = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Marker Id must be specified");
}
// Caption.
@@ -86,7 +86,7 @@ namespace Saxonite.Net.Standard.Base.Mgr.Reference
return SetErrorState("Holes must be specified");
}
// Holes caption.
if (errField.HolesCaption != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.HolesCaption, "holes caption", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_HolesCaption)))
if (errField.HolesCaption != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.HolesCaption, "holes caption", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_HolesCaption), true))
{
errField.HolesCaption = SacsHierarchyItem.ValidValue.Invalid;
return false;
@@ -181,8 +181,8 @@ namespace Saxonite.Net.Standard.Base.Mgr.Reference
// Bulk updates.
public class UsgaMarkerData
{
public SysId CourseId { get; set; }
public SysId MarkerId { get; set; }
public SysId UsgaCourseId { get; set; }
public SysId UsgaMarkerId { get; set; }
public string Caption { get; set; }
public short Holes { get; set; }
public string HolesCaption { get; set; }
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Core
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Reference
{
@@ -23,6 +23,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
public ColumnDataString _CountryCode { get; } = new ColumnDataString("CountryCode");
public ColumnDataString _CountryName { get; } = new ColumnDataString("CountryName");
public ColumnDataString _EntCountryCode { get; } = new ColumnDataString("EntCountryCode");
public ColumnDataDateTimeNullable _ProvincesUpdateAt { get; } = new ColumnDataDateTimeNullable("ProvincesUpdateAt");
public ColumnDataString _Notes { get; } = new ColumnDataString("Notes");
public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags");
public ColumnDataString _Status { get; } = new ColumnDataString("Status");
@@ -42,6 +43,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
"CountryCode",
"CountryName",
"EntCountryCode",
"ProvincesUpdateAt",
"Notes",
"Flags",
"Status",
@@ -63,6 +65,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
protected static List<String> fieldsNullable { get; } = new List<String>()
{
"EntCountryCode",
"ProvincesUpdateAt",
};
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
{
@@ -91,6 +94,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
public String _CountryCode { get { return Cols._CountryCode.Value; } set { Cols._CountryCode.Value = value; } }
public String _CountryName { get { return Cols._CountryName.Value; } set { Cols._CountryName.Value = value; } }
public String _EntCountryCode { get { return Cols._EntCountryCode.Value; } set { Cols._EntCountryCode.Value = value; } }
public DateTime? _ProvincesUpdateAt { get { return Cols._ProvincesUpdateAt.Value; } set { Cols._ProvincesUpdateAt.Value = value; } }
public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } }
public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } }
public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } }
@@ -125,6 +129,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
_CountryCode = GetFieldString(dbDataReader, "CountryCode", _CountryCode);
_CountryName = GetFieldString(dbDataReader, "CountryName", _CountryName);
_EntCountryCode = GetFieldString(dbDataReader, "EntCountryCode", _EntCountryCode);
_ProvincesUpdateAt = GetFieldDateTimeNullable(dbDataReader, "ProvincesUpdateAt", _ProvincesUpdateAt);
_Notes = GetFieldString(dbDataReader, "Notes", _Notes);
_Flags = GetFieldInt16(dbDataReader, "Flags", _Flags);
_Status = GetFieldString(dbDataReader, "Status", _Status);
@@ -158,6 +163,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
if (columnNames.ContainsCI("CountryCode")) AddCommandParameter(dbCommand, "@CountryCode", _CountryCode);
if (columnNames.ContainsCI("CountryName")) AddCommandParameter(dbCommand, "@CountryName", _CountryName);
if (columnNames.ContainsCI("EntCountryCode")) AddCommandParameter(dbCommand, "@EntCountryCode", _EntCountryCode);
if (columnNames.ContainsCI("ProvincesUpdateAt")) AddCommandParameter(dbCommand, "@ProvincesUpdateAt", _ProvincesUpdateAt);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
@@ -206,6 +212,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
if (columnNames.ContainsCI("CountryCode")) AddCommandParameter(dbCommand, "@CountryCode", _CountryCode);
if (columnNames.ContainsCI("CountryName")) AddCommandParameter(dbCommand, "@CountryName", _CountryName);
if (columnNames.ContainsCI("EntCountryCode")) AddCommandParameter(dbCommand, "@EntCountryCode", _EntCountryCode);
if (columnNames.ContainsCI("ProvincesUpdateAt")) AddCommandParameter(dbCommand, "@ProvincesUpdateAt", _ProvincesUpdateAt);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Reference
{
@@ -21,7 +21,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
{
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
public ColumnDataInt64 _FacilityId { get; } = new ColumnDataInt64("FacilityId");
public ColumnDataInt64 _CourseId { get; } = new ColumnDataInt64("CourseId");
public ColumnDataInt64 _UsgaCourseId { get; } = new ColumnDataInt64("UsgaCourseId");
public ColumnDataInt64 _LegacyCrpCourseId { get; } = new ColumnDataInt64("LegacyCrpCourseId");
public ColumnDataString _Caption { get; } = new ColumnDataString("Caption");
public ColumnDataString _CourseName { get; } = new ColumnDataString("CourseName");
@@ -34,6 +34,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
public ColumnDataDecimalNullable _Longitude { get; } = new ColumnDataDecimalNullable("Longitude");
public ColumnDataString _Email { get; } = new ColumnDataString("Email");
public ColumnDataString _Telephone { get; } = new ColumnDataString("Telephone");
public ColumnDataDateTimeNullable _MarkersUpdateAt { get; } = new ColumnDataDateTimeNullable("MarkersUpdateAt");
public ColumnDataString _MarkersData { get; } = new ColumnDataString("MarkersData");
public ColumnDataString _Notes { get; } = new ColumnDataString("Notes");
public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags");
@@ -52,7 +53,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
{
"Id",
"FacilityId",
"CourseId",
"UsgaCourseId",
"LegacyCrpCourseId",
"Caption",
"CourseName",
@@ -65,6 +66,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
"Longitude",
"Email",
"Telephone",
"MarkersUpdateAt",
"MarkersData",
"Notes",
"Flags",
@@ -88,6 +90,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
{
"Latitude",
"Longitude",
"MarkersUpdateAt",
};
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
{
@@ -114,7 +117,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
public ColumnsData Cols { get; } = new ColumnsData();
public Int64 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } }
public Int64 _FacilityId { get { return Cols._FacilityId.Value; } set { Cols._FacilityId.Value = value; } }
public Int64 _CourseId { get { return Cols._CourseId.Value; } set { Cols._CourseId.Value = value; } }
public Int64 _UsgaCourseId { get { return Cols._UsgaCourseId.Value; } set { Cols._UsgaCourseId.Value = value; } }
public Int64 _LegacyCrpCourseId { get { return Cols._LegacyCrpCourseId.Value; } set { Cols._LegacyCrpCourseId.Value = value; } }
public String _Caption { get { return Cols._Caption.Value; } set { Cols._Caption.Value = value; } }
public String _CourseName { get { return Cols._CourseName.Value; } set { Cols._CourseName.Value = value; } }
@@ -127,6 +130,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
public Decimal? _Longitude { get { return Cols._Longitude.Value; } set { Cols._Longitude.Value = value; } }
public String _Email { get { return Cols._Email.Value; } set { Cols._Email.Value = value; } }
public String _Telephone { get { return Cols._Telephone.Value; } set { Cols._Telephone.Value = value; } }
public DateTime? _MarkersUpdateAt { get { return Cols._MarkersUpdateAt.Value; } set { Cols._MarkersUpdateAt.Value = value; } }
public String _MarkersData { get { return Cols._MarkersData.Value; } set { Cols._MarkersData.Value = value; } }
public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } }
public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } }
@@ -160,7 +164,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
{
_Id = GetFieldInt64(dbDataReader, "Id", _Id);
_FacilityId = GetFieldInt64(dbDataReader, "FacilityId", _FacilityId);
_CourseId = GetFieldInt64(dbDataReader, "CourseId", _CourseId);
_UsgaCourseId = GetFieldInt64(dbDataReader, "UsgaCourseId", _UsgaCourseId);
_LegacyCrpCourseId = GetFieldInt64(dbDataReader, "LegacyCrpCourseId", _LegacyCrpCourseId);
_Caption = GetFieldString(dbDataReader, "Caption", _Caption);
_CourseName = GetFieldString(dbDataReader, "CourseName", _CourseName);
@@ -173,6 +177,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
_Longitude = GetFieldDecimalNullable(dbDataReader, "Longitude", _Longitude);
_Email = GetFieldString(dbDataReader, "Email", _Email);
_Telephone = GetFieldString(dbDataReader, "Telephone", _Telephone);
_MarkersUpdateAt = GetFieldDateTimeNullable(dbDataReader, "MarkersUpdateAt", _MarkersUpdateAt);
_MarkersData = GetFieldString(dbDataReader, "MarkersData", _MarkersData);
_Notes = GetFieldString(dbDataReader, "Notes", _Notes);
_Flags = GetFieldInt16(dbDataReader, "Flags", _Flags);
@@ -205,7 +210,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("FacilityId")) AddCommandParameter(dbCommand, "@FacilityId", _FacilityId);
if (columnNames.ContainsCI("CourseId")) AddCommandParameter(dbCommand, "@CourseId", _CourseId);
if (columnNames.ContainsCI("UsgaCourseId")) AddCommandParameter(dbCommand, "@UsgaCourseId", _UsgaCourseId);
if (columnNames.ContainsCI("LegacyCrpCourseId")) AddCommandParameter(dbCommand, "@LegacyCrpCourseId", _LegacyCrpCourseId);
if (columnNames.ContainsCI("Caption")) AddCommandParameter(dbCommand, "@Caption", _Caption);
if (columnNames.ContainsCI("CourseName")) AddCommandParameter(dbCommand, "@CourseName", _CourseName);
@@ -218,6 +223,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
if (columnNames.ContainsCI("Longitude")) AddCommandParameter(dbCommand, "@Longitude", _Longitude);
if (columnNames.ContainsCI("Email")) AddCommandParameter(dbCommand, "@Email", _Email);
if (columnNames.ContainsCI("Telephone")) AddCommandParameter(dbCommand, "@Telephone", _Telephone);
if (columnNames.ContainsCI("MarkersUpdateAt")) AddCommandParameter(dbCommand, "@MarkersUpdateAt", _MarkersUpdateAt);
if (columnNames.ContainsCI("MarkersData")) AddCommandParameter(dbCommand, "@MarkersData", _MarkersData);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
@@ -265,7 +271,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("FacilityId")) AddCommandParameter(dbCommand, "@FacilityId", _FacilityId);
if (columnNames.ContainsCI("CourseId")) AddCommandParameter(dbCommand, "@CourseId", _CourseId);
if (columnNames.ContainsCI("UsgaCourseId")) AddCommandParameter(dbCommand, "@UsgaCourseId", _UsgaCourseId);
if (columnNames.ContainsCI("LegacyCrpCourseId")) AddCommandParameter(dbCommand, "@LegacyCrpCourseId", _LegacyCrpCourseId);
if (columnNames.ContainsCI("Caption")) AddCommandParameter(dbCommand, "@Caption", _Caption);
if (columnNames.ContainsCI("CourseName")) AddCommandParameter(dbCommand, "@CourseName", _CourseName);
@@ -278,6 +284,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
if (columnNames.ContainsCI("Longitude")) AddCommandParameter(dbCommand, "@Longitude", _Longitude);
if (columnNames.ContainsCI("Email")) AddCommandParameter(dbCommand, "@Email", _Email);
if (columnNames.ContainsCI("Telephone")) AddCommandParameter(dbCommand, "@Telephone", _Telephone);
if (columnNames.ContainsCI("MarkersUpdateAt")) AddCommandParameter(dbCommand, "@MarkersUpdateAt", _MarkersUpdateAt);
if (columnNames.ContainsCI("MarkersData")) AddCommandParameter(dbCommand, "@MarkersData", _MarkersData);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Reference
{
@@ -21,7 +21,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
{
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
public ColumnDataInt64 _ProvinceId { get; } = new ColumnDataInt64("ProvinceId");
public ColumnDataInt64 _FacilityId { get; } = new ColumnDataInt64("FacilityId");
public ColumnDataInt64 _UsgaFacilityId { get; } = new ColumnDataInt64("UsgaFacilityId");
public ColumnDataString _FacilityName { get; } = new ColumnDataString("FacilityName");
public ColumnDataString _Address1 { get; } = new ColumnDataString("Address1");
public ColumnDataString _Address2 { get; } = new ColumnDataString("Address2");
@@ -48,7 +48,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
{
"Id",
"ProvinceId",
"FacilityId",
"UsgaFacilityId",
"FacilityName",
"Address1",
"Address2",
@@ -106,7 +106,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
public ColumnsData Cols { get; } = new ColumnsData();
public Int64 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } }
public Int64 _ProvinceId { get { return Cols._ProvinceId.Value; } set { Cols._ProvinceId.Value = value; } }
public Int64 _FacilityId { get { return Cols._FacilityId.Value; } set { Cols._FacilityId.Value = value; } }
public Int64 _UsgaFacilityId { get { return Cols._UsgaFacilityId.Value; } set { Cols._UsgaFacilityId.Value = value; } }
public String _FacilityName { get { return Cols._FacilityName.Value; } set { Cols._FacilityName.Value = value; } }
public String _Address1 { get { return Cols._Address1.Value; } set { Cols._Address1.Value = value; } }
public String _Address2 { get { return Cols._Address2.Value; } set { Cols._Address2.Value = value; } }
@@ -148,7 +148,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
{
_Id = GetFieldInt64(dbDataReader, "Id", _Id);
_ProvinceId = GetFieldInt64(dbDataReader, "ProvinceId", _ProvinceId);
_FacilityId = GetFieldInt64(dbDataReader, "FacilityId", _FacilityId);
_UsgaFacilityId = GetFieldInt64(dbDataReader, "UsgaFacilityId", _UsgaFacilityId);
_FacilityName = GetFieldString(dbDataReader, "FacilityName", _FacilityName);
_Address1 = GetFieldString(dbDataReader, "Address1", _Address1);
_Address2 = GetFieldString(dbDataReader, "Address2", _Address2);
@@ -189,7 +189,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("ProvinceId")) AddCommandParameter(dbCommand, "@ProvinceId", _ProvinceId);
if (columnNames.ContainsCI("FacilityId")) AddCommandParameter(dbCommand, "@FacilityId", _FacilityId);
if (columnNames.ContainsCI("UsgaFacilityId")) AddCommandParameter(dbCommand, "@UsgaFacilityId", _UsgaFacilityId);
if (columnNames.ContainsCI("FacilityName")) AddCommandParameter(dbCommand, "@FacilityName", _FacilityName);
if (columnNames.ContainsCI("Address1")) AddCommandParameter(dbCommand, "@Address1", _Address1);
if (columnNames.ContainsCI("Address2")) AddCommandParameter(dbCommand, "@Address2", _Address2);
@@ -245,7 +245,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("ProvinceId")) AddCommandParameter(dbCommand, "@ProvinceId", _ProvinceId);
if (columnNames.ContainsCI("FacilityId")) AddCommandParameter(dbCommand, "@FacilityId", _FacilityId);
if (columnNames.ContainsCI("UsgaFacilityId")) AddCommandParameter(dbCommand, "@UsgaFacilityId", _UsgaFacilityId);
if (columnNames.ContainsCI("FacilityName")) AddCommandParameter(dbCommand, "@FacilityName", _FacilityName);
if (columnNames.ContainsCI("Address1")) AddCommandParameter(dbCommand, "@Address1", _Address1);
if (columnNames.ContainsCI("Address2")) AddCommandParameter(dbCommand, "@Address2", _Address2);
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Reference
{
@@ -21,7 +21,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
{
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
public ColumnDataInt64 _CourseId { get; } = new ColumnDataInt64("CourseId");
public ColumnDataInt64 _MarkerId { get; } = new ColumnDataInt64("MarkerId");
public ColumnDataInt64 _UsgaMarkerId { get; } = new ColumnDataInt64("UsgaMarkerId");
public ColumnDataString _Caption { get; } = new ColumnDataString("Caption");
public ColumnDataInt16 _Holes { get; } = new ColumnDataInt16("Holes");
public ColumnDataString _HolesCaption { get; } = new ColumnDataString("HolesCaption");
@@ -49,7 +49,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
{
"Id",
"CourseId",
"MarkerId",
"UsgaMarkerId",
"Caption",
"Holes",
"HolesCaption",
@@ -106,7 +106,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
public ColumnsData Cols { get; } = new ColumnsData();
public Int64 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } }
public Int64 _CourseId { get { return Cols._CourseId.Value; } set { Cols._CourseId.Value = value; } }
public Int64 _MarkerId { get { return Cols._MarkerId.Value; } set { Cols._MarkerId.Value = value; } }
public Int64 _UsgaMarkerId { get { return Cols._UsgaMarkerId.Value; } set { Cols._UsgaMarkerId.Value = value; } }
public String _Caption { get { return Cols._Caption.Value; } set { Cols._Caption.Value = value; } }
public Int16 _Holes { get { return Cols._Holes.Value; } set { Cols._Holes.Value = value; } }
public String _HolesCaption { get { return Cols._HolesCaption.Value; } set { Cols._HolesCaption.Value = value; } }
@@ -149,7 +149,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
{
_Id = GetFieldInt64(dbDataReader, "Id", _Id);
_CourseId = GetFieldInt64(dbDataReader, "CourseId", _CourseId);
_MarkerId = GetFieldInt64(dbDataReader, "MarkerId", _MarkerId);
_UsgaMarkerId = GetFieldInt64(dbDataReader, "UsgaMarkerId", _UsgaMarkerId);
_Caption = GetFieldString(dbDataReader, "Caption", _Caption);
_Holes = GetFieldInt16(dbDataReader, "Holes", _Holes);
_HolesCaption = GetFieldString(dbDataReader, "HolesCaption", _HolesCaption);
@@ -191,7 +191,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("CourseId")) AddCommandParameter(dbCommand, "@CourseId", _CourseId);
if (columnNames.ContainsCI("MarkerId")) AddCommandParameter(dbCommand, "@MarkerId", _MarkerId);
if (columnNames.ContainsCI("UsgaMarkerId")) AddCommandParameter(dbCommand, "@UsgaMarkerId", _UsgaMarkerId);
if (columnNames.ContainsCI("Caption")) AddCommandParameter(dbCommand, "@Caption", _Caption);
if (columnNames.ContainsCI("Holes")) AddCommandParameter(dbCommand, "@Holes", _Holes);
if (columnNames.ContainsCI("HolesCaption")) AddCommandParameter(dbCommand, "@HolesCaption", _HolesCaption);
@@ -248,7 +248,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("CourseId")) AddCommandParameter(dbCommand, "@CourseId", _CourseId);
if (columnNames.ContainsCI("MarkerId")) AddCommandParameter(dbCommand, "@MarkerId", _MarkerId);
if (columnNames.ContainsCI("UsgaMarkerId")) AddCommandParameter(dbCommand, "@UsgaMarkerId", _UsgaMarkerId);
if (columnNames.ContainsCI("Caption")) AddCommandParameter(dbCommand, "@Caption", _Caption);
if (columnNames.ContainsCI("Holes")) AddCommandParameter(dbCommand, "@Holes", _Holes);
if (columnNames.ContainsCI("HolesCaption")) AddCommandParameter(dbCommand, "@HolesCaption", _HolesCaption);
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:29
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Reference
{
@@ -24,6 +24,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
public ColumnDataString _ProvinceCode { get; } = new ColumnDataString("ProvinceCode");
public ColumnDataString _EntProvinceCode { get; } = new ColumnDataString("EntProvinceCode");
public ColumnDataString _ProvinceName { get; } = new ColumnDataString("ProvinceName");
public ColumnDataDateTimeNullable _CoursesUpdateAt { get; } = new ColumnDataDateTimeNullable("CoursesUpdateAt");
public ColumnDataString _Notes { get; } = new ColumnDataString("Notes");
public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags");
public ColumnDataString _Status { get; } = new ColumnDataString("Status");
@@ -44,6 +45,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
"ProvinceCode",
"EntProvinceCode",
"ProvinceName",
"CoursesUpdateAt",
"Notes",
"Flags",
"Status",
@@ -64,6 +66,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
};
protected static List<String> fieldsNullable { get; } = new List<String>()
{
"CoursesUpdateAt",
};
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
{
@@ -93,6 +96,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
public String _ProvinceCode { get { return Cols._ProvinceCode.Value; } set { Cols._ProvinceCode.Value = value; } }
public String _EntProvinceCode { get { return Cols._EntProvinceCode.Value; } set { Cols._EntProvinceCode.Value = value; } }
public String _ProvinceName { get { return Cols._ProvinceName.Value; } set { Cols._ProvinceName.Value = value; } }
public DateTime? _CoursesUpdateAt { get { return Cols._CoursesUpdateAt.Value; } set { Cols._CoursesUpdateAt.Value = value; } }
public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } }
public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } }
public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } }
@@ -128,6 +132,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
_ProvinceCode = GetFieldString(dbDataReader, "ProvinceCode", _ProvinceCode);
_EntProvinceCode = GetFieldString(dbDataReader, "EntProvinceCode", _EntProvinceCode);
_ProvinceName = GetFieldString(dbDataReader, "ProvinceName", _ProvinceName);
_CoursesUpdateAt = GetFieldDateTimeNullable(dbDataReader, "CoursesUpdateAt", _CoursesUpdateAt);
_Notes = GetFieldString(dbDataReader, "Notes", _Notes);
_Flags = GetFieldInt16(dbDataReader, "Flags", _Flags);
_Status = GetFieldString(dbDataReader, "Status", _Status);
@@ -162,6 +167,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
if (columnNames.ContainsCI("ProvinceCode")) AddCommandParameter(dbCommand, "@ProvinceCode", _ProvinceCode);
if (columnNames.ContainsCI("EntProvinceCode")) AddCommandParameter(dbCommand, "@EntProvinceCode", _EntProvinceCode);
if (columnNames.ContainsCI("ProvinceName")) AddCommandParameter(dbCommand, "@ProvinceName", _ProvinceName);
if (columnNames.ContainsCI("CoursesUpdateAt")) AddCommandParameter(dbCommand, "@CoursesUpdateAt", _CoursesUpdateAt);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
@@ -211,6 +217,7 @@ namespace Saxonite.Net.Standard.Dbas.Internal.Reference
if (columnNames.ContainsCI("ProvinceCode")) AddCommandParameter(dbCommand, "@ProvinceCode", _ProvinceCode);
if (columnNames.ContainsCI("EntProvinceCode")) AddCommandParameter(dbCommand, "@EntProvinceCode", _EntProvinceCode);
if (columnNames.ContainsCI("ProvinceName")) AddCommandParameter(dbCommand, "@ProvinceName", _ProvinceName);
if (columnNames.ContainsCI("CoursesUpdateAt")) AddCommandParameter(dbCommand, "@CoursesUpdateAt", _CoursesUpdateAt);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:30
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Support
{
@@ -9,7 +9,7 @@ using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 13-Jun-2024 12:44:40
// Code generated by Sarand Database Utilities Tue 18-Jun-2024 10:19:30
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal.Support
{
@@ -215,6 +215,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
dbUsgaCountry._CountryCode = usgaCountry.CountryCode;
dbUsgaCountry._EntCountryCode = usgaCountry.EntCountryCode;
dbUsgaCountry._CountryName = usgaCountry.CountryName;
dbUsgaCountry._ProvincesUpdateAt = usgaCountry.ProvincesUpdateAt;
// Common.
dbUsgaCountry._Notes = usgaCountry.Notes;
dbUsgaCountry._Status = SacsSystem.GetStatusCode(usgaCountry.Status);
@@ -235,6 +236,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
usgaCountry.CountryCode = dbUsgaCountry._CountryCode;
usgaCountry.EntCountryCode = dbUsgaCountry._EntCountryCode;
usgaCountry.CountryName = dbUsgaCountry._CountryName;
usgaCountry.ProvincesUpdateAt = dbUsgaCountry._ProvincesUpdateAt;
// Common.
usgaCountry.Notes = dbUsgaCountry._Notes;
usgaCountry.Status = SacsSystem.GetStatusForCode(dbUsgaCountry._Status);
@@ -272,7 +274,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
List<String> query = new List<string>();
query.Add($"Declare @statusActive VarChar(3) = '{SacsSystem.GetStatusCode(SaxGolfUsgaCountry.DefaultStatus)}';");
query.Add($"Declare @updateOn DateTime = GetUtcDate();");
query.Add($"Declare @updateOn DateTime = GetDate();");
query.Add($"Declare @updateBy Int = {SysId.ToLong(dbUpdateInfo.UserId)};");
query.Add($"Declare @updateHost VarChar(100) = '{DbQuery.FormatForCondition(dbUpdateInfo.Host)}';");
query.Add("Merge");
@@ -284,7 +286,9 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
query.Add($"Union Select '{DbQuery.FormatForCondition(country.CountryCode)}', " + (country.EntCountryCode != null ? $"'{DbQuery.FormatForCondition(country.EntCountryCode)}'" : "Null") + ", " + (country.CountryName != null ? $"'{DbQuery.FormatForCondition(country.CountryName)}'" : "Null"));
query.Add(") dCty");
query.Add("On uCty.CountryCode=dCty.CountryCode");
query.Add("When Matched And ((dCty.EntCountryCode Is Not Null And uCty.EntCountryCode!=dCty.EntCountryCode) Or (dCty.CountryName Is Not Null And uCty.CountryName!=dCty.CountryName) Or uCty.Status!=@statusActive)");
// Always update countries so that they are time stamped.
// Was: query.Add("When Matched And ((dCty.EntCountryCode Is Not Null And uCty.EntCountryCode!=dCty.EntCountryCode) Or (dCty.CountryName Is Not Null And uCty.CountryName!=dCty.CountryName) Or uCty.Status!=@statusActive)");
query.Add("When Matched");
query.Add("Then Update Set");
query.Add(" EntCountryCode=Coalesce(dCty.EntCountryCode,uCty.EntCountryCode),");
query.Add(" CountryName=Coalesce(dCty.CountryName,uCty.CountryName),");
@@ -321,6 +325,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
private static readonly String colCountry_Province_Active_Count = "Cty_Prv_Act_Count";
private static readonly String colCountry_Facility_Count = "Cty_Fty_Count";
private static readonly String colCountry_Facility_Active_Count = "Cty_Fty_Act_Count";
private static readonly String colCountry_Courses_Percent = "Cty_Crs_Perc";
private void SetUsgaCountryColDfn
(ColumnDfn col, String caption, int width, SaxDbDfn_Reference.ColumnIdx dbCol,
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
@@ -358,6 +363,10 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
SetUsgaCountryColDfn(columnDfn, "Name", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryName, ColumnAlignment.Center);
columnDfn.ReadOnly = true;
break;
case SaxGolfUsgaCountry.Column.ProvincesUpdateAt_Date:
SetUsgaCountryColDfn(columnDfn, "Provinces updated", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCountry_ProvincesUpdateAt, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Derived properties.
@@ -378,6 +387,11 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
columnDfn.DataName = colCountry_Facility_Active_Count;
break;
case SaxGolfUsgaCountry.Column.FacilityPercent:
SetUsgaCountryColDfn(columnDfn, "Courses %", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.DataName = colCountry_Courses_Percent;
break;
//-----------------------------------------------------------
// Common properties.
case SaxGolfUsgaCountry.Column.Notes:
@@ -589,6 +603,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryCode, aliasUsgaCountry));
if (columns.HasId(SaxGolfUsgaCountry.Column.CountryName))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryName, aliasUsgaCountry));
if (columns.HasId(SaxGolfUsgaCountry.Column.ProvincesUpdateAt_Date))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_ProvincesUpdateAt, aliasUsgaCountry));
// Common properties.
if (columns.HasId(SaxGolfUsgaCountry.Column.Notes))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Notes, aliasUsgaCountry));
@@ -651,18 +667,45 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
DbQuery queryProvince = new DbQuery(CoreDatabase.DbmsType);
queryProvince.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince), aliasProvince);
queryProvince.Columns.Add("Count(*)");
queryProvince.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CountryId, aliasProvince) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Id, aliasUsgaCountry));
queryProvince.Filters.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CountryId, aliasProvince)}={SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Id, aliasUsgaCountry)}");
queryProvince.Filters.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Status, aliasProvince)}='{SacsSystem.GetStatusCode(SaStatus.Active)}'");
// Join to Facility.
String aliasFacility = "aCtyFty_Count_Fty";
DbQueryJoin joinFacility = new DbQueryJoin(DbJoinType.Inner);
joinFacility.Table = new StringPair(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility), aliasFacility);
joinFacility.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, aliasFacility) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, aliasProvince));
joinFacility.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Status, aliasFacility) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
joinFacility.Filters.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, aliasFacility)}={SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, aliasProvince)}");
joinFacility.Filters.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Status, aliasFacility)}='{SacsSystem.GetStatusCode(SaStatus.Active)}'");
queryProvince.Joins.Add(joinFacility);
// Construct sub-query.
query.Columns.Add("(" + queryProvince.BuildQuery() + ")", colCountry_Facility_Active_Count);
}
//---------------------------------------------------------------------
// Facility population %.
if (columns.HasId(SaxGolfUsgaCountry.Column.FacilityPercent))
{
// Sub query to count provinces & provinces with facilities, and work out the percent with facilities.
String alias_Province = "prv";
String alias_Facility = "fty";
String table_Province = $"{SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince)} {alias_Province}";
String table_Facility = $"{SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility)} {alias_Facility}";
String col_Country_Id = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Id, aliasUsgaCountry);
String col_Province_Id = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, alias_Province);
String col_Province_CountryId = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CountryId, alias_Province);
String col_Facility_ProvinceId = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, alias_Facility);
String name_ProvinceCount = "ProvinceCount";
String name_ProvincesWithFacilities= "ProvincesWithFacilities";
List<String> subQuery = new List<String>();
subQuery.Add($"Select Convert (decimal(9,2), Case When {name_ProvinceCount} > 0 Then 100.0 * (1.0 * {name_ProvincesWithFacilities} / {name_ProvinceCount}) Else 0 End)");
subQuery.Add($"From");
subQuery.Add($"(");
subQuery.Add($"Select");
subQuery.Add($"{name_ProvinceCount} = (select Count(*) From {table_Province} Where {col_Province_CountryId}={col_Country_Id}),");
subQuery.Add($"{name_ProvincesWithFacilities} = (select Count(*) From {table_Province} Where {col_Province_CountryId}={col_Country_Id} and {col_Province_Id} in (Select {col_Facility_ProvinceId} from {table_Facility}))");
subQuery.Add($") dat");
query.Columns.Add($"({subQuery.Concat(" ")})", colCountry_Courses_Percent);
}
//---------------------------------------------------------------------
// Populate filter.
query.Filters.AddRange(GetUsgaCountryQueryFilter(prm));
@@ -31,7 +31,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
new StringPair("Id",SysId.ToString(usgaCourse.Id)),
new StringPair("FacilityId",SysId.ToString(usgaCourse.FacilityId)),
new StringPair("CourseId",SysId.ToString(usgaCourse.CourseId)),
new StringPair("UsgaCourseId",SysId.ToString(usgaCourse.UsgaCourseId)),
new StringPair("Caption ",usgaCourse.Caption),
new StringPair("Status",usgaCourse.StatusCode)
};
@@ -215,7 +215,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
dbUsgaCourse._Id = SysId.ToLong(usgaCourse.Id);
dbUsgaCourse._FacilityId = SysId.ToInt(usgaCourse.FacilityId);
dbUsgaCourse._CourseId = SysId.ToInt(usgaCourse.CourseId);
dbUsgaCourse._UsgaCourseId = SysId.ToInt(usgaCourse.UsgaCourseId);
dbUsgaCourse._LegacyCrpCourseId = SysId.ToInt(usgaCourse.LegacyCrpCourseId);
dbUsgaCourse._Caption = usgaCourse.Caption;
dbUsgaCourse._CourseName = usgaCourse.CourseName;
@@ -228,6 +228,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
dbUsgaCourse._Longitude = usgaCourse.Longitude;
dbUsgaCourse._Email = usgaCourse.Email;
dbUsgaCourse._Telephone = usgaCourse.Telephone;
dbUsgaCourse._MarkersUpdateAt = usgaCourse.MarkersUpdateAt;
dbUsgaCourse._MarkersData = usgaCourse.MarkersData;
// Common.
dbUsgaCourse._Notes = usgaCourse.Notes;
@@ -247,7 +248,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
//usgaCourse.Id = new SysId(dbUsgaCourse._Id);
usgaCourse.FacilityId = new SysId(dbUsgaCourse._FacilityId);
usgaCourse.CourseId = new SysId(dbUsgaCourse._CourseId);
usgaCourse.UsgaCourseId = new SysId(dbUsgaCourse._UsgaCourseId);
usgaCourse.LegacyCrpCourseId = new SysId(dbUsgaCourse._LegacyCrpCourseId);
usgaCourse.Caption = dbUsgaCourse._Caption;
usgaCourse.CourseName = dbUsgaCourse._CourseName;
@@ -260,6 +261,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
usgaCourse.Longitude = dbUsgaCourse._Longitude;
usgaCourse.Email = dbUsgaCourse._Email;
usgaCourse.Telephone = dbUsgaCourse._Telephone;
usgaCourse.MarkersUpdateAt = dbUsgaCourse._MarkersUpdateAt;
usgaCourse.MarkersData = dbUsgaCourse._MarkersData;
// Common.
usgaCourse.Notes = dbUsgaCourse._Notes;
@@ -288,8 +290,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
// Validate course properties.
// Facility and Course Codes are mandatory, other values only validated if non-null.
if (!SysId.IsValid(course.FacilityId)) return SetErrorState("Facility Id must be supplied");
if (!SysId.IsValid(course.CourseId)) return SetErrorState("Course Id must be supplied");
if (!SysId.IsValid(course.UsgaFacilityId)) return SetErrorState("Facility Id must be supplied");
if (!SysId.IsValid(course.UsgaCourseId)) return SetErrorState("USGA Course Id must be supplied");
if (course.Caption != null && !IsValidValue(course.Caption, "caption", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Caption), true)) return false;
if (course.CourseName != null && !IsValidValue(course.CourseName, "name", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_CourseName))) return false;
if (course.FullName != null && !IsValidValue(course.FullName, "full name", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FullName))) return false;
@@ -306,19 +308,19 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
List<String> query = new List<string>();
query.Add($"Declare @statusActive VarChar(3) = '{SacsSystem.GetStatusCode(SaxGolfUsgaCourse.DefaultStatus)}';");
query.Add($"Declare @updateOn DateTime = GetUtcDate();");
query.Add($"Declare @updateOn DateTime = GetDate();");
query.Add($"Declare @updateBy Int = {SysId.ToLong(dbUpdateInfo.UserId)};");
query.Add($"Declare @updateHost VarChar(100) = '{DbQuery.FormatForCondition(dbUpdateInfo.Host)}';");
query.Add("Merge");
query.Add($"Into {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCourse)} uCrs");
query.Add("Using");
query.Add("(");
query.Add("Select dFty.Id FacilityId, dCrs.CourseId, dCrs.LegacyCrpCourseId, dCrs.Caption, dCrs.CourseName, dCrs.FullName, dCrs.Address1, dCrs.Address2, dCrs.City, dCrs.PostalCode, dCrs.Email, dCrs.Telephone");
query.Add("Select dFty.Id FacilityId, dCrs.UsgaFacilityId, dCrs.UsgaCourseId, dCrs.LegacyCrpCourseId, dCrs.Caption, dCrs.CourseName, dCrs.FullName, dCrs.Address1, dCrs.Address2, dCrs.City, dCrs.PostalCode, dCrs.Email, dCrs.Telephone");
query.Add("From");
query.Add("(");
query.Add("Select 0 FacilityId, 0 CourseId, 0 LegacyCrpCourseId, '' Caption, '' CourseName, '' FullName, '' Address1, '' Address2, '' City, '' PostalCode, '' Email, '' Telephone");
query.Add("Select 0 UsgaFacilityId, 0 UsgaCourseId, 0 LegacyCrpCourseId, '' Caption, '' CourseName, '' FullName, '' Address1, '' Address2, '' City, '' PostalCode, '' Email, '' Telephone");
foreach (UsgaCourseData course in coursesToUpdate.ExtractRange(0, batchSize))
query.Add($"Union Select {course.FacilityId}, {course.CourseId}, " +
query.Add($"Union Select {course.UsgaFacilityId}, {course.UsgaCourseId}, " +
(SysId.IsValid(course.LegacyCrpCourseId) ? $"{course.LegacyCrpCourseId}" : "Null") + "," +
(course.Caption != null ? $"'{DbQuery.FormatForCondition(course.Caption)}'" : "Null") + "," +
(course.CourseName != null ? $"'{DbQuery.FormatForCondition(course.CourseName)}'" : "Null") + "," +
@@ -330,9 +332,9 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
(course.Email != null ? $"'{DbQuery.FormatForCondition(course.Email)}'" : "Null") + "," +
(course.Telephone != null ? $"'{DbQuery.FormatForCondition(course.Telephone)}'" : "Null"));
query.Add(") dCrs");
query.Add($"Inner Join {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility)} dFty On dFty.FacilityId=dCrs.FacilityId");
query.Add($"Inner Join {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility)} dFty On dFty.UsgaFacilityId=dCrs.UsgaFacilityId");
query.Add(") dCrs");
query.Add("On uCrs.FacilityId=dCrs.FacilityId And uCrs.CourseId=dCrs.CourseId");
query.Add("On uCrs.FacilityId=dCrs.FacilityId And uCrs.UsgaCourseId=dCrs.UsgaCourseId");
query.Add("When Matched And ((dCrs.LegacyCrpCourseId Is Not Null And uCrs.LegacyCrpCourseId!=dCrs.LegacyCrpCourseId) Or (dCrs.Caption Is Not Null And uCrs.Caption!=dCrs.Caption) Or (dCrs.CourseName Is Not Null And uCrs.CourseName!=dCrs.CourseName) Or (dCrs.FullName Is Not Null And uCrs.FullName!=dCrs.FullName) Or (dCrs.Address1 Is Not Null And uCrs.Address1!=dCrs.Address1) Or (dCrs.Address2 Is Not Null And uCrs.Address2!=dCrs.Address2) Or (dCrs.City Is Not Null And uCrs.City!=dCrs.City) Or (dCrs.PostalCode Is Not Null And uCrs.PostalCode!=dCrs.PostalCode) Or (dCrs.Email Is Not Null And uCrs.Email!=dCrs.Email) Or (dCrs.Telephone Is Not Null And uCrs.Telephone!=dCrs.Telephone) Or uCrs.Status!=@statusActive)");
query.Add("Then Update Set");
query.Add(" LegacyCrpCourseId=Coalesce(dCrs.LegacyCrpCourseId,uCrs.LegacyCrpCourseId),");
@@ -350,8 +352,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
query.Add(" UpdateBy=@updateBy,");
query.Add(" UpdateHost=@updateHost");
query.Add("When Not Matched And Len(Coalesce(dCrs.Caption,''))>0");
query.Add("Then Insert (FacilityId,CourseId,LegacyCrpCourseId,Caption,CourseName,FullName,Address1,Address2,City,PostalCode,Email,Telephone,MarkersData,Notes,Flags,Status,CreateOn,CreateBy,CreateHost,UpdateOn,UpdateBy,UpdateHost)");
query.Add($"Values (dCrs.FacilityId,dCrs.CourseId,Coalesce(dCrs.LegacyCrpCourseId,0),dCrs.Caption,Coalesce(dCrs.CourseName,''),Coalesce(dCrs.FullName,''),Coalesce(dCrs.Address1,''),Coalesce(dCrs.Address2,''),Coalesce(dCrs.City,''),Coalesce(dCrs.PostalCode,''),Coalesce(dCrs.Email,''),Coalesce(dCrs.Telephone,''),'','',0,@statusActive,@updateOn,@updateBy,@updateHost,@updateOn,@updateBy,@updateHost)");
query.Add("Then Insert (FacilityId,UsgaCourseId,LegacyCrpCourseId,Caption,CourseName,FullName,Address1,Address2,City,PostalCode,Email,Telephone,MarkersData,Notes,Flags,Status,CreateOn,CreateBy,CreateHost,UpdateOn,UpdateBy,UpdateHost)");
query.Add($"Values (dCrs.FacilityId,dCrs.UsgaCourseId,Coalesce(dCrs.LegacyCrpCourseId,0),dCrs.Caption,Coalesce(dCrs.CourseName,''),Coalesce(dCrs.FullName,''),Coalesce(dCrs.Address1,''),Coalesce(dCrs.Address2,''),Coalesce(dCrs.City,''),Coalesce(dCrs.PostalCode,''),Coalesce(dCrs.Email,''),Coalesce(dCrs.Telephone,''),'','',0,@statusActive,@updateOn,@updateBy,@updateHost,@updateOn,@updateBy,@updateHost)");
query.Add(";");
//SaLogger.Info($"{SysUtil.Fn} Bulk USGA Course update query:\n\t{query.Concat("\n\t")}");
@@ -374,6 +376,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
private static readonly String aliasUsgaCourse = "UsgCrs";
private static readonly String aliasUsgaCourse_Facility = "UsgCrs_Cty";
private static readonly String prefixUsgaCourse_Facility = aliasUsgaCourse_Facility + "_";
private static readonly String colCourse_Marker_Count = "Crs_Mkr_Count";
private static readonly String colCourse_Marker_Active_Count = "Crs_Mkr_Act_Count";
private void SetUsgaCourseColDfn
(ColumnDfn col, String caption, int width, SaxDbDfn_Reference.ColumnIdx dbCol,
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
@@ -413,14 +417,18 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
break;
//-------------------------------------------------------
case SaxGolfUsgaCourse.Column.CourseId:
SetUsgaCourseColDfn(columnDfn, "Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_CourseId, ColumnAlignment.Center, DataValue.DataType.Long);
case SaxGolfUsgaCourse.Column.UsgaCourseId:
SetUsgaCourseColDfn(columnDfn, "Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_UsgaCourseId, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxGolfUsgaCourse.Column.LegacyCrpCourseId:
SetUsgaCourseColDfn(columnDfn, "CRP Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_LegacyCrpCourseId, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxGolfUsgaCourse.Column.Caption:
SetUsgaCourseColDfn(columnDfn, "Caption", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Caption, ColumnAlignment.Center);
columnDfn.ReadOnly = true;
break;
case SaxGolfUsgaCourse.Column.CourseName:
SetUsgaCourseColDfn(columnDfn, "Name", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_CourseName, ColumnAlignment.Center);
columnDfn.ReadOnly = true;
@@ -449,9 +457,21 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
SetUsgaCourseColDfn(columnDfn, "Telephone", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Telephone, ColumnAlignment.Center);
columnDfn.ReadOnly = true;
break;
case SaxGolfUsgaCourse.Column.MarkersUpdateOn_Date:
SetUsgaCourseColDfn(columnDfn, "Markers updated", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_MarkersUpdateAt, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Derived properties.
case SaxGolfUsgaCourse.Column.MarkerCount_All:
SetUsgaProvinceColDfn(columnDfn, "Markers", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.DataName = colCourse_Marker_Count;
break;
case SaxGolfUsgaCourse.Column.MarkerCount_Active:
SetUsgaProvinceColDfn(columnDfn, "Markers (act)", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.DataName = colCourse_Marker_Active_Count;
break;
//-----------------------------------------------------------
// Common properties.
@@ -460,16 +480,20 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
break;
case SaxGolfUsgaCourse.Column.Flags:
SetUsgaCourseColDfn(columnDfn, "Flags", 60, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxGolfUsgaCourse.Column.Status:
SetUsgaCourseColDfn(columnDfn, "Status", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Status, ColumnAlignment.Center);
columnDfn.ReadOnly = true;
break;
case SaxGolfUsgaCourse.Column.Status_Desc:
SetUsgaCourseColDfn(columnDfn, "Status", 90, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Status, ColumnAlignment.Center);
columnDfn.ReadOnly = true;
break;
case SaxGolfUsgaCourse.Column.Status_Ind:
SetUsgaCourseColDfn(columnDfn, "Status", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
columnDfn.ReadOnly = true;
break;
case SaxGolfUsgaCourse.Column.CreateOn_Date:
SetUsgaCourseColDfn(columnDfn, "Created", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
@@ -517,9 +541,9 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
if (prm.FacilityIdsIncluded.HasValidIds())
filter.Add($"{col_FacilityId} IN ({prm.FacilityIdsIncluded.Concat(",")})");
// Course Ids.
if (prm.CourseIdsIncluded.HasValidIds())
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_CourseId, aliasUsgaCourse)} IN ({prm.CourseIdsIncluded.Concat(",")})");
// USGA Course Ids.
if (prm.UsgaCourseIdsIncluded.HasValidIds())
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_UsgaCourseId, aliasUsgaCourse)} IN ({prm.UsgaCourseIdsIncluded.Concat(",")})");
if (!StringUtil.IsBlank(prm.CourseFilter))
{
@@ -557,9 +581,9 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
filter.Add(DbQuery.BuildBitMappedFilter(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Flags, aliasUsgaCourse), SaxGolfUsgaCourse.Flag_Priority, prm.PriorityFlagState == SacsHierarchyItem.Params.FlagState.True));
// Associated data.
if (prm.HasMarkers!= SacsHierarchyItem.Params.BoolState.Either)
if (prm.HasMarkers != SacsHierarchyItem.Params.BoolState.Either)
{
String existsPrefix = (prm.HasMarkers== SacsHierarchyItem.Params.BoolState.True ? "" : "Not ");
String existsPrefix = (prm.HasMarkers == SacsHierarchyItem.Params.BoolState.True ? "" : "Not ");
filter.Add($"{existsPrefix} Exists (Select 1 From {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaMarker)} Where {SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CourseId)}={col_Id})");
}
@@ -689,10 +713,12 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
bool hasFacilityCols = (columns.HasId(SaxGolfUsgaCourse.Column.Facility_Name));
if (columns.HasId(SaxGolfUsgaCourse.Column.FacilityId) || hasFacilityCols)
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FacilityId, aliasUsgaCourse));
if (columns.HasId(SaxGolfUsgaCourse.Column.CourseId))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_CourseId, aliasUsgaCourse));
if (columns.HasId(SaxGolfUsgaCourse.Column.UsgaCourseId))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_UsgaCourseId, aliasUsgaCourse));
if (columns.HasId(SaxGolfUsgaCourse.Column.LegacyCrpCourseId))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_LegacyCrpCourseId, aliasUsgaCourse));
if (columns.HasId(SaxGolfUsgaCourse.Column.Caption))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Caption, aliasUsgaCourse));
if (columns.HasId(SaxGolfUsgaCourse.Column.CourseName))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_CourseName, aliasUsgaCourse));
if (columns.HasId(SaxGolfUsgaCourse.Column.FullName))
@@ -707,6 +733,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Email, aliasUsgaCourse));
if (columns.HasId(SaxGolfUsgaCourse.Column.Telephone))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Telephone, aliasUsgaCourse));
if (columns.HasId(SaxGolfUsgaCourse.Column.MarkersUpdateOn_Date))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_MarkersUpdateAt, aliasUsgaCourse));
// Common properties.
if (columns.HasId(SaxGolfUsgaCourse.Column.Notes))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Notes, aliasUsgaCourse));
@@ -728,12 +756,37 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
joinFacility.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Id, aliasUsgaCourse_Facility) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FacilityId, aliasUsgaCourse));
query.Joins.Add(joinFacility);
List<SaxDbDfn_Reference.ColumnIdx> cols = new List<SaxDbDfn_Reference.ColumnIdx>();
cols.Add(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_UsgaFacilityId);
cols.Add(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_FacilityName);
foreach (var col in cols)
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(col, aliasUsgaCourse_Facility), prefixUsgaCourse_Facility + SaxDbDfn_Reference.GetColumnName(col, false));
prm.Alias_Facility = aliasUsgaCourse_Facility;
}
//---------------------------------------------------------------------
// Marker count.
if (columns.HasId(SaxGolfUsgaCourse.Column.MarkerCount_All))
{
String aliasMarker = "aCrsMkr_Count";
DbQuery queryMarker = new DbQuery(CoreDatabase.DbmsType);
queryMarker.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaMarker), aliasMarker);
queryMarker.Columns.Add("Count(*)");
queryMarker.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CourseId, aliasMarker) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Id, aliasUsgaCourse));
query.Columns.Add("(" + queryMarker.BuildQuery() + ")", colCourse_Marker_Count);
}
// Active Marker count.
if (columns.HasId(SaxGolfUsgaCourse.Column.MarkerCount_Active))
{
String aliasMarker = "aCrsMkrAct_Count";
DbQuery queryMarker = new DbQuery(CoreDatabase.DbmsType);
queryMarker.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaMarker), aliasMarker);
queryMarker.Columns.Add("Count(*)");
queryMarker.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CourseId, aliasMarker) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Id, aliasUsgaCourse));
queryMarker.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Status, aliasMarker) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
query.Columns.Add("(" + queryMarker.BuildQuery() + ")", colCourse_Marker_Active_Count);
}
//---------------------------------------------------------------------
// Populate filter.
query.Filters.AddRange(GetUsgaCourseQueryFilter(prm));
@@ -30,7 +30,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
new StringPair("Id",SysId.ToString(usgaFacility.Id)),
new StringPair("ProvinceId",SysId.ToString(usgaFacility.ProvinceId)),
new StringPair("FacilityId",SysId.ToString(usgaFacility.FacilityId)),
new StringPair("UsgaFacilityId",SysId.ToString(usgaFacility.UsgaFacilityId)),
new StringPair("FacilityName",usgaFacility.FacilityName),
new StringPair("Status",usgaFacility.StatusCode)
};
@@ -214,7 +214,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
dbUsgaFacility._Id = SysId.ToLong(usgaFacility.Id);
dbUsgaFacility._ProvinceId = SysId.ToInt(usgaFacility.ProvinceId);
dbUsgaFacility._FacilityId = SysId.ToLong(usgaFacility.FacilityId);
dbUsgaFacility._UsgaFacilityId = SysId.ToLong(usgaFacility.UsgaFacilityId);
dbUsgaFacility._FacilityName = usgaFacility.FacilityName;
dbUsgaFacility._Address1 = usgaFacility.Address1;
dbUsgaFacility._Address2 = usgaFacility.Address2;
@@ -242,7 +242,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
//usgaFacility.Id = new SysId(dbUsgaFacility._Id);
usgaFacility.ProvinceId = new SysId(dbUsgaFacility._ProvinceId);
usgaFacility.FacilityId = new SysId(dbUsgaFacility._FacilityId);
usgaFacility.UsgaFacilityId = new SysId(dbUsgaFacility._UsgaFacilityId);
usgaFacility.FacilityName = dbUsgaFacility._FacilityName;
usgaFacility.Address1 = dbUsgaFacility._Address1;
usgaFacility.Address2 = dbUsgaFacility._Address2;
@@ -280,7 +280,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
// Validate facility properties.
// Province and Facility Codes are mandatory, other values only validated if non-null.
if (!IsValidValue(facility.ProvinceCode, "province", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceCode), true)) return false;
if (!SysId.IsValid(facility.FacilityId)) return SetErrorState("Facility Id must be supplied");
if (!SysId.IsValid(facility.UsgaFacilityId)) return SetErrorState("USGA Facility Id must be supplied");
if (facility.FacilityName != null && !IsValidValue(facility.FacilityName, "name", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_FacilityName))) return false;
if (facility.Address1 != null && !IsValidValue(facility.Address1, "address 1", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Address1))) return false;
if (facility.Address2 != null && !IsValidValue(facility.Address2, "address 2", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Address2))) return false;
@@ -295,19 +295,19 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
List<String> query = new List<string>();
query.Add($"Declare @statusActive VarChar(3) = '{SacsSystem.GetStatusCode(SaxGolfUsgaFacility.DefaultStatus)}';");
query.Add($"Declare @updateOn DateTime = GetUtcDate();");
query.Add($"Declare @updateOn DateTime = GetDate();");
query.Add($"Declare @updateBy Int = {SysId.ToLong(dbUpdateInfo.UserId)};");
query.Add($"Declare @updateHost VarChar(100) = '{DbQuery.FormatForCondition(dbUpdateInfo.Host)}';");
query.Add("Merge");
query.Add($"Into {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility)} uFty");
query.Add("Using");
query.Add("(");
query.Add("Select dPrv.Id ProvinceId, dFty.ProvinceCode, dFty.FacilityId, dFty.FacilityName, dFty.Address1, dFty.Address2, dFty.City, dFty.PostalCode, dFty.Email, dFty.Telephone");
query.Add("Select dPrv.Id ProvinceId, dFty.ProvinceCode, dFty.UsgaFacilityId, dFty.FacilityName, dFty.Address1, dFty.Address2, dFty.City, dFty.PostalCode, dFty.Email, dFty.Telephone");
query.Add("From");
query.Add("(");
query.Add("Select '' ProvinceCode, '' FacilityId, '' FacilityName, '' Address1, '' Address2, '' City, '' PostalCode, '' Email, '' Telephone");
query.Add("Select '' ProvinceCode, 0 UsgaFacilityId, '' FacilityName, '' Address1, '' Address2, '' City, '' PostalCode, '' Email, '' Telephone");
foreach (UsgaFacilityData facility in facilitiesToUpdate.ExtractRange(0, batchSize))
query.Add($"Union Select '{DbQuery.FormatForCondition(facility.ProvinceCode)}', {SysId.ToString(facility.FacilityId)}, " +
query.Add($"Union Select '{DbQuery.FormatForCondition(facility.ProvinceCode)}', {SysId.ToString(facility.UsgaFacilityId)}, " +
(facility.FacilityName != null ? $"'{DbQuery.FormatForCondition(facility.FacilityName)}'" : "Null") + "," +
(facility.Address1 != null ? $"'{DbQuery.FormatForCondition(facility.Address1)}'" : "Null") + "," +
(facility.Address2 != null ? $"'{DbQuery.FormatForCondition(facility.Address2)}'" : "Null") + "," +
@@ -318,7 +318,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
query.Add(") dFty");
query.Add($"Inner Join {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince)} dPrv On dPrv.ProvinceCode=dFty.ProvinceCode");
query.Add(") dFty");
query.Add("On uFty.ProvinceId=dFty.ProvinceId And uFty.FacilityId=dFty.FacilityId");
query.Add("On uFty.ProvinceId=dFty.ProvinceId And uFty.UsgaFacilityId=dFty.UsgaFacilityId");
query.Add("When Matched And ((dFty.FacilityName Is Not Null And uFty.FacilityName!=dFty.FacilityName) Or (dFty.Address1 Is Not Null And uFty.Address1!=dFty.Address1) Or (dFty.Address2 Is Not Null And uFty.Address2!=dFty.Address2) Or (dFty.City Is Not Null And uFty.City!=dFty.City) Or (dFty.PostalCode Is Not Null And uFty.PostalCode!=dFty.PostalCode) Or (dFty.Email Is Not Null And uFty.Email!=dFty.Email) Or (dFty.Telephone Is Not Null And uFty.Telephone!=dFty.Telephone) Or uFty.Status!=@statusActive)");
query.Add("Then Update Set");
query.Add(" FacilityName=Coalesce(dFty.FacilityName,uFty.FacilityName),");
@@ -333,8 +333,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
query.Add(" UpdateBy=@updateBy,");
query.Add(" UpdateHost=@updateHost");
query.Add("When Not Matched And Len(IsNull(dFty.FacilityName,''))>0");
query.Add("Then Insert (ProvinceId,FacilityId,FacilityName,Address1,Address2,City,PostalCode,Email,Telephone,Notes,Flags,Status,CreateOn,CreateBy,CreateHost,UpdateOn,UpdateBy,UpdateHost)");
query.Add($"Values (dFty.ProvinceId,dFty.FacilityId,dFty.FacilityName,Coalesce(dFty.Address1,''),Coalesce(dFty.Address2,''),Coalesce(dFty.City,''),Coalesce(dFty.PostalCode,''),Coalesce(dFty.Email,''),Coalesce(dFty.Telephone,''),'',0,@statusActive,@updateOn,@updateBy,@updateHost,@updateOn,@updateBy,@updateHost)");
query.Add("Then Insert (ProvinceId,UsgaFacilityId,FacilityName,Address1,Address2,City,PostalCode,Email,Telephone,Notes,Flags,Status,CreateOn,CreateBy,CreateHost,UpdateOn,UpdateBy,UpdateHost)");
query.Add($"Values (dFty.ProvinceId,dFty.UsgaFacilityId,dFty.FacilityName,Coalesce(dFty.Address1,''),Coalesce(dFty.Address2,''),Coalesce(dFty.City,''),Coalesce(dFty.PostalCode,''),Coalesce(dFty.Email,''),Coalesce(dFty.Telephone,''),'',0,@statusActive,@updateOn,@updateBy,@updateHost,@updateOn,@updateBy,@updateHost)");
query.Add(";");
//SaLogger.Info($"{SysUtil.Fn} Bulk USGA Facility update query:\n\t{query.Concat("\n\t")}");
@@ -396,8 +396,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
break;
//-------------------------------------------------------
case SaxGolfUsgaFacility.Column.FacilityId:
SetUsgaFacilityColDfn(columnDfn, "Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaFacility_FacilityId, ColumnAlignment.Center, DataValue.DataType.Long);
case SaxGolfUsgaFacility.Column.UsgaFacilityId:
SetUsgaFacilityColDfn(columnDfn, "USGA Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaFacility_UsgaFacilityId, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxGolfUsgaFacility.Column.FacilityName:
@@ -613,8 +613,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
bool hasProvinceCols = (columns.HasId(SaxGolfUsgaFacility.Column.Province_Name));
if (columns.HasId(SaxGolfUsgaFacility.Column.ProvinceId) || hasProvinceCols)
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, aliasUsgaFacility));
if (columns.HasId(SaxGolfUsgaFacility.Column.FacilityId))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_FacilityId, aliasUsgaFacility));
if (columns.HasId(SaxGolfUsgaFacility.Column.UsgaFacilityId))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_UsgaFacilityId, aliasUsgaFacility));
if (columns.HasId(SaxGolfUsgaFacility.Column.FacilityName))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_FacilityName, aliasUsgaFacility));
// Common properties.
@@ -30,7 +30,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
new StringPair("Id",SysId.ToString(usgaMarker.Id)),
new StringPair("CourseId",SysId.ToString(usgaMarker.CourseId)),
new StringPair("MarkerId",SysId.ToString(usgaMarker.MarkerId)),
new StringPair("UsgaMarkerId",SysId.ToString(usgaMarker.UsgaMarkerId)),
new StringPair("Caption",usgaMarker.Caption),
new StringPair("Status",usgaMarker.StatusCode)
};
@@ -214,7 +214,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
dbUsgaMarker._Id = SysId.ToLong(usgaMarker.Id);
dbUsgaMarker._CourseId = SysId.ToInt(usgaMarker.CourseId);
dbUsgaMarker._MarkerId = SysId.ToInt(usgaMarker.MarkerId);
dbUsgaMarker._UsgaMarkerId = SysId.ToInt(usgaMarker.UsgaMarkerId);
dbUsgaMarker._Caption = usgaMarker.Caption;
dbUsgaMarker._Holes = usgaMarker.Holes;
dbUsgaMarker._HolesCaption = usgaMarker.HolesCaption;
@@ -243,7 +243,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
//usgaMarker.Id = new SysId(dbUsgaMarker._Id);
usgaMarker.CourseId = new SysId(dbUsgaMarker._CourseId);
usgaMarker.MarkerId = new SysId(dbUsgaMarker._MarkerId);
usgaMarker.UsgaMarkerId = new SysId(dbUsgaMarker._UsgaMarkerId);
usgaMarker.Caption = dbUsgaMarker._Caption;
usgaMarker.Holes = dbUsgaMarker._Holes;
usgaMarker.HolesCaption = dbUsgaMarker._HolesCaption;
@@ -281,12 +281,12 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
// Validate marker properties.
// Course and Marker Codes are mandatory, other values only validated if non-null.
if (!SysId.IsValid(marker.CourseId)) return SetErrorState("Course Id must be supplied");
// 9 hole markers missing Id: if (!SysId.IsValid(marker.MarkerId)) return SetErrorState("Marker Id must be supplied");
if (!SysId.IsValid(marker.UsgaCourseId)) return SetErrorState("USGA Course Id must be supplied");
// 9 hole markers missing Id: if (!SysId.IsValid(marker.UsgaMarkerId)) return SetErrorState("USGA Marker Id must be supplied");
if (marker.Caption != null && !IsValidValue(marker.HolesCaption, "caption", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_HolesCaption))) return false;
if (marker.Holes < 1) return SetErrorState("Holes must be supplied");
if (marker.HolesCaption != null && !IsValidValue(marker.HolesCaption, "full name", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_HolesCaption))) return false;
if (marker.Tee != null && !IsValidValue(marker.Tee, "tee", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Tee))) return false;
if (marker.HolesCaption != null && !IsValidValue(marker.HolesCaption, "holes caption", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_HolesCaption), true)) return false;
if (marker.Tee != null && !IsValidValue(marker.Tee, "tee", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Tee), true)) return false;
if (marker.Gender != null && !IsValidValue(marker.Gender, "gender", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Gender))) return false;
if (marker.SlopeRating < 1) return SetErrorState("Slope rating must be supplied");
if (marker.Par < 1) return SetErrorState("Par must be supplied");
@@ -299,19 +299,19 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
List<String> query = new List<string>();
query.Add($"Declare @statusActive VarChar(3) = '{SacsSystem.GetStatusCode(SaxGolfUsgaMarker.DefaultStatus)}';");
query.Add($"Declare @updateOn DateTime = GetUtcDate();");
query.Add($"Declare @updateOn DateTime = GetDate();");
query.Add($"Declare @updateBy Int = {SysId.ToLong(dbUpdateInfo.UserId)};");
query.Add($"Declare @updateHost VarChar(100) = '{DbQuery.FormatForCondition(dbUpdateInfo.Host)}';");
query.Add("Merge");
query.Add($"Into {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaMarker)} uMkr");
query.Add("Using");
query.Add("(");
query.Add("Select dCrs.Id CourseId, dMkr.MarkerId, dMkr.Caption, dMkr.Holes, dMkr.HolesCaption, dMkr.Tee, dMkr.Gender, dMkr.SlopeRating, dMkr.Par, dMkr.CourseRating, dMkr.BogeyRating, dMkr.Length");
query.Add("Select uCrs.Id CourseId, dMkr.UsgaCourseId, dMkr.UsgaMarkerId, dMkr.Caption, dMkr.Holes, dMkr.HolesCaption, dMkr.Tee, dMkr.Gender, dMkr.SlopeRating, dMkr.Par, dMkr.CourseRating, dMkr.BogeyRating, dMkr.Length");
query.Add("From");
query.Add("(");
query.Add("Select 0 CourseId, 0 MarkerId, '' Caption, 0 Holes, '' HolesCaption, '' Tee, '' Gender, 0 SlopeRating, 0 Par, 0 CourseRating, 0 BogeyRating, 0 Length");
query.Add("Select 0 UsgaCourseId, 0 UsgaMarkerId, '' Caption, 0 Holes, '' HolesCaption, '' Tee, '' Gender, 0 SlopeRating, 0 Par, 0 CourseRating, 0 BogeyRating, 0 Length");
foreach (UsgaMarkerData marker in markersToUpdate.ExtractRange(0, batchSize))
query.Add($"Union Select {marker.CourseId},{StringUtil.OnBlank(SysId.ToString(marker.MarkerId),"0")}," +
query.Add($"Union Select {marker.UsgaCourseId},{StringUtil.OnBlank(SysId.ToString(marker.UsgaMarkerId),"0")}," +
(marker.Caption != null ? $"'{DbQuery.FormatForCondition(marker.Caption)}'" : "Null") + "," +
$"{marker.Holes}," +
(marker.HolesCaption != null ? $"'{DbQuery.FormatForCondition(marker.HolesCaption)}'" : "Null") + "," +
@@ -323,9 +323,12 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
(marker.BogeyRating > 0 ? $"{marker.BogeyRating}" : "Null") + "," +
(marker.Length > 0 ? $"{marker.Length}" : "Null"));
query.Add(") dMkr");
query.Add($"Inner Join {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCourse)} dCrs On dCrs.CourseId=dMkr.CourseId");
query.Add($"Inner Join {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCourse)} uCrs On uCrs.UsgaCourseId=dMkr.UsgaCourseId");
query.Add(") dMkr");
query.Add("On uMkr.CourseId=dMkr.CourseId And uMkr.MarkerId=dMkr.MarkerId");
// Want to use UsgaMarkerId to identify the Marker alongside the CourseId, but only 18 hole markers have an Id value.
// Use alternative identifiers for now: Holes Caption, Tee and Gender.
// Was: query.Add("On uMkr.CourseId=dMkr.CourseId And uMkr.UsgaMarkerId=dMkr.UsgaMarkerId");
query.Add("On uMkr.CourseId=dMkr.CourseId And uMkr.HolesCaption=dMkr.HolesCaption And uMkr.Tee=dMkr.Tee And uMkr.Gender=Coalesce(dMkr.Gender,'')");
query.Add("When Matched And ((dMkr.Caption Is Not Null And uMkr.Caption!=dMkr.Caption) Or (uMkr.Holes!=dMkr.Holes) Or (dMkr.HolesCaption Is Not Null And uMkr.HolesCaption!=dMkr.HolesCaption) Or (dMkr.Tee Is Not Null And uMkr.Tee!=dMkr.Tee) Or (dMkr.Gender Is Not Null And uMkr.Gender!=dMkr.Gender) Or (uMkr.SlopeRating!=dMkr.SlopeRating) Or (uMkr.Par!=dMkr.Par) Or (uMkr.CourseRating!=dMkr.CourseRating) Or (dMkr.BogeyRating Is Not Null And uMkr.BogeyRating!=dMkr.BogeyRating) Or (dMkr.Length Is Not Null And uMkr.Length!=dMkr.Length) Or uMkr.Status!=@statusActive)");
query.Add("Then Update Set");
query.Add(" Caption=Coalesce(dMkr.Caption,uMkr.Caption),");
@@ -343,8 +346,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
query.Add(" UpdateBy=@updateBy,");
query.Add(" UpdateHost=@updateHost");
query.Add("When Not Matched And Len(Coalesce(dMkr.Caption,''))>0 And dMkr.Holes>0 And dMkr.SlopeRating>0 And dMkr.Par>0 And dMkr.CourseRating>0");
query.Add("Then Insert (CourseId,MarkerId,Caption,Holes,HolesCaption,Tee,Gender,SlopeRating,Par,CourseRating,BogeyRating,Length,Notes,Flags,Status,CreateOn,CreateBy,CreateHost,UpdateOn,UpdateBy,UpdateHost)");
query.Add($"Values (dMkr.CourseId,dMkr.MarkerId,Coalesce(dMkr.Caption,''),dMkr.Holes,Coalesce(dMkr.HolesCaption,''),Coalesce(dMkr.Tee,''),Coalesce(dMkr.Gender,''),Coalesce(dMkr.SlopeRating,''),Coalesce(dMkr.Par,''),Coalesce(dMkr.CourseRating,''),Coalesce(dMkr.BogeyRating,''),Coalesce(dMkr.Length,''),'',0,@statusActive,@updateOn,@updateBy,@updateHost,@updateOn,@updateBy,@updateHost)");
query.Add("Then Insert (CourseId,UsgaMarkerId,Caption,Holes,HolesCaption,Tee,Gender,SlopeRating,Par,CourseRating,BogeyRating,Length,Notes,Flags,Status,CreateOn,CreateBy,CreateHost,UpdateOn,UpdateBy,UpdateHost)");
query.Add($"Values (dMkr.CourseId,dMkr.UsgaMarkerId,Coalesce(dMkr.Caption,''),dMkr.Holes,Coalesce(dMkr.HolesCaption,''),Coalesce(dMkr.Tee,''),Coalesce(dMkr.Gender,''),Coalesce(dMkr.SlopeRating,''),Coalesce(dMkr.Par,''),Coalesce(dMkr.CourseRating,''),Coalesce(dMkr.BogeyRating,''),Coalesce(dMkr.Length,''),'',0,@statusActive,@updateOn,@updateBy,@updateHost,@updateOn,@updateBy,@updateHost)");
query.Add(";");
//SaLogger.Info($"{SysUtil.Fn} Bulk USGA Marker update query:\n\t{query.Concat("\n\t")}");
@@ -406,8 +409,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
break;
//-------------------------------------------------------
case SaxGolfUsgaMarker.Column.MarkerId:
SetUsgaMarkerColDfn(columnDfn, "Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_MarkerId, ColumnAlignment.Center, DataValue.DataType.Long);
case SaxGolfUsgaMarker.Column.UsgaMarkerId:
SetUsgaMarkerColDfn(columnDfn, "Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_UsgaMarkerId, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxGolfUsgaMarker.Column.Caption:
@@ -649,8 +652,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
bool hasCourseCols = (columns.HasId(SaxGolfUsgaMarker.Column.Course_Name));
if (columns.HasId(SaxGolfUsgaMarker.Column.CourseId) || hasCourseCols)
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CourseId, aliasUsgaMarker));
if (columns.HasId(SaxGolfUsgaMarker.Column.MarkerId))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_MarkerId, aliasUsgaMarker));
if (columns.HasId(SaxGolfUsgaMarker.Column.UsgaMarkerId))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_UsgaMarkerId, aliasUsgaMarker));
if (columns.HasId(SaxGolfUsgaMarker.Column.Caption))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Caption, aliasUsgaMarker));
if (columns.HasId(SaxGolfUsgaMarker.Column.Holes))
@@ -217,6 +217,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
dbUsgaProvince._ProvinceCode = usgaProvince.ProvinceCode;
dbUsgaProvince._EntProvinceCode = usgaProvince.EntProvinceCode;
dbUsgaProvince._ProvinceName = usgaProvince.ProvinceName;
dbUsgaProvince._CoursesUpdateAt = usgaProvince.CoursesUpdateAt;
// Common.
dbUsgaProvince._Notes = usgaProvince.Notes;
dbUsgaProvince._Status = SacsSystem.GetStatusCode(usgaProvince.Status);
@@ -238,6 +239,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
usgaProvince.ProvinceCode = dbUsgaProvince._ProvinceCode;
usgaProvince.EntProvinceCode = dbUsgaProvince._EntProvinceCode;
usgaProvince.ProvinceName = dbUsgaProvince._ProvinceName;
usgaProvince.CoursesUpdateAt = dbUsgaProvince._CoursesUpdateAt;
// Common.
usgaProvince.Notes = dbUsgaProvince._Notes;
usgaProvince.Status = SacsSystem.GetStatusForCode(dbUsgaProvince._Status);
@@ -277,7 +279,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
{
List<String> query = new List<string>();
query.Add($"Declare @statusActive VarChar(3) = '{SacsSystem.GetStatusCode(SaxGolfUsgaProvince.DefaultStatus)}';");
query.Add($"Declare @updateOn DateTime = GetUtcDate();");
query.Add($"Declare @updateOn DateTime = GetDate();");
query.Add($"Declare @updateBy Int = {SysId.ToLong(dbUpdateInfo.UserId)};");
query.Add($"Declare @updateHost VarChar(100) = '{DbQuery.FormatForCondition(dbUpdateInfo.Host)}';");
query.Add("Merge");
@@ -331,6 +333,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
private static readonly String colProvince_Facility_Active_Count = "Prv_Fty_Act_Count";
private static readonly String colProvince_Course_Count = "Prv_Crs_Count";
private static readonly String colProvince_Course_Active_Count = "Prv_Crs_Act_Count";
private static readonly String colProvince_Markers_Percent = "Prv_Mkr_Perc";
private void SetUsgaProvinceColDfn
(ColumnDfn col, String caption, int width, SaxDbDfn_Reference.ColumnIdx dbCol,
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
@@ -378,6 +381,10 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
SetUsgaProvinceColDfn(columnDfn, "Name", 120, SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceName, ColumnAlignment.Center);
columnDfn.ReadOnly = true;
break;
case SaxGolfUsgaProvince.Column.CoursesUpdateAt_Date:
SetUsgaProvinceColDfn(columnDfn, "Courses updated", 120, SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CoursesUpdateAt, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Derived properties.
@@ -398,6 +405,11 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
columnDfn.DataName = colProvince_Course_Active_Count;
break;
case SaxGolfUsgaProvince.Column.MarkerPercent:
SetUsgaCountryColDfn(columnDfn, "Markers %", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.DataName = colProvince_Markers_Percent;
break;
//-----------------------------------------------------------
// Common properties.
case SaxGolfUsgaProvince.Column.Notes:
@@ -616,6 +628,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceCode, aliasUsgaProvince));
if (columns.HasId(SaxGolfUsgaProvince.Column.ProvinceName))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceName, aliasUsgaProvince));
if (columns.HasId(SaxGolfUsgaProvince.Column.CoursesUpdateAt_Date))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CoursesUpdateAt, aliasUsgaProvince));
// Common properties.
if (columns.HasId(SaxGolfUsgaProvince.Column.Notes))
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Notes, aliasUsgaProvince));
@@ -705,6 +719,36 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
query.Columns.Add("(" + queryFacility.BuildQuery() + ")", colProvince_Course_Active_Count);
}
//---------------------------------------------------------------------
// Marker population %.
if (columns.HasId(SaxGolfUsgaProvince.Column.MarkerPercent))
{
// Sub query to count facilities & privinces with markers, and work out the percent with markers.
String alias_Facility = "prv";
String alias_Course = "crs";
String alias_Marker = "fty";
String table_Facility = $"{SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility)} {alias_Facility}";
String table_Course = $"{SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCourse)} {alias_Course}";
String table_Marker = $"{SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaMarker)} {alias_Marker}";
String col_Province_Id = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, aliasUsgaProvince);
String col_Facility_Id = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Id, alias_Facility);
String col_Facility_ProvinceId = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, alias_Facility);
String col_Course_Id = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Id, alias_Course);
String col_Course_FacilityId = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FacilityId, alias_Course);
String col_Marker_CourseId = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CourseId, alias_Marker);
String name_CourseCount = "CourseCount";
String name_CoursesWithMarkers = "CoursesWithMarkers";
List<String> subQuery = new List<String>();
subQuery.Add($"Select Convert (decimal(9,2), Case When {name_CourseCount} > 0 Then 100.0 * (1.0 * {name_CoursesWithMarkers} / {name_CourseCount}) Else 0 End)");
subQuery.Add($"From");
subQuery.Add($"(");
subQuery.Add($"Select");
subQuery.Add($"{name_CourseCount} = (select Count(*) From {table_Course} Where {col_Course_FacilityId} In (Select {col_Facility_Id} From {table_Facility} Where {col_Facility_ProvinceId}={col_Province_Id})),");
subQuery.Add($"{name_CoursesWithMarkers} = (select Count(*) From {table_Course} Where {col_Course_FacilityId} In (Select {col_Facility_Id} From {table_Facility} Where {col_Facility_ProvinceId}={col_Province_Id}) And {col_Course_Id} in (Select {col_Marker_CourseId} from {table_Marker}))");
subQuery.Add($") dat");
query.Columns.Add($"({subQuery.Concat(" ")})", colProvince_Markers_Percent);
}
//---------------------------------------------------------------------
// Populate filter.
query.Filters.AddRange(GetUsgaProvinceQueryFilter(prm));
@@ -78,6 +78,23 @@
<Schema>golf</Schema>
<Table>UsgaCountry</Table>
<Pos>5</Pos>
<Name>ProvincesUpdateAt</Name>
<DataType>DateTime</DataType>
<DataTypeName />
<DataTypeNative>93</DataTypeNative>
<DataTypeNameNative>smalldatetime</DataTypeNameNative>
<IsIdentity>false</IsIdentity>
<Size>16</Size>
<BufferLen>16</BufferLen>
<DecimalDigits>0</DecimalDigits>
<Nullable>Nullable</Nullable>
<IsNullable>true</IsNullable>
<Remarks />
</DbDfnColumn>
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCountry</Table>
<Pos>6</Pos>
<Name>Notes</Name>
<DataType>VarChar</DataType>
<DataTypeName />
@@ -94,7 +111,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCountry</Table>
<Pos>6</Pos>
<Pos>7</Pos>
<Name>Flags</Name>
<DataType>SmallInt</DataType>
<DataTypeName />
@@ -111,7 +128,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCountry</Table>
<Pos>7</Pos>
<Pos>8</Pos>
<Name>Status</Name>
<DataType>VarChar</DataType>
<DataTypeName />
@@ -128,7 +145,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCountry</Table>
<Pos>8</Pos>
<Pos>9</Pos>
<Name>CreateOn</Name>
<DataType>DateTime</DataType>
<DataTypeName />
@@ -145,7 +162,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCountry</Table>
<Pos>9</Pos>
<Pos>10</Pos>
<Name>CreateBy</Name>
<DataType>Int</DataType>
<DataTypeName />
@@ -162,7 +179,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCountry</Table>
<Pos>10</Pos>
<Pos>11</Pos>
<Name>CreateHost</Name>
<DataType>VarChar</DataType>
<DataTypeName />
@@ -179,7 +196,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCountry</Table>
<Pos>11</Pos>
<Pos>12</Pos>
<Name>UpdateOn</Name>
<DataType>DateTime</DataType>
<DataTypeName />
@@ -196,7 +213,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCountry</Table>
<Pos>12</Pos>
<Pos>13</Pos>
<Name>UpdateBy</Name>
<DataType>Int</DataType>
<DataTypeName />
@@ -213,7 +230,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCountry</Table>
<Pos>13</Pos>
<Pos>14</Pos>
<Name>UpdateHost</Name>
<DataType>VarChar</DataType>
<DataTypeName />
@@ -314,7 +331,7 @@
<Schema>golf</Schema>
<Table>UsgaCourse</Table>
<Pos>3</Pos>
<Name>CourseId</Name>
<Name>UsgaCourseId</Name>
<DataType>BigInt</DataType>
<DataTypeName />
<DataTypeNative>-5</DataTypeNative>
@@ -535,6 +552,23 @@
<Schema>golf</Schema>
<Table>UsgaCourse</Table>
<Pos>16</Pos>
<Name>MarkersUpdateAt</Name>
<DataType>DateTime</DataType>
<DataTypeName />
<DataTypeNative>93</DataTypeNative>
<DataTypeNameNative>smalldatetime</DataTypeNameNative>
<IsIdentity>false</IsIdentity>
<Size>16</Size>
<BufferLen>16</BufferLen>
<DecimalDigits>0</DecimalDigits>
<Nullable>Nullable</Nullable>
<IsNullable>true</IsNullable>
<Remarks />
</DbDfnColumn>
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCourse</Table>
<Pos>17</Pos>
<Name>MarkersData</Name>
<DataType>VarChar</DataType>
<DataTypeName />
@@ -551,7 +585,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCourse</Table>
<Pos>17</Pos>
<Pos>18</Pos>
<Name>Notes</Name>
<DataType>VarChar</DataType>
<DataTypeName />
@@ -568,7 +602,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCourse</Table>
<Pos>18</Pos>
<Pos>19</Pos>
<Name>Flags</Name>
<DataType>SmallInt</DataType>
<DataTypeName />
@@ -585,7 +619,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCourse</Table>
<Pos>19</Pos>
<Pos>20</Pos>
<Name>Status</Name>
<DataType>VarChar</DataType>
<DataTypeName />
@@ -602,7 +636,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCourse</Table>
<Pos>20</Pos>
<Pos>21</Pos>
<Name>CreateOn</Name>
<DataType>DateTime</DataType>
<DataTypeName />
@@ -619,7 +653,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCourse</Table>
<Pos>21</Pos>
<Pos>22</Pos>
<Name>CreateBy</Name>
<DataType>Int</DataType>
<DataTypeName />
@@ -636,7 +670,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCourse</Table>
<Pos>22</Pos>
<Pos>23</Pos>
<Name>CreateHost</Name>
<DataType>VarChar</DataType>
<DataTypeName />
@@ -653,7 +687,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCourse</Table>
<Pos>23</Pos>
<Pos>24</Pos>
<Name>UpdateOn</Name>
<DataType>DateTime</DataType>
<DataTypeName />
@@ -670,7 +704,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCourse</Table>
<Pos>24</Pos>
<Pos>25</Pos>
<Name>UpdateBy</Name>
<DataType>Int</DataType>
<DataTypeName />
@@ -687,7 +721,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaCourse</Table>
<Pos>25</Pos>
<Pos>26</Pos>
<Name>UpdateHost</Name>
<DataType>VarChar</DataType>
<DataTypeName />
@@ -712,8 +746,8 @@
<Primary>false</Primary>
<Clustered>false</Clustered>
<Nullable>false</Nullable>
<Pages>15</Pages>
<UniqueValues>182</UniqueValues>
<Pages>35</Pages>
<UniqueValues>405</UniqueValues>
<HasColumns>false</HasColumns>
<Columns>
<DbDfnIndexColumn>
@@ -738,7 +772,7 @@
<Columns>
<DbDfnIndexColumn>
<Seq>1</Seq>
<Name>CourseId</Name>
<Name>UsgaCourseId</Name>
<Ascend>true</Ascend>
</DbDfnIndexColumn>
</Columns>
@@ -808,7 +842,7 @@
<Schema>golf</Schema>
<Table>UsgaFacility</Table>
<Pos>3</Pos>
<Name>FacilityId</Name>
<Name>UsgaFacilityId</Name>
<DataType>BigInt</DataType>
<DataTypeName />
<DataTypeNative>-5</DataTypeNative>
@@ -1138,8 +1172,8 @@
<Primary>false</Primary>
<Clustered>false</Clustered>
<Nullable>false</Nullable>
<Pages>4</Pages>
<UniqueValues>144</UniqueValues>
<Pages>8</Pages>
<UniqueValues>329</UniqueValues>
<HasColumns>false</HasColumns>
<Columns>
<DbDfnIndexColumn>
@@ -1164,7 +1198,7 @@
<Columns>
<DbDfnIndexColumn>
<Seq>1</Seq>
<Name>FacilityId</Name>
<Name>UsgaFacilityId</Name>
<Ascend>true</Ascend>
</DbDfnIndexColumn>
</Columns>
@@ -1234,7 +1268,7 @@
<Schema>golf</Schema>
<Table>UsgaMarker</Table>
<Pos>3</Pos>
<Name>MarkerId</Name>
<Name>UsgaMarkerId</Name>
<DataType>BigInt</DataType>
<DataTypeName />
<DataTypeNative>-5</DataTypeNative>
@@ -1581,8 +1615,8 @@
<Primary>false</Primary>
<Clustered>false</Clustered>
<Nullable>false</Nullable>
<Pages>2</Pages>
<UniqueValues>91</UniqueValues>
<Pages>9</Pages>
<UniqueValues>423</UniqueValues>
<HasColumns>false</HasColumns>
<Columns>
<DbDfnIndexColumn>
@@ -1688,6 +1722,23 @@
<Schema>golf</Schema>
<Table>UsgaProvince</Table>
<Pos>6</Pos>
<Name>CoursesUpdateAt</Name>
<DataType>DateTime</DataType>
<DataTypeName />
<DataTypeNative>93</DataTypeNative>
<DataTypeNameNative>smalldatetime</DataTypeNameNative>
<IsIdentity>false</IsIdentity>
<Size>16</Size>
<BufferLen>16</BufferLen>
<DecimalDigits>0</DecimalDigits>
<Nullable>Nullable</Nullable>
<IsNullable>true</IsNullable>
<Remarks />
</DbDfnColumn>
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaProvince</Table>
<Pos>7</Pos>
<Name>Notes</Name>
<DataType>VarChar</DataType>
<DataTypeName />
@@ -1704,7 +1755,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaProvince</Table>
<Pos>7</Pos>
<Pos>8</Pos>
<Name>Flags</Name>
<DataType>SmallInt</DataType>
<DataTypeName />
@@ -1721,7 +1772,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaProvince</Table>
<Pos>8</Pos>
<Pos>9</Pos>
<Name>Status</Name>
<DataType>VarChar</DataType>
<DataTypeName />
@@ -1738,7 +1789,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaProvince</Table>
<Pos>9</Pos>
<Pos>10</Pos>
<Name>CreateOn</Name>
<DataType>DateTime</DataType>
<DataTypeName />
@@ -1755,7 +1806,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaProvince</Table>
<Pos>10</Pos>
<Pos>11</Pos>
<Name>CreateBy</Name>
<DataType>Int</DataType>
<DataTypeName />
@@ -1772,7 +1823,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaProvince</Table>
<Pos>11</Pos>
<Pos>12</Pos>
<Name>CreateHost</Name>
<DataType>VarChar</DataType>
<DataTypeName />
@@ -1789,7 +1840,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaProvince</Table>
<Pos>12</Pos>
<Pos>13</Pos>
<Name>UpdateOn</Name>
<DataType>DateTime</DataType>
<DataTypeName />
@@ -1806,7 +1857,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaProvince</Table>
<Pos>13</Pos>
<Pos>14</Pos>
<Name>UpdateBy</Name>
<DataType>Int</DataType>
<DataTypeName />
@@ -1823,7 +1874,7 @@
<DbDfnColumn>
<Schema>golf</Schema>
<Table>UsgaProvince</Table>
<Pos>14</Pos>
<Pos>15</Pos>
<Name>UpdateHost</Name>
<DataType>VarChar</DataType>
<DataTypeName />
@@ -1848,8 +1899,8 @@
<Primary>false</Primary>
<Clustered>false</Clustered>
<Nullable>false</Nullable>
<Pages>13</Pages>
<UniqueValues>913</UniqueValues>
<Pages>14</Pages>
<UniqueValues>952</UniqueValues>
<HasColumns>false</HasColumns>
<Columns>
<DbDfnIndexColumn>
+15 -56
View File
@@ -138,59 +138,6 @@ namespace Saxonite.Web.Api.App
// Allows you to bypass "AuthenticationException: The remote certificate is invalid according to the validation procedure." error. Don't to do this in production code...
//ServicePointManager.ServerCertificateValidationCallback = delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
if (false)
{
// USGA statistics.
using (DisposableCollection<SacsDisposable> disposableItems = new DisposableCollection<SacsDisposable>())
{
var refGolfMgr = System.CreateReferenceGolfMgr(SessionContext, null);
disposableItems.Add(refGolfMgr);
// All countries.
SaxGolfUsgaCountry.Params prmCountry = new SaxGolfUsgaCountry.Params();
prmCountry.StatusCat = SaxGolfUsgaCountry.StatusCat.Any;
List<SaxGolfUsgaCountry> countries = refGolfMgr.GetUsgaCountryList(prmCountry);
disposableItems.AddRange(countries);
SaLogger.Info($"{SysUtil.Fn} Countries: {countries.Count}");
// Priority countries without provinces.
prmCountry = new SaxGolfUsgaCountry.Params();
prmCountry.PriorityFlagState = SacsHierarchyItem.Params.FlagState.True;
prmCountry.HasProvinces = SacsHierarchyItem.Params.BoolState.False;
prmCountry.StatusCat = SaxGolfUsgaCountry.StatusCat.ActiveOnly;
countries = refGolfMgr.GetUsgaCountryList(prmCountry);
disposableItems.AddRange(countries);
SaLogger.Info($"{SysUtil.Fn} Priority Countries without provinces: {countries.Count}");
// Non-Priority countries without provinces.
prmCountry = new SaxGolfUsgaCountry.Params();
prmCountry.PriorityFlagState = SacsHierarchyItem.Params.FlagState.False;
prmCountry.HasProvinces = SacsHierarchyItem.Params.BoolState.False;
prmCountry.StatusCat = SaxGolfUsgaCountry.StatusCat.ActiveOnly;
countries = refGolfMgr.GetUsgaCountryList(prmCountry);
disposableItems.AddRange(countries);
SaLogger.Info($"{SysUtil.Fn} Non-Priority Countries without provinces: {countries.Count}");
// Priority countries with provinces.
prmCountry = new SaxGolfUsgaCountry.Params();
prmCountry.PriorityFlagState = SacsHierarchyItem.Params.FlagState.True;
prmCountry.HasProvinces = SacsHierarchyItem.Params.BoolState.True;
prmCountry.StatusCat = SaxGolfUsgaCountry.StatusCat.ActiveOnly;
countries = refGolfMgr.GetUsgaCountryList(prmCountry);
disposableItems.AddRange(countries);
SaLogger.Info($"{SysUtil.Fn} Priority Countries with provinces: {countries.Count}");
// Non-Priority countries with provinces.
prmCountry = new SaxGolfUsgaCountry.Params();
prmCountry.PriorityFlagState = SacsHierarchyItem.Params.FlagState.False;
prmCountry.HasProvinces = SacsHierarchyItem.Params.BoolState.True;
prmCountry.StatusCat = SaxGolfUsgaCountry.StatusCat.ActiveOnly;
countries = refGolfMgr.GetUsgaCountryList(prmCountry);
disposableItems.AddRange(countries);
SaLogger.Info($"{SysUtil.Fn} Non-Priority Countries with provinces: {countries.Count}");
}
}
if (false)
{
CancellationToken cancelToken = new CancellationToken();
@@ -225,6 +172,9 @@ namespace Saxonite.Web.Api.App
SaxGolfUsgaDataLookup.Config courseLookupConfig = new SaxGolfUsgaDataLookup.Config(SessionContext, dbUpdateInfo);
SaxGolfUsgaDataLookup courseLookup = new SaxGolfUsgaDataLookup(courseLookupConfig);
List<SaxGolfUsgaDataLookup.CountryData> countries = courseLookup.LookupUsgaCountries();
SaLogger.Warn($"{SysUtil.Fn} Country lookup - found: {countries.Count}");
if (courseLookup.HasErrorMessage())
SaLogger.Warn($"{SysUtil.Fn} Country lookup error: {courseLookup.GetErrorMessage()}");
foreach (SaxGolfUsgaDataLookup.CountryData country in countries)
{
}
@@ -236,6 +186,9 @@ namespace Saxonite.Web.Api.App
SaxGolfUsgaDataLookup.Config courseLookupConfig = new SaxGolfUsgaDataLookup.Config(SessionContext, dbUpdateInfo);
SaxGolfUsgaDataLookup courseLookup = new SaxGolfUsgaDataLookup(courseLookupConfig);
List<SaxGolfUsgaDataLookup.ProvinceData> provinces = courseLookup.LookupUsgaProvincesForCountry("ENG");
SaLogger.Warn($"{SysUtil.Fn} Province lookup - found: {provinces.Count}");
if (courseLookup.HasErrorMessage())
SaLogger.Warn($"{SysUtil.Fn} Province lookup error: {courseLookup.GetErrorMessage()}");
foreach (SaxGolfUsgaDataLookup.ProvinceData province in provinces)
{
}
@@ -246,7 +199,10 @@ namespace Saxonite.Web.Api.App
// USGA Courses.
SaxGolfUsgaDataLookup.Config courseLookupConfig = new SaxGolfUsgaDataLookup.Config(SessionContext, dbUpdateInfo);
SaxGolfUsgaDataLookup courseLookup = new SaxGolfUsgaDataLookup(courseLookupConfig);
List<SaxGolfUsgaDataLookup.CourseData> courses = courseLookup.LookupUsgaCoursesForCountryAndProvince("ENG", "GB-NFK");
List<SaxGolfUsgaDataLookup.CourseData> courses = courseLookup.LookupUsgaCoursesForCountryAndProvince("ENG", "GB-CHE");
SaLogger.Warn($"{SysUtil.Fn} Course lookup - found: {courses.Count}");
if (courseLookup.HasErrorMessage())
SaLogger.Warn($"{SysUtil.Fn} Course lookup error: {courseLookup.GetErrorMessage()}");
foreach (SaxGolfUsgaDataLookup.CourseData course in courses)
{
}
@@ -254,10 +210,13 @@ namespace Saxonite.Web.Api.App
if (false)
{
// USGA Courses.
// USGA Markers.
SaxGolfUsgaDataLookup.Config courseLookupConfig = new SaxGolfUsgaDataLookup.Config(SessionContext, dbUpdateInfo);
SaxGolfUsgaDataLookup courseLookup = new SaxGolfUsgaDataLookup(courseLookupConfig);
List<SaxGolfUsgaDataLookup.MarkerData> markers = courseLookup.LookupUsgaMarkersForCourse(new SysId(20249));
List<SaxGolfUsgaDataLookup.MarkerData> markers = courseLookup.LookupUsgaMarkersForCourse(new SysId(22185));
SaLogger.Warn($"{SysUtil.Fn} Marker lookup - found: {markers.Count}");
if (courseLookup.HasErrorMessage())
SaLogger.Warn($"{SysUtil.Fn} Marker lookup error: {courseLookup.GetErrorMessage()}");
foreach (SaxGolfUsgaDataLookup.MarkerData marker in markers)
{
}