using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; 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 Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { //======================================================================= // Data Item Manager - Item Links. //======================================================================= partial class SbmDataItemMgr { //------------------------------------------------------------------- // Retrieve individual itemLinks. //------------------------------------------------------------------- // Item exists. public bool ItemLinkExistsById(SysId itemLinkId) { ClearErrorState(); if (!SysId.IsValid(itemLinkId)) return false; SbmItemLink.Params prmItemLink = new SbmItemLink.Params(); prmItemLink.IdsIncluded.Add(itemLinkId); prmItemLink.StatusCat = SbmItemLink.StatusCat.Any; return GetItemLinkCount(prmItemLink) == 1; } //------------------------------------------------------------------- // Get items. public abstract SbmItemLink GetItemLink(SbmItemLink.Params prm); public SbmItemLink GetItemLinkById(SysId itemLinkId) { ClearErrorState(); if (!SysId.IsValid(itemLinkId)) return null; SbmItemLink.Params prmItemLink = new SbmItemLink.Params(); prmItemLink.IdsIncluded.Add(itemLinkId); prmItemLink.StatusCat = SbmItemLink.StatusCat.Any; return GetItemLink(prmItemLink); } //------------------------------------------------------------------- // Create items. public abstract SbmItemLink CreateItemLink(Sbm.ItemLinkType itemLinkType, Sbm.ItemType itemTypeFrom, SysId itemIdFrom, Sbm.ItemType itemTypeTo, SysId itemIdTo); //------------------------------------------------------------------- // Has items. public abstract bool HasItemLinks(Sbm.ItemType itemType, SysId itemId); //------------------------------------------------------------------- // Validate item data. public bool IsValidItemLink(SbmItemLink itemLink) { ClearErrorState(); if (itemLink == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidItemLinkData(itemLink.GetData(), new SbmItemLink.ErrField()); } public virtual bool IsValidItemLinkData(SbmItemLink.Data data, SbmItemLink.ErrField errField) { ClearErrorState(); // Item properties. if (errField.ItemLinkType != SacsHierarchyItem.ValidValue.Ignore) { if ((int)data.ItemLinkType < 1) { errField.ItemLinkType = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("ItemLink type must be supplied"); } } if (errField.ItemTypeFrom != SacsHierarchyItem.ValidValue.Ignore) { if ((int)data.ItemTypeFrom < 1) { errField.ItemTypeFrom = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("ItemTypeFrom must be supplied"); } } if (errField.ItemIdFrom != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.ItemIdFrom)) { errField.ItemIdFrom = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.ItemTypeTo != SacsHierarchyItem.ValidValue.Ignore) { if ((int)data.ItemTypeTo < 1) { errField.ItemTypeFrom = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("ItemTypeTo must be supplied"); } } if (errField.ItemIdTo != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.ItemIdTo)) { errField.ItemIdTo = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Seq != SacsHierarchyItem.ValidValue.Ignore && data.Seq < 1) { errField.Seq = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Sequence must be supplied"); } if (errField.Completed != SacsHierarchyItem.ValidValue.Ignore && DateUtil.IsValid(data.Completed)) { errField.Completed = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.DataContent != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DataContent, "data content", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_DataContent), true)) { errField.DataContent = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SbmItemLink.ItemLinkStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } // Validate associated data. return true; } //------------------------------------------------------------------- // Item database interface. public abstract bool InsertItemLink(SbmItemLink itemLink, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateItemLink(SbmItemLink itemLink, DbUpdateInfo dbUpdateInfo); public abstract bool StoreFromItemLinks(Sbm.ItemLinkType itemLinkType, ItemId itemIdFrom, List itemLinks, DbUpdateInfo dbUpdateInfo); public abstract bool StoreToItemLinks(Sbm.ItemLinkType itemLinkType, ItemId itemIdTo, List itemLinks, DbUpdateInfo dbUpdateInfo); public virtual bool ItemLinkCanBeDeleted(SbmItemLink itemLink) { ClearErrorState(); if (itemLink == null) return SetErrorState("item not specified"); return true; } public abstract bool DeleteItemLink(SbmItemLink itemLink, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // Item list. public abstract ColumnDfn GetItemLinkColumnDfn(SbmItemLink.Column columnId, String caption = "", int width = 0); public abstract List GetItemLinkQueryFilter(SbmItemLink.Params prm); public abstract long GetItemLinkCount(SbmItemLink.Params prm); public abstract List GetItemLinkList(SbmItemLink.Params prm); public abstract DbResultSet ExecuteItemLinkQuery(List columns, SbmItemLink.Params prm); //------------------------------------------------------------------- // D a t a V a l u e s //------------------------------------------------------------------- /// /// 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 DataValue GetItemLinkDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SbmItemLink.Column)column.Id) { //----------------------------------------------------------- // Notes. case SbmItemLink.Column.Notes: value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); break; // Status. case SbmItemLink.Column.Status_Desc: case SbmItemLink.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SbmItemLink.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode)); else if (column.Id == (int)SbmItemLink.Column.Status_Ind) value = new DataValue(SbmItemLink.GetStatusTriState(status)); } break; //----------------------------------------------------------- default: value = values.GetValue(column.DataName); break; } return value; } //------------------------------------------------------------------- } //======================================================================= }