public void Initialize(string reportSetupFilename)
        {
            if (reportSetupFilename.IsNullEmptyOrWhiteSpace())
            {
                throw new ApplicationException("Database setup filename not provided.");
            }

            this.ReportSetupFileName = reportSetupFilename;

            if (File.Exists(this.ReportSetupFileName))
            {
                string fileContent = File.ReadAllText(reportSetupFilename);

                this.ReportSetup = JsonConvert.DeserializeObject(fileContent, typeof(ReportSetupModel)) as ReportSetupModel;

                if (this.ReportSetup.DataBaseSource.IsEncrypted)
                {
                    this.ReportSetup.DataBaseSource.Password = this.ReportSetup.DataBaseSource.Password.Decrypt();

                    this.ReportSetup.DataBaseSource.IsEncrypted = false;
                }
            }
            else
            {
                this.ReportSetup = new ReportSetupModel();
            }
        }
        public void InitializeReportsDB(ReportSetupModel reportSetup)
        {
            Dictionary <string, string> connectionValues = new Dictionary <string, string>();

            connectionValues.Add("ServerName", reportSetup.DataBaseSource.ServerName);
            connectionValues.Add("DatabaseName", reportSetup.DataBaseSource.DatabaseName);
            connectionValues.Add("UserName", reportSetup.DataBaseSource.UserName);
            connectionValues.Add("Password", reportSetup.DataBaseSource.Password);
            connectionValues.Add("TrustedConnection", reportSetup.DataBaseSource.TrustedConnection.ParseToString());

            DataAccess dataAccess = new DataAccess(DatabaseTypeEnum.SQL, connectionValues);

            var script = typeof(Properties.Resources)
                         .GetProperties(BindingFlags.Static | BindingFlags.NonPublic |
                                        BindingFlags.Public)
                         .Where(p => p.PropertyType == typeof(string) && p.Name == "ERD_Print")
                         .Select(x => new { SqlScript = x.GetValue(null, null) })
                         .FirstOrDefault();

            dataAccess.ExecuteNonQuery(script.SqlScript.ParseToString());
        }
        public void InitializeConnectionString(ReportSetupModel setupModel)
        {
            switch (setupModel.StorageType)
            {
            case StorageTypeEnum.MsSql:

                object[] args = new object[]
                {
                    setupModel.DataBaseSource.ServerName,
                    setupModel.DataBaseSource.DatabaseName,
                    setupModel.DataBaseSource.UserName,
                    setupModel.DataBaseSource.Password,
                    setupModel.DataBaseSource.TrustedConnection
                };

                this.ConnectionString = String.Format(msSqlConnectionString, args);

                break;

            case StorageTypeEnum.SQLite:

                //"Data Source=MyDatabase.sqlite;Version=3;");

                //               string sqLitePath = $"{setupModel.FileDirectory}\\ERD_Reports.sqlite";

                //               SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder
                //               {
                //                   DataSource = $"{sqLitePath};Version=3;"
                //               };

                //               this.ConnectionString = builder.ConnectionString;

                //               if (!File.Exists(sqLitePath))
                //{
                //                   SQLiteConnection.CreateFile(sqLitePath);
                //               }

                break;
            }
        }