using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Dbas; using Saxonite.Base.App; using Saxonite.Net.Standard.Base.App; using Saxonite.Net.Standard.Base.Bus; using Saxonite.Net.Standard.Base.Bus.Reference; using System; using System.Collections.Generic; namespace Saxonite.Net.Standard.Base.Mgr.Reference { //======================================================================= partial class SaxReferenceGolfMgr { //******************************************************************* // Reference Mgr - Golf - USGA Province //******************************************************************* // Utilities. //------------------------------------------------------------------- // Create item. public abstract SaxGolfUsgaProvince CreateUsgaProvince(SysId countryId); //------------------------------------------------------------------- // Item exists. public bool UsgaProvinceExistsById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return false; SaxGolfUsgaProvince.Params prmUsgaProvince = new SaxGolfUsgaProvince.Params(); prmUsgaProvince.IdsIncluded.Add(id); prmUsgaProvince.StatusCat = SaxGolfUsgaProvince.StatusCat.Any; return GetUsgaProvinceCount(prmUsgaProvince) == 1; } //------------------------------------------------------------------- // Retrieve individual items. public abstract SaxGolfUsgaProvince GetUsgaProvince(SaxGolfUsgaProvince.Params prmUsgaProvince); public SaxGolfUsgaProvince GetUsgaProvinceById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return null; SaxGolfUsgaProvince.Params prmUsgaProvince = new SaxGolfUsgaProvince.Params(); prmUsgaProvince.IdsIncluded.Add(id); prmUsgaProvince.StatusCat = SaxGolfUsgaProvince.StatusCat.Any; return GetUsgaProvince(prmUsgaProvince); } //------------------------------------------------------------------- // Validate item data. public bool IsValidUsgaProvince(SaxGolfUsgaProvince usgaProvince) { ClearErrorState(); if (usgaProvince == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidUsgaProvinceData(usgaProvince.GetData(), new SaxGolfUsgaProvince.ErrField()); } public virtual bool IsValidUsgaProvinceData(SaxGolfUsgaProvince.Data data, SaxGolfUsgaProvince.ErrField errField) { ClearErrorState(); //--------------------------------------------------------------- // Country. if (errField.CountryId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.CountryId)) { errField.CountryId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Country must be specified"); } // Province code. if (errField.ProvinceCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ProvinceCode, "code", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceCode), true)) { errField.ProvinceCode = SacsHierarchyItem.ValidValue.Invalid; return false; } // ENT Province code. if (errField.EntProvinceCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.EntProvinceCode, "ENT code", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_EntProvinceCode))) { errField.EntProvinceCode = SacsHierarchyItem.ValidValue.Invalid; return false; } // Province name. if (errField.ProvinceName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ProvinceName, "name", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceName), true)) { errField.ProvinceName = SacsHierarchyItem.ValidValue.Invalid; return false; } //--------------------------------------------------------------- // Common properties. if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { if (!IsValidValue(data.StatusCode, "status", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SaxGolfUsgaProvince.ValidStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } //--------------------------------------------------------------- // Associated data - ignore for deleted items. if (!data.IsStatusDeleted) { // Country. if (errField.CountryId != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.CountryId)) { SaxGolfUsgaCountry.Params prmCountry = new SaxGolfUsgaCountry.Params(); prmCountry.IdsIncluded.Add(data.CountryId); prmCountry.StatusCat = SaxGolfUsgaCountry.StatusCat.NotDeleted; if (ReferenceGolfMgr.GetUsgaCountryCount(prmCountry) < 1) { errField.CountryId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Invalid country specified"); } } } //--------------------------------------------------------------- return true; } //------------------------------------------------------------------- // Item database interface. public abstract bool InsertUsgaProvince(SaxGolfUsgaProvince usgaProvince, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateUsgaProvince(SaxGolfUsgaProvince usgaProvince, DbUpdateInfo dbUpdateInfo); public virtual bool UsgaProvinceCanBeDeleted(SaxGolfUsgaProvince usgaProvince) { ClearErrorState(); return true; } public abstract bool DeleteUsgaProvince(SaxGolfUsgaProvince usgaProvince, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // Bulk updates. public class UsgaProvinceData { public String CountryCode { get; set; } public String ProvinceCode { get; set; } public String EntProvinceCode { get; set; } = null; public String ProvinceName { get; set; } = null; } /// /// Bulk update USGA Provinces. /// - Country code must be supplied to identify parent. /// - Province code must be supplied to act as identifier. /// - Other properties are validated as per province rules - check error state. /// - Other properties are left as is if null. /// public abstract bool BulkUpdateUsgaProvinces(List provinces, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // Item list. public abstract ColumnDfn GetUsgaProvinceColumnDfn(SaxGolfUsgaProvince.Column columnId, String caption = "", int width = 0); public abstract List GetUsgaProvinceQueryFilter(SaxGolfUsgaProvince.Params prmUsgaProvince); public abstract long GetUsgaProvinceCount(SaxGolfUsgaProvince.Params prmUsgaProvince); public abstract List GetUsgaProvinceList(SaxGolfUsgaProvince.Params prmUsgaProvince); public abstract DbResultSet ExecuteUsgaProvinceQuery(List columns, SaxGolfUsgaProvince.Params prmUsgaProvince); //------------------------------------------------------------------- /// /// Extract and format result set data value where specific handling is required. /// Where response is an invalid data value, format value using column.FormatValue(values). /// public virtual DataValue GetUsgaProvinceDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SaxGolfUsgaProvince.Column)column.Id) { //----------------------------------------------------------- // Notes. case SaxGolfUsgaProvince.Column.Notes: { value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); } break; //----------------------------------------------------------- // Status. case SaxGolfUsgaProvince.Column.Status_Desc: case SaxGolfUsgaProvince.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SaxGolfUsgaProvince.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDesc(status)); else if (column.Id == (int)SaxGolfUsgaProvince.Column.Status_Ind) value = new DataValue(SaxGolfUsgaProvince.GetStatusTriState(status)); } break; //----------------------------------------------------------- default: value = values.GetValue(column.DataName); break; } return value; } //------------------------------------------------------------------- } //======================================================================= }