From 8f73e616cab799bd6e5795a5a073fc05a0d82082 Mon Sep 17 00:00:00 2001 From: andy Date: Tue, 18 Jun 2024 18:08:11 +0100 Subject: [PATCH] 1.2.11.10 Golf Courses --- ...fUsgaDataLookup-ScheduledUsgaDataLookup.cs | 4 +- .../Base/Procs/SaxGolfUsgaDataLookup.cs | 77 ++++----- .../Reference/ReferenceGolfController-Ajax.cs | 152 +++++++++++++++++- .../Localisation/SaxAdminProperties.resx | 12 ++ .../Views/Reference/Golf/Index.cshtml | 53 +++++- SaxoniteCoreWebAdmin/wwwroot/css/sax-data.css | 9 +- SaxoniteCoreWebAdmin/wwwroot/css/sax-form.css | 2 +- .../wwwroot/js/sax-ref-golf.js | 66 +++++++- SaxoniteStandardBase/Base/App/Sax-Version.cs | 2 +- .../Base/App/SaxDbDfn_Core.cs | 2 +- .../Base/App/SaxDbDfn_Reference.cs | 22 ++- .../Base/App/SaxDbDfn_Support.cs | 2 +- .../Base/Bus/Reference/SaxGolfUsgaCountry.cs | 16 ++ .../Base/Bus/Reference/SaxGolfUsgaCourse.cs | 36 +++-- .../Base/Bus/Reference/SaxGolfUsgaFacility.cs | 22 +-- .../Base/Bus/Reference/SaxGolfUsgaMarker.cs | 23 +-- .../Base/Bus/Reference/SaxGolfUsgaProvince.cs | 16 ++ .../SaxReferenceGolfMgr-UsgaCourse.cs | 6 +- .../SaxReferenceGolfMgr-UsgaFacility.cs | 6 +- .../SaxReferenceGolfMgr-UsgaMarker.cs | 10 +- .../Dbas/Internal/Core/ActivityFeedback_Db.cs | 2 +- .../Dbas/Internal/Core/ActivityIndex_Db.cs | 2 +- .../Dbas/Internal/Core/Article_Db.cs | 2 +- .../Dbas/Internal/Core/ItemAddress_Db.cs | 2 +- .../Dbas/Internal/Core/ItemAssociation_Db.cs | 2 +- .../Dbas/Internal/Core/ItemImage_Db.cs | 2 +- .../Dbas/Internal/Core/ItemSport_Db.cs | 2 +- .../Internal/Core/OrganisationEvent_Db.cs | 2 +- .../Core/OrganisationOpportunity_Db.cs | 2 +- .../Dbas/Internal/Core/Organisation_Db.cs | 2 +- .../Dbas/Internal/Core/Region_Db.cs | 2 +- .../Dbas/Internal/Core/Sport_Db.cs | 2 +- .../Dbas/Internal/Core/UserAccount_Db.cs | 2 +- .../Dbas/Internal/Core/UserActivity_Db.cs | 2 +- .../Dbas/Internal/Core/UserConfig_Db.cs | 2 +- .../Dbas/Internal/Core/UserEligibility_Db.cs | 2 +- .../Dbas/Internal/Core/UserOnline_Db.cs | 2 +- .../Dbas/Internal/Core/UserOrganisation_Db.cs | 2 +- .../Dbas/Internal/Core/UserRole_Db.cs | 2 +- .../Dbas/Internal/Core/UserSession_Db.cs | 2 +- .../Internal/Core/UserSportExperience_Db.cs | 2 +- .../Dbas/Internal/Core/UserSport_Db.cs | 2 +- .../Internal/Reference/Golf_UsgaCountry_Db.cs | 9 +- .../Internal/Reference/Golf_UsgaCourse_Db.cs | 21 ++- .../Reference/Golf_UsgaFacility_Db.cs | 14 +- .../Internal/Reference/Golf_UsgaMarker_Db.cs | 14 +- .../Reference/Golf_UsgaProvince_Db.cs | 9 +- .../Internal/Support/UserReportComment_Db.cs | 2 +- .../Dbas/Internal/Support/UserReport_Db.cs | 2 +- .../SaxReferenceGolfMgr_Dbas-UsgaCountry.cs | 53 +++++- .../SaxReferenceGolfMgr_Dbas-UsgaCourse.cs | 97 ++++++++--- .../SaxReferenceGolfMgr_Dbas-UsgaFacility.cs | 30 ++-- .../SaxReferenceGolfMgr_Dbas-UsgaMarker.cs | 41 ++--- .../SaxReferenceGolfMgr_Dbas-UsgaProvince.cs | 46 +++++- .../Resources/Database/SaxDbDfn_Reference.xml | 127 ++++++++++----- SaxoniteWebApi/Api/App/SaxApplication_Api.cs | 71 ++------ 56 files changed, 802 insertions(+), 316 deletions(-) diff --git a/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup-ScheduledUsgaDataLookup.cs b/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup-ScheduledUsgaDataLookup.cs index 29d73cc..0d5305a 100644 --- a/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup-ScheduledUsgaDataLookup.cs +++ b/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup-ScheduledUsgaDataLookup.cs @@ -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 annotations = new List(); 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}."); } diff --git a/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup.cs b/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup.cs index 8191ab2..1a47ed6 100644 --- a/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup.cs +++ b/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup.cs @@ -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 facilitiesData = new Dictionary(); 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 coursesData = new Dictionary(); 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 /// /// Cleanse Facility name by removing generic phrases, eg. golf club, hotel etc. /// - 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) { diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax.cs b/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax.cs index bc8f67e..96eab0f 100644 --- a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax.cs +++ b/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax.cs @@ -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 columns = new List() { - 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 columns = new List() { - 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 Courses { get; } = new List(); + } + //------------------------------------------------------------------- + [HttpPost] + [Route("Reference/Golf/Ajax/GetUsgaCourseList")] + [Route("Reference/Golf/Ajax/GetUsgaCourses")] + [Route("Reference/Golf/Ajax/GetCourseList")] + [Route("Reference/Golf/Ajax/GetCourses")] + public IActionResult Ajax_GetCourseList(Model_ReferenceGolf model) + { + String 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 columns = new List() + { + colId, colUsgaCourseId, colCaption, colCourseName, colFullName, colAddress1, colAddress2, colCity, colMarkerCount_All, colMarkerCount_Active, colFlags, colStatus + }; + + // Item filter. + SaxGolfUsgaCourse.Params prmUsgaCourse = new SaxGolfUsgaCourse.Params(); + if (StringUtil.ToLong(model.Filter.ProvinceId) > 0) + prmUsgaCourse.ProvinceIdsIncluded.Add(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); + } + //------------------------------------------------------------------- } //======================================================================= diff --git a/SaxoniteCoreWebAdmin/Localisation/SaxAdminProperties.resx b/SaxoniteCoreWebAdmin/Localisation/SaxAdminProperties.resx index 3019d65..a334b55 100644 --- a/SaxoniteCoreWebAdmin/Localisation/SaxAdminProperties.resx +++ b/SaxoniteCoreWebAdmin/Localisation/SaxAdminProperties.resx @@ -261,6 +261,9 @@ Cancel + + Caption + Category @@ -297,6 +300,12 @@ County + + Course + + + Course Id + Courses @@ -354,6 +363,9 @@ Forgotten password? + + Full name + Header row diff --git a/SaxoniteCoreWebAdmin/Views/Reference/Golf/Index.cshtml b/SaxoniteCoreWebAdmin/Views/Reference/Golf/Index.cshtml index e801bc3..b100bba 100644 --- a/SaxoniteCoreWebAdmin/Views/Reference/Golf/Index.cshtml +++ b/SaxoniteCoreWebAdmin/Views/Reference/Golf/Index.cshtml @@ -88,7 +88,7 @@
-
+
@@ -98,6 +98,7 @@ + @@ -111,6 +112,7 @@ +
@Localiser["label.priority"] @Localiser["label.provinces"] @Localiser["label.clubs"]@Localiser["label.clubs"]% @Localiser["label.status"]
@@ -132,7 +134,7 @@
-
+
@@ -142,6 +144,7 @@ + @@ -155,6 +158,7 @@ +
@Localiser["label.priority"] @Localiser["label.clubs"] @Localiser["label.courses"]@Localiser["label.markers"] @Localiser["label.status"]
@@ -162,11 +166,48 @@ } @* Reference - Golf - Courses *@ -
-
-
@Localiser["label.courses"]
+ @using (@Html.BeginForm(FormMethod.Post, new { @id = "frmCourses", @class = "sax-form", @onSubmit = "return false;" })) + { + @Html.HiddenFor(Model => Model.Filter.ProvinceId, new { @class = "FilterProvinceId" }) +
+
+
+
+ @Localiser["label.search"] + +
+
@Localiser["label.courses"]
+
+
+
+
+
+ + + + + + + + + + + + +
@Localiser["label.course.id"]@Localiser["label.caption"]@Localiser["label.location"]@Localiser["label.priority"]@Localiser["label.markers"]@Localiser["label.status"]
+
+ + + + + + + + + +
-
+ } @* Icons. *@
diff --git a/SaxoniteCoreWebAdmin/wwwroot/css/sax-data.css b/SaxoniteCoreWebAdmin/wwwroot/css/sax-data.css index 448d63e..b1873d6 100644 --- a/SaxoniteCoreWebAdmin/wwwroot/css/sax-data.css +++ b/SaxoniteCoreWebAdmin/wwwroot/css/sax-data.css @@ -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 diff --git a/SaxoniteCoreWebAdmin/wwwroot/css/sax-form.css b/SaxoniteCoreWebAdmin/wwwroot/css/sax-form.css index 581bc96..632bcdf 100644 --- a/SaxoniteCoreWebAdmin/wwwroot/css/sax-form.css +++ b/SaxoniteCoreWebAdmin/wwwroot/css/sax-form.css @@ -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; diff --git a/SaxoniteCoreWebAdmin/wwwroot/js/sax-ref-golf.js b/SaxoniteCoreWebAdmin/wwwroot/js/sax-ref-golf.js index e97a645..52301cf 100644 --- a/SaxoniteCoreWebAdmin/wwwroot/js/sax-ref-golf.js +++ b/SaxoniteCoreWebAdmin/wwwroot/js/sax-ref-golf.js @@ -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); diff --git a/SaxoniteStandardBase/Base/App/Sax-Version.cs b/SaxoniteStandardBase/Base/App/Sax-Version.cs index c10a68e..a1a71a0 100644 --- a/SaxoniteStandardBase/Base/App/Sax-Version.cs +++ b/SaxoniteStandardBase/Base/App/Sax-Version.cs @@ -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 () diff --git a/SaxoniteStandardBase/Base/App/SaxDbDfn_Core.cs b/SaxoniteStandardBase/Base/App/SaxDbDfn_Core.cs index 57a730d..5b1372a 100644 --- a/SaxoniteStandardBase/Base/App/SaxDbDfn_Core.cs +++ b/SaxoniteStandardBase/Base/App/SaxDbDfn_Core.cs @@ -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 { diff --git a/SaxoniteStandardBase/Base/App/SaxDbDfn_Reference.cs b/SaxoniteStandardBase/Base/App/SaxDbDfn_Reference.cs index d2afc21..cf879d1 100644 --- a/SaxoniteStandardBase/Base/App/SaxDbDfn_Reference.cs +++ b/SaxoniteStandardBase/Base/App/SaxDbDfn_Reference.cs @@ -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), diff --git a/SaxoniteStandardBase/Base/App/SaxDbDfn_Support.cs b/SaxoniteStandardBase/Base/App/SaxDbDfn_Support.cs index 79e45c3..0972b83 100644 --- a/SaxoniteStandardBase/Base/App/SaxDbDfn_Support.cs +++ b/SaxoniteStandardBase/Base/App/SaxDbDfn_Support.cs @@ -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 { diff --git a/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaCountry.cs b/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaCountry.cs index 20d3158..64030e5 100644 --- a/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaCountry.cs +++ b/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaCountry.cs @@ -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, + /// Facility population %. + 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. diff --git a/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaCourse.cs b/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaCourse.cs index 10a8793..d6ea1ca 100644 --- a/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaCourse.cs +++ b/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaCourse.cs @@ -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 ProvinceIdsIncluded { get; } = new List(); public List FacilityIdsIncluded { get; } = new List(); /// USGA Course Ids. - public List CourseIdsIncluded { get; } = new List(); + public List UsgaCourseIdsIncluded { get; } = new List(); /// Generic filter - partial name, address etc. public String CourseFilter { get; set; } public String CourseNameFull { get; set; } diff --git a/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaFacility.cs b/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaFacility.cs index d315e21..9b20d76 100644 --- a/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaFacility.cs +++ b/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaFacility.cs @@ -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 IdsExcluded { get; } = new List(); public List ProvinceIdsIncluded { get; } = new List(); /// USGA Facility Ids. - public List FacilityIdsIncluded { get; } = new List(); + public List UsgaFacilityIdsIncluded { get; } = new List(); /// Generic filter - partial province code or name. public String FacilityFilter { get; set; } public String FacilityNameFull { get; set; } diff --git a/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaMarker.cs b/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaMarker.cs index 6799802..410c17c 100644 --- a/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaMarker.cs +++ b/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaMarker.cs @@ -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 IdsExcluded { get; } = new List(); public List CourseIdsIncluded { get; } = new List(); /// USGA Marker Ids. - public List MarkerIdsIncluded { get; } = new List(); + public List UsgaMarkerIdsIncluded { get; } = new List(); /// Generic filter - partial caption, holes, tee, gender etc. public String MarkerFilter { get; set; } // Common properties. diff --git a/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaProvince.cs b/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaProvince.cs index 5e47759..652c132 100644 --- a/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaProvince.cs +++ b/SaxoniteStandardBase/Base/Bus/Reference/SaxGolfUsgaProvince.cs @@ -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, + /// Marker population %. + 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. diff --git a/SaxoniteStandardBase/Base/Mgr/Reference/SaxReferenceGolfMgr-UsgaCourse.cs b/SaxoniteStandardBase/Base/Mgr/Reference/SaxReferenceGolfMgr-UsgaCourse.cs index b5a52ec..f326485 100644 --- a/SaxoniteStandardBase/Base/Mgr/Reference/SaxReferenceGolfMgr-UsgaCourse.cs +++ b/SaxoniteStandardBase/Base/Mgr/Reference/SaxReferenceGolfMgr-UsgaCourse.cs @@ -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; diff --git a/SaxoniteStandardBase/Base/Mgr/Reference/SaxReferenceGolfMgr-UsgaFacility.cs b/SaxoniteStandardBase/Base/Mgr/Reference/SaxReferenceGolfMgr-UsgaFacility.cs index 37fc73a..253a209 100644 --- a/SaxoniteStandardBase/Base/Mgr/Reference/SaxReferenceGolfMgr-UsgaFacility.cs +++ b/SaxoniteStandardBase/Base/Mgr/Reference/SaxReferenceGolfMgr-UsgaFacility.cs @@ -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; diff --git a/SaxoniteStandardBase/Base/Mgr/Reference/SaxReferenceGolfMgr-UsgaMarker.cs b/SaxoniteStandardBase/Base/Mgr/Reference/SaxReferenceGolfMgr-UsgaMarker.cs index 5d1e501..52999d7 100644 --- a/SaxoniteStandardBase/Base/Mgr/Reference/SaxReferenceGolfMgr-UsgaMarker.cs +++ b/SaxoniteStandardBase/Base/Mgr/Reference/SaxReferenceGolfMgr-UsgaMarker.cs @@ -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; } diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/ActivityFeedback_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/ActivityFeedback_Db.cs index 16bd66a..4796855 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/ActivityFeedback_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/ActivityFeedback_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/ActivityIndex_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/ActivityIndex_Db.cs index b5ed5ba..9ffc1bf 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/ActivityIndex_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/ActivityIndex_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/Article_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/Article_Db.cs index d0d90b1..d6279be 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/Article_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/Article_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/ItemAddress_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/ItemAddress_Db.cs index a1477d1..f1b3a79 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/ItemAddress_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/ItemAddress_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/ItemAssociation_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/ItemAssociation_Db.cs index bd6ba5c..ded02cb 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/ItemAssociation_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/ItemAssociation_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/ItemImage_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/ItemImage_Db.cs index e643346..ba966e4 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/ItemImage_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/ItemImage_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/ItemSport_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/ItemSport_Db.cs index 81cc64a..fab1716 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/ItemSport_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/ItemSport_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/OrganisationEvent_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/OrganisationEvent_Db.cs index f4d002e..ef0ac57 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/OrganisationEvent_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/OrganisationEvent_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/OrganisationOpportunity_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/OrganisationOpportunity_Db.cs index 7413448..b0db1cc 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/OrganisationOpportunity_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/OrganisationOpportunity_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/Organisation_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/Organisation_Db.cs index 1c67841..4970ed8 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/Organisation_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/Organisation_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/Region_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/Region_Db.cs index d96e39d..e97421f 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/Region_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/Region_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/Sport_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/Sport_Db.cs index 630614b..725913a 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/Sport_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/Sport_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/UserAccount_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/UserAccount_Db.cs index ef7799c..b041e4c 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/UserAccount_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/UserAccount_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/UserActivity_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/UserActivity_Db.cs index 8f7bc14..43624a8 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/UserActivity_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/UserActivity_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/UserConfig_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/UserConfig_Db.cs index 082277d..8579490 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/UserConfig_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/UserConfig_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/UserEligibility_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/UserEligibility_Db.cs index 89ed6b2..feafa52 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/UserEligibility_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/UserEligibility_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/UserOnline_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/UserOnline_Db.cs index 87a2533..fe23948 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/UserOnline_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/UserOnline_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/UserOrganisation_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/UserOrganisation_Db.cs index efa0add..fa4e519 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/UserOrganisation_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/UserOrganisation_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/UserRole_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/UserRole_Db.cs index e83636c..4fa028f 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/UserRole_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/UserRole_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/UserSession_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/UserSession_Db.cs index a46f0ae..6a216c8 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/UserSession_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/UserSession_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/UserSportExperience_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/UserSportExperience_Db.cs index 5078d89..44007be 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/UserSportExperience_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/UserSportExperience_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Core/UserSport_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Core/UserSport_Db.cs index a757f80..913966a 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Core/UserSport_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Core/UserSport_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaCountry_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaCountry_Db.cs index b608b3e..94b781d 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaCountry_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaCountry_Db.cs @@ -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 fieldsNullable { get; } = new List() { "EntCountryCode", + "ProvincesUpdateAt", }; protected static List fieldsIgnoreOnUpdate { get; } = new List() { @@ -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); diff --git a/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaCourse_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaCourse_Db.cs index 8845b3c..08ec688 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaCourse_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaCourse_Db.cs @@ -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 fieldsIgnoreOnUpdate { get; } = new List() { @@ -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); diff --git a/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaFacility_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaFacility_Db.cs index bcc9ddb..390793a 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaFacility_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaFacility_Db.cs @@ -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); diff --git a/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaMarker_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaMarker_Db.cs index 4ed5a0f..995e6b4 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaMarker_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaMarker_Db.cs @@ -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); diff --git a/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaProvince_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaProvince_Db.cs index c557c15..d1306fa 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaProvince_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Reference/Golf_UsgaProvince_Db.cs @@ -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 fieldsNullable { get; } = new List() { + "CoursesUpdateAt", }; protected static List fieldsIgnoreOnUpdate { get; } = new List() { @@ -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); diff --git a/SaxoniteStandardDbas/Dbas/Internal/Support/UserReportComment_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Support/UserReportComment_Db.cs index 0d20dfa..7367980 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Support/UserReportComment_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Support/UserReportComment_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Internal/Support/UserReport_Db.cs b/SaxoniteStandardDbas/Dbas/Internal/Support/UserReport_Db.cs index cc9a48a..6694820 100644 --- a/SaxoniteStandardDbas/Dbas/Internal/Support/UserReport_Db.cs +++ b/SaxoniteStandardDbas/Dbas/Internal/Support/UserReport_Db.cs @@ -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 { diff --git a/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaCountry.cs b/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaCountry.cs index f3bf142..85162fb 100644 --- a/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaCountry.cs +++ b/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaCountry.cs @@ -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 query = new List(); 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 subQuery = new List(); + 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)); diff --git a/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaCourse.cs b/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaCourse.cs index 2e64679..27c7e4c 100644 --- a/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaCourse.cs +++ b/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaCourse.cs @@ -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 query = new List(); 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 cols = new List(); + 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)); diff --git a/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaFacility.cs b/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaFacility.cs index 3c4e0aa..69d0d20 100644 --- a/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaFacility.cs +++ b/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaFacility.cs @@ -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 query = new List(); 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. diff --git a/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaMarker.cs b/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaMarker.cs index 076eb82..6a6fe26 100644 --- a/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaMarker.cs +++ b/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaMarker.cs @@ -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 query = new List(); 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)) diff --git a/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaProvince.cs b/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaProvince.cs index 0d42fd0..3504757 100644 --- a/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaProvince.cs +++ b/SaxoniteStandardDbas/Dbas/Mgr/Reference/SaxReferenceGolfMgr_Dbas-UsgaProvince.cs @@ -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 query = new List(); 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 subQuery = new List(); + 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)); diff --git a/SaxoniteStandardDbas/Resources/Database/SaxDbDfn_Reference.xml b/SaxoniteStandardDbas/Resources/Database/SaxDbDfn_Reference.xml index fb3602d..0722e0b 100644 --- a/SaxoniteStandardDbas/Resources/Database/SaxDbDfn_Reference.xml +++ b/SaxoniteStandardDbas/Resources/Database/SaxDbDfn_Reference.xml @@ -78,6 +78,23 @@ golf UsgaCountry
5 + ProvincesUpdateAt + DateTime + + 93 + smalldatetime + false + 16 + 16 + 0 + Nullable + true + + + + golf + UsgaCountry
+ 6 Notes VarChar @@ -94,7 +111,7 @@ golf UsgaCountry
- 6 + 7 Flags SmallInt @@ -111,7 +128,7 @@ golf UsgaCountry
- 7 + 8 Status VarChar @@ -128,7 +145,7 @@ golf UsgaCountry
- 8 + 9 CreateOn DateTime @@ -145,7 +162,7 @@ golf UsgaCountry
- 9 + 10 CreateBy Int @@ -162,7 +179,7 @@ golf UsgaCountry
- 10 + 11 CreateHost VarChar @@ -179,7 +196,7 @@ golf UsgaCountry
- 11 + 12 UpdateOn DateTime @@ -196,7 +213,7 @@ golf UsgaCountry
- 12 + 13 UpdateBy Int @@ -213,7 +230,7 @@ golf UsgaCountry
- 13 + 14 UpdateHost VarChar @@ -314,7 +331,7 @@ golf UsgaCourse
3 - CourseId + UsgaCourseId BigInt -5 @@ -535,6 +552,23 @@ golf UsgaCourse
16 + MarkersUpdateAt + DateTime + + 93 + smalldatetime + false + 16 + 16 + 0 + Nullable + true + +
+ + golf + UsgaCourse
+ 17 MarkersData VarChar @@ -551,7 +585,7 @@ golf UsgaCourse
- 17 + 18 Notes VarChar @@ -568,7 +602,7 @@ golf UsgaCourse
- 18 + 19 Flags SmallInt @@ -585,7 +619,7 @@ golf UsgaCourse
- 19 + 20 Status VarChar @@ -602,7 +636,7 @@ golf UsgaCourse
- 20 + 21 CreateOn DateTime @@ -619,7 +653,7 @@ golf UsgaCourse
- 21 + 22 CreateBy Int @@ -636,7 +670,7 @@ golf UsgaCourse
- 22 + 23 CreateHost VarChar @@ -653,7 +687,7 @@ golf UsgaCourse
- 23 + 24 UpdateOn DateTime @@ -670,7 +704,7 @@ golf UsgaCourse
- 24 + 25 UpdateBy Int @@ -687,7 +721,7 @@ golf UsgaCourse
- 25 + 26 UpdateHost VarChar @@ -712,8 +746,8 @@ false false false - 15 - 182 + 35 + 405 false @@ -738,7 +772,7 @@ 1 - CourseId + UsgaCourseId true @@ -808,7 +842,7 @@ golf UsgaFacility
3 - FacilityId + UsgaFacilityId BigInt -5 @@ -1138,8 +1172,8 @@ false false false - 4 - 144 + 8 + 329 false @@ -1164,7 +1198,7 @@ 1 - FacilityId + UsgaFacilityId true @@ -1234,7 +1268,7 @@ golf UsgaMarker
3 - MarkerId + UsgaMarkerId BigInt -5 @@ -1581,8 +1615,8 @@ false false false - 2 - 91 + 9 + 423 false @@ -1688,6 +1722,23 @@ golf UsgaProvince
6 + CoursesUpdateAt + DateTime + + 93 + smalldatetime + false + 16 + 16 + 0 + Nullable + true + +
+ + golf + UsgaProvince
+ 7 Notes VarChar @@ -1704,7 +1755,7 @@ golf UsgaProvince
- 7 + 8 Flags SmallInt @@ -1721,7 +1772,7 @@ golf UsgaProvince
- 8 + 9 Status VarChar @@ -1738,7 +1789,7 @@ golf UsgaProvince
- 9 + 10 CreateOn DateTime @@ -1755,7 +1806,7 @@ golf UsgaProvince
- 10 + 11 CreateBy Int @@ -1772,7 +1823,7 @@ golf UsgaProvince
- 11 + 12 CreateHost VarChar @@ -1789,7 +1840,7 @@ golf UsgaProvince
- 12 + 13 UpdateOn DateTime @@ -1806,7 +1857,7 @@ golf UsgaProvince
- 13 + 14 UpdateBy Int @@ -1823,7 +1874,7 @@ golf UsgaProvince
- 14 + 15 UpdateHost VarChar @@ -1848,8 +1899,8 @@ false false false - 13 - 913 + 14 + 952 false diff --git a/SaxoniteWebApi/Api/App/SaxApplication_Api.cs b/SaxoniteWebApi/Api/App/SaxApplication_Api.cs index 78f83f4..a576cdd 100644 --- a/SaxoniteWebApi/Api/App/SaxApplication_Api.cs +++ b/SaxoniteWebApi/Api/App/SaxApplication_Api.cs @@ -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 disposableItems = new DisposableCollection()) - { - var refGolfMgr = System.CreateReferenceGolfMgr(SessionContext, null); - disposableItems.Add(refGolfMgr); - - // All countries. - SaxGolfUsgaCountry.Params prmCountry = new SaxGolfUsgaCountry.Params(); - prmCountry.StatusCat = SaxGolfUsgaCountry.StatusCat.Any; - List 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 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 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 courses = courseLookup.LookupUsgaCoursesForCountryAndProvince("ENG", "GB-NFK"); + List 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 markers = courseLookup.LookupUsgaMarkersForCourse(new SysId(20249)); + List 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) { }