Files
Common-VS2019/SacsStandardBase/Base/ItemDocs/SaItemDocMgr.cs
T
2025-02-08 16:41:25 +00:00

208 lines
7.8 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 System;
using System.Collections.Generic;
using System.Text;
namespace Sarand.Net.Standard.Base.ItemDocs
{
//=======================================================================
public abstract class SaItemDocMgr : SacsItemMgr
{
//-------------------------------------------------------------------
// Definitions.
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Static initialisation.
static SaItemDocMgr ()
{
}
//-------------------------------------------------------------------
// Construction.
protected SaItemDocMgr ()
{
}
//-------------------------------------------------------------------
// Properties.
public abstract bool DatabaseIsValid { get; }
public abstract bool CanUpdateDatabase { get; }
//*******************************************************************
// I t e m D o c s
//*******************************************************************
// Utilities.
public abstract bool ItemHasDocs (ItemId itemId, bool ignoreDeleted = true);
public abstract bool ItemHasDocs (ItemId itemId, SaItemDocConsole.Category category, bool ignoreDeleted = true);
//-------------------------------------------------------------------
// Retrieve individual item data entries.
public abstract bool ItemDocExists (SysId id);
public abstract SaItemDoc GetItemDoc (SysId id);
public abstract SaItemDoc GetItemDoc (SaItemDoc.Params prmItemDoc);
// Create Item Data.
public abstract SaItemDoc CreateItemDoc (ItemId itemId, SaItemDocConsole.Category category);
//-------------------------------------------------------------------
// Validate Item Data.
public bool IsValidItemDoc (SaItemDoc itemDoc)
{
ClearErrorState();
if (itemDoc == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
return IsValidItemDocData(itemDoc.GetData(), new SaItemDoc.ErrField());
}
public virtual bool IsValidItemDocData (SaItemDoc.Data itemDocData, SaItemDoc.ErrField errField)
{
ClearErrorState();
if ((int)itemDocData.ItemId.Type < 1)
{
errField.ItemType = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState(Msg_ItemTypeNotSpecified);
}
if (!SysId.IsValid(itemDocData.ItemId.Id))
{
errField.ItemId = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState(Msg_ItemIdNotSpecified);
}
if ((int)itemDocData.Category < 1)
{
errField.Category = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Category must be supplied");
}
if (!IsValidValue(itemDocData.DocType, "Doc type", (long)SaItemDocsDbDfn.GetColTextLen(SaItemDocsDbDfn.ColumnIdx.SaItemDoc_Type), true))
{
errField.DocType = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!IsValidValue(itemDocData.DescBrief, "Desciption", (long)SaItemDocsDbDfn.GetColTextLen(SaItemDocsDbDfn.ColumnIdx.SaItemDoc_DescBrief)))
{
errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!IsValidValue(itemDocData.Folder, "Folder", (long)SaItemDocsDbDfn.GetColTextLen(SaItemDocsDbDfn.ColumnIdx.SaItemDoc_Folder)))
{
errField.Folder = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!IsValidValue(itemDocData.Filename, "Filename", (long)SaItemDocsDbDfn.GetColTextLen(SaItemDocsDbDfn.ColumnIdx.SaItemDoc_Filename), true))
{
errField.Filename = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!IsValidValue(itemDocData.MimeType, "Mime", (long)SaItemDocsDbDfn.GetColTextLen(SaItemDocsDbDfn.ColumnIdx.SaItemDoc_MimeType)))
{
errField.MimeType = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
// Common properties.
if (!IsValidValue(itemDocData.Notes, "notes", (long)SaItemDocsDbDfn.GetColTextLen(SaItemDocsDbDfn.ColumnIdx.SaItemDoc_Notes)))
{
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!SaItemDoc.ValidStatuses.Contains(itemDocData.Status))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState(ErrorMessage.InvalidStatus);
}
return true;
}
//-------------------------------------------------------------------
// Item Data database interface.
public abstract bool InsertItemDoc (SaItemDoc itemDoc, DbUpdateInfo dbUpdateInfo);
public abstract bool UpdateItemDoc (SaItemDoc itemDoc, DbUpdateInfo dbUpdateInfo);
public virtual bool ItemDocCanBeDeleted (SaItemDoc itemDoc)
{
ClearErrorState();
if (!SysId.IsValid(itemDoc.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
return true;
}
public abstract bool DeleteItemDoc (SaItemDoc itemDoc, DbUpdateInfo dbUpdateInfo);
public abstract bool ClearItemDocs (ItemId itemId, DbUpdateInfo dbUpdateInfo);
public abstract bool ClearItemDocs (ItemId itemId, SaItemDocConsole.Category category, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
// Item Data list.
public abstract ColumnDfn GetItemDocColumnDfn (SaItemDoc.Column columnId, String caption = "", int width = 0);
public abstract List<String> GetItemDocQueryFilter (SaItemDoc.Params prm);
public abstract long GetItemDocCount (SaItemDoc.Params prm);
public abstract List<SaItemDoc> GetItemDocList (SaItemDoc.Params prm);
public abstract DbResultSet ExecuteItemDocQuery (List<ColumnDfn> columns, SaItemDoc.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 GetItemDocDataValue (ColumnDfn column, NamedValue.Map values)
{
DataValue value = new DataValue();
switch ((SaItemDoc.Column)column.Id)
{
//-----------------------------------------------------------
// Item type.
case SaItemDoc.Column.ItemType_Desc:
{
short itemType = (short)values.GetValue(column.DataName).AsLong();
value = new DataValue(itemType.ToString());
}
break;
//-----------------------------------------------------------
// Category.
case SaItemDoc.Column.Category_Desc:
{
short category = (short)values.GetValue(column.DataName).AsLong();
value = new DataValue(category.ToString());
}
break;
//-----------------------------------------------------------
// Document type.
case SaItemDoc.Column.DocType_Desc:
{
short docType = (short)values.GetValue(column.DataName).AsLong();
value = new DataValue(docType.ToString());
}
break;
//-----------------------------------------------------------
// Notes.
case SaItemDoc.Column.Notes:
{
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
}
break;
//-----------------------------------------------------------
// Status.
case SaItemDoc.Column.Status_Desc:
case SaItemDoc.Column.Status_Ind:
{
String statusCode = values.GetValue(column.DataName).ToString();
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
if (column.Id == (int)SaItemDoc.Column.Status_Desc)
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
else if (column.Id == (int)SaItemDoc.Column.Status_Ind)
value = new DataValue(SaItemDoc.GetStatusTriState(status));
}
break;
//-----------------------------------------------------------
}
return value;
}
//-------------------------------------------------------------------
}
//=======================================================================
}