This commit is contained in:
2024-06-13 14:29:58 +01:00
parent 2f6395485a
commit 60427e8230
114 changed files with 2176 additions and 1124 deletions
@@ -83,7 +83,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
catch (Exception exc)
{
SetErrorState("Database query exception");
SaLogger.Warn(GetType().Name + ".GetUsgaFacility\n\tQuery: " + dbCommand.CommandText + "\n\t" + ExceptionUtil.GetLogMessage(exc));
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
}
}
return usgaFacility;
@@ -216,6 +216,14 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
dbUsgaFacility._ProvinceId = SysId.ToInt(usgaFacility.ProvinceId);
dbUsgaFacility._FacilityId = SysId.ToLong(usgaFacility.FacilityId);
dbUsgaFacility._FacilityName = usgaFacility.FacilityName;
dbUsgaFacility._Address1 = usgaFacility.Address1;
dbUsgaFacility._Address2 = usgaFacility.Address2;
dbUsgaFacility._City = usgaFacility.City;
dbUsgaFacility._PostalCode = usgaFacility.PostalCode;
dbUsgaFacility._Latitude = usgaFacility.Latitude;
dbUsgaFacility._Longitude = usgaFacility.Longitude;
dbUsgaFacility._Email = usgaFacility.Email;
dbUsgaFacility._Telephone = usgaFacility.Telephone;
// Common.
dbUsgaFacility._Notes = usgaFacility.Notes;
dbUsgaFacility._Status = SacsSystem.GetStatusCode(usgaFacility.Status);
@@ -236,6 +244,14 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
usgaFacility.ProvinceId = new SysId(dbUsgaFacility._ProvinceId);
usgaFacility.FacilityId = new SysId(dbUsgaFacility._FacilityId);
usgaFacility.FacilityName = dbUsgaFacility._FacilityName;
usgaFacility.Address1 = dbUsgaFacility._Address1;
usgaFacility.Address2 = dbUsgaFacility._Address2;
usgaFacility.City = dbUsgaFacility._City;
usgaFacility.PostalCode = dbUsgaFacility._PostalCode;
usgaFacility.Latitude = dbUsgaFacility._Latitude;
usgaFacility.Longitude = dbUsgaFacility._Longitude;
usgaFacility.Email = dbUsgaFacility._Email;
usgaFacility.Telephone = dbUsgaFacility._Telephone;
// Common.
usgaFacility.Notes = dbUsgaFacility._Notes;
usgaFacility.Status = SacsSystem.GetStatusForCode(dbUsgaFacility._Status);
@@ -266,6 +282,11 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
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 (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;
if (facility.City != null && !IsValidValue(facility.City, "city", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_City))) return false;
if (facility.Email != null && !IsValidValue(facility.Email, "email", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Email))) return false;
if (facility.Telephone != null && !IsValidValue(facility.Telephone, "telephone", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Telephone))) return false;
facilitiesToUpdate.Add(facility);
}
int MaxBulkUpdateBatchSize = 64;
@@ -281,26 +302,39 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
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");
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("From");
query.Add("(");
query.Add("Select '' ProvinceCode, '' FacilityId, '' FacilityName");
query.Add("Select '' ProvinceCode, '' FacilityId, '' 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)}, " + (facility.FacilityName != null ? $"'{DbQuery.FormatForCondition(facility.FacilityName)}'" : "Null"));
query.Add($"Union Select '{DbQuery.FormatForCondition(facility.ProvinceCode)}', {SysId.ToString(facility.FacilityId)}, " +
(facility.FacilityName != null ? $"'{DbQuery.FormatForCondition(facility.FacilityName)}'" : "Null") + "," +
(facility.Address1 != null ? $"'{DbQuery.FormatForCondition(facility.Address1)}'" : "Null") + "," +
(facility.Address2 != null ? $"'{DbQuery.FormatForCondition(facility.Address2)}'" : "Null") + "," +
(facility.City != null ? $"'{DbQuery.FormatForCondition(facility.City)}'" : "Null") + "," +
(facility.PostalCode != null ? $"'{DbQuery.FormatForCondition(facility.PostalCode)}'" : "Null") + "," +
(facility.Email != null ? $"'{DbQuery.FormatForCondition(facility.Email)}'" : "Null") + "," +
(facility.Telephone != null ? $"'{DbQuery.FormatForCondition(facility.Telephone)}'" : "Null"));
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("When Matched And ((dFty.FacilityName Is Not Null And uFty.FacilityName!=dFty.FacilityName) Or uFty.Status!=@statusActive)");
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),");
query.Add(" Address1=Coalesce(dFty.Address1,uFty.Address1),");
query.Add(" Address2=Coalesce(dFty.Address2,uFty.Address2),");
query.Add(" City=Coalesce(dFty.City,uFty.City),");
query.Add(" PostalCode=Coalesce(dFty.PostalCode,uFty.PostalCode),");
query.Add(" Email=Coalesce(dFty.Email,uFty.Email),");
query.Add(" Telephone=Coalesce(dFty.Telephone,uFty.Telephone),");
query.Add(" Status=@statusActive,");
query.Add(" UpdateOn=@updateOn,");
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,Notes,Flags,Status,CreateOn,CreateBy,CreateHost,UpdateOn,UpdateBy,UpdateHost)");
query.Add($"Values (dFty.ProvinceId,dFty.FacilityId,dFty.FacilityName,'',0,@statusActive,@updateOn,@updateBy,@updateHost,@updateOn,@updateBy,@updateHost)");
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(";");
//SaLogger.Info($"{SysUtil.Fn} Bulk USGA Facility update query:\n\t{query.Concat("\n\t")}");
@@ -522,6 +556,7 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
// Item list.
public override List<SaxGolfUsgaFacility> GetUsgaFacilityList(SaxGolfUsgaFacility.Params prm)
{
ClearErrorState();
List<SaxGolfUsgaFacility> userRoles = new List<SaxGolfUsgaFacility>();
DbQuery qry = new DbQuery(ReferenceDatabase.DbmsType);
qry.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility), aliasUsgaFacility);
@@ -549,7 +584,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
}
catch (Exception exc)
{
SaLogger.Warn(GetType().Name + ".GetUsgaFacilityList\n\tQuery: " + dbCommand.CommandText + "\n\t" + ExceptionUtil.GetLogMessage(exc));
SetErrorState("Database query exception");
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
}
}
return userRoles;