Example #1
0
        //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

        private void Init()
        {
            try
            {
                //Used to Force create DatabaseScema and Fixtures with XPO (Non Script Mode): Requirements for Work: Empty or Non Exist Database
                //Notes: OnError "An exception of type 'DevExpress.Xpo.DB.Exceptions.SchemaCorrectionNeededException'", UnCheck [X] Break when this exception is user-unhandled and continue, watch log and wait until sucefull message appear
                bool xpoCreateDatabaseAndSchema           = SettingsApp.XPOCreateDatabaseAndSchema;
                bool xpoCreateDatabaseObjectsWithFixtures = xpoCreateDatabaseAndSchema;
                //Prepare AutoCreateOption
                AutoCreateOption xpoAutoCreateOption = (xpoCreateDatabaseAndSchema) ? AutoCreateOption.DatabaseAndSchema : AutoCreateOption.None;

                //Init Settings Main Config Settings
                //GlobalFramework.Settings = ConfigurationManager.AppSettings;

                //Override Licence data with Encrypted File Data
                if (File.Exists(SettingsApp.LicenceFileName))
                {
                    Utils.AssignLicence(SettingsApp.LicenceFileName, true);
                }

                //Other Global App Settings
                GlobalApp.MultiUserEnvironment = Convert.ToBoolean(GlobalFramework.Settings["appMultiUserEnvironment"]);
                GlobalApp.UseVirtualKeyBoard   = Convert.ToBoolean(GlobalFramework.Settings["useVirtualKeyBoard"]);

                //Init App Notifications
                GlobalApp.Notifications = new System.Collections.Generic.Dictionary <string, bool>();
                GlobalApp.Notifications["SHOW_PRINTER_UNDEFINED"] = true;

                //System
                GlobalApp.FilePickerStartPath = System.IO.Directory.GetCurrentDirectory();

                //Get DataBase Details
                GlobalFramework.DatabaseType = (DatabaseType)Enum.Parse(typeof(DatabaseType), GlobalFramework.Settings["databaseType"]);
                //Override default Database name with parameter from config
                string configDatabaseName = GlobalFramework.Settings["databaseName"];
                GlobalFramework.DatabaseName = (string.IsNullOrEmpty(configDatabaseName)) ? SettingsApp.DatabaseName : configDatabaseName;
                //Xpo Connection String
                string xpoConnectionString = string.Format(GlobalFramework.Settings["xpoConnectionString"], GlobalFramework.DatabaseName.ToLower());
                Utils.AssignConnectionStringToSettings(xpoConnectionString);

                //Removed Protected Files
                //ProtectedFiles, Before Create Database from Scripts, usefull if Scripts are modified by User
                if (SettingsApp.ProtectedFilesUse)
                {
                    GlobalApp.ProtectedFiles = InitProtectedFiles();
                }

                //Check if Database Exists if Not Create it from Scripts
                bool databaseCreated = false;
                if (!xpoCreateDatabaseAndSchema)
                {
                    //Get result to check if DB is created (true)
                    try
                    {
                        // Launch Scripts
                        SettingsApp.firstBoot = true;
                        databaseCreated       = DataLayer.CreateDatabaseSchema(xpoConnectionString, GlobalFramework.DatabaseType, GlobalFramework.DatabaseName);
                    }
                    catch (Exception ex)
                    {
                        //Extra protection to prevent goes to login without a valid connection
                        _log.Error("void Init() :: DataLayer.CreateDatabaseSchema :: " + ex.Message, ex);

                        /* IN009034 */
                        GlobalApp.DialogThreadNotify.WakeupMain();

                        Utils.ShowMessageTouch(GlobalApp.WindowStartup, DialogFlags.Modal, new Size(900, 700), MessageType.Error, ButtonsType.Ok, resources.CustomResources.GetCustomResources(GlobalFramework.Settings["customCultureResourceDefinition"], "global_error"), ex.Message);
                        Environment.Exit(0);
                    }
                }
                SettingsApp.firstBoot = false;
                //Init XPO Connector DataLayer
                try
                {
                    /* IN007011 */
                    var connectionStringBuilder = new System.Data.Common.DbConnectionStringBuilder()
                    {
                        ConnectionString = xpoConnectionString
                    };
                    if (connectionStringBuilder.ContainsKey("password"))
                    {
                        connectionStringBuilder["password"] = "******";
                    }
                    ;
                    _log.Debug(string.Format("void Init() :: Init XpoDefault.DataLayer: [{0}]", connectionStringBuilder.ToString()));

                    XpoDefault.DataLayer       = XpoDefault.GetDataLayer(xpoConnectionString, xpoAutoCreateOption);
                    GlobalFramework.SessionXpo = new Session(XpoDefault.DataLayer)
                    {
                        LockingOption = LockingOption.None
                    };
                }
                catch (Exception ex)
                {
                    _log.Error("void Init() :: Init XpoDefault.DataLayer: " + ex.Message, ex);

                    /* IN009034 */
                    GlobalApp.DialogThreadNotify.WakeupMain();

                    Utils.ShowMessageTouch(GlobalApp.WindowStartup, DialogFlags.Modal, new Size(900, 700), MessageType.Error, ButtonsType.Ok, resources.CustomResources.GetCustomResources(GlobalFramework.Settings["customCultureResourceDefinition"], "global_error"), ex.Message);
                    throw; // TO DO
                }

                //Check Valid Database Scheme
                if (!xpoCreateDatabaseAndSchema && !FrameworkUtils.IsRunningOnMono())
                {
                    bool isSchemaValid = DataLayer.IsSchemaValid(xpoConnectionString);
                    _log.Debug(string.Format("void Init() :: Check if Database Scheme: isSchemaValid : [{0}]", isSchemaValid));
                    if (!isSchemaValid)
                    {
                        /* IN009034 */
                        GlobalApp.DialogThreadNotify.WakeupMain();

                        string endMessage = "Invalid database Schema! Fix database Schema and Try Again!";
                        Utils.ShowMessageTouch(GlobalApp.WindowStartup, DialogFlags.Modal, new Size(500, 300), MessageType.Error, ButtonsType.Ok, resources.CustomResources.GetCustomResources(GlobalFramework.Settings["customCultureResourceDefinition"], "global_error"), string.Format(endMessage, Environment.NewLine));
                        Environment.Exit(0);
                    }
                }

                // Assign PluginSoftwareVendor Reference to DataLayer SettingsApp to use In Date Protection, we Required to assign it Statically to Prevent Circular References
                // Required to be here, before it is used in above lines, ex Utils.GetTerminal()
                if (GlobalFramework.PluginSoftwareVendor != null)
                {
                    logicpos.datalayer.App.SettingsApp.PluginSoftwareVendor = GlobalFramework.PluginSoftwareVendor;
                }

                //If not in Xpo create database Scheme Mode, Get Terminal from Db
                if (!xpoCreateDatabaseAndSchema)
                {
                    GlobalFramework.LoggedTerminal = Utils.GetTerminal();
                }

                //After Assigned LoggedUser
                if (xpoCreateDatabaseObjectsWithFixtures)
                {
                    InitFixtures.InitUserAndTerminal(GlobalFramework.SessionXpo);
                    InitFixtures.InitOther(GlobalFramework.SessionXpo);
                    InitFixtures.InitDocumentFinance(GlobalFramework.SessionXpo);
                    InitFixtures.InitWorkSession(GlobalFramework.SessionXpo);
                }

                //End Xpo Create Scheme and Fixtures, Terminate App and Request assign False to Developer Vars
                if (xpoCreateDatabaseAndSchema)
                {
                    /* IN009034 */
                    GlobalApp.DialogThreadNotify.WakeupMain();

                    string endMessage = "Xpo Create Schema and Fixtures Done!{0}Please assign false to 'xpoCreateDatabaseAndSchema' and 'xpoCreateDatabaseObjectsWithFixtures' and run App again";
                    _log.Debug(string.Format("void Init() :: xpoCreateDatabaseAndSchema: {0}", endMessage));

                    Utils.ShowMessageTouch(GlobalApp.WindowStartup, DialogFlags.Modal, new Size(500, 300), MessageType.Info, ButtonsType.Ok, resources.CustomResources.GetCustomResources(GlobalFramework.Settings["customCultureResourceDefinition"], "global_information"), string.Format(endMessage, Environment.NewLine));
                    Environment.Exit(0);
                }

                //Init PreferenceParameters
                GlobalFramework.PreferenceParameters = FrameworkUtils.GetPreferencesParameters();
                //Init Preferences Path
                MainApp.InitPathsPrefs();

                //CultureInfo/Localization
                string culture = GlobalFramework.PreferenceParameters["CULTURE"];

                /* IN008013 */
                if (String.IsNullOrEmpty(culture))
                {
                    culture = GlobalFramework.Settings["customCultureResourceDefinition"];
                }

                //if (!string.IsNullOrEmpty(culture))
                //{
                /* IN006018 and IN007009 */
                //logicpos.shared.App.CustomRegion.RegisterCustomRegion();
                //Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(culture);
                //}
                //if (!Utils.IsLinux)
                //{
                //    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(culture);
                //}
                GlobalFramework.CurrentCulture = CultureInfo.CurrentUICulture;

                /* IN006018 and IN007009 */
                _log.Debug(string.Format("CUSTOM CULTURE :: CurrentUICulture '{0}' in use.", CultureInfo.CurrentUICulture));

                //Always use en-US NumberFormat because of mySql Requirements
                GlobalFramework.CurrentCultureNumberFormat = CultureInfo.GetCultureInfo(SettingsApp.CultureNumberFormat);

                //Init AppSession
                string appSessionFile = Utils.GetSessionFileName();
                if (databaseCreated && File.Exists(appSessionFile))
                {
                    File.Delete(appSessionFile);
                }
                GlobalFramework.SessionApp = GlobalFrameworkSession.InitSession(appSessionFile);

                //Try to Get open Session Day/Terminal for this Terminal
                GlobalFramework.WorkSessionPeriodDay      = ProcessWorkSessionPeriod.GetSessionPeriod(WorkSessionPeriodType.Day);
                GlobalFramework.WorkSessionPeriodTerminal = ProcessWorkSessionPeriod.GetSessionPeriod(WorkSessionPeriodType.Terminal);

                //Use Detected ScreenSize
                string appScreenSize = string.IsNullOrEmpty(GlobalFramework.Settings["appScreenSize"])
                    ? GlobalFramework.PreferenceParameters["APP_SCREEN_SIZE"]
                    : GlobalFramework.Settings["appScreenSize"];
                if (appScreenSize.Replace(" ", string.Empty).Equals("0,0") || string.IsNullOrEmpty(appScreenSize))
                {
                    // Force Unknown Screen Size
                    //GlobalApp.ScreenSize = new Size(2000, 1800);
                    GlobalApp.ScreenSize = Utils.GetThemeScreenSize();
                }
                //Use config ScreenSize
                else
                {
                    Size configAppScreenSize = Utils.StringToSize(appScreenSize);
                    GlobalApp.ScreenSize = Utils.GetThemeScreenSize(configAppScreenSize);
                }

                // Init ExpressionEvaluator
                GlobalApp.ExpressionEvaluator.EvaluateFunction += ExpressionEvaluatorExtended.ExpressionEvaluator_EvaluateFunction;
                // Init Variables
                ExpressionEvaluatorExtended.InitVariablesStartupWindow();
                ExpressionEvaluatorExtended.InitVariablesPosMainWindow();

                // Define Max Dialog Window Size
                GlobalApp.MaxWindowSize = new Size(GlobalApp.ScreenSize.Width - 40, GlobalApp.ScreenSize.Height - 40);
                // Add Variables to ExpressionEvaluator.Variables Singleton
                GlobalApp.ExpressionEvaluator.Variables.Add("globalScreenSize", GlobalApp.ScreenSize);
                //to used in shared projects
                GlobalFramework.screenSize = GlobalApp.ScreenSize;
                //Parse and store Theme in Singleton
                try
                {
                    GlobalApp.Theme = XmlToObjectParser.ParseFromFile(SettingsApp.FileTheme);
                    // Use with dynamic Theme properties like:
                    // GlobalApp.Theme.Theme.Frontoffice.Window[0].Globals.Name = PosBaseWindow
                    // GlobalApp.Theme.Theme.Frontoffice.Window[1].Objects.TablePadUser.Position = 50,50
                    // or use predicate with from object id ex
                    //var predicate = (Predicate<dynamic>)((dynamic x) => x.ID == "StartupWindow");
                    //var themeWindow = GlobalApp.Theme.Theme.Frontoffice.Window.Find(predicate);
                    //_log.Debug(string.Format("Message: [{0}]", themeWindow.Globals.Title));
                }
                catch (Exception ex)
                {
                    /* IN009034 */
                    GlobalApp.DialogThreadNotify.WakeupMain();

                    _log.Debug("void Init() :: XmlToObjectParser.ParseFromFile(SettingsApp.FileTheme) :: " + ex);
                    Utils.ShowMessageTouchErrorRenderTheme(GlobalApp.WindowStartup, ex.Message);
                }

                //Init FastReports Custom Functions and Custom Vars
                CustomFunctions.Register(SettingsApp.AppName);

                //Hardware : Init Display
                if (GlobalFramework.LoggedTerminal.PoleDisplay != null)
                {
                    GlobalApp.UsbDisplay = (UsbDisplayDevice)UsbDisplayDevice.InitDisplay();
                    GlobalApp.UsbDisplay.WriteCentered(string.Format("{0} {1}", SettingsApp.AppName, FrameworkUtils.ProductVersion), 1);
                    GlobalApp.UsbDisplay.WriteCentered(SettingsApp.AppUrl, 2);
                    GlobalApp.UsbDisplay.EnableStandBy();
                }

                //Hardware : Init BarCodeReader
                if (GlobalFramework.LoggedTerminal.BarcodeReader != null)
                {
                    GlobalApp.BarCodeReader = new InputReader();
                }

                //Hardware : Init WeighingBalance
                if (GlobalFramework.LoggedTerminal.WeighingMachine != null)
                {
                    GlobalApp.WeighingBalance = new WeighingBalance(GlobalFramework.LoggedTerminal.WeighingMachine);
                    //_log.Debug(string.Format("IsPortOpen: [{0}]", GlobalApp.WeighingBalance.IsPortOpen()));
                }

                //Send To Log
                _log.Debug(string.Format("void Init() :: ProductVersion: [{0}], ImageRuntimeVersion: [{1}], IsLicensed: [{2}]", FrameworkUtils.ProductVersion, FrameworkUtils.ProductAssembly.ImageRuntimeVersion, LicenceManagement.IsLicensed));

                //Audit
                FrameworkUtils.Audit("APP_START", string.Format("{0} {1} clr {2}", SettingsApp.AppName, FrameworkUtils.ProductVersion, FrameworkUtils.ProductAssembly.ImageRuntimeVersion));
                if (databaseCreated)
                {
                    FrameworkUtils.Audit("DATABASE_CREATE");
                }

                // Plugin Errors Messages
                if (GlobalFramework.PluginSoftwareVendor == null || !GlobalFramework.PluginSoftwareVendor.IsValidSecretKey(SettingsApp.SecretKey))
                {
                    /* IN009034 */
                    GlobalApp.DialogThreadNotify.WakeupMain();

                    _log.Debug(String.Format("void Init() :: Wrong key detected [{0}]. Use a valid LogicposFinantialLibrary with same key as SoftwareVendorPlugin", SettingsApp.SecretKey));
                    Utils.ShowMessageTouch(GlobalApp.WindowStartup, DialogFlags.Modal, new Size(650, 380), MessageType.Error, ButtonsType.Ok, resources.CustomResources.GetCustomResources(GlobalFramework.Settings["customCultureResourceDefinition"], "global_error"), resources.CustomResources.GetCustomResources(GlobalFramework.Settings["customCultureResourceDefinition"], "dialog_message_error_plugin_softwarevendor_not_registered"));
                }

                // TK013134: HardCoded Modules : PakingTicket
                try
                {
                    // Override default AppUseParkingTicketModule
                    /* IN009239 */
                    //GlobalFramework.AppUseParkingTicketModule = Convert.ToBoolean(GlobalFramework.Settings["appMultiUserEnvironment"]);
                    CustomAppOperationMode customAppOperationMode = FrameworkUtils.GetCustomAppOperationMode();
                    GlobalFramework.AppUseParkingTicketModule = CustomAppOperationMode.PARKING.Equals(customAppOperationMode);

                    //TK016235 BackOffice - Mode
                    GlobalFramework.AppUseBackOfficeMode = CustomAppOperationMode.BACKOFFICE.Equals(customAppOperationMode);

                    // Init Global Object GlobalApp.ParkingTicket
                    if (GlobalFramework.AppUseParkingTicketModule)
                    {
                        GlobalApp.ParkingTicket = new ParkingTicket();
                    }
                }
                catch (Exception)
                {
                    _log.Error(string.Format("void Init() :: Missing AppUseParkingTicketModule Token in Settings, using default value: [{0}]", GlobalFramework.AppUseParkingTicketModule));
                }

                //Create SystemNotification
                FrameworkUtils.SystemNotification();

                //Clean Documents Folder on New Database, else we have Document files that dont correspond to Database
                if (databaseCreated && Directory.Exists(GlobalFramework.Path["documents"].ToString()))
                {
                    string documentsFolder     = GlobalFramework.Path["documents"].ToString();
                    System.IO.DirectoryInfo di = new DirectoryInfo(documentsFolder);
                    if (di.GetFiles().Length > 0)
                    {
                        _log.Debug(string.Format("void Init() :: New database created. Start Delete [{0}] document(s) from [{1}] folder!", di.GetFiles().Length, documentsFolder));
                        foreach (FileInfo file in di.GetFiles())
                        {
                            try
                            {
                                file.Delete();
                            }
                            catch (Exception)
                            {
                                _log.Error(string.Format("void Init() :: Error! Cant delete Document file: [{0}]", file.Name));
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _log.Error("void Init() :: " + ex.Message, ex);
            }
        }
Example #2
0
 public static DevExpress.Xpo.DB.IDataStore GetConnectionProvider(DevExpress.Xpo.DB.AutoCreateOption autoCreateOption)
 {
     return(XpoDefault.GetConnectionProvider(ConnectionString, autoCreateOption));
 }
Example #3
0
 public static IDataLayer GetDataLayer(DevExpress.Xpo.DB.AutoCreateOption autoCreateOption)
 {
     return(XpoDefault.GetDataLayer(ConnectionString, autoCreateOption));
 }
Example #4
0
        /// <summary>
        /// Create initial database Scheme and Initial scripts
        /// </summary>
        /// <param name="ConnectionString"></param>
        /// <param name="DatabaseType"></param>
        /// <param name="DatabaseName"></param>
        /// <returns></returns>
        public static bool CreateDatabaseSchema(string pXpoConnectionString, DatabaseType pDatabaseType, string pDatabaseName)
        {
            //Log4Net
            log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

            bool         result = false;
            string       xpoConnectionString  = pXpoConnectionString;
            DatabaseType databaseType         = pDatabaseType;
            string       databaseTypeString   = Enum.GetName(typeof(DatabaseType), GlobalFramework.DatabaseType);
            string       databaseName         = pDatabaseName;
            IDataLayer   xpoDataLayer         = null;
            bool         onErrorsDropDatabase = true;
            string       sql = string.Empty;
            object       resultCmd;
            Hashtable    commands         = new Hashtable();
            string       commandSeparator = ";";
            bool         databaseExists   = false;
            Session      xpoSession;
            Dictionary <string, string> replace = GetReplaceables(pDatabaseType);

            string sqlDatabaseSchema = FrameworkUtils.OSSlash(string.Format(SettingsApp.FileDatabaseSchema, databaseTypeString));
            //string sqlDatabaseOtherDatabaseType = FrameworkUtils.OSSlash(string.Format(SettingsApp.FileDatabaseOtherDatabaseType, databaseTypeString)); /* IN009045: Not in use */
            string sqlDatabaseOtherCommon = FrameworkUtils.OSSlash(SettingsApp.FileDatabaseOtherCommon);
            /* IN008024 and after IN009035: data being included by databasedata.sql accordingly to its specific theme/language */
            // string sqlDatabaseOtherCommonAppMode = string.Format("{0}/{1}", FrameworkUtils.OSSlash(SettingsApp.FileDatabaseOtherCommonAppMode), SettingsApp.CustomAppOperationMode.AppOperationTheme.ToLower());
            string sqlDatabaseOtherCommonPluginsSoftwareVendor = FrameworkUtils.OSSlash(SettingsApp.FileDatabaseOtherCommonPluginsSoftwareVendor);
            string FileDatabaseOtherCommonPluginsSoftwareVendorOtherCommonCountry = FrameworkUtils.OSSlash(SettingsApp.FileDatabaseOtherCommonPluginsSoftwareVendor);
            string sqlDatabaseData     = FrameworkUtils.OSSlash(SettingsApp.FileDatabaseData);
            string sqlDatabaseDataDemo = FrameworkUtils.OSSlash(SettingsApp.FileDatabaseDataDemo);
            string sqlDatabaseViews    = FrameworkUtils.OSSlash(SettingsApp.FileDatabaseViews);
            bool   useDatabaseDataDemo = Convert.ToBoolean(GlobalFramework.Settings["useDatabaseDataDemo"]);

            switch (databaseType)
            {
            case DatabaseType.SQLite:
            case DatabaseType.MonoLite:
                //connectionstring = string.Format(GlobalFramework.Settings["xpoConnectionString"], databaseName);
                break;

            case DatabaseType.MSSqlServer:
                //Required to Remove DataBase Name From Connection String
                xpoConnectionString = xpoConnectionString.Replace(string.Format("Initial Catalog={0};", pDatabaseName), string.Empty);
                commands.Add("select_schema", string.Format(@"SELECT name FROM sys.databases WHERE name = '{0}' AND name NOT IN ('master', 'tempdb', 'model', 'msdb');", databaseName));
                commands.Add("create_database", string.Format(@"IF NOT EXISTS(SELECT * FROM sys.databases WHERE name = '{0}') CREATE DATABASE {0};", databaseName));
                commands.Add("use_database", string.Format(@"USE {0};", databaseName));
                commands.Add("drop_database", string.Format(@"USE master; IF EXISTS(SELECT name FROM sys.databases WHERE name = '{0}') DROP DATABASE {0};", databaseName));
                //ByPass Default commandSeparator ;
                commandSeparator = "GO";
                break;

            case DatabaseType.MySql:
                //Required to Remove DataBase Name From Connection String
                xpoConnectionString = xpoConnectionString.Replace(string.Format("database={0};", pDatabaseName), string.Empty);
                commands.Add("select_schema", string.Format(@"SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '{0}';", databaseName));
                commands.Add("create_database", string.Format(@"CREATE DATABASE IF NOT EXISTS {0} CHARACTER SET utf8 COLLATE utf8_bin /*!40100 DEFAULT CHARACTER SET utf8*/;", databaseName));
                commands.Add("use_database", string.Format(@"USE {0};", databaseName));
                commands.Add("drop_database", string.Format(@"DROP DATABASE IF EXISTS {0};", databaseName));
                break;
            }

            //Get DataLayer
            try
            {
                xpoDataLayer = XpoDefault.GetDataLayer(xpoConnectionString, AutoCreateOption.None);
            }
            catch (Exception ex)
            {
                log.Error(string.Format("CreateDatabaseSchema(): {0}", ex.Message), ex);
                throw;
            }

            //Init Session
            xpoSession = new Session(xpoDataLayer);

            //Start CreateDatabaseSchema Process
            try
            {
                switch (databaseType)
                {
                case DatabaseType.SQLite:
                case DatabaseType.MonoLite:
                    string filename = string.Format("{0}.db", databaseName);
                    databaseExists = (File.Exists(filename) && new FileInfo(filename).Length > 0);
                    log.Debug(string.Format("DatabaseExists: [{0}], databaseName: [{1}]", databaseExists, string.Format("{0}.db", databaseName)));
                    break;

                case DatabaseType.MSSqlServer:
                case DatabaseType.MySql:
                default:
                    sql = commands["select_schema"].ToString();
                    //log.Debug(string.Format("ExecuteScalar: [{0}]", sql));
                    resultCmd = xpoSession.ExecuteScalar(sql);
                    log.Debug(string.Format("Use Database resultCmd: [{0}]", resultCmd));
                    databaseExists = ((string)resultCmd == databaseName);
                    log.Debug(string.Format("DatabaseExists:[{0}] [{1}]", databaseName, databaseExists));
                    break;
                }

                //Create Database and Data
                if (!databaseExists)
                {
                    log.Debug(string.Format("Creating {0} Database: [{1}]", databaseType, databaseName));

                    //Always Delete Old appsession.json file when Create new Database
                    if (File.Exists(Utils.GetSessionFileName()))
                    {
                        File.Delete(Utils.GetSessionFileName());
                    }

                    if (pDatabaseType != DatabaseType.SQLite && pDatabaseType != DatabaseType.MonoLite)
                    {
                        sql = commands["create_database"].ToString();
                        log.Debug(string.Format("ExecuteScalar: [{0}]", sql));
                        resultCmd = xpoSession.ExecuteScalar(sql);
                        log.Debug(string.Format("Create Database resultCmd: [{0}]", resultCmd));

                        sql = commands["use_database"].ToString();
                        log.Debug(string.Format("ExecuteScalar: [{0}]", sql));
                        resultCmd = xpoSession.ExecuteScalar(sql);
                        log.Debug(string.Format("Use Database resultCmd: [{0}]", resultCmd));
                    }

                    //Restore Script Files

                    //Schema
                    result = ProcessDump(xpoSession, sqlDatabaseSchema, commandSeparator, replace);
                    //Data
                    if (result)
                    {
                        result = ProcessDump(xpoSession, sqlDatabaseData, ";", replace);
                    }
                    //DataDemo
                    if (useDatabaseDataDemo && result)
                    {
                        result = ProcessDump(xpoSession, sqlDatabaseDataDemo, ";", replace);
                    }
                    //Process Other Files: DatabaseOtherCommonPluginsSoftwareVendor
                    if (result)
                    {
                        result = ProcessDumpDirectory(xpoSession, sqlDatabaseOtherCommonPluginsSoftwareVendor, ";", replace);
                    }
                    //Views
                    if (result)
                    {
                        result = ProcessDump(xpoSession, sqlDatabaseViews, ";", replace);
                    }
                    //Directory Scripts
                    //Process Other Files: DatabaseOtherDatabaseType
                    /* IN009045: not in use */

                    /*if (result)
                     * {
                     *  result = ProcessDumpDirectory(xpoSession, sqlDatabaseOtherDatabaseType, ";", replace);//commandSeparator
                     * }*/
                    //Process Other Files: DatabaseOtherCommon
                    if (result)
                    {
                        result = ProcessDumpDirectory(xpoSession, sqlDatabaseOtherCommon, ";", replace); /* IN009045 */
                    }
                    ////Process Other Files: DatabaseOtherCommonPluginsSoftwareVendor
                    //if (result)
                    //{
                    //    result = ProcessDumpDirectory(xpoSession, sqlDatabaseOtherCommonPluginsSoftwareVendor, commandSeparator, replace);
                    //}
                    //Process Other Files: DatabaseOtherCommonAppMode
                    /* IN009045 and IN009035: data being included by databasedata.sql accordingly to its specific theme/language */

                    /*if (result)
                     * {
                     *  result = ProcessDumpDirectory(xpoSession, sqlDatabaseOtherCommonAppMode, ";", replace);
                     * }*/

                    //Clean ConfigurationPreferenceParameter
                    string sqlConfigurationPreferenceParameter = @"UPDATE cfg_configurationpreferenceparameter SET Value = NULL WHERE (Token = 'COMPANY_COUNTRY' OR Token = 'COMPANY_COUNTRY_CODE2' OR Token = 'SYSTEM_CURRENCY' OR Token = 'COMPANY_COUNTRY_OID' OR Token = 'SYSTEM_CURRENCY_OID')";
                    if (result && Debugger.IsAttached == true)
                    {
                        xpoSession.ExecuteScalar(sqlConfigurationPreferenceParameter);
                    }
                    else
                    {
                        sqlConfigurationPreferenceParameter = string.Format("{0} {1}", sqlConfigurationPreferenceParameter, "OR (FormPageNo = 1 AND FormType = 1 AND Token <> 'COMPANY_TAX_ENTITY')");
                        xpoSession.ExecuteScalar(sqlConfigurationPreferenceParameter);
                    }
                }
                else
                {
                    log.Debug(string.Format("{0} Database: [{1}] Already Exist! Skip Creating Database", databaseType, databaseName));
                    result = false;
                    return(false);
                }
            }
            catch (Exception ex)
            {
                log.Error(ex.Message, ex);
                result = false;
            }

            //If detect errors Drop Incompleted Database
            if (onErrorsDropDatabase && !result)
            {
                //Drop Database
                sql = commands["drop_database"].ToString();
                log.Debug(string.Format("ExecuteScalar: [{0}]", sql));
                resultCmd = xpoSession.ExecuteScalar(sql);
                log.Debug(string.Format("Create Database resultCmd: [{0}]", resultCmd));
            }

            return(result);
        }
Example #5
0
 public static IDataLayer GetDataLayer(IConfiguration configuration, DevExpress.Xpo.DB.AutoCreateOption autoCreateOption)
 {
     return(XpoDefault.GetDataLayer(configuration.GetConnectionString(ConnectionStringName), autoCreateOption));
 }
Example #6
0
 public IDataStore CreateSchemaCheckingStore(out IDisposable[] disposableObjects)
 {
     disposableObjects = null;
     return(XpoDefault.GetConnectionProvider(_connectionString, AutoCreateOption.None));
 }
Example #7
0
 public static void Connect(DevExpress.Xpo.DB.AutoCreateOption autoCreateOption)
 {
     XpoDefault.DataLayer = XpoDefault.GetDataLayer(ConnectionString, autoCreateOption);
     XpoDefault.Session   = null;
 }
Example #8
0
 public override IDataStore CreateUpdatingStore(out IDisposable[] disposableObjects)
 {
     disposableObjects = new IDisposable[] {};
     return(new MultiDataStoreProxy(XpoDefault.GetConnectionProvider(ConnectionString, AutoCreateOption.DatabaseAndSchema), ConnectionString));
 }
 private void Anasayfa_Load(object sender, EventArgs e)
 {
     XpoDefault.DataLayer = XpoDefault.GetDataLayer(DevExpress.Xpo.DB.MySqlConnectionProvider.GetConnectionString("localhost", "root", "", "HastaneKayit"), DevExpress.Xpo.DB.AutoCreateOption.DatabaseAndSchema);
 }
Example #10
0
        static void Main(string[] args)
        {
            _log.Debug(String.Format("logicpos.reports open"));

            //DEVELOPER ONLY : Used !!!ONLY!!! to Force create DatabaseScema and Fixtures with XPO (Non Script Mode): Requirements for Work: Empty or Non Exist Database
            bool             xpoCreateDatabaseAndSchema           = false;
            bool             xpoCreateDatabaseObjectsWithFixtures = xpoCreateDatabaseAndSchema;
            AutoCreateOption xpoAutoCreateOption = (xpoCreateDatabaseAndSchema) ? AutoCreateOption.DatabaseAndSchema : AutoCreateOption.None;


            GlobalFramework.Settings = ConfigurationManager.AppSettings;
            // Init Paths
            GlobalFramework.Path = new Hashtable();
            GlobalFramework.Path.Add("assets", FrameworkUtils.OSSlash(GlobalFramework.Settings["pathAssets"]));
            GlobalFramework.Path.Add("images", FrameworkUtils.OSSlash(GlobalFramework.Settings["pathImages"]));
            GlobalFramework.Path.Add("themes", FrameworkUtils.OSSlash(GlobalFramework.Settings["pathThemes"]));
            GlobalFramework.Path.Add("sounds", FrameworkUtils.OSSlash(GlobalFramework.Settings["pathSounds"]));
            GlobalFramework.Path.Add("resources", FrameworkUtils.OSSlash(GlobalFramework.Settings["pathResources"]));
            GlobalFramework.Path.Add("keyboards", FrameworkUtils.OSSlash(GlobalFramework.Settings["pathKeyboards"]));
            GlobalFramework.Path.Add("reports", FrameworkUtils.OSSlash(GlobalFramework.Settings["pathReports"]));
            GlobalFramework.Path.Add("temp", FrameworkUtils.OSSlash(GlobalFramework.Settings["pathTemp"]));
            GlobalFramework.Path.Add("cache", FrameworkUtils.OSSlash(GlobalFramework.Settings["pathCache"]));
            GlobalFramework.Path.Add("backups", FrameworkUtils.OSSlash(GlobalFramework.Settings["pathBackups"]));

            //CultureInfo/Localization
            string culture = GlobalFramework.Settings["culture"];

            if (!string.IsNullOrEmpty(culture))
            {
                /* IN006018 and IN007009 */
                Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(culture);
            }
            GlobalFramework.CurrentCulture = CultureInfo.CurrentUICulture;
            //Always use en-US NumberFormat because of mySql Requirements
            GlobalFramework.CurrentCultureNumberFormat = CultureInfo.GetCultureInfo(GlobalFramework.Settings["cultureNumberFormat"]);

            //Assign DatabaseType to GlobalApp Singleton
            GlobalFramework.DatabaseType = (DatabaseType)Enum.Parse(typeof(DatabaseType), GlobalFramework.Settings["databaseType"]);

            //Database Credentials
            string databaseName = GlobalFramework.Settings["databaseName"].ToLower();
            //Xpo Connection String
            string xpoConnectionString = String.Format(GlobalFramework.Settings["xpoConnectionString"], databaseName);

            //Init XPO Connector DataLayer
            try
            {
                _log.Debug(String.Format("Init(): Init XpoDefault.DataLayer: [{0}]", xpoConnectionString));
                XpoDefault.DataLayer       = XpoDefault.GetDataLayer(xpoConnectionString, xpoAutoCreateOption);
                GlobalFramework.SessionXpo = new Session(XpoDefault.DataLayer)
                {
                    LockingOption = LockingOption.None
                };
                //GlobalFramework.SessionXpoBO = new Session(XpoDefault.DataLayer) { LockingOption = LockingOption.None };
            }
            catch (Exception ex)
            {
                _log.Error(String.Format("Init(): {0}", ex.Message), ex);
                throw;
            }

            //PreferenceParameters
            GlobalFramework.PreferenceParameters = FrameworkUtils.GetPreferencesParameters();

            //Init FastReports Custom Functions and Custom Vars WITH Report Resources
            CustomFunctions.Register(GlobalFramework.Settings["appName"], Resx.ResourceManager, false);

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);


            if (args == null)
            {
                _log.Debug(String.Format("Args == null", args));
                Console.WriteLine("args is null"); // Check for null array
            }
            else
            {
                if (args.Length > 0)
                {
                    _log.Debug(String.Format("args[{0}]==[{1}]", args[0].ToUpper(), "logicpos".ToUpper()));
                }
                //Run in BackOffice Mode
                if (args.Length > 0 && args[0].ToUpper() == "logicpos".ToUpper())
                {
                    _log.Debug("Before Application.Run(new FormReporting())");
                    try
                    {
                        _log.Debug("Before new FormReporting() 2");
                        FormReporting reporting = new FormReporting();
                        _log.Debug("After new FormReporting() 2");
                        Application.Run(reporting);
                        _log.Debug("After new reporting.ShowDialog");
                    }
                    catch (Exception ex)
                    {
                        _log.Error(ex.Message, ex);
                    }
                    _log.Debug("After Application.Run(new FormReporting())");
                }
                //Run in logicpos.reports Mode
                else
                {
                    // Application.Run(new StartupWindow());
                    Application.Run(new FormReporting());
                }

                _log.Debug(String.Format("Args != null", args));
            }
        }
Example #11
0
 public static UnitOfWork CreateSession(string connectionStringName) {
     var conectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
     var dataLayer = XpoDefault.GetDataLayer(conectionString, AutoCreateOption.None);
     return new UnitOfWork(dataLayer, dataLayer);
 }
Example #12
0
        static void Main()
        {
            //
            // XPOには、NestedUnitOfWorkというクラスが存在する。
            // このクラスは、文字通りネストしたUOWを示す。
            //(サブトランザクションのようなイメージ)
            //
            // NestedUnitOfWork内でコミットされた変更は
            // 親のUOWにてコミットされない限り、確定しない。
            // これは、別のUOWからは変更が見えないという意味であり
            // 親のUOWからはNestedUnitOfWorkの変更は見える。
            //
            // 概念的には、DBのトランザクションやTransactionScopeと同じ。
            //
            // 画面にて別画面を開いて、データを編集してまた戻ってくる場合などに利用できる。
            // (Tutorial 4はそのパターンを実装してくれている。)
            //
            // NestedUnitOfWork内では、オブジェクトを親のUOWと明確に分けて取得することが出来る。
            //   ・GetNestedObject
            // また、NestedUnitOfWork内で親側のUOWからオブジェクトを取得することも出来る。
            //   ・GetParentObject
            //
            // [参考リソース]
            //   http://documentation.devexpress.com/#XPO/CustomDocument2260
            //   http://documentation.devexpress.com/#XPO/CustomDocument2113
            //
            XpoDefault.DataLayer = XpoDefault.GetDataLayer(MSSqlCEConnectionProvider.GetConnectionString("XPOSample07.sdf"), AutoCreateOption.DatabaseAndSchema);
            XpoDefault.Session   = null;

            //
            // 初期データ生成.
            //
            using (var uow = new UnitOfWork())
            {
                uow.Delete(new XPCollection <Customer>(uow));

                for (int i = 0; i < 10; i++)
                {
                    new Customer(uow)
                    {
                        Name = string.Format("Customer-[{0}]", i), Age = i + 30
                    };
                }

                uow.CommitChanges();
            }

            //
            // NestedUnitOfWorkを作成して親UOWがコミットしていない状態での値を確認.
            //
            var criteria = CriteriaOperator.Parse("Age = 33");

            using (var uow = new UnitOfWork())
            {
                using (var nuow = uow.BeginNestedUnitOfWork())
                {
                    var nuowCustomer = nuow.FindObject <Customer>(criteria);
                    nuowCustomer.Name = "Modified";

                    nuow.CommitChanges();
                }

                var theCustomer = uow.FindObject <Customer>(criteria);
                Console.WriteLine(theCustomer.Name);

                //
                // わざと親のUOWではCommitChangesを呼ばずに処理終了.
                //
                // 以下のコメントを外すと、変更が確定され、別のUOWでも変更が見えるようになる.
                //uow.CommitChanges();
            }

            //
            // 別のUOWで再度同じ条件を指定して値を確認.
            //
            using (var uow = new UnitOfWork())
            {
                var theCustomer = uow.FindObject <Customer>(criteria);
                Console.WriteLine(theCustomer.Name);
            }

            using (var uow = new UnitOfWork())
            {
                var parentCustomer = uow.FindObject <Customer>(criteria);

                using (var nuow = uow.BeginNestedUnitOfWork())
                {
                    var nestedCustomer = nuow.GetNestedObject <Customer>(parentCustomer);
                    nestedCustomer.Name = "Modified 2";

                    nuow.CommitChanges();
                }

                //
                // NestedUnitOfWork側でコミット(つまり子のトランザクション)を行う事により
                // 親側のオブジェクトの値も変更状態となる。
                // しかし、この変更は親側のトランザクションにて未コミットとなっているので
                // リロードするか、そのままUOWをコミットせずに終了することにより変更が破棄される。
                //
                // 強制的に親オブジェクトの値を元に戻すには、リロード処理を行う必要がある。
                //   Session.Reload, Session.DropIdentityMap
                // もしくは、再度同じ条件でオブジェクトを取得し直す.
                //
                Console.WriteLine(parentCustomer.Name);
                uow.Reload(parentCustomer);
                Console.WriteLine(parentCustomer.Name);
                Console.WriteLine(uow.FindObject <Customer>(criteria).Name);
            }

            //
            // 別のUOWで再度同じ条件を指定して値を確認.
            //
            using (var uow = new UnitOfWork())
            {
                var theCustomer = uow.FindObject <Customer>(criteria);
                Console.WriteLine(theCustomer.Name);
            }
        }
Example #13
0
        private static SelectedData GetData(IObjectSpace objectspace)
        {
            SelectedData sd = null;

            try
            {
                PermissionPolicyUser user;
                Session session = new Session();
                user = objectspace.GetObjectByKey <PermissionPolicyUser>(SecuritySystem.CurrentUserId);
                Company cmp = null;
                try
                {
                    Employee em = (Employee)user;
                    cmp = em.Company;
                }
                catch
                {
                }
                if (cmp == null)
                {
                    XPCollection <Employee> emp = new XPCollection <Employee>(session);
                    if (user.UserName != null)
                    {
                        emp.Criteria = CriteriaOperator.Parse("UserName='******'");
                        foreach (var item in emp)
                        {
                            cmp = item.Company;
                        }
                    }
                }
                if (cmp != null)
                {
                    //Initialize your data layer.
                    //By default if you don't do this, XPO will try and use an access databse (jet)

                    XpoDefault.DataLayer = XpoDefault.GetDataLayer(MSSqlConnectionProvider.GetConnectionString(cmp.ServerName, cmp.ERPMasterDB + cmp.Initials), AutoCreateOption.None);
                    //XpoDefault.DataLayer = XpoDefault.GetDataLayer(MSSqlConnectionProvider.GetConnectionString("ACC00", cmp.ERPMasterDB + cmp.Initials), AutoCreateOption.None);
                    XpoDefault.Session = session;

                    List <Agent> agents     = objectspace.GetObjects <Agent>().ToList();
                    string       notinQuery = string.Empty;
                    foreach (Agent agent in agents)
                    {
                        if (notinQuery != "")
                        {
                            notinQuery += ",'" + agent.Code + "'";
                        }
                        else
                        {
                            notinQuery = "'" + agent.Code + "'";
                        }
                    }
                    string sqlquery = string.Empty;
                    if (notinQuery == "")
                    {
                        sqlquery = "Select Name, Address1, Agentcode from Agent ";
                    }
                    else
                    {
                        sqlquery = "Select Name, Address1, Agentcode from Agent where agentcode not in (" + notinQuery + ")";
                    }
                    //Equivalent of SELECT * FROM TableName in SQL
                    // YourClassName would be your XPO object (your persistent object)
                    using (var uow = new UnitOfWork())
                    {
                        sd = uow.ExecuteQuery(sqlquery);
                    }
                }
            }
            catch (Exception ex) { }


            return(sd);
        }
Example #14
0
        static void Main()
        {
            try
            {
                bool bCreate;
                System.Threading.Mutex mutex = new System.Threading.Mutex(false, "SINGILE_INSTANCE_MUTEX", out bCreate);

                if (!bCreate)
                {
                    MessageBox.Show("程序已经启动!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    Application.Exit();
                    return;
                }

                //设置应用程序处理异常方式:ThreadException处理
                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
                //处理UI线程异常
                Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
                //处理非UI线程异常
                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

                #region 应用程序的主入口点
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);

                BonusSkins.Register();
                SkinManager.EnableFormSkins();
                UserLookAndFeel.Default.SetSkinStyle("DevExpress Style");

                ///// 连接数据库 //////
                string ConnectionString = OracleConnectionProvider.GetConnectionString("orcl", "lime", "bestunion");
                XpoDefault.DataLayer = XpoDefault.GetDataLayer(ConnectionString, AutoCreateOption.DatabaseAndSchema);
                SqlHelper.ConnectDb();

                ///// 检查版本  ///////
                //string curNewestVersion = Tools.getNewVersion();
                //if (string.Compare(curNewestVersion, AppInfo.AppVersion) > 0)
                //{
                //	MessageBox.Show("服务器发现更新的版本!系统需要升级", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                //	Tools.DownloadNew(curNewestVersion);
                //	SqlAssist.DisConnect();

                //	//启动升级拷贝 //////
                //	try
                //	{
                //		Process.Start("Upgrade.exe", curNewestVersion);
                //	}
                //	catch (Exception e)
                //	{
                //		LogUtils.Error(e.Message);
                //	}

                //	Application.Exit();
                //	return;
                //}



                ///// 检查 工作站是否进行登记
                //Envior.WORKSTATIONID = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath).AppSettings.Settings["workstationID"].Value.ToString();
                //string hostname = string.Empty;
                //string ipaddress = string.Empty;
                //Tools.GetIpAddress(out hostname, out ipaddress);
                //if (!string.IsNullOrEmpty(Envior.WORKSTATIONID))
                //{
                //	switch (AppAction.WorkStationIsRegistered(Envior.WORKSTATIONID, hostname, ipaddress))
                //	{
                //		case 0:  //未登记
                //			MessageBox.Show("此工作站尚未登记!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //			Application.Exit();
                //			return;
                //		case 2:  //主机名不符
                //			MessageBox.Show("此工作站【计算机名称】与登记不符!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //			Application.Exit();
                //			return;
                //		case 3:  //ip地址不符
                //			MessageBox.Show("此工作站【IP地址】与登记不符!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //			Application.Exit();
                //			return;
                //		default:
                //			break;
                //	}
                //}
                //else
                //{
                //	MessageBox.Show("未设置工作站ID!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                //	Application.Exit();
                //	return;
                //}

                Application.Run(new Frm_main());
                #endregion
            }
            catch (Exception ex)
            {
                string str = GetExceptionMsg(ex, string.Empty);
                LogUtils.Error(str);
                MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Example #15
0
        public IDataStore GetConnectionProvider(string key)
        {
            string connectionString = GetConnectionString(key);

            return(XpoDefault.GetConnectionProvider(connectionString, AutoCreateOption.DatabaseAndSchema));
        }
 protected IDataLayer NewSimpleDataLayer(XafApplication application) =>
 XpoDefault.GetDataLayer(
     application.ConnectionString,
     XpoTypesInfoHelper.GetXpoTypeInfoSource().XPDictionary,
     AutoCreateOption.DatabaseAndSchema
     );
Example #17
0
        private void Form1_Load(object sender, EventArgs e)
        {
            string connString = textBox1.Text;

            XpoDefault.DataLayer = XpoDefault.GetDataLayer(connString, DevExpress.Xpo.DB.AutoCreateOption.DatabaseAndSchema);
        }
Example #18
0
        public async Task RunAsync(int iterations)
        {
            using (var connection = GetOpenConnection()) {
#pragma warning disable IDE0017 // Simplify object initialization
#pragma warning disable RCS1121 // Use [] instead of calling 'First'.
                var tests = new Tests();

                // Linq2SQL
                Try(() => {
                    var l2scontext1 = GetL2SContext(connection);
                    tests.Add(id => l2scontext1.Posts.First(p => p.Id == id), "Linq2Sql: Normal");

                    var l2scontext2     = GetL2SContext(connection);
                    var compiledGetPost = CompiledQuery.Compile((Linq2Sql.DataClassesDataContext ctx, int id) => ctx.Posts.First(p => p.Id == id));
                    tests.Add(id => compiledGetPost(l2scontext2, id), "Linq2Sql: Compiled");

                    var l2scontext3 = GetL2SContext(connection);
                    tests.Add(id => l2scontext3.ExecuteQuery <Post>("select * from Posts where Id = {0}", id).First(), "Linq2Sql: ExecuteQuery");
                }, "LINQ-to-SQL");

                // Entity Framework
                Try(() => {
                    var entityContext = new EFContext(connection);
                    tests.Add(id => entityContext.Posts.First(p => p.Id == id), "Entity Framework");

                    var entityContext2 = new EFContext(connection);
                    tests.Add(id => entityContext2.Database.SqlQuery <Post>("select * from Posts where Id = {0}", id).First(), "Entity Framework: SqlQuery");

                    var entityContext3 = new EFContext(connection);
                    tests.Add(id => entityContext3.Posts.AsNoTracking().First(p => p.Id == id), "Entity Framework: No Tracking");
                }, "Entity Framework");

                // Entity Framework Core
                Try(() => {
                    var entityContext = new EFCoreContext(ConnectionString);
                    tests.Add(id => entityContext.Posts.First(p => p.Id == id), "Entity Framework Core");

                    var entityContext2 = new EFCoreContext(ConnectionString);
                    tests.Add(id => entityContext2.Posts.FromSql("select * from Posts where Id = {0}", id).First(), "Entity Framework Core: FromSql");

                    var entityContext3 = new EFContext(connection);
                    tests.Add(id => entityContext3.Posts.AsNoTracking().First(p => p.Id == id), "Entity Framework Core: No Tracking");
                }, "Entity Framework Core");

                // Dapper
                Try(() => {
                    var mapperConnection = GetOpenConnection();
                    tests.Add(id => mapperConnection.Query <Post>("select * from Posts where Id = @Id", new { Id = id }, buffered: true).First(), "Dapper: Query (buffered)");
                    tests.Add(id => mapperConnection.Query <Post>("select * from Posts where Id = @Id", new { Id = id }, buffered: false).First(), "Dapper: Query (non-buffered)");
                    tests.Add(id => mapperConnection.QueryFirstOrDefault <Post>("select * from Posts where Id = @Id", new { Id = id }), "Dapper: QueryFirstOrDefault");

                    var mapperConnection2 = GetOpenConnection();
                    tests.Add(id => mapperConnection2.Query("select * from Posts where Id = @Id", new { Id = id }, buffered: true).First(), "Dapper: Dynamic Query (buffered)");
                    tests.Add(id => mapperConnection2.Query("select * from Posts where Id = @Id", new { Id = id }, buffered: false).First(), "Dapper: Dynamic Query (non-buffered)");
                    tests.Add(id => mapperConnection2.QueryFirstOrDefault("select * from Posts where Id = @Id", new { Id = id }), "Dapper: Dynamic QueryFirstOrDefault");

                    // dapper.contrib
                    var mapperConnection3 = GetOpenConnection();
                    tests.Add(id => mapperConnection3.Get <Post>(id), "Dapper.Contrib");
                }, "Dapper");

                // Dashing
                Try(() => {
                    var config   = new DashingConfiguration();
                    var database = new SqlDatabase(config, ConnectionString);
                    var session  = database.BeginTransactionLessSession(GetOpenConnection());
                    tests.Add(id => session.Get <Dashing.Post>(id), "Dashing Get");
                }, "Dashing");

                // Massive
                Try(() => {
                    var massiveModel      = new DynamicModel(ConnectionString);
                    var massiveConnection = GetOpenConnection();
                    tests.Add(id => massiveModel.Query("select * from Posts where Id = @0", massiveConnection, id).First(), "Massive: Dynamic ORM Query");
                }, "Massive");

                // PetaPoco
                Try(() => {
                    // PetaPoco test with all default options
                    var petapoco = new PetaPoco.Database(ConnectionString, "System.Data.SqlClient");
                    petapoco.OpenSharedConnection();
                    tests.Add(id => petapoco.Fetch <Post>("SELECT * from Posts where Id=@0", id).First(), "PetaPoco: Normal");

                    // PetaPoco with some "smart" functionality disabled
                    var petapocoFast = new PetaPoco.Database(ConnectionString, "System.Data.SqlClient");
                    petapocoFast.OpenSharedConnection();
                    petapocoFast.EnableAutoSelect    = false;
                    petapocoFast.EnableNamedParams   = false;
                    petapocoFast.ForceDateTimesToUtc = false;
                    tests.Add(id => petapocoFast.Fetch <Post>("SELECT * from Posts where Id=@0", id).First(), "PetaPoco: Fast");
                }, "PetaPoco");

                // NHibernate
                Try(() => {
                    var nhSession1 = NHibernateHelper.OpenSession();
                    tests.Add(id => nhSession1.CreateSQLQuery("select * from Posts where Id = :id")
                              .SetInt32("id", id)
                              .List(), "NHibernate: SQL");

                    var nhSession2 = NHibernateHelper.OpenSession();
                    tests.Add(id => nhSession2.CreateQuery("from Post as p where p.Id = :id")
                              .SetInt32("id", id)
                              .List(), "NHibernate: HQL");

                    var nhSession3 = NHibernateHelper.OpenSession();
                    tests.Add(id => nhSession3.CreateCriteria <Post>()
                              .Add(Restrictions.IdEq(id))
                              .List(), "NHibernate: Criteria");

                    var nhSession4 = NHibernateHelper.OpenSession();
                    tests.Add(id => nhSession4
                              .Query <Post>()
                              .First(p => p.Id == id), "NHibernate: LINQ");

                    var nhSession5 = NHibernateHelper.OpenSession();
                    tests.Add(id => nhSession5.Get <Post>(id), "NHibernate: Session.Get");
                }, "NHibernate");

                // Belgrade
                Try(() => {
                    var query = new Belgrade.SqlClient.SqlDb.QueryMapper(ConnectionString);
                    tests.AsyncAdd(id => query.Sql("SELECT TOP 1 * FROM Posts WHERE Id = @Id").Param("Id", id).Map(
                                       reader => {
                        var post            = new Post();
                        post.Id             = reader.GetInt32(0);
                        post.Text           = reader.GetString(1);
                        post.CreationDate   = reader.GetDateTime(2);
                        post.LastChangeDate = reader.GetDateTime(3);

                        post.Counter1 = reader.IsDBNull(4) ? null : (int?)reader.GetInt32(4);
                        post.Counter2 = reader.IsDBNull(5) ? null : (int?)reader.GetInt32(5);
                        post.Counter3 = reader.IsDBNull(6) ? null : (int?)reader.GetInt32(6);
                        post.Counter4 = reader.IsDBNull(7) ? null : (int?)reader.GetInt32(7);
                        post.Counter5 = reader.IsDBNull(8) ? null : (int?)reader.GetInt32(8);
                        post.Counter6 = reader.IsDBNull(9) ? null : (int?)reader.GetInt32(9);
                        post.Counter7 = reader.IsDBNull(10) ? null : (int?)reader.GetInt32(10);
                        post.Counter8 = reader.IsDBNull(11) ? null : (int?)reader.GetInt32(11);
                        post.Counter9 = reader.IsDBNull(12) ? null : (int?)reader.GetInt32(12);
                    }), "Belgrade Sql Client");
                }, "Belgrade Sql Client");

                //Susanoo
                Try(() => {
                    var susanooDb = new DatabaseManager(connection);

                    var susanooPreDefinedCommand =
                        CommandManager.Instance.DefineCommand("SELECT * FROM Posts WHERE Id = @Id", CommandType.Text)
                        .DefineResults <Post>()
                        .Realize();

                    var susanooDynamicPreDefinedCommand =
                        CommandManager.Instance.DefineCommand("SELECT * FROM Posts WHERE Id = @Id", CommandType.Text)
                        .DefineResults <dynamic>()
                        .Realize();

                    tests.Add(Id =>
                              CommandManager.Instance.DefineCommand("SELECT * FROM Posts WHERE Id = @Id", CommandType.Text)
                              .DefineResults <Post>()
                              .Realize()
                              .Execute(susanooDb, new { Id }).First(), "Susanoo: Mapping Cache Retrieval");

                    tests.Add(Id =>
                              CommandManager.Instance.DefineCommand("SELECT * FROM Posts WHERE Id = @Id", CommandType.Text)
                              .DefineResults <dynamic>()
                              .Realize()
                              .Execute(susanooDb, new { Id }).First(), "Susanoo: Dynamic Mapping Cache Retrieval");

                    tests.Add(Id => susanooDynamicPreDefinedCommand
                              .Execute(susanooDb, new { Id }).First(), "Susanoo: Dynamic Mapping Static");

                    tests.Add(Id => susanooPreDefinedCommand
                              .Execute(susanooDb, new { Id }).First(), "Susanoo: Mapping Static");
                }, "Susanoo");

                //ServiceStack's OrmLite:
                Try(() => {
                    var dbFactory = new OrmLiteConnectionFactory(ConnectionString, SqlServerDialect.Provider);
                    var db        = dbFactory.Open();
                    tests.Add(id => db.SingleById <Post>(id), "ServiceStack.OrmLite: SingleById");
                }, "ServiceStack.OrmLite");

                // Hand Coded
                Try(() => {
                    var postCommand = new SqlCommand()
                    {
                        Connection  = connection,
                        CommandText = @"select Id, [Text], [CreationDate], LastChangeDate, 
                Counter1,Counter2,Counter3,Counter4,Counter5,Counter6,Counter7,Counter8,Counter9 from Posts where Id = @Id"
                    };
                    var idParam = postCommand.Parameters.Add("@Id", SqlDbType.Int);

                    tests.Add(id => {
                        idParam.Value = id;

                        using (var reader = postCommand.ExecuteReader()) {
                            reader.Read();
                            var post            = new Post();
                            post.Id             = reader.GetInt32(0);
                            post.Text           = reader.GetNullableString(1);
                            post.CreationDate   = reader.GetDateTime(2);
                            post.LastChangeDate = reader.GetDateTime(3);

                            post.Counter1 = reader.GetNullableValue <int>(4);
                            post.Counter2 = reader.GetNullableValue <int>(5);
                            post.Counter3 = reader.GetNullableValue <int>(6);
                            post.Counter4 = reader.GetNullableValue <int>(7);
                            post.Counter5 = reader.GetNullableValue <int>(8);
                            post.Counter6 = reader.GetNullableValue <int>(9);
                            post.Counter7 = reader.GetNullableValue <int>(10);
                            post.Counter8 = reader.GetNullableValue <int>(11);
                            post.Counter9 = reader.GetNullableValue <int>(12);
                        }
                    }, "Hand Coded");

#if !NETSTANDARD1_3
                    var table = new DataTable {
                        Columns =
                        {
                            { "Id",             typeof(int)      },
                            { "Text",           typeof(string)   },
                            { "CreationDate",   typeof(DateTime) },
                            { "LastChangeDate", typeof(DateTime) },
                            { "Counter1",       typeof(int)      },
                            { "Counter2",       typeof(int)      },
                            { "Counter3",       typeof(int)      },
                            { "Counter4",       typeof(int)      },
                            { "Counter5",       typeof(int)      },
                            { "Counter6",       typeof(int)      },
                            { "Counter7",       typeof(int)      },
                            { "Counter8",       typeof(int)      },
                            { "Counter9",       typeof(int)      },
                        }
                    };
                    tests.Add(id => {
                        idParam.Value = id;
                        var values    = new object[13];
                        using (var reader = postCommand.ExecuteReader()) {
                            reader.Read();
                            reader.GetValues(values);
                            table.Rows.Add(values);
                        }
                    }, "DataTable via IDataReader.GetValues");
#endif
                }, "Hand Coded");

                // DevExpress.XPO
                Try(() => {
                    var dataLayer = XpoDefault.GetDataLayer(connection, DevExpress.Xpo.DB.AutoCreateOption.SchemaAlreadyExists);
                    dataLayer.Dictionary.GetDataStoreSchema(typeof(Xpo.Post));
                    var session = new UnitOfWork(dataLayer, dataLayer);
                    session.IdentityMapBehavior = IdentityMapBehavior.Strong;
                    session.TypesManager.EnsureIsTypedObjectValid();

                    tests.Add(id => session.Query <Xpo.Post>().First(p => p.Id == id), "DevExpress.XPO: Query<T>");
                    tests.Add(id => session.GetObjectByKey <Xpo.Post>(id, true), "DevExpress.XPO: GetObjectByKey<T>");
                    tests.Add(id => {
                        CriteriaOperator findCriteria = new BinaryOperator()
                        {
                            OperatorType = BinaryOperatorType.Equal,
                            LeftOperand  = new OperandProperty("Id"),
                            RightOperand = new ConstantValue(id)
                        };
                        session.FindObject <Xpo.Post>(findCriteria);
                    }, "DevExpress.XPO: FindObject<T>");
                }, "DevExpress.XPO");

                // Subsonic isn't maintained anymore - doesn't import correctly
                //Try(() =>
                //    {
                //    // Subsonic ActiveRecord
                //    tests.Add(id => 3SubSonic.Post.SingleOrDefault(x => x.Id == id), "SubSonic ActiveRecord.SingleOrDefault");

                //    // Subsonic coding horror
                //    SubSonic.tempdbDB db = new SubSonic.tempdbDB();
                //    tests.Add(id => new SubSonic.Query.CodingHorror(db.Provider, "select * from Posts where Id = @0", id).ExecuteTypedList<Post>(), "SubSonic Coding Horror");
                //}, "Subsonic");

                //// BLToolkit - doesn't import correctly in the new .csproj world
                //var db1 = new DbManager(GetOpenConnection());
                //tests.Add(id => db1.SetCommand("select * from Posts where Id = @id", db1.Parameter("id", id)).ExecuteList<Post>(), "BLToolkit");

                Console.WriteLine();
                Console.WriteLine("Running...");
                await tests.RunAsync(iterations).ConfigureAwait(false);

#pragma warning restore RCS1121 // Use [] instead of calling 'First'.
#pragma warning restore IDE0017 // Simplify object initialization
            }
        }
Example #19
0
 public virtual IDataStore CreateUpdatingStore(bool allowUpdateSchema, out IDisposable[] disposableObjects)
 {
     disposableObjects = null;
     return(new DataStoreProxy(XpoDefault.GetConnectionProvider(_connectionString, AutoCreateOption.DatabaseAndSchema)));
 }
        //public static T Execute<T>(string dataLayerName, Func<Session, T> work, bool transactional = true, bool commit = true)
        //{

        //}

        #endregion

        private static IDataLayer createDataLayer(string connectionString, string datalayerName)
        {
            if (String.IsNullOrEmpty(connectionString))
            {
                throw new ArgumentNullException("connectionString");
            }
            // set XpoDefault.Session to null to prevent accidental use of XPO default session
            XpoDefault.Session = null;
            //ReflectionClassInfo.SuppressSuspiciousMemberInheritanceCheck = true;
            // Needed to run in Medium Trust Security Context
            XpoDefault.UseFastAccessors    = false;
            XpoDefault.IdentityMapBehavior = IdentityMapBehavior.Strong;

            // autocreate option in connectionstring
            AutoCreateOption createOption      = AutoCreateOption.None;
            bool             enableCachingNode = false;

            try
            {
                createOption      = Conversion.GetConfigOption <AutoCreateOption>(connectionString, "AutoCreateOption", AutoCreateOption.DatabaseAndSchema);
                enableCachingNode = Conversion.GetConfigOption(connectionString, "EnableCachingNode", false);
            }
            catch (Exception ex)
            {
                throw new Exception(String.Format("XpoDatabase was unable to parse connectionString!\n{0}",
                                                  ex.InnerException == null ? ex.Message : ex.InnerException.Message));
            }

            XPDictionary dataDictionary = new ReflectionDictionary();
            IDataStore   dataStore      = XpoDefault.GetConnectionProvider(XpoDefault.GetConnectionPoolString(connectionString), createOption);

            // Initialize the XPO dictionary
            dataDictionary.GetDataStoreSchema(GetDataTypes(datalayerName));

            // make sure everything exists in the db
            if (createOption == AutoCreateOption.DatabaseAndSchema)
            {
                using (SimpleDataLayer dataLayer = new SimpleDataLayer(dataStore))
                {
                    using (Session session = new Session(dataLayer))
                    {
                        // place code here to patch metadata
                        session.UpdateSchema();
                        session.CreateObjectTypeRecords();
                        XpoDefault.DataLayer = new ThreadSafeDataLayer(session.Dictionary, dataStore);
                    }
                }
            }
            IDataLayer result;

            if (enableCachingNode)
            {
                result = new ThreadSafeDataLayer(dataDictionary, new DataCacheNode(new DataCacheRoot(dataStore)));
            }
            else
            {
                result = new ThreadSafeDataLayer(dataDictionary, dataStore);
            }

            return(result);
        }
Example #21
0
 public DataStoreProxy(string connectionString, AutoCreateOption autoCreateOption = AutoCreateOption.None) : this(XpoDefault.GetConnectionProvider(connectionString, autoCreateOption))
 {
 }
        public static void Tests(string name, string connectionString) => Describe($"{nameof(TokenCleanupService)} using {name}", () =>
        {
            var storeOptions = new OperationalStoreOptions();
            var dataLayer    = XpoDefault.GetDataLayer(connectionString, DevExpress.Xpo.DB.AutoCreateOption.DatabaseAndSchema);

            TokenCleanupService CreateSut()
            {
                IServiceCollection services = new ServiceCollection();
                services.AddIdentityServer()
                .AddTestUsers(new List <TestUser>())
                .AddInMemoryClients(new List <Client>())
                .AddInMemoryIdentityResources(new List <IdentityResource>())
                .AddInMemoryApiResources(new List <ApiResource>());

                services.AddTransient(_ =>
                {
                    var uow = new UnitOfWork(dataLayer);
                    uow.UpdateSchema();
                    return(uow);
                });

                services.AddTransient <IPersistedGrantStore, PersistedGrantStore>();
                services.AddTransient <IDeviceFlowStore, DeviceFlowStore>();

                services.AddTransient <TokenCleanupService>();
                services.AddSingleton(storeOptions);

                return(services.BuildServiceProvider().GetRequiredService <TokenCleanupService>());
            }

            It("RemoveExpiredGrantsAsync when expired grants exist should remove expired grants", async() =>
            {
                var key = Guid.NewGuid().ToString();
                using (var uow1 = new UnitOfWork(dataLayer))
                {
                    var expiredGrant = new XpoPersistedGrant(uow1)
                    {
                        Key        = key,
                        ClientId   = "app1",
                        Type       = "reference",
                        SubjectId  = "123",
                        Expiration = DateTime.UtcNow.AddDays(-3),
                        Data       = "{!}"
                    };

                    await uow1.SaveAsync(expiredGrant);
                    await uow1.CommitChangesAsync();
                }

                await CreateSut().RemoveExpiredGrantsAsync();

                using (var uow2 = new UnitOfWork(dataLayer))
                {
                    (await uow2.Query <XpoPersistedGrant>()
                     .FirstOrDefaultAsync(x => x.Key == key)
                    ).Should().BeNull();
                }
            });

            It("RemoveExpiredGrantsAsync when valid Grants exist expect valid Grants in Db", async() =>
            {
                var key = Guid.NewGuid().ToString();

                using (var uow1 = new UnitOfWork(dataLayer))
                {
                    var validGrant = new XpoPersistedGrant(uow1)
                    {
                        Key        = key,
                        ClientId   = "app1",
                        Type       = "reference",
                        SubjectId  = "123",
                        Expiration = DateTime.UtcNow.AddDays(3),
                        Data       = "{!}"
                    };

                    await uow1.SaveAsync(validGrant);
                    await uow1.CommitChangesAsync();
                }

                await CreateSut().RemoveExpiredGrantsAsync();

                using (var uow2 = new UnitOfWork(dataLayer))
                {
                    (await uow2.Query <XpoPersistedGrant>()
                     .FirstOrDefaultAsync(x => x.Key == key)
                    ).Should().NotBeNull();
                }
            });

            It("RemoveExpiredGrantsAsync when expired DeviceGrants exist expect expired DeviceGrants to be removed", async() =>
            {
                var deviceCode = Guid.NewGuid().ToString();

                using (var uow1 = new UnitOfWork(dataLayer))
                {
                    var expiredGrant = new XpoDeviceFlowCodes(uow1)
                    {
                        DeviceCode   = deviceCode,
                        UserCode     = Guid.NewGuid().ToString(),
                        ClientId     = "app1",
                        SubjectId    = "123",
                        CreationTime = DateTime.UtcNow.AddDays(-4),
                        Expiration   = DateTime.UtcNow.AddDays(-3),
                        Data         = "{!}"
                    };
                    await uow1.SaveAsync(expiredGrant);
                    await uow1.CommitChangesAsync();
                }

                await CreateSut().RemoveExpiredGrantsAsync();

                using (var uow2 = new UnitOfWork(dataLayer))
                {
                    (await uow2.Query <XpoDeviceFlowCodes>()
                     .FirstOrDefaultAsync(x => x.DeviceCode == deviceCode)
                    ).Should().BeNull();
                }
            });

            It("RemoveExpiredGrantsAsync when valid DeviceGrants exist expect valid DeviceGrants to be in Db", async() =>
            {
                var deviceCode = Guid.NewGuid().ToString();
                using (var uow1 = new UnitOfWork(dataLayer))
                {
                    var validGrant = new XpoDeviceFlowCodes(uow1)
                    {
                        DeviceCode   = deviceCode,
                        UserCode     = "2468",
                        ClientId     = "app1",
                        SubjectId    = "123",
                        CreationTime = DateTime.UtcNow.AddDays(-4),
                        Expiration   = DateTime.UtcNow.AddDays(3),
                        Data         = "{!}"
                    };
                    await uow1.SaveAsync(validGrant);
                    await uow1.CommitChangesAsync();
                }

                await CreateSut().RemoveExpiredGrantsAsync();

                using (var uow2 = new UnitOfWork(dataLayer))
                {
                    (await uow2.Query <XpoDeviceFlowCodes>()
                     .FirstOrDefaultAsync(x => x.DeviceCode == deviceCode)
                    ).Should().NotBeNull();
                }
            });
        });
Example #23
0
 public static DevExpress.Xpo.DB.IDataStore GetConnectionProvider(IConfiguration configuration, DevExpress.Xpo.DB.AutoCreateOption autoCreateOption)
 {
     return(XpoDefault.GetConnectionProvider(configuration.GetConnectionString(ConnectionStringName), autoCreateOption));
 }
        static Service1()
        {
            string connectionString = MSSqlConnectionProvider.GetConnectionString("localhost", "ServiceDB");

            DataStore = XpoDefault.GetConnectionProvider(connectionString, AutoCreateOption.DatabaseAndSchema);
        }
Example #25
0
 static void Main()
 {
     XpoDefault.DataLayer = XpoDefault.GetDataLayer(AutoCreateOption.DatabaseAndSchema);
     Application.Run(new Form1());
 }
Example #26
0
        //LogicPos BootStrap
        private static void Init()
        {
            Console.WriteLine(string.Format("BootStrap {0}....", SettingsApp.AppName));

            try
            {
                //Prepare AutoCreateOption
                AutoCreateOption xpoAutoCreateOption = AutoCreateOption.None;

                //Init Settings Main Config Settings
                //GlobalFramework.Settings = ConfigurationManager.AppSettings;

                //CultureInfo/Localization
                if (GlobalFramework.Settings["culture"] != null)
                {
                    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(GlobalFramework.Settings["culture"]);
                }
                GlobalFramework.CurrentCulture = CultureInfo.CurrentUICulture;

                //Always use en-US NumberFormat because of mySql Requirements
                GlobalFramework.CurrentCultureNumberFormat = CultureInfo.GetCultureInfo(SettingsApp.CultureNumberFormat);

                // Init Paths
                GlobalFramework.Path = new Hashtable();
                GlobalFramework.Path.Add("temp", FrameworkUtils.OSSlash(GlobalFramework.Settings["pathTemp"]));
                GlobalFramework.Path.Add("saftpt", FrameworkUtils.OSSlash(GlobalFramework.Settings["pathSaftPt"]));
                //Create Directories
                FrameworkUtils.CreateDirectory(FrameworkUtils.OSSlash(Convert.ToString(GlobalFramework.Path["temp"])));
                FrameworkUtils.CreateDirectory(FrameworkUtils.OSSlash(Convert.ToString(GlobalFramework.Path["saftpt"])));

                //Get DataBase Details
                GlobalFramework.DatabaseType = (DatabaseType)Enum.Parse(typeof(DatabaseType), GlobalFramework.Settings["databaseType"]);
                GlobalFramework.DatabaseName = SettingsApp.DatabaseName;
                //Xpo Connection String
                string xpoConnectionString = string.Format(GlobalFramework.Settings["xpoConnectionString"], GlobalFramework.DatabaseName.ToLower());

                //Init XPO Connector DataLayer
                try
                {
                    _log.Debug(string.Format("Init XpoDefault.DataLayer: [{0}]", xpoConnectionString));
                    XpoDefault.DataLayer       = XpoDefault.GetDataLayer(xpoConnectionString, xpoAutoCreateOption);
                    GlobalFramework.SessionXpo = new Session(XpoDefault.DataLayer)
                    {
                        LockingOption = LockingOption.None
                    };
                }
                catch (Exception ex)
                {
                    _log.Error(ex.Message, ex);
                    throw;
                }

                //Get Terminal from Db
                GlobalFramework.LoggedTerminal = Utils.GetTerminal();

                //SettingsApp
                SettingsApp.ConfigurationSystemCountry  = (CFG_ConfigurationCountry)FrameworkUtils.GetXPGuidObject(GlobalFramework.SessionXpo, typeof(CFG_ConfigurationCountry), new Guid(GlobalFramework.Settings["xpoOidConfigurationCountrySystemCountry"]));
                SettingsApp.ConfigurationSystemCurrency = (CFG_ConfigurationCurrency)FrameworkUtils.GetXPGuidObject(GlobalFramework.SessionXpo, typeof(CFG_ConfigurationCurrency), new Guid(GlobalFramework.Settings["xpoOidConfigurationCurrencySystemCurrency"]));

                //PreferenceParameters
                GlobalFramework.PreferenceParameters = FrameworkUtils.GetPreferencesParameters();

                //Try to Get open Session Day/Terminal for this Terminal
                GlobalFramework.WorkSessionPeriodDay      = ProcessWorkSessionPeriod.GetSessionPeriod(WorkSessionPeriodType.Day);
                GlobalFramework.WorkSessionPeriodTerminal = ProcessWorkSessionPeriod.GetSessionPeriod(WorkSessionPeriodType.Terminal);

                //Init FastReports Custom Functions and Custom Vars
                CustomFunctions.Register(SettingsApp.AppName);

                //Init AppSession
                //string appSessionFile = SettingsApp.AppSessionFile;
                //if (File.Exists(appSessionFile))
                //{
                //    GlobalFramework.SessionApp = GlobalFrameworkSession.InitSession(appSessionFile);
                //}
                //else
                //{
                //    throw new Exception(string.Format("Missing appSessionFile: {0}", appSessionFile));
                //}
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message, ex);
            }
        }
Example #27
0
 public static DevExpress.Xpo.DB.IDataStore GetConnectionProvider(DevExpress.Xpo.DB.AutoCreateOption autoCreateOption, out IDisposable[] objectsToDisposeOnDisconnect)
 {
     return(XpoDefault.GetConnectionProvider(ConnectionString, autoCreateOption, out objectsToDisposeOnDisconnect));
 }
 public override void AfterConstruction()
 {
     base.AfterConstruction();
     _oid = XpoDefault.NewGuid();
 }
Example #29
0
 static void ConfigureXpoForDevEnvironment()
 {
     XpoDefault.RegisterBonusProviders();
     DataStoreBase.RegisterDataStoreProvider(WebApiDataStoreClient.XpoProviderTypeString, CreateWebApiDataStoreFromString);
 }
Example #30
0
        public virtual IDataStore CreateSchemaCheckingDataStore()
        {
            var dataStore = XpoDefault.GetConnectionProvider(ConnectionString, AutoCreateOption.None);

            return(dataStore);
        }