using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Dbas; using System.Collections.Generic; namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { //======================================================================= partial class SbmProcessMgr { //******************************************************************* // I t e m P r o c e s s e s //******************************************************************* //------------------------------------------------------------------- // Utilities. public abstract bool StoreItemProcesses(Sbm.ItemType itemType, SysId itemId, List itemProcesses, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // Get ItemProcess. public abstract SbmItemProcess GetProcessForItem(Sbm.ItemType itemType, SysId itemId, SysId processId); public abstract List GetProcessesForItem(Sbm.ItemType itemType, SysId itemId, bool activeOnly); public abstract List GetProcessesForItem(SbmItemProcess.Params prm); //------------------------------------------------------------------- // Has ItemProcess. public abstract bool HasItemProcesses(Sbm.ItemType itemType, SysId itemId); //------------------------------------------------------------------- // Create itemProcess. public abstract SbmItemProcess CreateItemProcess(Sbm.ItemType itemType, SysId itemId, SysId processId); public abstract SbmItemProcess CreateItemProcessForConstituent(SbmConstituent constituent); //------------------------------------------------------------------- // Validate itemProcess data. public bool IsValidItemProcess(SbmItemProcess itemProcess) { ClearErrorState(); if (itemProcess == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidItemProcessData(itemProcess.GetData(), new SbmItemProcess.ErrField()); } public virtual bool IsValidItemProcessData(SbmItemProcess.Data data, SbmItemProcess.ErrField errField) { // ItemProcess properties. ClearErrorState(); //Validate the identity. if (SysId.IsValid(data.ItemId)) return SetErrorState("invalid item Id"); if ((int)data.ItemType < 1) return SetErrorState("invalid item type"); if (SysId.IsValid(data.ProcessId)) return SetErrorState("invalid process id"); // Validate the text attributes. if (errField.Seq != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Seq.ToString(), "sequence", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_Seq), true)) { // ColIdx.ItemProcess_Seq errField.Seq = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_Notes))) { //ColIdx.ItemProcess_Notes errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Unknown/*ItemProcess_Status*/), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SbmItemProcess.ItemProcessStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } return true; } //------------------------------------------------------------------- // ItemProcess database interface. public abstract bool UpdateProcessesForItem(Sbm.ItemType itemType, SysId itemId, List itemProcesses); } //======================================================================= }