private void dataGridView2ReLoad()
        {
            double totalCost   = 0;
            double totalProfit = 0;

            BridgeToBD.LoadProductShopFromDB(BridgeToBD.ChoiceBD);
            BridgeToBD.LoadProductMovingFromDB(BridgeToBD.ChoiceBD);
            string[] str    = new string[6];
            double[] result = new double[3];
            dataGridView2.Rows.Clear();
            foreach (var item in BridgeToBD.Products)
            {
                str[0]    = item.Name;
                str[1]    = BridgeToBD.ProductsMoving.First(it => it.IDproduct == item.ID).Sold.ToString() + " " + item.UoM.GetDescription();
                result[0] = BridgeToBD.ProductsMoving.First(it => it.IDproduct == item.ID).Sold;
                str[2]    = item.PriceSell.ToString();
                str[3]    = item.PriceBuy.ToString();
                str[4]    = (result[0] * double.Parse(str[2])).ToString();
                result[1] = (result[0] * double.Parse(str[2]));
                str[5]    = ((double.Parse(str[2]) - double.Parse(str[3])) * result[0]).ToString();
                result[2] = ((double.Parse(str[2]) - double.Parse(str[3])) * result[0]);
                dataGridView2.Rows.Add(str);
                totalCost   += result[1];
                totalProfit += result[2];
            }
            textBox1.Text = totalCost.ToString() + " " + "руб.";
            textBox2.Text = totalProfit.ToString() + " " + "руб.";
        }
        private void dataGridView1ReLoad()
        {
            double totalCost   = 0;
            double totalProfit = 0;

            // Products = HelperProduct.LoadUsersFromFile();
            Products       = BridgeToBD.LoadProductShopFromDB(TypeBD.SQL);
            ProductsMoving = BridgeToBD.LoadProductMovingFromDB(TypeBD.SQL);
            string[] str = new string[7];
            dataGridView1.Rows.Clear();
            foreach (var item in Products)
            {
                str[0] = item.Name;
                str[1] = ProductsMoving.First(it => it.IDproduct == item.ID).CountStore.ToString();
                str[2] = ProductsMoving.First(it => it.IDproduct == item.ID).CountShop.ToString();
                str[3] = item.PriceBuy.ToString();
                str[4] = item.PriceSell.ToString();
                str[5] = ((double.Parse(str[1]) + double.Parse(str[2])) * double.Parse(str[4])).ToString();
                str[6] = ((double.Parse(str[1]) + double.Parse(str[2])) * (double.Parse(str[4]) - double.Parse(str[3]))).ToString();
                dataGridView1.Rows.Add(str);
                totalCost   += double.Parse(str[5]);
                totalProfit += double.Parse(str[6]);
            }
            textBoxTotalCost.Text   = totalCost.ToString() + " " + "руб.";
            textBoxTotalProfit.Text = totalProfit.ToString() + " " + "руб.";
        }
        private void button4_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count == 0)
            {
                MessageBox.Show("Ни один пользователь не выбран", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            BridgeToBD.LoadUserShopFromDB(BridgeToBD.ChoiceBD);
            BridgeToBD.LoadUserRoleShopFromDB(BridgeToBD.ChoiceBD);
            int us_role_manager = BridgeToBD.ListUserRole.First(it => it.Role.ToString() == "Manager").ID;
            int us_role_cashier = BridgeToBD.ListUserRole.First(it => it.Role.ToString() == "Cashier").ID;

            if (BridgeToBD.ListUser.Count(it => it.IDrole == us_role_manager) <= 1 && listView1.SelectedItems[0].SubItems[1].Text == "Manager")
            {
                MessageBox.Show("Остался последний пользователь с должностью Менеджер, удаление невозможно!", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            if (BridgeToBD.ListUser.Count(it => it.IDrole == us_role_cashier) <= 1 && listView1.SelectedItems[0].SubItems[1].Text == "Cashier")
            {
                var result = MessageBox.Show("Вы точно хотите удалить последнего пользователя с должностью кассир?", "Form Closing", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (result == DialogResult.No)
                {
                    return;
                }
            }
            int id = BridgeToBD.ListUser.First(it => it.Login == listView1.SelectedItems[0].Text).ID;

            BridgeToBD.SaveUserShopToBD(id, BridgeToBD.ChoiceBD);
            UsersViewReload();
        }
        private void button3_Click(object sender, EventArgs e)
        {
            if (textBox7.Text == "")
            {
                MessageBox.Show("Вы не заполнили поле 'Логин'", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            if (textBox8.Text == "")
            {
                MessageBox.Show("Вы не заполнили поле 'Пароль'", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            if (comboBox3.Text == "")
            {
                MessageBox.Show("Вы не заполнили поле 'Должность'", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            if (BridgeToBD.ListUser.Any(it => String.Equals(it.Login, textBox7.Text, StringComparison.OrdinalIgnoreCase))) // it need case insensitive
            {
                MessageBox.Show("Пользователь с таким логином уже существует", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            int      id_role = BridgeToBD.ListUserRole.First(it => it.Role.ToString() == comboBox3.Text).ID;
            UserShop us      = new UserShop()
            {
                Login = textBox7.Text, Passwword = hashPassword, IDrole = id_role
            };

            BridgeToBD.SaveUserShopToBD(us, BridgeToBD.ChoiceBD);
            UsersViewReload();
        }
 private void UsersViewReload()
 {
     BridgeToBD.LoadUserShopFromDB(BridgeToBD.ChoiceBD);
     BridgeToBD.LoadUserRoleShopFromDB(BridgeToBD.ChoiceBD);
     listView1.Items.Clear();
     foreach (var user in BridgeToBD.ListUser)
     {
         string us_role = BridgeToBD.ListUserRole.First(it => it.ID == user.IDrole).Role.ToString();
         listView1.Items.Add(user.Login).SubItems.Add(us_role);
     }
 }
 private void button1_Click(object sender, EventArgs e)
 {
     if (textBox3.Text == "" || textBox4.Text == "" || textBox5.Text == "" || textBox6.Text == "" || comboBox1.Text == "" || comboBox2.Text == "")
     {
         MessageBox.Show("Вы не заполнили некоторые поля", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
         return;
     }
     // it need to check name
     Products       = BridgeToBD.LoadProductShopFromDB(TypeBD.SQL);
     ProductsMoving = BridgeToBD.LoadProductMovingFromDB(TypeBD.SQL);
     if (!Products.Any(it => it.Name == textBox3.Text))
     {
         ProductShop pr = new ProductShop();
         pr.ID        = Products.Last().ID + 1;
         pr.Name      = textBox3.Text;
         pr.PriceSell = (float)Convert.ToDouble(textBox5.Text);
         pr.PriceBuy  = (float)Convert.ToDouble(textBox4.Text);
         pr.UoM       = (UoM)Enum.Parse(typeof(UoM), comboBox1.Text);
         ProductMoving prmove = new ProductMoving();
         prmove.IDproduct = pr.ID;
         prmove.Sold      = 0;
         if (comboBox2.Text == "Warehouse")
         {
             prmove.CountStore = Convert.ToDouble(textBox6.Text);
         }
         else if (comboBox2.Text == "Shop")
         {
             prmove.CountShop = Convert.ToDouble(textBox6.Text);
         }
         else
         {
             MessageBox.Show("Некорректно выбран склад");
         }
         Products.Add(pr);
         ProductsMoving.Add(prmove);
         //HelperProduct.SaveUsersFromFile(Products);
         // this.Update(); // it doesn't work
         //HelperProduct.InsertToSql(pr);
         BridgeToBD.SaveProductShopToBD(Products, TypeBD.SQL);
         BridgeToBD.SaveProductMovingToSQL(ProductsMoving);
         dataGridView1ReLoad();
     }
     else
     {
         MessageBox.Show("Товар с таким именем уже есть на складе");
     }
 }
 private void button2_Click(object sender, EventArgs e)
 {
     if (dataGridView1.SelectedRows.Count > 0)
     {
         foreach (DataGridViewRow row in dataGridView1.SelectedRows)
         {
             int id        = BridgeToBD.Products.First(it => it.Name == row.Cells[0].Value.ToString()).ID;
             int id_prmove = BridgeToBD.ProductsMoving.First(it => it.IDproduct == id).ID;
             BridgeToBD.SaveProductMovingToBD(id_prmove, BridgeToBD.ChoiceBD);
             BridgeToBD.SaveProductShopToBD(id, BridgeToBD.ChoiceBD);
         }
         dataGridView1ReLoad();
     }
     else
     {
         MessageBox.Show("Вы не выбрали строку с товаром для удаления", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
     }
 }
 private void button2_Click(object sender, EventArgs e)
 {
     BridgeToBD.LoadProductShopFromDB(BridgeToBD.ChoiceBD);
     BridgeToBD.LoadProductMovingFromDB(BridgeToBD.ChoiceBD);
     foreach (DataGridViewRow row in dataGridView1.Rows)
     {
         var product       = BridgeToBD.Products.First(it => it.Name == row.Cells[0].Value.ToString());
         var productMoving = BridgeToBD.ProductsMoving.First(it => it.IDproduct == product.ID);
         if (productMoving.CountShop < Convert.ToDouble(row.Cells[2].Value.ToString()))
         {
             MessageBox.Show("Товара " + row.Cells[0].Value.ToString() + " недостаточно в магазине", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
             continue;
         }
         productMoving.CountShop -= Convert.ToDouble(row.Cells[2].Value.ToString());
         productMoving.Sold      += Convert.ToDouble(row.Cells[2].Value.ToString());
         BridgeToBD.SaveProductMovingToBD(productMoving, BridgeToBD.ChoiceBD);
     }
     panel1.Visible = false;
 }
        private void button5_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count == 0)
            {
                MessageBox.Show("Ни один пользователь не выбран", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            BridgeToBD.LoadUserShopFromDB(BridgeToBD.ChoiceBD);
            int us_role_manager = BridgeToBD.ListUserRole.First(it => it.Role.ToString() == "Manager").ID;

            if (BridgeToBD.ListUser.Count(it => it.IDrole == us_role_manager) <= 1 && listView1.SelectedItems[0].SubItems[1].Text == "Manager")
            {
                MessageBox.Show("Редактирование единственного пользователя Менеджер невозможно!", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            if (textBox7.Text == "")
            {
                MessageBox.Show("Вы не заполнили поле 'Логин'", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            if (textBox8.Text == "")
            {
                MessageBox.Show("Вы не заполнили поле 'Пароль'", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            if (comboBox3.Text == "")
            {
                MessageBox.Show("Вы не заполнили поле 'Должность'", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            string   currentLogin = listView1.SelectedItems[0].SubItems[0].Text;
            UserShop user         = BridgeToBD.ListUser.First(it => it.Login == currentLogin);

            user.Login     = textBox7.Text;
            user.Passwword = hashPassword;
            user.IDrole    = BridgeToBD.ListUserRole.First(it => it.Role.ToString() == comboBox3.Text).ID;
            BridgeToBD.SaveUserShopToBD(user, BridgeToBD.ChoiceBD);
            UsersViewReload();
        }
 private void Cashier_Load(object sender, EventArgs e)
 {
     BridgeToBD.LoadProductShopFromDB(BridgeToBD.ChoiceBD);
     BridgeToBD.LoadProductMovingFromDB(BridgeToBD.ChoiceBD);
 }
        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox3.Text == string.Empty)
            {
                MessageBox.Show("Вы не заполнили поле 'Название товара'", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            if (comboBox1.Text == string.Empty)
            {
                MessageBox.Show("Вы не заполнили поле 'Единицы измерения'", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            if (textBox4.Text == "")
            {
                MessageBox.Show("Вы не заполнили поле 'Цена закупки'", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            if (textBox5.Text == "")
            {
                MessageBox.Show("Вы не заполнили поле 'Цена продажи'", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            if (textBox6.Text == "")
            {
                MessageBox.Show("Вы не заполнили поле 'Количество товара'", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            if (comboBox2.Text == "")
            {
                MessageBox.Show("Вы не заполнили поле 'Склад'", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            BridgeToBD.LoadProductShopFromDB(BridgeToBD.ChoiceBD);
            if (!BridgeToBD.Products.Any(it => it.Name == textBox3.Text))
            {
                ProductShop pr = new ProductShop();
                pr.Name      = textBox3.Text;
                pr.PriceSell = (float)Convert.ToDouble(textBox5.Text);
                pr.PriceBuy  = (float)Convert.ToDouble(textBox4.Text);
                pr.UoM       = (UoM)Enum.Parse(typeof(UoM), comboBox1.Text);

                ProductMoving prmove = new ProductMoving();
                prmove.Sold = 0;
                if (comboBox2.Text == "Warehouse")
                {
                    prmove.CountStore = Convert.ToDouble(textBox6.Text);
                    prmove.CountShop  = 0;
                }
                else if (comboBox2.Text == "Shop")
                {
                    prmove.CountShop  = Convert.ToDouble(textBox6.Text);
                    prmove.CountStore = 0;
                }
                else
                {
                    MessageBox.Show("Некорректно выбран склад");
                }
                BridgeToBD.SaveProductShopToBD(pr, BridgeToBD.ChoiceBD);
                BridgeToBD.LoadProductShopFromDB(BridgeToBD.ChoiceBD);
                prmove.IDproduct = BridgeToBD.Products.Last().ID;
                BridgeToBD.SaveProductMovingToBD(prmove, BridgeToBD.ChoiceBD);
                dataGridView1ReLoad();
            }
            else
            {
                MessageBox.Show("Товар с таким именем уже есть на складе");
            }
        }