Files
BusinessMgr-2019/SaBusMgrStandardBase/Base/Mgr/SbmProcessMgr_ItemProcess.cs
T

86 lines
3.8 KiB
C#

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
{
//=======================================================================
// Process Manager - Item Processes.
//=======================================================================
partial class SbmProcessMgr
{
//-------------------------------------------------------------------
// Utilities.
//-------------------------------------------------------------------
// Item Processes.
public abstract bool ItemHasProcesses(SbmItemId itemId);
public abstract SbmItemProcess GetProcessForItem(SbmItemId itemId, SysId processId);
public abstract List<SbmItemProcess> GetProcessesForItem(SbmItemId itemId, bool activeOnly);
public abstract List<SbmItemProcess> GetProcessesForItem(SbmItemProcess.Params prm);
public abstract bool StoreItemProcesses(SbmItemId itemId, List<SbmItemProcess> itemProcesses, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
// Create item.
public abstract SbmItemProcess CreateItemProcess(SbmItemId itemId, SysId processId);
public abstract SbmItemProcess CreateItemProcessForConstituent(SbmConstituent constituent);
//-------------------------------------------------------------------
// Validate item 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)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_Seq), true))
{ // ColIdx.ItemProcess_Seq
errField.Seq = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
// Common properties.
if (!IsValidValue(data.Notes, "notes", (long)Internals.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)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Unknown/*ItemProcess_Status*/), true, true))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!SbmItemProcess.GetValidStatuses(data.ItemType).Contains(data.Status))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState(ErrorMessage.InvalidStatus);
}
}
return true;
}
//-------------------------------------------------------------------
// Item database interface.
public abstract bool UpdateProcessesForItem(SbmItemId itemId, List<SbmItemProcess> itemProcesses, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
}
//=======================================================================
}