Rationalise business objects.
This commit is contained in:
@@ -7,21 +7,23 @@ using Sarand.Net.Standard.Base.App;
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Core;
|
||||
using Sarand.Net.Standard.Base.Dbas;
|
||||
using Sarand.Net.Standard.Base.ItemData;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
using Sarand.Net.Standard.Dbas.Data;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using static Sarand.BusinessMgr.Net.Standard.Base.Bus.SbmProcess;
|
||||
|
||||
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
// Process manager - Processes.
|
||||
//=======================================================================
|
||||
partial class SbmProcessMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// P r o c e s s e s
|
||||
//*******************************************************************
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SbmProcess process)
|
||||
{
|
||||
@@ -33,6 +35,139 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated codes.
|
||||
public override bool ProcessHasAnyCostCodes(SysId processId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(processId)) return false;
|
||||
SaItemData.Params prmItemData = new SaItemData.Params();
|
||||
prmItemData.ItemIdsIncluded.Add(new SbmItemId(Sbm.ItemType.Process, processId));
|
||||
prmItemData.DataTypesIncluded.Add(GetItemDataCodeForProcessCostCode(SbmProcessCostCode.Fixed_Unit));
|
||||
prmItemData.DataTypesIncluded.Add(GetItemDataCodeForProcessCostCode(SbmProcessCostCode.Fixed_Job));
|
||||
prmItemData.DataTypesIncluded.Add(GetItemDataCodeForProcessCostCode(SbmProcessCostCode.Labour_Unit));
|
||||
prmItemData.DataTypesIncluded.Add(GetItemDataCodeForProcessCostCode(SbmProcessCostCode.Labour_Job));
|
||||
return ItemDataConsole.ItemDataExists(prmItemData);
|
||||
}
|
||||
public override bool ProcessHasCostCodes(SysId processId, SbmProcessCostCode processCostCode)
|
||||
{
|
||||
ClearErrorState();
|
||||
// Identify process code type code.
|
||||
String itemDataTypeCode = GetItemDataCodeForProcessCostCode(processCostCode);
|
||||
if (SysId.IsValid(processId) && !StringUtil.IsEmpty(itemDataTypeCode))
|
||||
{
|
||||
SaItemData.Params prmItemData = new SaItemData.Params();
|
||||
prmItemData.ItemIdsIncluded.Add(new SbmItemId(Sbm.ItemType.Process, processId));
|
||||
prmItemData.DataTypesIncluded.Add(itemDataTypeCode);
|
||||
return ItemDataConsole.ItemDataExists(prmItemData);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private const String processCodeDelim = ",";
|
||||
public override List<String> GetProcessCostCodes(SysId processId, SbmProcessCostCode processCostCode)
|
||||
{
|
||||
List<String> costCodes = new List<String>();
|
||||
ClearErrorState();
|
||||
// Identify process code type code.
|
||||
String itemDataTypeCode = GetItemDataCodeForProcessCostCode(processCostCode);
|
||||
if (SysId.IsValid(processId) && !StringUtil.IsEmpty(itemDataTypeCode))
|
||||
{
|
||||
SaItemData.Params prmItemData = new SaItemData.Params();
|
||||
prmItemData.ItemIdsIncluded.Add(new SbmItemId(Sbm.ItemType.Process, processId));
|
||||
prmItemData.DataTypesIncluded.Add(itemDataTypeCode);
|
||||
List<SaItemData> itemDatas = ItemDataConsole.GetItemDataList(prmItemData);
|
||||
foreach (SaItemData itemData in itemDatas)
|
||||
{
|
||||
if (itemData == null) continue;
|
||||
costCodes.AddRange(StringListUtil.Split(itemData.ItemData, processCodeDelim));
|
||||
break;
|
||||
}
|
||||
itemDatas.Clear();
|
||||
}
|
||||
return costCodes;
|
||||
}
|
||||
public override bool StoreProcessCostCodes(SbmProcess process, SbmProcessCostCode processCostCode, List<String> costCodes, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!costCodes.Any()) return ClearProcessCostCodes(process, processCostCode, dbUpdateInfo);
|
||||
// Identify process code type code.
|
||||
String itemDataTypeCode = GetItemDataCodeForProcessCostCode(processCostCode);
|
||||
if (process != null && SysId.IsValid(process.Id) && !StringUtil.IsEmpty(itemDataTypeCode))
|
||||
{
|
||||
SaItemData.Params prmItemData = new SaItemData.Params();
|
||||
prmItemData.ItemIdsIncluded.Add(process.GetItemId());
|
||||
prmItemData.DataTypesIncluded.Add(itemDataTypeCode);
|
||||
List<SaItemData> itemDatas = ItemDataConsole.GetItemDataList(prmItemData);
|
||||
// ToDo itemData condition.
|
||||
//itemDatas.GotoStart();
|
||||
SaItemData itemData = null;//itemDatas.Count == 1 ? itemDatas.Remove(1) : null;
|
||||
itemDatas.Clear();
|
||||
if (itemData == null)
|
||||
{
|
||||
// Code type not found - create a new entry.
|
||||
itemData = ItemDataConsole.CreateItemData(process.GetItemId());
|
||||
itemData.DataType = itemDataTypeCode;
|
||||
}
|
||||
if (itemData != null)
|
||||
{
|
||||
// Populate item data for these codes.
|
||||
itemData.ItemData = costCodes.Concat(processCodeDelim);
|
||||
if (!ItemDataConsole.Store(itemData, dbUpdateInfo))
|
||||
SetErrorState(ItemDataConsole.ErrorStateMessage);
|
||||
}
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
public override bool ClearProcessCostCodes(SbmProcess process, SbmProcessCostCode processCostCode, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
// Identify process code type code.
|
||||
String itemDataTypeCode = GetItemDataCodeForProcessCostCode(processCostCode);
|
||||
if (process != null && SysId.IsValid(process.Id) && !StringUtil.IsEmpty(itemDataTypeCode))
|
||||
{
|
||||
if (!ItemDataConsole.ClearItemData(process.GetItemId(), itemDataTypeCode, dbUpdateInfo))
|
||||
SetErrorState(ItemDataConsole.ErrorStateMessage);
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
public override bool ClearAllProcessCostCodes(SbmProcess process, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (process == null || !SysId.IsValid(process.Id)) return false;
|
||||
if (!ItemDataConsole.ClearItemData(process.GetItemId(), dbUpdateInfo))
|
||||
SetErrorState(ItemDataConsole.ErrorStateMessage);
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
public override bool ProcessHasReferences(SysId processId)
|
||||
{
|
||||
if (!SysId.IsValid(processId)) return false;
|
||||
if (DataItemMgr.HasItemLinks(Sbm.ItemType.Process, processId)) return true;
|
||||
// Constituents.
|
||||
String filter = $"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Constituent_ProcessId)}={SysId.ToLong(processId)}";
|
||||
return Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Constituent), filter) > 0;
|
||||
}
|
||||
public override bool ProcessHasItemData(SysId processId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(processId)) return false;
|
||||
SaItemData.Params prmItemData = new SaItemData.Params();
|
||||
prmItemData.ItemIdsIncluded.Add(new SbmItemId(Sbm.ItemType.Process, processId));
|
||||
return ItemDataConsole.ItemDataExists(prmItemData);
|
||||
}
|
||||
public override bool ClearProcessAssociatedData(SbmProcess process, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (process == null || !SysId.IsValid(process.Id)) return SetErrorState("item not specified");
|
||||
// Clear Item data records.
|
||||
if (!ItemDataConsole.ClearItemData(process.GetItemId(), dbUpdateInfo))
|
||||
SetErrorState(ItemDataConsole.ErrorStateMessage);
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Processes by type.
|
||||
private class ProcessInfoCache
|
||||
@@ -126,14 +261,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
ClearErrorState();
|
||||
SbmProcess process = null;
|
||||
if (processCategory > 0)
|
||||
process = new SbmProcess_Dbas(Internals, new SysId(), AffiliateId_Owner, processCategory, 0);
|
||||
process = new SbmProcess_Dbas(new SysId(), AffiliateId_Owner, processCategory, 0);
|
||||
else SetErrorState("Asset type not identified");
|
||||
return process;
|
||||
}
|
||||
private SbmProcess_Dbas CreateProcess(Process_Db dbProcess)
|
||||
{
|
||||
ClearErrorState();
|
||||
SbmProcess_Dbas process = new SbmProcess_Dbas(Internals, new SysId(dbProcess._Id), new SysId(dbProcess._AffIdOwner ?? 0), (Sbm.ProcessCategory)dbProcess._Category, (ushort)dbProcess._Flags);
|
||||
SbmProcess_Dbas process = new SbmProcess_Dbas(new SysId(dbProcess._Id), new SysId(dbProcess._AffIdOwner ?? 0), (Sbm.ProcessCategory)dbProcess._Category, (ushort)dbProcess._Flags);
|
||||
PopulateFrom(dbProcess, process);
|
||||
return process;
|
||||
}
|
||||
@@ -525,27 +660,27 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
query.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Process), aliasProcess);
|
||||
|
||||
// Process Properties - add columns as defined in query list.
|
||||
if (columns.HasId((int)SbmProcess.Column.Category) || columns.HasId((int)SbmProcess.Column.Category_Desc))
|
||||
if (columns.HasId(SbmProcess.Column.Category) || columns.HasId(SbmProcess.Column.Category_Desc))
|
||||
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Process_Category, aliasProcess));
|
||||
if (columns.HasId((int)SbmProcess.Column.Type) || columns.HasId((int)SbmProcess.Column.Type_Desc))
|
||||
if (columns.HasId(SbmProcess.Column.Type) || columns.HasId(SbmProcess.Column.Type_Desc))
|
||||
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Process_Type, aliasProcess));
|
||||
if (columns.HasId((int)SbmProcess.Column.DescBrief))
|
||||
if (columns.HasId(SbmProcess.Column.DescBrief))
|
||||
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Process_DescBrief, aliasProcess));
|
||||
if (columns.HasId((int)SbmProcess.Column.DescOutline))
|
||||
if (columns.HasId(SbmProcess.Column.DescOutline))
|
||||
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Process_DescOutline, aliasProcess));
|
||||
if (columns.HasId((int)SbmProcess.Column.Seq))
|
||||
if (columns.HasId(SbmProcess.Column.Seq))
|
||||
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Process_Seq, aliasProcess));
|
||||
|
||||
// Common Properties
|
||||
if (columns.HasId((int)SbmProcess.Column.Notes))
|
||||
if (columns.HasId(SbmProcess.Column.Notes))
|
||||
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Process_Notes, aliasProcess));
|
||||
if (columns.HasId((int)SbmProcess.Column.Flag))
|
||||
if (columns.HasId(SbmProcess.Column.Flag))
|
||||
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Process_Flags, aliasProcess));
|
||||
if (columns.HasId((int)SbmProcess.Column.Status) || columns.HasId((int)SbmProcess.Column.Status_Desc) || columns.HasId((int)SbmProcess.Column.Status_Ind))
|
||||
if (columns.HasId(SbmProcess.Column.Status) || columns.HasId(SbmProcess.Column.Status_Desc) || columns.HasId(SbmProcess.Column.Status_Ind))
|
||||
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Process_Status, aliasProcess));
|
||||
if (columns.HasId((int)SbmProcess.Column.CreateOn_Date))
|
||||
if (columns.HasId(SbmProcess.Column.CreateOn_Date))
|
||||
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Process_CreateOn, aliasProcess));
|
||||
if (columns.HasId((int)SbmProcess.Column.UpdateOn_Date))
|
||||
if (columns.HasId(SbmProcess.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Process_UpdateOn, aliasProcess));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user