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. /// Item document category. 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 GetCategoryCodes (); /// eg. for 'Image' documents. public abstract List GetCategoryTypeCodes (Category category); //------------------------------------------------------------------- // 'Recent' and 'Favourite' folders - to populate drop-down list when selecting folder: /// How many recent foldes to retain? [default:5] public abstract int GetMaxRecentFolderCount (); /// List of favourites to always include in dropdown. public abstract void SetFavouriteFolders (List folders); /// Mix of recent and favourites. public abstract List GetSuggestedFolders (); //------------------------------------------------------------------- // Retrieve list of docs that match the specified params: public abstract bool ItemDocsExist (SaItemDoc.Params prmItemDoc); public abstract List 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 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 masterItemIds, String filePart, List extension, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- } //======================================================================= }