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 Facility //******************************************************************* // Utilities. //------------------------------------------------------------------- // Create item. public abstract SaxGolfUsgaFacility CreateUsgaFacility(SysId provinceId); //------------------------------------------------------------------- // Item exists. public bool UsgaFacilityExistsById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return false; SaxGolfUsgaFacility.Params prmUsgaFacility = new SaxGolfUsgaFacility.Params(); prmUsgaFacility.IdsIncluded.Add(id); prmUsgaFacility.StatusCat = SaxGolfUsgaFacility.StatusCat.Any; return GetUsgaFacilityCount(prmUsgaFacility) == 1; } //------------------------------------------------------------------- // Retrieve individual items. public abstract SaxGolfUsgaFacility GetUsgaFacility(SaxGolfUsgaFacility.Params prmUsgaFacility); public SaxGolfUsgaFacility GetUsgaFacilityById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return null; SaxGolfUsgaFacility.Params prmUsgaFacility = new SaxGolfUsgaFacility.Params(); prmUsgaFacility.IdsIncluded.Add(id); prmUsgaFacility.StatusCat = SaxGolfUsgaFacility.StatusCat.Any; return GetUsgaFacility(prmUsgaFacility); } //------------------------------------------------------------------- // Validate item data. public bool IsValidUsgaFacility(SaxGolfUsgaFacility usgaFacility) { ClearErrorState(); if (usgaFacility == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidUsgaFacilityData(usgaFacility.GetData(), new SaxGolfUsgaFacility.ErrField()); } public virtual bool IsValidUsgaFacilityData(SaxGolfUsgaFacility.Data data, SaxGolfUsgaFacility.ErrField errField) { ClearErrorState(); //--------------------------------------------------------------- // Province. if (errField.ProvinceId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.ProvinceId)) { errField.ProvinceId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Province must be specified"); } // Facility code. if (errField.UsgaFacilityId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.UsgaFacilityId)) { errField.UsgaFacilityId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Facility Id must be specified"); } // Facility name. if (errField.FacilityName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.FacilityName, "name", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_FacilityName), true)) { errField.FacilityName = SacsHierarchyItem.ValidValue.Invalid; return false; } //--------------------------------------------------------------- // Common properties. if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_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.UsgaFacility_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SaxGolfUsgaFacility.ValidStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } //--------------------------------------------------------------- // Associated data - ignore for deleted items. if (!data.IsStatusDeleted) { // Province. if (errField.ProvinceId != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.ProvinceId)) { SaxGolfUsgaProvince.Params prmProvince = new SaxGolfUsgaProvince.Params(); prmProvince.IdsIncluded.Add(data.ProvinceId); prmProvince.StatusCat = SaxGolfUsgaProvince.StatusCat.NotDeleted; if (ReferenceGolfMgr.GetUsgaProvinceCount(prmProvince) < 1) { errField.ProvinceId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Invalid province specified"); } } } //--------------------------------------------------------------- return true; } //------------------------------------------------------------------- // Item database interface. public abstract bool InsertUsgaFacility(SaxGolfUsgaFacility usgaFacility, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateUsgaFacility(SaxGolfUsgaFacility usgaFacility, DbUpdateInfo dbUpdateInfo); public virtual bool UsgaFacilityCanBeDeleted(SaxGolfUsgaFacility usgaFacility) { ClearErrorState(); return true; } public abstract bool DeleteUsgaFacility(SaxGolfUsgaFacility usgaFacility, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // Bulk updates. public class UsgaFacilityData { public String ProvinceCode { 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; public string City { get; set; } = null; public string PostalCode { get; set; } = null; public string Email { get; set; } = null; public string Telephone { get; set; } = null; } /// /// Bulk update USGA Facilities. /// - Province code must be supplied to identify parent. /// - Facility Id 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 BulkUpdateUsgaFacilities(List facilities, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // Item list. public abstract ColumnDfn GetUsgaFacilityColumnDfn(SaxGolfUsgaFacility.Column columnId, String caption = "", int width = 0); public abstract List GetUsgaFacilityQueryFilter(SaxGolfUsgaFacility.Params prmUsgaFacility); public abstract long GetUsgaFacilityCount(SaxGolfUsgaFacility.Params prmUsgaFacility); public abstract List GetUsgaFacilityList(SaxGolfUsgaFacility.Params prmUsgaFacility); public abstract DbResultSet ExecuteUsgaFacilityQuery(List columns, SaxGolfUsgaFacility.Params prmUsgaFacility); //------------------------------------------------------------------- /// /// 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 GetUsgaFacilityDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SaxGolfUsgaFacility.Column)column.Id) { //----------------------------------------------------------- // Notes. case SaxGolfUsgaFacility.Column.Notes: { value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); } break; //----------------------------------------------------------- // Status. case SaxGolfUsgaFacility.Column.Status_Desc: case SaxGolfUsgaFacility.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SaxGolfUsgaFacility.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDesc(status)); else if (column.Id == (int)SaxGolfUsgaFacility.Column.Status_Ind) value = new DataValue(SaxGolfUsgaFacility.GetStatusTriState(status)); } break; //----------------------------------------------------------- default: value = values.GetValue(column.DataName); break; } return value; } //------------------------------------------------------------------- } //======================================================================= }