86 lines
4.0 KiB
C#
86 lines
4.0 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
|
|
{
|
|
//=======================================================================
|
|
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<SbmItemProcess> itemProcesses, DbUpdateInfo dbUpdateInfo);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Get ItemProcess.
|
|
public abstract SbmItemProcess GetProcessForItem(Sbm.ItemType itemType, SysId itemId, SysId processId);
|
|
public abstract List<SbmItemProcess> GetProcessesForItem(Sbm.ItemType itemType, SysId itemId, bool activeOnly);
|
|
public abstract List<SbmItemProcess> 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<SbmItemProcess> itemProcesses);
|
|
}
|
|
//=======================================================================
|
|
}
|