using Sarand.BusinessMgr.Net.Standard.Base.Consoles; using Sarand.BusinessMgr.Net.Standard.Base.Mgr; using Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.CodeTypes; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Diary; using Sarand.Net.Standard.Base.Interfaces; using Sarand.Net.Standard.Base.ItemData; using Sarand.Net.Standard.Base.ItemDocs; using Sarand.Net.Standard.Base.ItemOptions; using Sarand.Net.Standard.Base.ReferenceData; using Sarand.Net.Standard.Base.Security; using Sarand.Net.Standard.Base.UpdateLog; using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; namespace Sarand.BusinessMgr.Net.Standard.Base.App { //======================================================================= public abstract partial class SbmSystem : SacsSystem { //------------------------------------------------------------------- // Data members. private static short assetCommodityTypeAllowed = -1; //------------------------------------------------------------------- // Extended logging options. public enum ExtendedLogginOption { SecurityProfile, DbQueryExecution, Printing, } public static readonly String ExtendedLogging_SecurityProfile = "SecurityProfile"; public static readonly String ExtendedLogging_DbQueryExecution = "DbQueryExecution"; public static readonly String ExtendedLogging_Printing = "Printing"; private List extendedLoggingOptions; public object StringList { get; } //------------------------------------------------------------------- // Construction - use derived objects. protected SbmSystem(PropertySet properties) { // Configure extended logging. extendedLoggingOptions = StringListUtil.Split(properties.GetPropertyValue("Logging", "ExtendedLogging")); } //------------------------------------------------------------------- // Application definitions. public static Sbm.SessionConfig GetSessionConfigType(String consoleProperty) { if (consoleProperty.ContainsCI("Sarand")) return Sbm.SessionConfig.Sarand; if (consoleProperty.ContainsCI("MPE")) return Sbm.SessionConfig.MPE; if (consoleProperty.ContainsCI("BPE")) return Sbm.SessionConfig.BPE; if (consoleProperty.ContainsCI("Cadix") || consoleProperty.ContainsCI("CUL")) return Sbm.SessionConfig.Cadix; return Sbm.SessionConfig.Generic; } public static String GetCopyrightNotice(bool html = false) { return (html ? "©" : "(c)") + "2002- " + DateTime.Today.Year + "Sarand Ltd"; } public static bool IsSysAdminSession() { // Dev mode. if (IsDevHost()) return true; // Production servers. if (UserName.ContainsCI("Sarand")) { if (ComputerName.EqualsCI("SS-APP-S1")) return true; if (ComputerName.EqualsCI("SS-APP-S2")) return true; if (ComputerName.EqualsCI("SS-APP-LG1")) return true; } // Development. if (ComputerName.ContainsCI("Sarand")) return true; return false; } //------------------------------------------------------------------- // Application codes. public static List GetSystemCodes(Sbm.ApplicationCode applicationCode) { List codes = systemCodes.GetValueOrDefault(applicationCode); if (codes == null) SaLogger.Warn($"{SysUtil.Fn} Unrecognised system code type: {applicationCode}."); return codes; } //------------------------------------------------------------------- // Data Managers. public abstract SbmAccountMgr CreateAccountMgr(SbmInternals internals); public abstract SbmAssetMgr CreateAssetMgr(SbmInternals internals); public abstract SbmCommodityMgr CreateCommodityMgr(SbmInternals internals); public abstract SbmPriceMgr CreatePriceMgr(SbmInternals internals); public abstract SbmDataItemMgr CreateDataItemMgr(SbmInternals internals); public abstract SbmProcessMgr CreateProcessMgr(SbmInternals internals); public abstract SbmStockMgr CreateStockMgr(SbmInternals internals); public abstract SbmTransactionMgr CreateTransactionMgr(SbmInternals internals); // Control. public abstract SbmcAccountMgr CreateControlAccountMgr(); public abstract SbmcInstanceMgr CreateControlInstanceMgr(); public abstract SbmcItemMgr CreateControlItemMgr(); //------------------------------------------------------------------- // Consoles. public abstract SbmSessionConsole CreateSessionConsole(SbmInternals internals); public abstract SaDiaryConsole CreateDiaryConsole(SbmInternals internals); public abstract SaSecurityConsole CreateSecurityConsole(SbmInternals internals); public abstract SaCodeTypeConsole CreateCodeTypeConsole(SbmInternals internals); public abstract SaReferenceDataConsole CreateReferenceDataConsole(SbmInternals internals); public abstract SaItemDataConsole CreateItemDataConsole(SbmInternals internals); public abstract SaItemDocConsole CreateItemDocConsole(SbmInternals internals); public abstract SaItemOptionConsole CreateItemOptionConsole(SbmInternals internals); public abstract SaInterfaceConsole CreateInterfaceConsole(SbmInternals internals); public abstract SaUpdateLogConsole CreateUpdateLogConsole(SbmInternals internals); public abstract SbmEmailConsole CreateEmailConsole(SbmEmailConfig emailConfig); //------------------------------------------------------------------- // Application Properties. public bool IsExtendedLogging(ExtendedLogginOption extendedLoggingOption) { if (extendedLoggingOptions == null) return false; if (extendedLoggingOption == ExtendedLogginOption.SecurityProfile) return extendedLoggingOptions.ContainsCI(ExtendedLogging_SecurityProfile); if (extendedLoggingOption == ExtendedLogginOption.DbQueryExecution) return extendedLoggingOptions.ContainsCI(ExtendedLogging_DbQueryExecution); if (extendedLoggingOption == ExtendedLogginOption.Printing) return extendedLoggingOptions.ContainsCI(ExtendedLogging_Printing); return false; } //------------------------------------------------------------------- } //======================================================================= }