205 lines
9.1 KiB
C#
205 lines
9.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
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.Utils;
|
|
|
|
namespace Sarand.Net.Standard.Base.Interfaces
|
|
{
|
|
//=======================================================================
|
|
public partial class SaInterfaceMgr
|
|
{
|
|
//*******************************************************************
|
|
// I n t e r f a c e D a t a I t e m s
|
|
//*******************************************************************
|
|
// Create Interface Data Item.
|
|
public abstract SaInterfaceDataItem CreateInterfaceDataItem (SysId interfaceId, SaInterfaceProcessDirection direction, ItemId itemId, String externalReference);
|
|
|
|
// Retrieve individual interface data items.
|
|
public abstract bool InterfaceDataItemExistsById (SysId id);
|
|
public abstract SaInterfaceDataItem GetInterfaceDataItemById (SysId id);
|
|
public abstract SaInterfaceDataItem GetInterfaceDataItem (SaInterfaceDataItem.Params prm);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Validate Interface Data Item.
|
|
public bool IsValidInterfaceDataItem (SaInterfaceDataItem interfaceDataItem)
|
|
{
|
|
ClearErrorState();
|
|
if (interfaceDataItem == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
|
|
return IsValidInterfaceDataItemData(interfaceDataItem.GetData(), new SaInterfaceDataItem.ErrField());
|
|
}
|
|
public virtual bool IsValidInterfaceDataItemData (SaInterfaceDataItem.Data data, SaInterfaceDataItem.ErrField errField)
|
|
{
|
|
ClearErrorState();
|
|
// Interface.
|
|
if (errField.InterfaceId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.InterfaceId))
|
|
{
|
|
errField.InterfaceId = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Interface must be supplied");
|
|
}
|
|
if (errField.Direction != SacsHierarchyItem.ValidValue.Ignore && (int)data.Direction < 1)
|
|
{
|
|
errField.Direction = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Direction must be supplied");
|
|
}
|
|
// Data item.
|
|
if (errField.ItemType != SacsHierarchyItem.ValidValue.Ignore && (data.ItemId == null || data.ItemId.Type < 1))
|
|
{
|
|
errField.ItemType = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Invalid item type");
|
|
}
|
|
if (errField.ItemId != SacsHierarchyItem.ValidValue.Ignore && (data.ItemId == null || !SysId.IsValid(data.ItemId.Id)))
|
|
{
|
|
errField.ItemId = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Invalid item id");
|
|
}
|
|
if (errField.ExternalReference != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ExternalReference, "reference", (long)SaInterfaceDbDfn.GetColTextLen(SaInterfaceDbDfn.ColumnIdx.SaInterfaceDataItem_ExternalRef)))
|
|
{
|
|
errField.ExternalReference = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
// Process status.
|
|
if (errField.ProcessStatus != SacsHierarchyItem.ValidValue.Ignore)
|
|
{
|
|
if (!IsValidValue(SacsSystem.GetStatusCode(data.ProcessStatus), "process status", (long)SaInterfaceDbDfn.GetColTextLen(SaInterfaceDbDfn.ColumnIdx.SaInterfaceDataItem_ProcessStatus), true))
|
|
{
|
|
errField.ProcessStatus = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (!SaInterfaceDataItem.ValidProcessStatuses.Contains(data.ProcessStatus))
|
|
{
|
|
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Invalid process status");
|
|
}
|
|
}
|
|
// Item status.
|
|
if (errField.ItemStatus != SacsHierarchyItem.ValidValue.Ignore)
|
|
{
|
|
if (!IsValidValue(SacsSystem.GetStatusCode(data.ItemStatus), "item status", (long)SaInterfaceDbDfn.GetColTextLen(SaInterfaceDbDfn.ColumnIdx.SaInterfaceDataItem_ItemStatus), true))
|
|
{
|
|
errField.ItemStatus = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (!SaInterfaceDataItem.ValidItemStatuses.Contains(data.ItemStatus))
|
|
{
|
|
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Invalid item status");
|
|
}
|
|
}
|
|
// Common properties.
|
|
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SaInterfaceDbDfn.GetColTextLen(SaInterfaceDbDfn.ColumnIdx.SaInterfaceDataItem_Notes)))
|
|
{
|
|
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
// NB No Status on Interface Data Item.
|
|
return true;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Interface Data Item database interface.
|
|
public abstract bool InsertInterfaceDataItem (SaInterfaceDataItem interfaceDataItem, DbUpdateInfo dbUpdateInfo);
|
|
public abstract bool UpdateInterfaceDataItem (SaInterfaceDataItem interfaceDataItem, DbUpdateInfo dbUpdateInfo);
|
|
public virtual bool InterfaceDataItemCanBeDeleted (SaInterfaceDataItem interfaceDataItem)
|
|
{
|
|
ClearErrorState();
|
|
return true;
|
|
}
|
|
public abstract bool DeleteInterfaceDataItem (SaInterfaceDataItem interfaceDataItem, DbUpdateInfo dbUpdateInfo);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Interface Data Item list.
|
|
public abstract ColumnDfn GetInterfaceDataItemColumnDfn (SaInterfaceDataItem.Column columnId, String caption = "", int width = 0);
|
|
public abstract List<String> GetInterfaceDataItemQueryFilter (SaInterfaceDataItem.Params prm);
|
|
public abstract long GetInterfaceDataItemCount (SaInterfaceDataItem.Params prm);
|
|
public abstract List<SaInterfaceDataItem> GetInterfaceDataItemList (SaInterfaceDataItem.Params prm);
|
|
public abstract DbResultSet ExecuteInterfaceDataItemQuery (List<ColumnDfn> columns, SaInterfaceDataItem.Params prm);
|
|
|
|
//-------------------------------------------------------------------
|
|
/// <summary>
|
|
/// Extract and format result set data value where specific handling is required.
|
|
/// <para>Where response is an invalid data value, format value using column.FormatValue(values).</para>
|
|
/// </summary>
|
|
public virtual DataValue GetInterfaceDataItemDataValue (ColumnDfn column, NamedValue.Map values)
|
|
{
|
|
DataValue value = new DataValue();
|
|
switch ((SaInterfaceDataItem.Column)column.Id)
|
|
{
|
|
//-----------------------------------------------------------
|
|
// Category.
|
|
case SaInterfaceDataItem.Column.Direction_Desc:
|
|
{
|
|
SaInterfaceProcessDirection direction = (SaInterfaceProcessDirection)StringUtil.ToInt(values.GetValue(column.DataName).ToString());
|
|
value = new DataValue(ProcessDirections.GetCodeForType(direction, direction.ToString()));
|
|
}
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
// Item Type.
|
|
case SaInterfaceDataItem.Column.ItemType_Desc:
|
|
{
|
|
short itemType = StringUtil.ToShort(values.GetValue(column.DataName).ToString());
|
|
String itemTypeDesc = InterfaceConsole.GetItemTypeDesc(itemType);
|
|
value = new DataValue(itemTypeDesc);
|
|
}
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
// Item Type.
|
|
case SaInterfaceDataItem.Column.Item_Caption:
|
|
{
|
|
short itemType = StringUtil.ToShort(values.GetValue(GetInterfaceProcessMessageColumnDfn(SaInterfaceProcessMessage.Column.ItemType).DataName).ToString());
|
|
SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(column.DataName).ToString()));
|
|
String itemTypeDesc = InterfaceConsole.GetItemCaption(new ItemId(itemType,itemId));
|
|
value = new DataValue(itemTypeDesc);
|
|
}
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
// Process Status.
|
|
case SaInterfaceDataItem.Column.ProcessStatus_Desc:
|
|
case SaInterfaceDataItem.Column.ProcessStatus_Ind:
|
|
{
|
|
String statusCode = values.GetValue(column.DataName).ToString();
|
|
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
|
if (column.Id == (int)SaInterfaceDataItem.Column.ProcessStatus_Desc)
|
|
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
|
else if (column.Id == (int)SaInterfaceDataItem.Column.ProcessStatus_Ind)
|
|
value = new DataValue(SaInterfaceDataItem.GetProcessStatusTriState(status));
|
|
}
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
// Item Status.
|
|
case SaInterfaceDataItem.Column.ItemStatus_Desc:
|
|
case SaInterfaceDataItem.Column.ItemStatus_Ind:
|
|
{
|
|
String statusCode = values.GetValue(column.DataName).ToString();
|
|
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
|
if (column.Id == (int)SaInterfaceDataItem.Column.ItemStatus_Desc)
|
|
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
|
else if (column.Id == (int)SaInterfaceDataItem.Column.ItemStatus_Ind)
|
|
value = new DataValue(SaInterfaceDataItem.GetItemStatusTriState(status));
|
|
}
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
// Notes.
|
|
case SaInterfaceDataItem.Column.Notes:
|
|
{
|
|
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
|
}
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
}
|
|
return value;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|