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