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 System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Saxonite.Net.Standard.Base.Mgr { //======================================================================= partial class SaxItemDataMgr { //******************************************************************* // Item Data Mgr - Item Sport //******************************************************************* // Utilities. //------------------------------------------------------------------- // Create item. public abstract SaxItemAssociation CreateItemAssociation(ItemId itemIdFrom, ItemId itemIdTo, Sax.AssociationType associationType); //------------------------------------------------------------------- // Item exists. public bool ItemAssociationExistsById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return false; SaxItemAssociation.Params prmItemAssociation = new SaxItemAssociation.Params(); prmItemAssociation.IdsIncluded.Add(id); prmItemAssociation.StatusCat = SaxItemAssociation.StatusCat.Any; return GetItemAssociationCount(prmItemAssociation) == 1; } //------------------------------------------------------------------- // Retrieve individual items. public abstract SaxItemAssociation GetItemAssociation(SaxItemAssociation.Params prmItemAssociation); public SaxItemAssociation GetItemAssociationById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return null; SaxItemAssociation.Params prmItemAssociation = new SaxItemAssociation.Params(); prmItemAssociation.IdsIncluded.Add(id); prmItemAssociation.StatusCat = SaxItemAssociation.StatusCat.Any; return GetItemAssociation(prmItemAssociation); } //------------------------------------------------------------------- // Validate item data. public bool IsValidItemAssociation(SaxItemAssociation itemAssociation) { ClearErrorState(); if (itemAssociation == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidItemAssociationData(itemAssociation.GetData(), new SaxItemAssociation.ErrField()); } public virtual bool IsValidItemAssociationData(SaxItemAssociation.Data data, SaxItemAssociation.ErrField errField) { ClearErrorState(); //--------------------------------------------------------------- // Item Id From. if (errField.ItemIdFrom != SacsHierarchyItem.ValidValue.Ignore && !ItemId.IsValid(data.ItemIdFrom)) { errField.ItemIdFrom = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Item Id From must be specified"); } // Item Id To. if (errField.ItemIdTo != SacsHierarchyItem.ValidValue.Ignore && !ItemId.IsValid(data.ItemIdTo)) { errField.ItemIdTo = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Item Id To must be specified"); } // Item Ids must differ. if (errField.ItemIdFrom != SacsHierarchyItem.ValidValue.Ignore && errField.ItemIdTo != SacsHierarchyItem.ValidValue.Ignore) { if (data.ItemIdFrom.Equals(data.ItemIdTo)) { errField.ItemIdTo = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Item Ids must differ"); } } // Association type. if (errField.AssociationType != SacsHierarchyItem.ValidValue.Ignore && (int)data.AssociationType < 1) { errField.AssociationType = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Association type must be specified"); } //--------------------------------------------------------------- // Common properties. if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.ItemAssociation_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { if (!IsValidValue(data.StatusCode, "status", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.ItemAssociation_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SaxItemAssociation.ValidStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } //--------------------------------------------------------------- return true; } //------------------------------------------------------------------- // Item database interface. public abstract bool InsertItemAssociation(SaxItemAssociation itemAssociation, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateItemAssociation(SaxItemAssociation itemAssociation, DbUpdateInfo dbUpdateInfo); public virtual bool ItemAssociationCanBeDeleted(SaxItemAssociation itemAssociation) { ClearErrorState(); return true; } public abstract bool DeleteItemAssociation(SaxItemAssociation itemAssociation, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // Item list. public abstract ColumnDfn GetItemAssociationColumnDfn(SaxItemAssociation.Column columnId, String caption = "", int width = 0); public abstract List GetItemAssociationQueryFilter(SaxItemAssociation.Params prmItemAssociation); public abstract long GetItemAssociationCount(SaxItemAssociation.Params prmItemAssociation); public abstract List GetItemAssociationList(SaxItemAssociation.Params prmItemAssociation); public abstract DbResultSet ExecuteItemAssociationQuery(List columns, SaxItemAssociation.Params prmItemAssociation); //------------------------------------------------------------------- /// /// 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 GetItemAssociationDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SaxItemAssociation.Column)column.Id) { //----------------------------------------------------------- // From item type. case SaxItemAssociation.Column.ItemTypeFrom_Code: { value = new DataValue(DataItemTypeCodes.GetCodeForType(values.GetLong(column.DataName))); } break; case SaxItemAssociation.Column.ItemTypeFrom_Desc: { value = new DataValue(DataItemTypeCodes.GetDescForType(values.GetLong(column.DataName))); } break; //----------------------------------------------------------- // To item type. case SaxItemAssociation.Column.ItemTypeTo_Code: { value = new DataValue(DataItemTypeCodes.GetCodeForType(values.GetLong(column.DataName))); } break; case SaxItemAssociation.Column.ItemTypeTo_Desc: { value = new DataValue(DataItemTypeCodes.GetDescForType(values.GetLong(column.DataName))); } break; //----------------------------------------------------------- // Association type. case SaxItemAssociation.Column.AssociationType_Code: case SaxItemAssociation.Column.AssociationType_Desc: { Sax.AssociationType associationType = (Sax.AssociationType)values.GetLong(column.DataName); if (column.Id == (int)SaxItemAssociation.Column.AssociationType_Code) value = new DataValue(AssociationTypeCodes.GetCodeForType(associationType)); else value = new DataValue(AssociationTypeCodes.GetDescForType(associationType)); } break; //----------------------------------------------------------- // Notes. case SaxItemAssociation.Column.Notes: value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); break; //----------------------------------------------------------- // Status. case SaxItemAssociation.Column.Status_Desc: case SaxItemAssociation.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SaxItemAssociation.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDesc(status)); else if (column.Id == (int)SaxItemAssociation.Column.Status_Ind) value = new DataValue(SaxItemAssociation.GetStatusTriState(status)); } break; //----------------------------------------------------------- default: value = values.GetValue(column.DataName); break; } return value; } //------------------------------------------------------------------- } //======================================================================= }