208 lines
7.8 KiB
C#
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("Item type must be supplied");
|
|
}
|
|
if (!SysId.IsValid(itemDocData.ItemId.Id))
|
|
{
|
|
errField.ItemId = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Item Id must be supplied");
|
|
}
|
|
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;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|