Esempio n. 1
0
        private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            (sender as BackgroundWorker)?.ReportProgress(5);
            Config co = new Config();

            Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart) delegate()
            {
                co.Hostname       = DbHost.Text;
                co.DbName         = DbName.Text;
                co.DbUserName     = DbUser.Text;
                co.DbUserPassword = DbPass.Text;
                co.AccountsLog    = "1";
                co.DrugsLog       = "1";
                co.Write(true, true);
            });
            (sender as BackgroundWorker)?.ReportProgress(30);
            if (!Directory.Exists(Paths.BackupsPath))
            {
                Directory.CreateDirectory(Paths.BackupsPath);
            }
            (sender as BackgroundWorker)?.ReportProgress(40);
            Dispatcher.Invoke((Action)(() =>
            {
                DataHolder.CreateConnection(co.DbUserName, co.DbUserPassword, co.Hostname);
                CreateDB.Createdb(co.DbName);
                DataHolder.CreateConnection(co.DbUserName, co.DbUserPassword, co.DbName, co.Hostname);
            }));
            (sender as BackgroundWorker)?.ReportProgress(60);
            Dispatcher.Invoke((Action)(CreateDB.CreateTables));
            (sender as BackgroundWorker)?.ReportProgress(95);
        }
Esempio n. 2
0
        private void Upgrade_Click(object sender, EventArgs e)
        {
            IniFile file = new IniFile(Constants.SetupConfigPath);

            if (this.Text == "تنصيب البرنامج")
            {
                if (!File.Exists(Constants.SetupConfigPath))
                {
                    file.Write("MySql", "Host", DBHost.Text);
                    file.Write("MySql", "Username", DBUser.Text);
                    file.Write("MySql", "Password", DBPass.Text);
                    file.Write("MySql", "Database", DBName.Text);
                    file.Write("Upgrade", "Version", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString().Replace(".", ""));
                    if (!Directory.Exists(Application.StartupPath + @"BackUp\"))
                    {
                        Directory.CreateDirectory(Application.StartupPath + @"\BackUp\");
                    }
                    DataHolder.CreateConnection(Program.INIDecrypt(file.ReadString("MySql", "Username")), Program.INIDecrypt(file.ReadString("MySql", "Password")), Program.INIDecrypt(file.ReadString("MySql", "Host")));
                    DataHolder.CreateConnection(Program.INIDecrypt(file.ReadString("MySql", "Username")), Program.INIDecrypt(file.ReadString("MySql", "Password")), Program.INIDecrypt(file.ReadString("MySql", "Database")), Program.INIDecrypt(file.ReadString("MySql", "Host")));
                    CreateDB.UpgradeTables();
                    MessageBox.Show("تم الترقية بنجاح\nمن فضلك انشاء حساب جديد لتتمكن من الدخول");
                    Register reg = new Register();
                    reg.ShowDialog();
                    this.Close();
                }
            }
            else if (this.Text == "اعدادات البرنامج")
            {
                Upgrade.Enabled = false;
            }
        }
 //database
 private void SetB1_Click(object sender, RoutedEventArgs e)
 {
     Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart) delegate()
     {
         BackUp.NewDbBackup();
         MessageBox.Show("تم اخذ نسخه احتياطيه من القاعده القديمه");
         DataHolder.CreateConnection(co.DbUserName, co.DbUserPassword, co.Hostname);
         CreateDB.Createdb(co.DbName, DbName.Text);
         co.Write();
         MessageBox.Show("تم الحفظ سيتم غلق البرنامج الان");
         Environment.Exit(0);
     });
 }
Esempio n. 4
0
 private void Install_Click(object sender, EventArgs e)
 {
     try
     {
         IniFile file = new IniFile(Constants.SetupConfigPath);
         if (this.Text == "تنصيب البرنامج")
         {
             if (!File.Exists(Constants.SetupConfigPath))
             {
                 file.Write("MySql", "Host", DBHost.Text);
                 file.Write("MySql", "Username", DBUser.Text);
                 file.Write("MySql", "Password", DBPass.Text);
                 file.Write("MySql", "Database", DBName.Text);
                 file.Write("Upgrade", "Version", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString().Replace(".", ""));
                 if (!Directory.Exists(Application.StartupPath + @"BackUp\"))
                 {
                     Directory.CreateDirectory(Application.StartupPath + @"\BackUp\");
                 }
                 DataHolder.CreateConnection(Program.INIDecrypt(file.ReadString("MySql", "Username")), Program.INIDecrypt(file.ReadString("MySql", "Password")), Program.INIDecrypt(file.ReadString("MySql", "Host")));
                 CreateDB.Createdb(DBName.Text);
                 DataHolder.CreateConnection(Program.INIDecrypt(file.ReadString("MySql", "Username")), Program.INIDecrypt(file.ReadString("MySql", "Password")), Program.INIDecrypt(file.ReadString("MySql", "Database")), Program.INIDecrypt(file.ReadString("MySql", "Host")));
                 CreateDB.CreateTables();
                 MessageBox.Show("تم تنصيب الاعدادات\nمن فضلك انشاء حساب جديد لتتمكن من الدخول");
                 Register reg = new Register();
                 reg.ShowDialog();
                 this.Close();
             }
         }
         else if (this.Text == "اعدادات البرنامج")
         {
             if (File.Exists(Constants.SetupConfigPath))
             {
                 BackUp.NewDbBackup();
                 DataHolder.CreateConnection(Program.INIDecrypt(file.ReadString("MySql", "Username")), Program.INIDecrypt(file.ReadString("MySql", "Password")), Program.INIDecrypt(file.ReadString("MySql", "Host")));
                 CreateDB.Createdb(file.ReadString("MySql", "Database"), DBName.Text);
                 file.Write("MySql", "Host", DBHost.Text);
                 file.Write("MySql", "Username", DBUser.Text);
                 file.Write("MySql", "Password", DBPass.Text);
                 file.Write("MySql", "Database", DBName.Text);
                 DataHolder.CreateConnection(Program.INIDecrypt(file.ReadString("MySql", "Username")), Program.INIDecrypt(file.ReadString("MySql", "Password")), Program.INIDecrypt(file.ReadString("MySql", "Database")), Program.INIDecrypt(file.ReadString("MySql", "Host")));
                 BackUp.NewDbRestore();
                 BillsTable.LBN();
                 MessageBox.Show("تم تغيير الاعدادات");
             }
         }
     }
     catch (Exception ee)
     {
         Program.SaveException(ee);
     }
 }
Esempio n. 5
0
 private static void EngineThread_Execute()
 {
     try
     {
         IniFile file = new IniFile(Constants.SetupConfigPath);
         if (!File.Exists(Constants.SetupConfigPath))
         {
             Setup set = new Setup {
                 Text = "تنصيب البرنامج"
             };
             set.ShowDialog();
         }
         DataHolder.CreateConnection(INIDecrypt(file.ReadString("MySql", "Username")), INIDecrypt(file.ReadString("MySql", "Password")),
                                     INIDecrypt(file.ReadString("MySql", "Database")), INIDecrypt(file.ReadString("MySql", "Host")));
         GC.Collect();
         BillsTable.LBN();
     }
     catch (Exception exception)
     {
         MessageBox.Show(exception.ToString());
         File.Delete(Constants.SetupConfigPath);
     }
 }
Esempio n. 6
0
 /// <summary>
 /// The first thing that program is going to do after showing up
 /// like checking for database connection etc
 /// </summary>
 public static void StartUp_Engine()
 {
     if (!EngineOn)
     {
         try
         {
             IniFile file2 = new IniFile(Paths.BackupConfigPath);
             if (!File.Exists(Paths.SetupConfigPath))
             {
                 IsSetup = true;
                 Set set = new Set {
                     Title = "تنصيب البرنامج"
                 };
                 set.ShowDialog();
             }
             Config co = new Config();
             co.Read(true);
             DataHolder.CreateConnection(co.DbUserName, co.DbUserPassword, co.DbName, co.Hostname);
             string ver = co.Version;
             if (Convert.ToInt16(ver) < Convert.ToInt16(Assembly.GetExecutingAssembly().GetName().Version.ToString().Replace(".", "")))
             {
                 IsSetup = true;
                 //IsUpgrading = true;
                 Set set = new Set {
                     Title = "ترقية البرنامج"
                 };
                 set.ShowDialog();
             }
             if (!IsSetup)
             {
                 co.Read(true, true);
                 if (AccountsTable.CountUsers() == 0)
                 {
                     IsSetup   = true;
                     NoAccount = true;
                     Set set = new Set {
                         Title = "تنصيب البرنامج"
                     };
                     View.Pages.Setup.IsInstallCompleted = true;
                     set.ShowDialog();
                 }
                 BillsTable.LBN();
                 MySqlCommand cmd = new MySqlCommand(MySqlCommandType.UPDATE);
                 cmd.Update("logs").Set("Online", 0).Where("Online", 1).Execute();
                 sb  = INIDecrypt(file2.ReadString("Settings", "Backup"));
                 tb  = INIDecrypt(file2.ReadString("Settings", "TakeBackup"));
                 st  = INIDecrypt(file2.ReadString("Settings", "Type"));
                 stt = INIDecrypt(file2.ReadString("Settings", "Time"));
                 std = INIDecrypt(file2.ReadString("Settings", "Date"));
                 #region database logs
                 if (co.AccountsLog == "0")
                 {
                     View.Pages.Settings.IsRecAcc = false;
                 }
                 else if (co.AccountsLog == "1")
                 {
                     View.Pages.Settings.IsRecAcc = true;
                 }
                 if (co.DrugsLog == "0")
                 {
                     View.Pages.Settings.IsRecMed = false;
                 }
                 else if (co.DrugsLog == "1")
                 {
                     View.Pages.Settings.IsRecMed = true;
                 }
                 #endregion
                 #region automatic backup system
                 if (File.Exists(Paths.BackupConfigPath))
                 {
                     try
                     {
                         if (Convert.ToByte(sb) == 1)
                         {
                             if (Convert.ToByte(st) == 1)
                             {
                                 string[] time = stt.Split(':');
                                 if (Convert.ToByte(tb) == 0)
                                 {
                                     if (DateTime.Now.Date == Convert.ToDateTime(std))
                                     {
                                         if (DateTime.Now.Hour - Convert.ToByte(time[0]) == 0 && DateTime.Now.Minute - Convert.ToByte(time[1]) >= 0)
                                         {
                                             BackUp.Backup("PROPHMW");
                                             file2.Write("Settings", "TakeBackup", "1");
                                             tb = "1";
                                             Console.WriteLine("Daily backup has been taken");
                                         }
                                         if (DateTime.Now.Hour - Convert.ToByte(time[0]) >= 1)
                                         {
                                             BackUp.Backup("PROPHMW");
                                             file2.Write("Settings", "TakeBackup", "1");
                                             tb = "1";
                                             Console.WriteLine("Daily backup has been taken");
                                         }
                                     }
                                 }
                                 else
                                 {
                                     if (DateTime.Now.Date > Convert.ToDateTime(std))
                                     {
                                         file2.Write("Settings", "TakeBackup", "0");
                                         tb = "0";
                                         Console.WriteLine("Daily backup has been reset");
                                     }
                                 }
                             }
                             else if (Convert.ToByte(st) == 2)
                             {
                                 if (Convert.ToByte(tb) == 0)
                                 {
                                     if (Convert.ToByte(stt) <= Convert.ToByte(DateTime.Now.DayOfWeek))
                                     {
                                         BackUp.Backup("PROPHMW");
                                         file2.Write("Settings", "TakeBackup", "1");
                                         tb = "1";
                                         Console.WriteLine("Weekly backup has been taken");
                                     }
                                 }
                                 else
                                 {
                                     if (Convert.ToByte(stt) > Convert.ToByte(DateTime.Now.DayOfWeek))
                                     {
                                         file2.Write("Settings", "TakeBackup", "0");
                                         tb = "0";
                                         Console.WriteLine("Weekly backup has been reset");
                                     }
                                 }
                             }
                             else if (Convert.ToByte(st) == 3)
                             {
                                 if (Convert.ToByte(tb) == 0)
                                 {
                                     if (Convert.ToByte(stt) <= Convert.ToByte(DateTime.Now.Day))
                                     {
                                         BackUp.Backup("PROPHMW");
                                         file2.Write("Settings", "TakeBackup", "1");
                                         tb = "1";
                                         Console.WriteLine("Monthly backup has been taken");
                                     }
                                 }
                                 else
                                 {
                                     if (Convert.ToByte(stt) > Convert.ToByte(DateTime.Now.Day))
                                     {
                                         file2.Write("Settings", "TakeBackup", "0");
                                         tb = "0";
                                         Console.WriteLine("Monthly backup has been reset");
                                     }
                                 }
                             }
                         }
                     }
                     catch (Exception e)
                     {
                         Console.WriteLine("Check the automatic backup system in the core");
                         SaveException(e);
                         File.Delete(Paths.BackupConfigPath);
                     }
                 }
                 #endregion
                 EngineOn = true;
             }
         }
         catch (Exception ex)
         {
             SaveException(ex);
             if (File.Exists(Paths.SetupConfigPath))
             {
                 File.Delete(Paths.SetupConfigPath);
             }
             if (File.Exists(Paths.BackupConfigPath))
             {
                 File.Delete(Paths.BackupConfigPath);
             }
             Console.WriteLine("Program configuration files has been deleted \r\n now we are goning to shutdown your PC");
         }
     }
 }
Esempio n. 7
0
        private void UpgradeB_Click(object sender, RoutedEventArgs e)
        {
            //TODO add upgrade codes for older versions
            PB.Visibility = Visibility.Visible;
            IniFile file = new IniFile(Paths.SetupConfigPath);
            Config  co   = new Config();

            co.Read();
            DataHolder.CreateConnection(co.DbUserName, co.DbUserPassword, co.DbName, co.Hostname);
            Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart) delegate()
            {
                #region PPHM Normal(windows form) Verison Upgrade Codes
                if (PPHMCB.IsChecked == true)
                {
                    if (PPHMV.SelectedIndex >= -1 && PPHMV.SelectedIndex <= 13)
                    {
                        MessageBox.Show("لا يمكن الترقية من هذا الاصدار بعد");
                        Console.WriteLine("Codes needed report to developer.");
                    }
                    else if (PPHMV.SelectedIndex == 14)
                    {
                        const string accountst =
                            "ALTER TABLE `accounts` CHANGE `Username` `Username` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL FIRST, CHANGE `Password` `Password` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, CHANGE `State` `State` tinyint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Password`, CHANGE `Phone` `Phone` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL AFTER `State`, DROP `LastCheck`;";
                        const string bills =
                            "ALTER TABLE `bills` CHANGE `Name` `ClientName` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL AFTER `ID`, CHANGE `User` `Cashier` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL AFTER `ClientName`, CHANGE `Medic` `Medics` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Cashier`;";
                        const string logs =
                            "ALTER TABLE `logs` CHANGE `Account` `Username` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL FIRST, ADD `Online` tinyint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `LogoutDate`, MODIFY COLUMN `LoginDate` datetime NOT NULL AFTER `Username`, MODIFY COLUMN `LogoutDate` datetime NULL DEFAULT NULL AFTER `LoginDate`;";
                        const string medics =
                            "ALTER TABLE `medics` ADD `Barcode` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL AFTER `Name`, CHANGE `Count` `Total` decimal(15,2) UNSIGNED NOT NULL DEFAULT 0.00 AFTER `Type`, ADD `BPrice` decimal(15,2) UNSIGNED NOT NULL DEFAULT 0.00 AFTER `Total`, CHANGE `Price` `SPrice` decimal(15,2) UNSIGNED NOT NULL DEFAULT 0.00 AFTER `BPrice`, CHANGE `Substance` `ScientificName` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL AFTER `Barcode`, CHANGE `Expiry` `ExpirationDate` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' AFTER `ScientificName`, CHANGE `Note` `Notes` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `SPrice`, ADD COLUMN `Id` bigint(20) unsigned NOT NULL AUTO_INCREMENT FIRST ,DROP PRIMARY KEY, ADD PRIMARY KEY(`Id`, `Name`), ADD COLUMN `Supplier` varchar(50) NULL AFTER `ScientificName`;";
                        const string medlog =
                            "ALTER TABLE `medlog` CHANGE `Name` `MedName` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL FIRST, CHANGE `Total` `TotalAmount` decimal(15,2) UNSIGNED NOT NULL DEFAULT 0.00 AFTER `SellDate`, CHANGE `Cost` `TotalPrice` decimal(15,2) UNSIGNED NOT NULL DEFAULT 0.00 AFTER `TotalAmount`, ADD `Cashier` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `TotalPrice`;";
                        const string suppliers =
                            "CREATE TABLE `suppliers`(`Id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT , `Name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `Salesman` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `Phones` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, `Notes` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, PRIMARY KEY (`Id`), UNIQUE INDEX `Name` (`Name`) USING BTREE)ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci ROW_FORMAT=Compact;";
                        try
                        {
                            using (var conn = DataHolder.MySqlConnection)
                            {
                                using (MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand())
                                {
                                    cmd.Connection = conn;
                                    conn.Open();
                                    CDfcts();
                                    QueryExpress.ExecuteScalarStr(cmd, accountst + bills + logs + medics + medlog + suppliers);
                                    conn.Dispose();
                                    conn.Close();
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("Now you are gonne need to fix this problem manually ;p");
                            Core.SaveException(ex);
                            MessageBox.Show("هناك مشكله غالبا بسبب انك اختارت اصدار خاطئ\nاتصل بالمطور لحل المشكله");
                            Environment.Exit(0);
                        }
                        IsUpgradeComp = true;
                    }
                }
                #endregion
                #region PPHM W(WPF) Verison Upgrade Codes
                else if (PPHMWCB.IsChecked == true)
                {
                    if (PPHMWV.SelectedIndex == -1)
                    {
                        MessageBox.Show("اختر اصدار للترقية منه اولا");
                        return;
                    }
                    else if (PPHMWV.SelectedIndex == 0)
                    {
                        //0.9.9.1
                        const string logs =
                            "ALTER TABLE `logs` CHANGE `Username` `Username` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL FIRST, MODIFY COLUMN `LoginDate` datetime NOT NULL AFTER `Username`, MODIFY COLUMN `LogoutDate` datetime NULL DEFAULT NULL AFTER `LoginDate`;";
                        const string medics =
                            "ALTER TABLE `medics` CHANGE `ActivePrinciple` `ScientificName` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `Total` `Total` decimal(15,2) UNSIGNED NOT NULL DEFAULT '0.00' AFTER `Type`, ADD `BPrice` decimal(15,2) UNSIGNED NOT NULL DEFAULT 0.00 AFTER `Total`, CHANGE `Price` `SPrice` decimal(15,2) UNSIGNED NOT NULL DEFAULT '0.00' AFTER `BPrice`, ADD COLUMN `Id` bigint(20) unsigned NOT NULL AUTO_INCREMENT FIRST ,DROP PRIMARY KEY, ADD PRIMARY KEY(`Id`, `Name`), ADD COLUMN `Supplier` varchar(50) NULL AFTER `ScientificName`;";
                        const string medlog =
                            "ALTER TABLE `medlog` CHANGE `Cashier` `Cashier` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `TotalPrice`, CHANGE `TotalAmount` `TotalAmount` decimal(15,2) UNSIGNED NOT NULL DEFAULT 0.00 AFTER `SellDate`, CHANGE `TotalPrice` `TotalPrice` decimal(15,2) UNSIGNED NOT NULL DEFAULT 0.00 AFTER `TotalAmount`;";
                        const string suppliers =
                            "CREATE TABLE `suppliers` (`Id`  int(10) UNSIGNED NOT NULL AUTO_INCREMENT ,`Name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `Salesman` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `Phones` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,`Notes` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,PRIMARY KEY (`Id`), UNIQUE INDEX `Name` (`Name`) USING BTREE )ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci ROW_FORMAT=Compact;";
                        try
                        {
                            using (var conn = DataHolder.MySqlConnection)
                            {
                                using (MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand())
                                {
                                    cmd.Connection = conn;
                                    conn.Open();
                                    CDfcts();
                                    QueryExpress.ExecuteScalarStr(cmd, logs + medics + medlog + suppliers);
                                    conn.Dispose();
                                    conn.Close();
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("Now you are gonne need to fix this problem manually ;p");
                            Core.SaveException(ex);
                            MessageBox.Show("هناك مشكله غالبا بسبب انك اختارت اصدار خاطئ\nاتصل بالمطور لحل المشكله");
                            Environment.Exit(0);
                        }
                    }
                    else if (PPHMWV.SelectedIndex == 1)
                    {
                        //0.9.9.5
                        const string logs =
                            "ALTER TABLE `logs` CHANGE `Username` `Username` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL FIRST, MODIFY COLUMN `LoginDate` datetime NOT NULL AFTER `Username`, MODIFY COLUMN `LogoutDate` datetime NULL DEFAULT NULL AFTER `LoginDate`;";
                        const string medics =
                            "ALTER TABLE `medics` ADD COLUMN `Id` bigint(20) unsigned NOT NULL AUTO_INCREMENT FIRST ,DROP PRIMARY KEY, ADD PRIMARY KEY(`Id`, `Name`), ADD COLUMN `Supplier` varchar(50) NULL AFTER `ScientificName`;";
                        const string suppliers =
                            "CREATE TABLE `suppliers` (`Id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT ,`Name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `Salesman` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `Phones` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,`Notes` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,PRIMARY KEY (`Id`), UNIQUE INDEX `Name` (`Name`) USING BTREE)ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci ROW_FORMAT=Compact;";
                        try
                        {
                            using (var conn = DataHolder.MySqlConnection)
                            {
                                using (MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand())
                                {
                                    cmd.Connection = conn;
                                    conn.Open();
                                    CDfcts();
                                    QueryExpress.ExecuteScalarStr(cmd, logs + medics + suppliers);
                                    conn.Dispose();
                                    conn.Close();
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("Now you are gonne need to fix this problem manually ;p");
                            Core.SaveException(ex);
                            MessageBox.Show("هناك مشكله غالبا بسبب انك اختارت اصدار خاطئ\nاتصل بالمطور لحل المشكله");
                            Environment.Exit(0);
                        }
                    }
                    else if (PPHMWV.SelectedIndex == 2)
                    {
                        //0.9.9.6
                        const string logs =
                            "ALTER TABLE `logs` CHANGE `Username` `Username` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL FIRST, MODIFY COLUMN `LoginDate` datetime NOT NULL AFTER `Username`, MODIFY COLUMN `LogoutDate` datetime NULL DEFAULT NULL AFTER `LoginDate`;";
                        const string medics =
                            "ALTER TABLE `medics` ADD COLUMN `Id` bigint(20) unsigned NOT NULL AUTO_INCREMENT FIRST ,DROP PRIMARY KEY, ADD PRIMARY KEY(`Id`, `Name`), ADD COLUMN `Supplier` varchar(50) NULL AFTER `ScientificName`;";
                        const string suppliers =
                            "CREATE TABLE `suppliers` (`Id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT ,`Name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `Salesman` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `Phones` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,`Notes` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,PRIMARY KEY (`Id`), UNIQUE INDEX `Name` (`Name`) USING BTREE )ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci ROW_FORMAT=Compact;";
                        try
                        {
                            using (var conn = DataHolder.MySqlConnection)
                            {
                                using (MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand())
                                {
                                    cmd.Connection = conn;
                                    conn.Open();
                                    CDfcts();
                                    QueryExpress.ExecuteScalarStr(cmd, medics + logs + suppliers);
                                    conn.Dispose();
                                    conn.Close();
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("Now you are gonne need to fix this problem manually ;p");
                            Core.SaveException(ex);
                            MessageBox.Show("هناك مشكله غالبا بسبب انك اختارت اصدار خاطئ\nاتصل بالمطور لحل المشكله" + ex.ToString());
                            Environment.Exit(0);
                        }
                    }
                    IsUpgradeComp = true;
                }
                #endregion
                #region PPHM WL(sqlite db) Verison Upgrade Codes
                else if (PPHMWLCB.IsChecked == true)
                {
                    if (PPHMWLV.SelectedIndex == 0)
                    {
                        MessageBox.Show("لا يمكن الترقية من هذا الاصدار بعد");
                        return;
                    }
                }
                #endregion
                co.Write(false, true, false, false);
                PB.Visibility = Visibility.Collapsed;
            });
        }