Ejemplo n.º 1
0
        // Verified
        public void Delete()
        {
            if (TableV.Current_DataGrid.SelectedItems.Count < 1)
            {
                MessageBox.Show("Выберите элементы для удаления!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            while (TableV.Current_DataGrid.SelectedItems.Count > 0)
            {
                index = TableV.Current_DataGrid.SelectedIndex;

                TrainsM deleteEntity = SourceList[index];

                var schedules = (from o in dbContext.SchedulesMs
                                 where o._train_id == deleteEntity._train_id
                                 select o);

                if (schedules != null)
                {
                    foreach (var schedule in schedules)
                    {
                        var tickets = (from o in dbContext.TicketsMs
                                       where o._schedule_id == schedule._schedule_id
                                       select o);

                        if (tickets != null)
                        {
                            dbContext.TicketsMs.RemoveRange(tickets);
                        }
                    }

                    dbContext.SchedulesMs.RemoveRange(schedules);
                }

                dbContext.TrainsMs.Local.Remove(deleteEntity);
                SourceList.Remove(deleteEntity);
            }

            // Сохраняем контекст БД
            dbContext.SaveChanges();

            TableV.Current_DataGrid.ItemsSource = SourceList;
            TableV.Current_DataGrid.Items.Refresh();
        }
Ejemplo n.º 2
0
        // Verified
        public void ExecuteAddEdit(object sender, RoutedEventArgs e)
        {
            if (locoModel.Items.Count < 1)
            {
                MessageBox.Show("Локомотивы в базе данных отсутствуют! Сначала добавьте ХОТЯ БЫ ОДИН локомотив!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            double result1;

            // Проверки TextBox на null и пустую строку
            if (speed.Text == null || speed.Text == "")
            {
                MessageBox.Show("Укажите скорость!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            else if (!double.TryParse(speed.Text, out result1))
            {
                MessageBox.Show("Некорректная скорость!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            int result2;

            // Проверки TextBox на null и пустую строку
            if (seats.Text == null || seats.Text == "")
            {
                seats.Text = "0";
            }
            else if (!int.TryParse(seats.Text, out result2))
            {
                MessageBox.Show("Некорректное количество мест!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            // Вот эту парашу надо делать через запросы походу
            TrainsM temp = new TrainsM();

            var locomotive = (from o in dbContext.LocomotivesMs
                              where o._model == locoModel.Text
                              select o).FirstOrDefault();

            temp._locomotive_id = locomotive._locomotive_id;

            // carriage 1
            var carriage_1 = (from o in dbContext.CarriagesMs
                              where o._model == carrModel_1.Text
                              select o).FirstOrDefault();

            if (carriage_1 != null)
            {
                temp._first_carriage_id = carriage_1._carriage_id;
            }
            else
            {
                temp._first_carriage_id = -1;
            }

            // carriage 2
            var carriage_2 = (from o in dbContext.CarriagesMs
                              where o._model == carrModel_2.Text
                              select o).FirstOrDefault();

            if (carriage_2 != null)
            {
                temp._second_carriage_id = carriage_2._carriage_id;
            }
            else
            {
                temp._second_carriage_id = -1;
            }

            // carriage 3
            var carriage_3 = (from o in dbContext.CarriagesMs
                              where o._model == carrModel_3.Text
                              select o).FirstOrDefault();

            if (carriage_3 != null)
            {
                temp._third_carriage_id = carriage_3._carriage_id;
            }
            else
            {
                temp._third_carriage_id = -1;
            }

            // carriage 4
            var carriage_4 = (from o in dbContext.CarriagesMs
                              where o._model == carrModel_4.Text
                              select o).FirstOrDefault();

            if (carriage_4 != null)
            {
                temp._fourth_carriage_id = carriage_4._carriage_id;
            }
            else
            {
                temp._fourth_carriage_id = -1;
            }

            // carriage 5
            var carriage_5 = (from o in dbContext.CarriagesMs
                              where o._model == carrModel_5.Text
                              select o).FirstOrDefault();

            if (carriage_5 != null)
            {
                temp._fifth_carriage_id = carriage_5._carriage_id;
            }
            else
            {
                temp._fifth_carriage_id = -1;
            }

            temp._train_avgspeed = double.Parse(speed.Text);
            temp._reserved_seats = int.Parse(seats.Text);

            // Сохранение нового юзера в БД
            if (isAdd)
            {
                // Добавляем объект в БД
                dbContext.TrainsMs.Local.Add(temp);

                // Очищаем поля
                locoModel.SelectedIndex   = 0;
                carrModel_1.SelectedIndex = 0;
                carrModel_2.SelectedIndex = 0;
                carrModel_3.SelectedIndex = 0;
                carrModel_4.SelectedIndex = 0;
                carrModel_5.SelectedIndex = 0;
                seats.Text = null;
                speed.Text = null;
            }
            else
            {
                // Получаем объект из БД по айди, который будем изменять
                int id    = SourceList[index]._train_id;
                var train = dbContext.TrainsMs.Local
                            .Single(o => o._train_id == id);

                // Изменяем, просто изменяя поля на поля объекта temp
                train._locomotive_id = temp._locomotive_id;

                train._first_carriage_id  = temp._first_carriage_id;
                train._second_carriage_id = temp._second_carriage_id;
                train._third_carriage_id  = temp._third_carriage_id;
                train._fourth_carriage_id = temp._fourth_carriage_id;
                train._fifth_carriage_id  = temp._fifth_carriage_id;

                train._reserved_seats = temp._reserved_seats;
                train._train_avgspeed = temp._train_avgspeed;

                // Говорим контексту БД, что данный объект был изменен
                dbContext.Entry(train).State = EntityState.Modified;
            }
            dbContext.SaveChanges();

            // Обновление списка
            SourceList = dbContext.TrainsMs.Local.ToBindingList();

            TableV.Current_DataGrid.ItemsSource = SourceList;
            TableV.Current_DataGrid.Items.Refresh();
        }
Ejemplo n.º 3
0
        // Verified
        public void AddEdit(bool isAdd)
        {
            this.isAdd = isAdd;
            // Показываем диалоговое окно
            DialogV dialogV    = new DialogV();
            Grid    dialogGrid = dialogV.Dialog_Grid;

            Button button = dialogV.Button_Execute;

            // Если это добавление
            if (isAdd)
            {
                locoModel.SelectedIndex = 0;

                carrModel_1.SelectedIndex = 0;
                carrModel_2.SelectedIndex = 0;
                carrModel_3.SelectedIndex = 0;
                carrModel_4.SelectedIndex = 0;
                carrModel_5.SelectedIndex = 0;

                button.Content = App.Current.Resources["Text_Add"];
                index          = -1;
            }
            // Если это изменение
            else
            {
                // если ничего не выбрано в датагриде то ошибка
                // если выбрано больше 1 элемента то тоже ошибка
                if (TableV.Current_DataGrid.SelectedItems.Count < 1)
                {
                    MessageBox.Show("Выберите элемент для изменения!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                else if (TableV.Current_DataGrid.SelectedItems.Count > 1)
                {
                    MessageBox.Show("Можно выбрать для изменения не более ОДНОГО элемента за раз!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }

                //индекс текущей выбранной строки в DataGrid
                //кастыль, но куда без кастылей?
                index = TableV.Current_DataGrid.SelectedIndex;

                //Если всё ок, вставляем данные для данного юзера в форму, который затем будем менять
                TrainsM temp = SourceList[index];

                locoModel.SelectedIndex = 0;

                carrModel_1.SelectedIndex = 0;
                carrModel_2.SelectedIndex = 0;
                carrModel_3.SelectedIndex = 0;
                carrModel_4.SelectedIndex = 0;
                carrModel_5.SelectedIndex = 0;

                speed.Text = temp._train_avgspeed.ToString();
                seats.Text = temp._reserved_seats.ToString();

                button.Content = App.Current.Resources["Text_Edit"];
            }

            button.Click += new RoutedEventHandler(ExecuteAddEdit);

            // Вешаем элементы в Grid
            dialogGrid.Children.Add(LocoModel);
            dialogGrid.Children.Add(CarrModel_1);
            dialogGrid.Children.Add(CarrModel_2);
            dialogGrid.Children.Add(CarrModel_3);
            dialogGrid.Children.Add(CarrModel_4);
            dialogGrid.Children.Add(CarrModel_5);
            dialogGrid.Children.Add(Speed);
            dialogGrid.Children.Add(Seats);

            dialogGrid.Children.Add(locoModel);
            dialogGrid.Children.Add(carrModel_1);
            dialogGrid.Children.Add(carrModel_2);
            dialogGrid.Children.Add(carrModel_3);
            dialogGrid.Children.Add(carrModel_4);
            dialogGrid.Children.Add(carrModel_5);
            dialogGrid.Children.Add(speed);
            dialogGrid.Children.Add(seats);

            // Заполняем нижний Button текстом и вешаем локальный обработчик события нажатия

            dialogV.ShowDialog();

            // Очищаем Grid
            dialogGrid.Children.Remove(LocoModel);
            dialogGrid.Children.Remove(CarrModel_1);
            dialogGrid.Children.Remove(CarrModel_2);
            dialogGrid.Children.Remove(CarrModel_3);
            dialogGrid.Children.Remove(CarrModel_4);
            dialogGrid.Children.Remove(CarrModel_5);
            dialogGrid.Children.Remove(Speed);
            dialogGrid.Children.Remove(Seats);

            dialogGrid.Children.Remove(locoModel);
            dialogGrid.Children.Remove(carrModel_1);
            dialogGrid.Children.Remove(carrModel_2);
            dialogGrid.Children.Remove(carrModel_3);
            dialogGrid.Children.Remove(carrModel_4);
            dialogGrid.Children.Remove(carrModel_5);
            dialogGrid.Children.Remove(speed);
            dialogGrid.Children.Remove(seats);

            locoModel.SelectedIndex   = 0;
            carrModel_1.SelectedIndex = 0;
            carrModel_2.SelectedIndex = 0;
            carrModel_3.SelectedIndex = 0;
            carrModel_4.SelectedIndex = 0;
            carrModel_5.SelectedIndex = 0;
            speed.Text = null;
            seats.Text = null;
        }