예제 #1
0
        public WindowPictures(QueryMode mode, MainWindow parent, string primary_key_value = "")
        {
            InitializeComponent();
            this.mode              = mode;
            this.parent            = parent;
            this.primary_key_value = primary_key_value;

            if (mode == QueryMode.add)
            {
                Button_reset.Visibility = Visibility.Collapsed;
                Button_accept.Content   = "Добавить";
            }
            else
            {
                Button_accept.Content = "Изменить";
                TextBox_name.Text     = primary_key_value;
                byte[] image_bytes = Shortcuts.get_image("pictures", "name", primary_key_value, connection);
                new_image = image_bytes;
                Shortcuts.set_image(Image, image_bytes);
                TextBox_price.Text = Shortcuts.get_one_string_data_from($"select `price` from `pictures` where `name` = '{primary_key_value}'", connection);
                TextBox_price.Text = TextBox_price.Text.Replace(",", ".");
                old_values         = new object[2] {
                    primary_key_value,
                    image_bytes
                };
            }
        }
예제 #2
0
        private void Button_accept_Click(object sender, RoutedEventArgs e)
        {
            int dot_count1 = TextBox_product_amount.Text.Split('.').Length - 1;
            int dot_count2 = TextBox_average_purchase_price.Text.Split('.').Length - 1;

            if (ComboBox_product_name.Text != "" && TextBox_product_amount.Text != "" &&
                ComboBox_supplier.Text != "" && TextBox_average_purchase_price.Text != "" &&
                dot_count1 <= 1 && dot_count2 <= 1)
            {
                string count = Shortcuts.get_one_string_data_from($"SELECT count(*) FROM " +
                                                                  $"`storage` WHERE `product_name` = '{ComboBox_product_name.Text}' AND " +
                                                                  $"`supplier` = '{ComboBox_supplier.Text}';", connection);
                if (int.Parse(count) >= 1 && mode == QueryMode.add)
                {
                    MessageBox.Show("Уже существует запись с такой краской и поставщиком!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                bool   success     = true;
                string measurement = Shortcuts.get_one_string_data_from($"SELECT `measurement` FROM `products` where `name` = '{ComboBox_product_name.Text}';", connection);
                switch (mode)
                {
                case QueryMode.add:
                    success = Shortcuts.execute_command($"INSERT INTO `storage` (`id`, `product_name`, `product_amount`, `measurement`, `supplier`, `average_purchase_price`) " +
                                                        $"VALUES (DEFAULT, '{ComboBox_product_name.Text}', {TextBox_product_amount.Text}, '{measurement}', " +
                                                        $"'{ComboBox_supplier.Text}', {TextBox_average_purchase_price.Text});", connection);
                    break;

                case QueryMode.change:
                    success = Shortcuts.change("storage", new string[] { "id", "product_name", "product_amount", "measurement", "supplier", "average_purchase_price" },
                                               new string[] { primary_key_value, ComboBox_product_name.Text, TextBox_product_amount.Text, measurement,
                                                              ComboBox_supplier.Text, TextBox_average_purchase_price.Text },
                                               primary_key_value,
                                               connection);
                    break;
                }
                if (success)
                {
                    parent.Focus();
                    if (parent is MainWindow)
                    {
                        ((MainWindow)parent).fill_table();
                    }
                    if (parent is SupplyManagerWindow)
                    {
                        ((SupplyManagerWindow)parent).fill_table();
                    }
                    Close();
                }
            }
            else
            {
                MessageBox.Show("Заполните корректно все числовые поля и поля с выбором!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
        private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (DataGrid.SelectedItem != null)
            {
                switch (current_table)
                {
                case Tables.supplies:
                    Border_color.Visibility = Visibility.Visible;
                    Supply sup = (Supply)DataGrid.SelectedItem;
                    Border_color.Visibility = Visibility.Visible;
                    string supply_color_code = Shortcuts.get_one_string_data_from($"SELECT `color_code` FROM `products` WHERE `name` = '{sup.product_name}';", connection);
                    Border_color.Background = new SolidColorBrush((System.Windows.Media.Color)ColorConverter.ConvertFromString("#" + supply_color_code));
                    break;

                case Tables.storage:
                    Border_color.Visibility = Visibility.Visible;
                    Storage st = (Storage)DataGrid.SelectedItem;
                    Border_color.Visibility = Visibility.Visible;
                    string st_color_code = Shortcuts.get_one_string_data_from($"SELECT `color_code` FROM `products` WHERE `name` = '{st.product_name}';", connection);
                    Border_color.Background = new SolidColorBrush((System.Windows.Media.Color)ColorConverter.ConvertFromString("#" + st_color_code));
                    break;
                }
            }
        }
예제 #4
0
        //Отображение изображения или цвета из некоторых таблиц
        private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            TextBlock_car_parts.Text = "";
            object item = DataGrid.SelectedItem;

            if (item != null)
            {
                switch (current_table)
                {
                case Tables.users:
                    Button_image_change.Visibility = Visibility.Visible;
                    Shortcuts.set_image(DataImage,
                                        Shortcuts.get_image(tables[(int)current_table], current_primary_key_name, ((User)item).mail, connection));
                    break;

                case Tables.pictures:
                    Button_image_change.Visibility = Visibility.Visible;
                    Shortcuts.set_image(DataImage,
                                        Shortcuts.get_image(tables[(int)current_table], current_primary_key_name, ((Picture)item).name, connection));
                    break;

                case Tables.colors:
                    Border_color.Visibility = Visibility.Visible;
                    string color_code = "#" + ((Color)item).color_code;
                    Border_color.Background = new SolidColorBrush((System.Windows.Media.Color)ColorConverter.ConvertFromString(color_code));
                    break;

                case Tables.products:
                    Border_color.Visibility = Visibility.Visible;
                    string color = "#" + ((Product)item).color_code;
                    Border_color.Background = new SolidColorBrush((System.Windows.Media.Color)ColorConverter.ConvertFromString(color));
                    break;

                case Tables.supplies:
                    Supply sup = (Supply)item;
                    Border_color.Visibility = Visibility.Visible;
                    string supply_color_code = Shortcuts.get_one_string_data_from($"SELECT `color_code` FROM `products` WHERE `name` = '{sup.product_name}';", connection);
                    Border_color.Background = new SolidColorBrush((System.Windows.Media.Color)ColorConverter.ConvertFromString("#" + supply_color_code));
                    break;

                case Tables.requests:
                    int numb = ((Request)item).parts_to_paint;
                    TextBlock_car_parts.Text = "Части на покраску:\n";
                    if (numb == 8191)
                    {
                        TextBlock_car_parts.Text += "Все";
                    }
                    else
                    {
                        try
                        {
                            connection.Open();
                            MySqlCommand    comm = new MySqlCommand($"SELECT `name` FROM `car_parts` WHERE `id` & {numb};", connection);
                            MySqlDataReader data = comm.ExecuteReader();
                            while (data.Read())
                            {
                                TextBlock_car_parts.Text += data[0].ToString() + "\n";
                            }                                    /*
                                                                  * if (TextBlock_car_parts.Text == "Части на покраску:\n")
                                                                  * {
                                                                  * TextBlock_car_parts.Text += "Все";
                                                                  * }*/
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message);
                        }
                        finally
                        {
                            connection.Close();
                        }
                    }
                    break;
                }
            }
        }
예제 #5
0
        private void button_write_check_Click(object sender, RoutedEventArgs e)
        {
            if (DataGrid.SelectedItem == null)
            {
                MessageBox.Show("Выберите мышью запись перед созданием чека!");
                return;
            }
            else if (((Request)DataGrid.SelectedItem).paint_date == "")
            {
                MessageBox.Show("Нельзя выписать чек необработанной заявки!");
                return;
            }

            SaveFileDialog SFDialog = new SaveFileDialog();

            SFDialog.Filter = "Microsoft Word Document (*.docx)|*.docx";
            if (SFDialog.ShowDialog() == true)
            {
                Request req            = (Request)DataGrid.SelectedItem;
                string  cashier_name   = current_user.surname + " " + current_user.first_name[0] + ". " + current_user.second_name[0] + ".";
                string  parts_to_paint = "";
                decimal price          = 0;
                //Определение цены услуги и списка покрашенных деталей
                if (req.parts_to_paint == 8191)
                {
                    parts_to_paint = "Полностью";
                    //количество краски на всю машину
                    decimal paint_amount = decimal.Parse(Shortcuts.get_one_string_data_from("SELECT SUM(surface_size) FROM `car_parts`;", connection)) / 1000;

                    if (req.product_name == "")
                    {
                        //стоимость за аэрографию
                        price = decimal.Parse(Shortcuts.get_one_string_data_from("SELECT `price` " +
                                                                                 $"FROM `pictures` WHERE `name` = '{req.picture_name}';", connection));
                    }
                    else
                    {
                        try
                        {
                            //стоимость покраски всей машины без учёта краски
                            price = decimal.Parse(Shortcuts.get_one_string_data_from("SELECT SUM(cost) FROM `car_parts`;", connection));
                            //стоимость использованной краски
                            decimal paint_price = decimal.Parse(Shortcuts.get_one_string_data_from("SELECT `average_purchase_price` " +
                                                                                                   $"FROM `storage` WHERE `supplier` = '{req.supplier}' AND `product_name` = '{req.product_name}';", connection));
                            //надбавка цены на краску
                            price = price + paint_price * paint_amount;
                        }
                        catch
                        {
                            MessageBox.Show("Невозможно оформить чек. Отсутствуют данные о цене краски.");
                            return;
                        }
                    }
                }
                else                //детальная покраска
                {
                    //перечисление частей на покраску
                    List <string> parts = Shortcuts.get_full_column_from("car_parts", "name", $"`id` & {req.parts_to_paint}", connection);
                    for (int i = 0; i < parts.Count; i++)
                    {
                        parts_to_paint += parts[i];
                        if (i != parts.Count - 1)
                        {
                            parts_to_paint += "; ";
                        }
                        else
                        {
                            parts_to_paint += ".";
                        }
                    }
                    try
                    {
                        //стоимость за покраску частей без учёта краски
                        price = decimal.Parse(Shortcuts.get_one_string_data_from($"SELECT SUM(cost) FROM `car_parts` WHERE `id` & {req.parts_to_paint};", connection));
                        decimal paint_price = decimal.Parse(Shortcuts.get_one_string_data_from("SELECT `average_purchase_price` " +
                                                                                               $"FROM `storage` WHERE `supplier` = '{req.supplier}' AND `product_name` = '{req.product_name}';", connection));
                        //общая цена за услугу
                        decimal paint_amount = decimal.Parse(Shortcuts.get_one_string_data_from($"SELECT SUM(surface_size) FROM `car_parts` WHERE `id` & {req.parts_to_paint};", connection)) / 1000;
                        //надбавка цены на краску
                        price = price + paint_price * paint_amount;
                    }
                    catch
                    {
                        MessageBox.Show("Невозможно оформить чек. Отсутствуют данные о цене краски.");
                        return;
                    }
                }
                try
                {
                    Word.Application WordApp = new Word.Application();
                    WordApp.Visible = false;
                    string price_in_doc = price.ToString().Replace(',', '.');
                    int    dot_pos      = price_in_doc.IndexOf('.');
                    if (dot_pos > 0)
                    {
                        price_in_doc = price_in_doc.Substring(0, dot_pos + 3);
                    }

                    Document word_doc = WordApp.Documents.Open(Directory.GetCurrentDirectory() + $@"\check.docx");
                    Shortcuts.replace_word("{vin}", req.vin, word_doc);
                    Shortcuts.replace_word("{service_type}", req.service_type, word_doc);
                    Shortcuts.replace_word("{color}", req.product_name, word_doc);
                    Shortcuts.replace_word("{parts_to_paint}", parts_to_paint, word_doc);
                    Shortcuts.replace_word("{picture}", req.picture_name, word_doc);
                    Shortcuts.replace_word("{price}", price_in_doc, word_doc);
                    Shortcuts.replace_word("{cashier_name}", cashier_name, word_doc);
                    Shortcuts.replace_word("{current_date}", req.paint_date, word_doc);
                    word_doc.SaveAs2(FileName: SFDialog.FileName);
                    word_doc.Close();
                    MessageBox.Show("Файл успешно сохранён!");
                }
                catch
                {
                    MessageBox.Show("При сохранении чека возникла ошибка. Документ не сохранён.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
        }
예제 #6
0
        private void button_accept_request_Click(object sender, RoutedEventArgs e)
        {
            bool success = true;

            if (DataGrid.SelectedItem != null)
            {
                Request req = (Request)DataGrid.SelectedItem;
                if (req.request_status == "Обработано")
                {
                    MessageBox.Show("Данная заявка уже обработана!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                else if (req.service_type == "Аэрография")
                {
                    success = Shortcuts.execute_command("UPDATE `requests` " +
                                                        "SET `request_status` = 'Обработано', " +
                                                        $"`paint_date` = '{DateTime.Now:yyyy-MM-dd HH:mm:ss}' " +
                                                        $"WHERE `id` = {req.id};", connection);
                    fill_table();
                    if (success)
                    {
                        MessageBox.Show("Заявка успешно обработана!", "Успех", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                }
                else
                {
                    int    parts       = req.parts_to_paint;
                    string measurement = Shortcuts.get_one_string_data_from($"SELECT `measurement`" +
                                                                            $"FROM `storage` WHERE `product_name` = '{req.product_name}'", connection);
                    decimal paint_amount;
                    if (req.service_type == "Детальная")
                    {
                        paint_amount = decimal.Parse(Shortcuts.get_one_string_data_from($"SELECT SUM(`surface_size`) FROM `car_parts` " +
                                                                                        $"WHERE `id` & {parts};", connection)) / 1000;
                    }
                    else
                    {
                        paint_amount = decimal.Parse(Shortcuts.get_one_string_data_from($"SELECT SUM(`surface_size`) FROM `car_parts`;", connection)) / 1000;
                    }
                    int prod_available = int.Parse(Shortcuts.get_one_string_data_from($"SELECT count(*) FROM `storage` " +
                                                                                      $"WHERE `product_name` = '{req.product_name}' AND `supplier` = '{req.supplier}';", connection));
                    decimal paint_cost;
                    switch (prod_available)
                    {
                    case 1:
                        paint_cost = paint_amount * decimal.Parse(Shortcuts.get_one_string_data_from("SELECT `average_purchase_price` " +
                                                                                                     $"FROM `storage` WHERE `product_name` = '{req.product_name}';", connection));
                        //Всё норм
                        success = Shortcuts.execute_command("UPDATE `storage` " +
                                                            $"SET `product_amount` = (`product_amount` - {paint_amount.ToString().Replace(',','.')}) " +
                                                            $"WHERE `product_name` = '{req.product_name}' AND `supplier` = '{req.supplier}';", connection);
                        success = Shortcuts.execute_command("UPDATE `requests` " +
                                                            $"SET `request_status` = 'Обработано', " +
                                                            $"`paint_amount` = {paint_amount.ToString().Replace(',','.')}, " +
                                                            $"`measurement` = '{measurement}', " +
                                                            $"`paint_cost` = {paint_cost.ToString().Replace(',', '.')}, " +
                                                            $"`paint_date` = '{DateTime.Now:yyyy-MM-dd HH:mm:ss}' " +
                                                            $"WHERE `id` = {req.id};", connection);
                        fill_table();
                        if (success)
                        {
                            MessageBox.Show("Заявка успешно обработана!", "Успех", MessageBoxButton.OK, MessageBoxImage.Information);
                        }
                        break;

                    case 0:
                        MessageBox.Show("На складе отсутствует краска соответствующего поставщика!", "Нет краски", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                        break;

                    default:
                        MessageBox.Show("Произошла ошибка в базе!\nПовторяющиеся записи продукта на одного поставщика. " +
                                        "Обратитесь к администратору", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                        break;
                    }
                }
            }
            else
            {
                MessageBox.Show("Выберите мышью запись перед изменением.");
            }
        }
예제 #7
0
        private void Button_accept_Click(object sender, RoutedEventArgs e)
        {
            //Количество точек в введённых числах
            int dot_count1 = TextBox_product_amount.Text.Split('.').Length - 1;
            int dot_count2 = TextBox_price.Text.Split('.').Length - 1;

            if (ComboBox_supplier.Text != "" && (string)(ComboBox_product_name.Items[ComboBox_product_name.SelectedIndex] as ComboBoxItem).Tag != "" &&
                TextBox_product_amount.Text != "" && TextBox_price.Text != "" && DatePicker_order.SelectedDate.HasValue &&
                dot_count1 <= 1 && dot_count2 <= 1)
            {
                string mail = "";
                if (parent is MainWindow)
                {
                    mail = ((MainWindow)parent).current_user.mail;
                }
                else if (parent is SupplyManagerWindow)
                {
                    mail = ((SupplyManagerWindow)parent).current_user.mail;
                }
                string measurement = Shortcuts.get_one_string_data_from($"SELECT `measurement` FROM `products` where `name` = '{(string)(ComboBox_product_name.Items[ComboBox_product_name.SelectedIndex] as ComboBoxItem).Tag}';", connection);
                bool   success     = true;
                switch (mode)
                {
                case QueryMode.add:
                    success = Shortcuts.execute_command($"INSERT INTO `supplies` (`id`, `user_mail`, `supplier`, " +
                                                        $"`product_name`, `product_amount`, `measurement`, `price`, " +
                                                        $"`order_date`, `delivery_date`) " +
                                                        $"VALUES (DEFAULT, '{mail}', '{ComboBox_supplier.Text}', " +
                                                        $"'{(string)(ComboBox_product_name.Items[ComboBox_product_name.SelectedIndex] as ComboBoxItem).Tag}', {TextBox_product_amount.Text}, '{measurement}', {TextBox_price.Text}, " +
                                                        $"'{DatePicker_order.SelectedDate.Value:yyyy-MM-dd}', " +
                                                        $"NULL);", connection);
                    break;

                case QueryMode.change:
                    success = Shortcuts.execute_command($"UPDATE `supplies` " +
                                                        $"SET " +
                                                        $"`user_mail` = '{mail}', " +
                                                        $"`supplier` = '{ComboBox_supplier.Text}', " +
                                                        $"`product_name` = '{(string)(ComboBox_product_name.Items[ComboBox_product_name.SelectedIndex] as ComboBoxItem).Tag}', " +
                                                        $"`product_amount` = '{TextBox_product_amount.Text}'," +
                                                        $"`measurement` = '{measurement}', " +
                                                        $"`price` = '{TextBox_price.Text}', " +
                                                        $"`order_date` = '{DatePicker_order.SelectedDate.Value:yyyy-MM-dd}' " +
                                                        $"WHERE `id` = {primary_key_value}", connection);
                    break;
                }
                if (success)
                {
                    parent.Focus();
                    if (parent is MainWindow)
                    {
                        ((MainWindow)parent).fill_table();
                    }
                    if (parent is SupplyManagerWindow)
                    {
                        ((SupplyManagerWindow)parent).fill_table();
                    }
                    Close();
                }
            }
            else
            {
                MessageBox.Show("Заполните корректно все числовые поля, поля с выбором и даты!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
        private void button_delivery_supply_Click(object sender, RoutedEventArgs e)
        {
            if (DataGrid.SelectedItem == null)
            {
                MessageBox.Show("Выберите мышью запись перед совершением поставки.");
            }
            else
            {
                bool   success = true;
                Supply sup     = (Supply)DataGrid.SelectedItem;
                if (sup.delivery_date != "")
                {
                    MessageBox.Show("Данная поставка уже зачислена!", "Внимание", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }
                int product_storage_count = int.Parse(Shortcuts.get_one_string_data_from($"SELECT count(*) FROM " +
                                                                                         $"`storage` WHERE `product_name` = '{sup.product_name}' AND " +
                                                                                         $"`supplier` = '{sup.supplier}';", connection));
                if (product_storage_count == 1)
                {
                    //Записать в существующего поставщика
                    Storage st = new Storage();
                    try
                    {
                        connection.Open();
                        MySqlCommand comm = new MySqlCommand("SELECT * FROM " +
                                                             $"`storage` WHERE `product_name` = '{sup.product_name}' AND " +
                                                             $"`supplier` = '{sup.supplier}';", connection);
                        MySqlDataReader data = comm.ExecuteReader();
                        data.Read();
                        string[] values = new string[data.FieldCount];
                        for (int i = 0; i < data.FieldCount; i++)
                        {
                            values[i] = data[i].ToString();
                        }
                        st = (Storage)Container_controller.Create_struct(Tables.storage, values);
                    }
                    catch (Exception ex)
                    {
                        success = false;
                        MessageBox.Show(ex.Message);
                    }
                    finally
                    {
                        connection.Close();
                    }
                    decimal new_prod_amount = st.product_amount + sup.product_amount;
                    decimal new_price       = ((st.average_purchase_price * st.product_amount) + sup.price * sup.product_amount) / (new_prod_amount);
                    success = Shortcuts.execute_command("UPDATE `storage` SET " +
                                                        $"`average_purchase_price` = {new_price.ToString().Replace(',', '.')}, " +
                                                        $"`product_amount` = {new_prod_amount.ToString().Replace(',', '.')} " +
                                                        $"WHERE `product_name` = '{sup.product_name.ToString().Replace(',', '.')}' AND " +
                                                        $"`supplier` = '{sup.supplier}';", connection);

                    success = Shortcuts.execute_command("UPDATE `supplies` SET " +
                                                        $"`delivery_date` = '{DateTime.Now:yyyy-MM-dd}' " +
                                                        $"WHERE `id` = {sup.id};", connection);
                    if (success)
                    {
                        MessageBox.Show("Поставка на склад произведена!", "Успех", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Поставка не произведена!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }
                else if (product_storage_count == 0)
                {
                    success = Shortcuts.execute_command("INSERT INTO `storage` " +
                                                        "(`product_name`, `product_amount`, " +
                                                        "`measurement`, `supplier`, `average_purchase_price`) VALUES " +
                                                        $"('{sup.product_name}', {sup.product_amount.ToString().Replace(',','.')}, " +
                                                        $"'{sup.measurement}', '{sup.supplier}', {(sup.price).ToString().Replace(',', '.')});", connection);
                    success = Shortcuts.execute_command("UPDATE `supplies` SET " +
                                                        $"`delivery_date` = '{DateTime.Now:yyyy-MM-dd}' " +
                                                        $"WHERE `id` = {sup.id};", connection);
                    if (success)
                    {
                        MessageBox.Show("Поставка на склад произведена!", "Успех", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Поставка не произведена!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Произошла ошибка в базе!\nПовторяющиеся записи продукта на одного поставщика. " +
                                    "Обратитесь к администратору", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                fill_table();
            }
        }
예제 #9
0
        private void Button_accept_Click(object sender, RoutedEventArgs e)
        {
            if (TextBox_mail.Text != "" && TextBox_password.Text != "" &&
                TextBox_surname.Text != "" && TextBox_first_name.Text != "" &&
                TextBox_second_name.Text != "" && TextBox_phone.Text != "" &&
                ComboBox_role.Text != "" && ComboBox_gender.Text != "" &&
                Image.Source != null)
            {
                string m = TextBox_mail.Text.ToLower();
                if (m.Split('@').Length != 2)
                {
                    MessageBox.Show("Неправильный ввод почты!");
                    return;
                }
                if (!(m.Contains('.') && m.Split('@')[1].Split('.')[1].Length >= 2 &&
                      m.Split('@')[1].Split('.')[1].Length <= 4))
                {
                    MessageBox.Show("Неправильный ввод почты!");
                    return;
                }
                if (m.LastIndexOf('.') - m.IndexOf('@') <= 1)
                {
                    MessageBox.Show("Неправильный ввод почты!");
                    return;
                }
                if (m.IndexOf('@') == 0)
                {
                    MessageBox.Show("Неправильный ввод почты!");
                    return;
                }

                /*Regex reg = new Regex("^[A-Za-z0-9._-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}$");
                 * if (!reg.IsMatch(TextBox_mail.Text.ToLower()))
                 * {
                 *      MessageBox.Show("Неправильный ввод почты!");
                 *      return;
                 * }*/
                bool success = true;
                switch (mode)
                {
                case QueryMode.add:
                    try
                    {
                        connection.Open();
                        MySqlCommand comm = new MySqlCommand("INSERT INTO `users` (`mail`, `password`, " +
                                                             "`surname`, `first_name`, `second_name`, " +
                                                             "`phone`, `role`, `gender`, `image`) " +
                                                             $"VALUES ('{TextBox_mail.Text.ToLower()}', '{TextBox_password.Text}', " +
                                                             $" '{TextBox_surname.Text}', '{TextBox_first_name.Text}', '{TextBox_second_name.Text}', " +
                                                             $"'{TextBox_phone.Text}', '{ComboBox_role.Text}', '{ComboBox_gender.Text}', @image);", connection);
                        MySqlParameter img_param = new MySqlParameter("@image", new_image);
                        comm.Parameters.Add(img_param);
                        comm.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {
                        success = false;
                        if (ex.Message.Contains("Duplicate entry"))
                        {
                            MessageBox.Show("Пользователь с такой почтой уже существует!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                        }
                        else
                        {
                            MessageBox.Show(ex.Message);
                        }
                    }
                    finally
                    {
                        connection.Close();
                    }
                    break;

                case QueryMode.change:
                    User current_user = parent.current_user;
                    int  admin_count  = int.Parse(Shortcuts.get_one_string_data_from("SELECT count(*) from `users` " +
                                                                                     "WHERE `role`='администратор'", connection));
                    if (current_user.mail == primary_key_value &&
                        ComboBox_role.Text != "администратор" &&
                        admin_count <= 1)
                    {
                        MessageBox.Show("Изменение роли невозможно! Единственный администратор в системе!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }
                    //int user_count = int.Parse(Shortcuts.get_one_string_data_from($"SELECT count(*) FROM `users` WHERE `mail` = {TextBox_mail.Text.ToLower()}", connection));
                    if (!confirm_action("Вы точно хотите изменить данные пользователя?", "Подтверждение действия"))
                    {
                        return;
                    }
                    try
                    {
                        connection.Open();
                        MySqlCommand comm = new MySqlCommand("UPDATE `users` " +
                                                             $"SET `mail` = '{TextBox_mail.Text.ToLower()}', " +
                                                             $"`password` = '{TextBox_password.Text}', " +
                                                             $"`surname` = '{TextBox_surname.Text}', " +
                                                             $"`first_name` = '{TextBox_first_name.Text}', " +
                                                             $"`second_name` = '{TextBox_second_name.Text}', " +
                                                             $"`phone` = '{TextBox_phone.Text}', " +
                                                             $"`gender` = '{ComboBox_gender.Text}', " +
                                                             $"`role` = '{ComboBox_role.Text}', " +
                                                             $"`image` = @image " +
                                                             $"WHERE `mail` = '{primary_key_value}';", connection);
                        MySqlParameter img_param = new MySqlParameter("@image", new_image);
                        comm.Parameters.Add(img_param);
                        comm.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {
                        success = false;
                        if (ex.Message.Contains("Duplicate entry"))
                        {
                            MessageBox.Show("Пользователь с такой почтой уже существует!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                        }
                        else
                        {
                            MessageBox.Show(ex.Message);
                        }
                    }
                    finally
                    {
                        connection.Close();
                    }
                    break;
                }
                if (success)
                {
                    parent.Focus();
                    parent.fill_table();
                    Close();
                }
            }
            else
            {
                MessageBox.Show("Заполните все поля и выберите изображение!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
예제 #10
0
        private void button_enter_Click(object sender, RoutedEventArgs e)
        {
            string mail = textbox_mail.Text.ToLower();
            string pass = passwordbox_password.Password;

            if (mail != "" && pass != "")
            {
                string user_count = Shortcuts.get_one_string_data_from($@"select count(*) from `users`
																 where `mail` = '{mail}'
																 and `password` = '{pass}';"                                                                ,
                                                                       connection);

                if (user_count == "1")
                {
                    try_count    = 3;
                    current_user = Shortcuts.get_user(mail, pass, connection);
                    //Запоминание пользователя
                    if (Checkbox_remember.IsChecked.Value)
                    {
                        if (File.Exists(remember_file_path))
                        {
                            File.Delete(remember_file_path);
                        }
                        using (StreamWriter sw = new StreamWriter(remember_file_path))
                        {
                            sw.WriteLine(textbox_mail.Text);
                            sw.WriteLine(passwordbox_password.Password);
                            sw.Close();
                        }
                    }
                    int    hours = DateTime.Now.Hour;
                    string greeting;
                    if (hours >= 6 && hours <= 11)
                    {
                        greeting = "Доброе утро, ";
                    }
                    else if (hours >= 12 && hours <= 17)
                    {
                        greeting = "Добрый день, ";
                    }
                    else if (hours >= 18 && hours <= 21)
                    {
                        greeting = "Добрый вечер, ";
                    }
                    else
                    {
                        greeting = "Доброй ночи, ";
                    }
                    greeting += current_user.first_name + " " + current_user.second_name + "!";
                    MessageBox.Show(greeting);
                    switch (current_user.role)
                    {
                    case "администратор":
                        MainWindow window = new MainWindow(current_user, this);
                        window.Show();
                        Hide();
                        break;

                    case "менеджер по заявкам":
                        RequestManagerWindow rmw = new RequestManagerWindow(current_user, this);
                        rmw.Show();
                        Hide();
                        break;

                    case "менеджер по поставкам":
                        SupplyManagerWindow smw = new SupplyManagerWindow(current_user, this);
                        smw.Show();
                        Hide();
                        break;
                    }
                }
                else
                {
                    MessageBox.Show("Неверный логин или пароль.");
                    try_count--;
                    if (try_count <= 0)
                    {
                        MessageBox.Show("Количество попыток превышено, введите проверочный текст!", "Внимание", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                        textbox_mail.Text             = "";
                        passwordbox_password.Password = "";
                        change_login_ability(false);
                        generate_captcha();
                        change_captcha_visibility(Visibility.Visible);
                    }
                }
            }
            else
            {
                MessageBox.Show("Введите логин и пароль.");
            }
        }