Files
Saxonite/SaxoniteStandardBase/Base/Mgr/SaxItemDataMgr-ItemAssociation.cs
T
2022-07-16 13:30:57 +01:00

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