215 lines
8.7 KiB
C#
215 lines
8.7 KiB
C#
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 Saxonite.Base.App;
|
|
using Saxonite.Net.Standard.Base.App;
|
|
using Saxonite.Net.Standard.Base.Bus;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace Saxonite.Net.Standard.Base.Mgr
|
|
{
|
|
//=======================================================================
|
|
partial class SaxItemDataMgr
|
|
{
|
|
//*******************************************************************
|
|
// Item Data Mgr - Item Sport
|
|
//*******************************************************************
|
|
// Utilities.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Create item.
|
|
public abstract SaxItemAssociation CreateItemAssociation(ItemId itemIdFrom, ItemId itemIdTo, Sax.AssociationType associationType);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Item exists.
|
|
public bool ItemAssociationExistsById(SysId id)
|
|
{
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(id)) return false;
|
|
SaxItemAssociation.Params prmItemAssociation = new SaxItemAssociation.Params();
|
|
prmItemAssociation.IdsIncluded.Add(id);
|
|
prmItemAssociation.StatusCat = SaxItemAssociation.StatusCat.Any;
|
|
return GetItemAssociationCount(prmItemAssociation) == 1;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Retrieve individual items.
|
|
public abstract SaxItemAssociation GetItemAssociation(SaxItemAssociation.Params prmItemAssociation);
|
|
public SaxItemAssociation GetItemAssociationById(SysId id)
|
|
{
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(id)) return null;
|
|
SaxItemAssociation.Params prmItemAssociation = new SaxItemAssociation.Params();
|
|
prmItemAssociation.IdsIncluded.Add(id);
|
|
prmItemAssociation.StatusCat = SaxItemAssociation.StatusCat.Any;
|
|
return GetItemAssociation(prmItemAssociation);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Validate item data.
|
|
public bool IsValidItemAssociation(SaxItemAssociation itemAssociation)
|
|
{
|
|
ClearErrorState();
|
|
if (itemAssociation == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
|
|
return IsValidItemAssociationData(itemAssociation.GetData(), new SaxItemAssociation.ErrField());
|
|
}
|
|
public virtual bool IsValidItemAssociationData(SaxItemAssociation.Data data, SaxItemAssociation.ErrField errField)
|
|
{
|
|
ClearErrorState();
|
|
|
|
//---------------------------------------------------------------
|
|
// Item Id From.
|
|
if (errField.ItemIdFrom != SacsHierarchyItem.ValidValue.Ignore && !ItemId.IsValid(data.ItemIdFrom))
|
|
{
|
|
errField.ItemIdFrom = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Item Id From must be specified");
|
|
}
|
|
// Item Id To.
|
|
if (errField.ItemIdTo != SacsHierarchyItem.ValidValue.Ignore && !ItemId.IsValid(data.ItemIdTo))
|
|
{
|
|
errField.ItemIdTo = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Item Id To must be specified");
|
|
}
|
|
// Item Ids must differ.
|
|
if (errField.ItemIdFrom != SacsHierarchyItem.ValidValue.Ignore && errField.ItemIdTo != SacsHierarchyItem.ValidValue.Ignore)
|
|
{
|
|
if (data.ItemIdFrom.Equals(data.ItemIdTo))
|
|
{
|
|
errField.ItemIdTo = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Item Ids must differ");
|
|
}
|
|
}
|
|
// Association type.
|
|
if (errField.AssociationType != SacsHierarchyItem.ValidValue.Ignore && (int)data.AssociationType < 1)
|
|
{
|
|
errField.AssociationType = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Association type must be specified");
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
// Common properties.
|
|
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.ItemAssociation_Notes)))
|
|
{
|
|
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Status != SacsHierarchyItem.ValidValue.Ignore)
|
|
{
|
|
if (!IsValidValue(data.StatusCode, "status", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.ItemAssociation_Status), true, true))
|
|
{
|
|
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (!SaxItemAssociation.ValidStatuses.Contains(data.Status))
|
|
{
|
|
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState(ErrorMessage.InvalidStatus);
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------
|
|
return true;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Item database interface.
|
|
public abstract bool InsertItemAssociation(SaxItemAssociation itemAssociation, DbUpdateInfo dbUpdateInfo);
|
|
public abstract bool UpdateItemAssociation(SaxItemAssociation itemAssociation, DbUpdateInfo dbUpdateInfo);
|
|
public virtual bool ItemAssociationCanBeDeleted(SaxItemAssociation itemAssociation)
|
|
{
|
|
ClearErrorState();
|
|
return true;
|
|
}
|
|
public abstract bool DeleteItemAssociation(SaxItemAssociation itemAssociation, DbUpdateInfo dbUpdateInfo);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Item list.
|
|
public abstract ColumnDfn GetItemAssociationColumnDfn(SaxItemAssociation.Column columnId, String caption = "", int width = 0);
|
|
public abstract List<String> GetItemAssociationQueryFilter(SaxItemAssociation.Params prmItemAssociation);
|
|
public abstract long GetItemAssociationCount(SaxItemAssociation.Params prmItemAssociation);
|
|
public abstract List<SaxItemAssociation> GetItemAssociationList(SaxItemAssociation.Params prmItemAssociation);
|
|
public abstract DbResultSet ExecuteItemAssociationQuery(List<ColumnDfn> columns, SaxItemAssociation.Params prmItemAssociation);
|
|
|
|
//-------------------------------------------------------------------
|
|
/// <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 GetItemAssociationDataValue(ColumnDfn column, NamedValue.Map values)
|
|
{
|
|
DataValue value = new DataValue();
|
|
switch ((SaxItemAssociation.Column)column.Id)
|
|
{
|
|
//-----------------------------------------------------------
|
|
// From item type.
|
|
case SaxItemAssociation.Column.ItemTypeFrom_Code:
|
|
{
|
|
value = new DataValue(DataItemTypeCodes.GetCodeForType(values.GetLong(column.DataName)));
|
|
}
|
|
break;
|
|
case SaxItemAssociation.Column.ItemTypeFrom_Desc:
|
|
{
|
|
value = new DataValue(DataItemTypeCodes.GetDescForType(values.GetLong(column.DataName)));
|
|
}
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
// To item type.
|
|
case SaxItemAssociation.Column.ItemTypeTo_Code:
|
|
{
|
|
value = new DataValue(DataItemTypeCodes.GetCodeForType(values.GetLong(column.DataName)));
|
|
}
|
|
break;
|
|
case SaxItemAssociation.Column.ItemTypeTo_Desc:
|
|
{
|
|
value = new DataValue(DataItemTypeCodes.GetDescForType(values.GetLong(column.DataName)));
|
|
}
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
// Association type.
|
|
case SaxItemAssociation.Column.AssociationType_Code:
|
|
case SaxItemAssociation.Column.AssociationType_Desc:
|
|
{
|
|
Sax.AssociationType associationType = (Sax.AssociationType)values.GetLong(column.DataName);
|
|
if (column.Id == (int)SaxItemAssociation.Column.AssociationType_Code)
|
|
value = new DataValue(AssociationTypeCodes.GetCodeForType(associationType));
|
|
else
|
|
value = new DataValue(AssociationTypeCodes.GetDescForType(associationType));
|
|
}
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
// Notes.
|
|
case SaxItemAssociation.Column.Notes:
|
|
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
// Status.
|
|
case SaxItemAssociation.Column.Status_Desc:
|
|
case SaxItemAssociation.Column.Status_Ind:
|
|
{
|
|
String statusCode = values.GetValue(column.DataName).ToString();
|
|
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
|
if (column.Id == (int)SaxItemAssociation.Column.Status_Desc)
|
|
value = new DataValue(SacsSystem.GetStatusDesc(status));
|
|
else if (column.Id == (int)SaxItemAssociation.Column.Status_Ind)
|
|
value = new DataValue(SaxItemAssociation.GetStatusTriState(status));
|
|
}
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
}
|
|
return value;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|