Files
BusinessMgr-2019/SaBusMgrStandardBase/Base/Mgr/SbmProcessMgr_ItemProcess.cs
T
2021-05-05 21:00:33 +01:00

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);
}
//=======================================================================
}