Add project files.
This commit is contained in:
@@ -0,0 +1,313 @@
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Core;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Sarand.Net.Standard.Base.ItemDocs
|
||||
{
|
||||
//=======================================================================
|
||||
public class SaItemDoc : SacsHierarchyItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Columns.
|
||||
public enum Column
|
||||
{
|
||||
Pos = 0,
|
||||
Id,
|
||||
// Item Id.
|
||||
ItemType,
|
||||
ItemType_Desc,
|
||||
ItemId,
|
||||
// Item Doc properties.
|
||||
Category,
|
||||
Category_Desc,
|
||||
DocType,
|
||||
DocType_Desc,
|
||||
DescBrief,
|
||||
Folder,
|
||||
Filename,
|
||||
MimeType,
|
||||
// Common properties.
|
||||
Notes,
|
||||
Status,
|
||||
Status_Desc,
|
||||
Status_Ind,
|
||||
CreateOn_Date,
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public ItemId ItemId { get; set; } = new ItemId();
|
||||
public SaItemDocConsole.Category Category { get; set; }
|
||||
public String DocType { get; set; } = String.Empty;
|
||||
public String DescBrief { get; set; } = String.Empty;
|
||||
public String Folder { get; set; } = String.Empty;
|
||||
public String Filename { get; set; } = String.Empty;
|
||||
public String MimeType { get; set; } = String.Empty;
|
||||
public short ItemTypeAutoAssign { get; set; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
public Data ()
|
||||
{
|
||||
Status = DefaultStatus;
|
||||
}
|
||||
// Properties.
|
||||
public ItemId ItemId
|
||||
{
|
||||
get { return data.ItemId; }
|
||||
set { CheckChanged(data.ItemId, value); data.ItemId = value; }
|
||||
}
|
||||
public SaItemDocConsole.Category Category
|
||||
{
|
||||
get { return data.Category; }
|
||||
set { CheckChanged((int)data.Category, (int)value); data.Category = value; }
|
||||
}
|
||||
public String DocType
|
||||
{
|
||||
get { return data.DocType; }
|
||||
set { CheckChanged(data.DocType, value); data.DocType = value; }
|
||||
}
|
||||
public String DescBrief
|
||||
{
|
||||
get { return data.DescBrief; }
|
||||
set { CheckChanged(data.DescBrief, value); data.DescBrief = value; }
|
||||
}
|
||||
public String Folder
|
||||
{
|
||||
get { return data.Folder; }
|
||||
set { CheckChanged(data.Folder, value); data.Folder = value; }
|
||||
}
|
||||
public String Filename
|
||||
{
|
||||
get { return data.Filename; }
|
||||
set { CheckChanged(data.Filename, value); data.Filename = value; }
|
||||
}
|
||||
public String MimeType
|
||||
{
|
||||
get { return data.MimeType; }
|
||||
set { CheckChanged(data.MimeType, value); data.MimeType = value; }
|
||||
}
|
||||
public short ItemTypeAutoAssign
|
||||
{
|
||||
get { return data.ItemTypeAutoAssign; }
|
||||
set { CheckChanged(data.ItemTypeAutoAssign, value); data.ItemTypeAutoAssign = value; }
|
||||
}
|
||||
// Population.
|
||||
internal void PopulateFrom (Data data)
|
||||
{
|
||||
ItemId = data.ItemId;
|
||||
Category = data.Category;
|
||||
DocType = data.DocType;
|
||||
DescBrief = data.DescBrief;
|
||||
Folder = data.Folder;
|
||||
Filename = data.Filename;
|
||||
MimeType = data.MimeType;
|
||||
ItemTypeAutoAssign = data.ItemTypeAutoAssign;
|
||||
base.PopulateFrom(data);
|
||||
}
|
||||
public Data Clone ()
|
||||
{
|
||||
Data data = new Data();
|
||||
data.PopulateFrom(this);
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Error field - identify properties with validation error.
|
||||
public new class ErrField : SacsHierarchyItem.ErrField
|
||||
{
|
||||
// Identifies the field that has invalid data.
|
||||
public ValidValue ItemType { get; set; } = ValidValue.Valid;
|
||||
public ValidValue ItemId { get; set; } = ValidValue.Valid;
|
||||
public ValidValue Category { get; set; } = ValidValue.Valid;
|
||||
public ValidValue DocType { get; set; } = ValidValue.Valid;
|
||||
public ValidValue DescBrief { get; set; } = ValidValue.Valid;
|
||||
public ValidValue Folder { get; set; } = ValidValue.Valid;
|
||||
public ValidValue Filename { get; set; } = ValidValue.Valid;
|
||||
public ValidValue MimeType { get; set; } = ValidValue.Valid;
|
||||
public ValidValue ItemTypeAutoAssign { get; set; } = ValidValue.Valid;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly Data data = new Data();
|
||||
// Flags.
|
||||
public static readonly Byte Flag_AutoAssigned = 0x01;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaItemDoc (SysId id, ItemId itemId, SaItemDocConsole.Category category) :
|
||||
base(id)
|
||||
{
|
||||
base.SetData(data);
|
||||
ItemId = itemId;
|
||||
Category = category;
|
||||
Status = DefaultStatus;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Status.
|
||||
private List<SaStatus> validStatuses = new List<SaStatus>()
|
||||
{
|
||||
SaStatus.Current,
|
||||
SaStatus.Deleted,
|
||||
};
|
||||
public static SaStatus DefaultStatus { get { return StatusCurrent; } }
|
||||
public static SaStatus StatusCurrent { get { return SaStatus.Current; } }
|
||||
public static List<SaStatus> ValidStatuses { get { return new List<SaStatus>(ValidStatuses); } }
|
||||
public static DataValue.TriStateType GetStatusTriState (SaStatus status)
|
||||
{
|
||||
if (status == SaStatus.Current) return DataValue.TriStateType.Green;
|
||||
if (status == SaStatus.Deleted) return DataValue.TriStateType.Purple;
|
||||
return DataValue.TriStateType.Unknown;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public Data GetData () { return data.Clone(); }
|
||||
public void SetData (Data data)
|
||||
{
|
||||
String fn = GetType().Name + ".SetData";
|
||||
// Properties that cannot be changed if previously specified.
|
||||
if (ItemId.Type >= 0 && ItemId.Type != data.ItemId.Type)
|
||||
throw new NotSupportedException(fn + " Item type cannot be changed");
|
||||
if (SysId.IsValid(ItemId.Id) && SysId.ToInt(ItemId.Id) != SysId.ToInt(data.ItemId.Id))
|
||||
throw new NotSupportedException(fn + " Item Id cannot be changed");
|
||||
// Category.
|
||||
if ((int)data.Category < 1)
|
||||
data.Category = Category;
|
||||
if ((int)Category != 0 && Category != data.Category)
|
||||
throw new NotSupportedException(fn + " Category cannot be changed");
|
||||
// Populate individual properties to ensure that 'Changed' indicator is kept up to date.
|
||||
this.data.PopulateFrom(data);
|
||||
}
|
||||
public ItemId ItemId
|
||||
{
|
||||
get { return data.ItemId; }
|
||||
protected set { data.ItemId = value; }
|
||||
}
|
||||
public SaItemDocConsole.Category Category
|
||||
{
|
||||
get { return data.Category; }
|
||||
protected set { data.Category = value; }
|
||||
}
|
||||
public String DocType
|
||||
{
|
||||
get { return data.DocType; }
|
||||
set { data.DocType = value; }
|
||||
}
|
||||
public String DescBrief
|
||||
{
|
||||
get { return data.DescBrief; }
|
||||
set { data.DescBrief = value; }
|
||||
}
|
||||
public String Folder
|
||||
{
|
||||
get { return data.Folder; }
|
||||
set { data.Folder = value; }
|
||||
}
|
||||
public String Filename
|
||||
{
|
||||
get { return data.Filename; }
|
||||
set { data.Filename = value; }
|
||||
}
|
||||
public String MimeType
|
||||
{
|
||||
get { return data.MimeType; }
|
||||
set { data.MimeType = value; }
|
||||
}
|
||||
public short ItemTypeAutoAssign
|
||||
{
|
||||
get { return data.ItemTypeAutoAssign; }
|
||||
set { data.ItemTypeAutoAssign = value; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Flags.
|
||||
public bool AutoAssigned
|
||||
{
|
||||
get { return GetFlag(Flag_AutoAssigned); }
|
||||
set { SetFlag(Flag_AutoAssigned, value); }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Comparison.
|
||||
public bool Matches (ItemId itemId)
|
||||
{
|
||||
if (ItemId.Type != itemId.Type) return false;
|
||||
if (SysId.ToInt(ItemId.Id) != SysId.ToInt(itemId.Id)) return false;
|
||||
return true;
|
||||
}
|
||||
public bool Matches (ItemId itemId, SaItemDocConsole.Category category)
|
||||
{
|
||||
if (!Matches(itemId)) return false;
|
||||
if (Category != category) return false;
|
||||
return true;
|
||||
}
|
||||
public bool Matches (ItemId itemId, SaItemDocConsole.Category category, String docType)
|
||||
{
|
||||
if (!Matches(itemId, category)) return false;
|
||||
if (!DocType.EqualsCI(docType)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// List parameters.
|
||||
public enum StatusCat
|
||||
{
|
||||
Any,
|
||||
NotDeleted,
|
||||
CurrentOnly,
|
||||
DeletedOnly,
|
||||
}
|
||||
/// <summary>
|
||||
/// Item list parameters.
|
||||
/// </summary>
|
||||
public new class Params : SacsHierarchyItem.Params
|
||||
{
|
||||
public List<SysId> IncludedIds { get; } = new List<SysId>();
|
||||
public List<SysId> ExcludedIds { get; } = new List<SysId>();
|
||||
public List<ItemId> IncludedItemIds { get; } = new List<ItemId>();
|
||||
public SaItemDocConsole.Category Category { get; set; }
|
||||
public String DocType { get; set; }
|
||||
public String DescBriefPartial { get; set; }
|
||||
public String MimeType { get; set; }
|
||||
public String FolderFull { get; set; }
|
||||
public String FolderPartial { get; set; }
|
||||
public String FilenameFull { get; set; }
|
||||
public short ItemTypeAutoAssign { get; set; }
|
||||
public StatusCat StatusCat { get; set; } = StatusCat.NotDeleted;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
/// <summary>List extension methods.</summary>
|
||||
public static class SaItemDocList
|
||||
{
|
||||
public static List<SaItemDoc> FindByItem (this List<SaItemDoc> values, ItemId itemId)
|
||||
{
|
||||
return values.FindAll(item => item.Matches(itemId));
|
||||
}
|
||||
public static List<SaItemDoc> FindByItemDocCategory (this List<SaItemDoc> values, ItemId itemId, SaItemDocConsole.Category category)
|
||||
{
|
||||
return values.FindAll(item => item.Matches(itemId, category));
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
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 SaItemDocConsole : SaErrorStateItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Definitions.
|
||||
/// <summary>Item document category.</summary>
|
||||
public enum Category
|
||||
{
|
||||
// Do not change values - tied to database.
|
||||
Unknown = 0,
|
||||
Folder = 10,
|
||||
Document = 20,
|
||||
Pdf = 21,
|
||||
Image = 30,
|
||||
FileSpec = 90, /* Generic filename with wildcards */
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Static initialisation.
|
||||
static SaItemDocConsole ()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
protected SaItemDocConsole ()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
// Database.
|
||||
public abstract bool DatabaseIsValid { get; }
|
||||
public abstract bool CanUpdateDatabase { get; }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// I t e m D o c s
|
||||
//-------------------------------------------------------------------
|
||||
// Category codes.
|
||||
public abstract List<TypeCodeDesc> GetCategoryCodes ();
|
||||
/// <summary>eg. for 'Image' documents.</summary>
|
||||
public abstract List<CodeDesc> GetCategoryTypeCodes (Category category);
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// 'Recent' and 'Favourite' folders - to populate drop-down list when selecting folder:
|
||||
/// <summary>How many recent foldes to retain? [default:5]</summary>
|
||||
public abstract int GetMaxRecentFolderCount ();
|
||||
/// <summary>List of favourites to always include in dropdown.</summary>
|
||||
public abstract void SetFavouriteFolders (List<String> folders);
|
||||
/// <summary>Mix of recent and favourites.</summary>
|
||||
public abstract List<String> GetSuggestedFolders ();
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Retrieve list of docs that match the specified params:
|
||||
public abstract bool ItemDocsExist (SaItemDoc.Params prmItemDoc);
|
||||
public abstract List<SaItemDoc> GetItemDocs (SaItemDoc.Params prmItemDoc);
|
||||
// Create a new document:
|
||||
public abstract SaItemDoc CreateItemDoc (ItemId itemId, Category category);
|
||||
// Store documents:
|
||||
public abstract bool StoreItemDoc (SaItemDoc itemDoc, DbUpdateInfo dbUpdateInfo);
|
||||
public abstract bool StoreItemDocs (List<SaItemDoc> itemDocs, DbUpdateInfo dbUpdateInfo);
|
||||
public abstract bool RemoveItemDoc (SaItemDoc itemDoc, DbUpdateInfo dbUpdateInfo);
|
||||
public abstract bool ClearItemDocs (ItemId itemId, Category category, DbUpdateInfo dbUpdateInfo);
|
||||
// Auto-assign documents.
|
||||
// The master items define 'auto-assign' docs for the item's type.
|
||||
// The 'File part' defines the filename excluding the extension.
|
||||
// If the extension list is empty, any extension is matched.
|
||||
public abstract bool AutoAssignDocs (ItemId itemId, List<ItemId> masterItemIds, String filePart, List<String> extension, DbUpdateInfo dbUpdateInfo);
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,207 @@
|
||||
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;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,327 @@
|
||||
using Sarand.Net.Standard.Base.Dbas;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Code generated by Sarand Database Utilities Thu 3-Oct-2019 15:10:54
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Sarand.Net.Standard.Base.ItemDocs
|
||||
{
|
||||
public class SaItemDocsDbDfn
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Table identifiers.
|
||||
public enum TableIdx
|
||||
{
|
||||
Unknown = 0,
|
||||
SaItemDoc,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Column identifiers.
|
||||
public enum ColumnIdx
|
||||
{
|
||||
Unknown = 0,
|
||||
SaItemDoc_Id,
|
||||
SaItemDoc_ItemType,
|
||||
SaItemDoc_ItemId,
|
||||
SaItemDoc_Category,
|
||||
SaItemDoc_Type,
|
||||
SaItemDoc_DescBrief,
|
||||
SaItemDoc_Folder,
|
||||
SaItemDoc_Filename,
|
||||
SaItemDoc_MimeType,
|
||||
SaItemDoc_ItemTypeAutoAssign,
|
||||
SaItemDoc_Notes,
|
||||
SaItemDoc_Flags,
|
||||
SaItemDoc_Status,
|
||||
SaItemDoc_CreateOn,
|
||||
SaItemDoc_CreateBy,
|
||||
SaItemDoc_CreateHost,
|
||||
SaItemDoc_UpdateOn,
|
||||
SaItemDoc_UpdateBy,
|
||||
SaItemDoc_UpdateHost,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private static readonly int tableCount = 1;
|
||||
private static readonly int columnCount = 19;
|
||||
private static ulong maxTextLen = 0;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Retrieve Table details (eg. name: 'Company').
|
||||
public static int GetTableCount ()
|
||||
{
|
||||
return tableCount;
|
||||
}
|
||||
public static String GetTableName (TableIdx table, bool delimitReservedWords = true)
|
||||
{
|
||||
int tableIdx = (int)table - 1;
|
||||
if (tableIdx < 0 || tableIdx >= tableCount) return String.Empty;
|
||||
String tableName = tables[(int)tableIdx];
|
||||
if (delimitReservedWords) tableName = DelimitReservedWord(tableName);
|
||||
return tableName;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Identify the table that corresponds with the specified column.
|
||||
public static TableIdx GetTableForColumn (ColumnIdx column)
|
||||
{
|
||||
int columnIdx = (int)column - 1;
|
||||
if (columnIdx < 0 || columnIdx >= columnCount) return TableIdx.Unknown;
|
||||
return columns[columnIdx].TableIdx;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Retrieve the specified Column's name (Qualified include table name: '(<Table>.Column>)').
|
||||
public static String GetColumnName (ColumnIdx column, bool delimitReservedWords = true)
|
||||
{
|
||||
int columnIdx = (int)column - 1;
|
||||
if (columnIdx < 0 || columnIdx >= columnCount) return String.Empty;
|
||||
String columnName = columns[columnIdx].Name;
|
||||
if (delimitReservedWords) columnName = DelimitReservedWord(columnName);
|
||||
return columnName;
|
||||
}
|
||||
public static String GetColumnNameQual (ColumnIdx column, String tableAlias = "", bool braces = false)
|
||||
{
|
||||
String columnName = GetColumnName(column);
|
||||
if (!String.IsNullOrEmpty(columnName))
|
||||
{
|
||||
String tableName = StringUtil.EmptyOnNull(tableAlias);
|
||||
if (tableName.IsEmpty()) tableName = GetTableName(GetTableForColumn(column));
|
||||
columnName = tableName + (tableName.Length > 0 ? "." : "") + columnName;
|
||||
if (braces)
|
||||
columnName = "(" + columnName + ")";
|
||||
}
|
||||
return columnName;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Reserved words.
|
||||
private static DbReservedWordDelim reservedWordDelim = DbReservedWordDelim.SquareBrackets;
|
||||
public static void SetReservedWordDelim (DbReservedWordDelim reservedWordDelim)
|
||||
{
|
||||
SaItemDocsDbDfn.reservedWordDelim = reservedWordDelim;
|
||||
}
|
||||
public static bool IsReservedWord (String word)
|
||||
{
|
||||
if (String.IsNullOrEmpty(word)) return false;
|
||||
if (reservedWords.Contains(word, StringComparer.OrdinalIgnoreCase)) return true;
|
||||
return false;
|
||||
}
|
||||
public static String DelimitReservedWord (String word)
|
||||
{
|
||||
if (!IsReservedWord(word)) return word;
|
||||
switch (reservedWordDelim)
|
||||
{
|
||||
case DbReservedWordDelim.None:
|
||||
break;
|
||||
case DbReservedWordDelim.DoubleQuotes:
|
||||
word = "\"" + word + "\"";
|
||||
break;
|
||||
case DbReservedWordDelim.SquareBrackets:
|
||||
default:
|
||||
word = "[" + word + "]";
|
||||
break;
|
||||
}
|
||||
return word;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Retrieve information about the specified Column.
|
||||
public static DbColumnDataType GetColDataType (ColumnIdx column)
|
||||
{
|
||||
int columnIdx = (int)column - 1;
|
||||
if (columnIdx < 0 || columnIdx >= columnCount) return DbColumnDataType.Unknown;
|
||||
return columns[columnIdx].DataType;
|
||||
}
|
||||
public static short GetColNativeDataType (ColumnIdx column)
|
||||
{
|
||||
int columnIdx = (int)column - 1;
|
||||
if (columnIdx < 0 || columnIdx >= columnCount) return 0;
|
||||
return columns[columnIdx].NativeDataType;
|
||||
}
|
||||
public static void SetMaxTextLen (ulong maxTextLen)
|
||||
{
|
||||
SaItemDocsDbDfn.maxTextLen = maxTextLen;
|
||||
}
|
||||
public static bool IsColFmtText (ColumnIdx column)
|
||||
{
|
||||
int columnIdx = (int)column - 1;
|
||||
if (columnIdx < 0 || columnIdx >= columnCount) return false;
|
||||
return (columns[columnIdx].DataType == DbColumnDataType.VarChar);
|
||||
}
|
||||
public static ulong GetColTextLen (ColumnIdx column)
|
||||
{
|
||||
int columnIdx = (int)column - 1;
|
||||
if (columnIdx < 0 || columnIdx >= columnCount) return 0;
|
||||
if (columns[columnIdx].DataType == DbColumnDataType.VarChar)
|
||||
{
|
||||
ulong textLen = columns[columnIdx].DataLen;
|
||||
if (maxTextLen > 0 && textLen > maxTextLen) textLen = maxTextLen;
|
||||
return textLen;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
public static bool IsColFmtBool (ColumnIdx column)
|
||||
{
|
||||
int columnIdx = (int)column - 1;
|
||||
if (columnIdx < 0 || columnIdx >= columnCount) return false;
|
||||
return (columns[columnIdx].DataType == DbColumnDataType.Bit);
|
||||
}
|
||||
public static bool IsColFmtNumeric (ColumnIdx column)
|
||||
{
|
||||
int columnIdx = (int)column - 1;
|
||||
if (columnIdx < 0 || columnIdx >= columnCount) return false;
|
||||
switch (columns[columnIdx].DataType)
|
||||
{
|
||||
case DbColumnDataType.TinyInt:
|
||||
case DbColumnDataType.SmallInt:
|
||||
case DbColumnDataType.Int:
|
||||
case DbColumnDataType.BigInt:
|
||||
case DbColumnDataType.Single:
|
||||
case DbColumnDataType.Double:
|
||||
case DbColumnDataType.Decimal:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Table definitions.
|
||||
private static readonly String[] tables =
|
||||
{
|
||||
"SaItemDoc",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Table column definitions.
|
||||
internal class ColumnDfn
|
||||
{
|
||||
internal TableIdx TableIdx { get; set; }
|
||||
internal String Name { get; set; }
|
||||
internal DbColumnDataType DataType { get; set; }
|
||||
internal short NativeDataType { get; set; }
|
||||
internal bool IsIdentity { get; set; }
|
||||
internal ulong DataLen { get; set; }
|
||||
internal ColumnDfn (int tableIdx, String name, int dataType, short nativeDataType, bool isIdentity, ulong dataLen)
|
||||
{
|
||||
this.TableIdx = (TableIdx)tableIdx;
|
||||
this.Name = name;
|
||||
this.DataType = (DbColumnDataType)dataType;
|
||||
this.NativeDataType = nativeDataType;
|
||||
this.IsIdentity = isIdentity;
|
||||
this.DataLen = dataLen;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
private static readonly ColumnDfn[] columns =
|
||||
{
|
||||
new ColumnDfn(1,"Id",4,4,false,10),
|
||||
new ColumnDfn(1,"ItemType",3,5,false,5),
|
||||
new ColumnDfn(1,"ItemId",4,4,false,10),
|
||||
new ColumnDfn(1,"Category",3,5,false,5),
|
||||
new ColumnDfn(1,"Type",0,-9,false,16),
|
||||
new ColumnDfn(1,"DescBrief",0,-9,false,64),
|
||||
new ColumnDfn(1,"Folder",0,-9,false,255),
|
||||
new ColumnDfn(1,"Filename",0,-9,false,255),
|
||||
new ColumnDfn(1,"MimeType",0,-9,false,32),
|
||||
new ColumnDfn(1,"ItemTypeAutoAssign",3,5,false,5),
|
||||
new ColumnDfn(1,"Notes",0,-9,false,255),
|
||||
new ColumnDfn(1,"Flags",3,5,false,5),
|
||||
new ColumnDfn(1,"Status",0,-9,false,3),
|
||||
new ColumnDfn(1,"CreateOn",9,93,false,23),
|
||||
new ColumnDfn(1,"CreateBy",4,4,false,10),
|
||||
new ColumnDfn(1,"CreateHost",0,-9,false,64),
|
||||
new ColumnDfn(1,"UpdateOn",9,93,false,23),
|
||||
new ColumnDfn(1,"UpdateBy",4,4,false,10),
|
||||
new ColumnDfn(1,"UpdateHost",0,-9,false,64),
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Reserved words.
|
||||
private static readonly List<String> reservedWords = new List<String>()
|
||||
{
|
||||
"ADD",
|
||||
"ALL",
|
||||
"ALTER",
|
||||
"AND",
|
||||
"ANY",
|
||||
"AS",
|
||||
"ASC",
|
||||
"AVG",
|
||||
"BEGIN",
|
||||
"BETWEEN",
|
||||
"BY",
|
||||
"CASE",
|
||||
"CAST",
|
||||
"COLUMN",
|
||||
"COMMIT",
|
||||
"CONSTRAINT",
|
||||
"CONVERT",
|
||||
"COUNT",
|
||||
"CREATE",
|
||||
"CURRENCY",
|
||||
"DEFAULT",
|
||||
"DELETE",
|
||||
"DESC",
|
||||
"DISTINCT",
|
||||
"DROP",
|
||||
"ELSE",
|
||||
"END",
|
||||
"EXECUTE",
|
||||
"EXISTS",
|
||||
"FALSE",
|
||||
"FROM",
|
||||
"GRANT",
|
||||
"GROUP",
|
||||
"HAVING",
|
||||
"IN",
|
||||
"INDEX",
|
||||
"INNER",
|
||||
"INSERT",
|
||||
"INTO",
|
||||
"IS",
|
||||
"JOIN",
|
||||
"KEY",
|
||||
"LEFT",
|
||||
"LIKE",
|
||||
"MAX",
|
||||
"MIN",
|
||||
"NOT",
|
||||
"NULL",
|
||||
"ON",
|
||||
"OR",
|
||||
"ORDER",
|
||||
"OUTER",
|
||||
"OUTPUT",
|
||||
"PRIMARY",
|
||||
"PROCEDURE",
|
||||
"REVOKE",
|
||||
"ROLLBACK",
|
||||
"ROWCOUNT",
|
||||
"SELECT",
|
||||
"SET",
|
||||
"SQL",
|
||||
"SUM",
|
||||
"TABLE",
|
||||
"THEN",
|
||||
"TRANSACTION",
|
||||
"TRUE",
|
||||
"UNION",
|
||||
"UNIQUE",
|
||||
"UPDATE",
|
||||
"USER",
|
||||
"VALUES",
|
||||
"VIEW",
|
||||
"WHEN",
|
||||
"WHERE",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user