86 lines
3.8 KiB
C#
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);
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|