Exemplo 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;

                RoutesM deleteEntity = SourceList[index];

                var schedules = (from o in dbContext.SchedulesMs
                                 where o._route_id == deleteEntity._route_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.RoutesMs.Local.Remove(deleteEntity);

                SourceList.Remove(deleteEntity);
            }

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

            TableV.Current_DataGrid.ItemsSource = SourceList;
            TableV.Current_DataGrid.Items.Refresh();
        }
Exemplo n.º 2
0
        // Verified
        public void ExecuteAddEdit(object sender, RoutedEventArgs e)
        {
            if (routeName.Text == null || routeName.Text == "")
            {
                MessageBox.Show("Укажите название маршрута!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (startCity.Items.Count < 2)
            {
                MessageBox.Show("Города в базе данных отсутствуют! Сначала добавьте ХОТЯ БЫ ДВА города!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (finishCity.Items.Count < 2)
            {
                MessageBox.Show("Города в базе данных отсутствуют! Сначала добавьте ХОТЯ БЫ ДВА города!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            if (startCity.Text == finishCity.Text)
            {
                MessageBox.Show("Нельзя проложить маршрут между одним и тем же городом!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            double result;

            if (distance.Text == null || distance.Text == "")
            {
                MessageBox.Show("Укажите дистанцию!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            else if (!double.TryParse(distance.Text, out result))
            {
                MessageBox.Show("Некорректное значение дистанции!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            string sc           = startCity.Text;
            var    startCity_Id = (from d in dbContext.CitiesMs
                                   where d._city_name == sc
                                   select d._city_id).FirstOrDefault();

            string fc            = finishCity.Text;
            var    finishCity_Id = (from d in dbContext.CitiesMs
                                    where d._city_name == fc
                                    select d._city_id).FirstOrDefault();

            if (sc == null || fc == null)
            {
                MessageBox.Show("Выбранные города отсутствуют в базе данных!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            var unique = (from o in dbContext.RoutesMs
                          where o._route_name == routeName.Text
                          select o).FirstOrDefault();

            if (unique != null && (isAdd || unique._route_id != SourceList[index]._route_id))
            {
                MessageBox.Show("Данный маршрут уже присутствует в таблице!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            RoutesM temp = new RoutesM();

            temp._route_name     = routeName.Text;
            temp._start_city_id  = startCity_Id;
            temp._finish_city_id = finishCity_Id;
            temp._distance       = double.Parse(distance.Text);

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

                // Очищаем поля
                routeName.Text           = null;
                startCity.SelectedIndex  = 0;
                finishCity.SelectedIndex = 0;
            }
            else
            {
                // Получаем объект из БД по айди, который будем изменять
                int id    = SourceList[index]._route_id;
                var route = dbContext.RoutesMs.Local
                            .Single(o => o._route_id == id);

                // Изменяем, просто изменяя поля на поля объекта temp
                route._route_name     = temp._route_name;
                route._start_city_id  = temp._start_city_id;
                route._finish_city_id = temp._finish_city_id;
                route._distance       = temp._distance;

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

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

            TableV.Current_DataGrid.ItemsSource = SourceList;
            TableV.Current_DataGrid.Items.Refresh();
        }
Exemplo 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)
            {
                startCity.SelectedIndex  = 0;
                finishCity.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;

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

                routeName.Text = temp._route_name;

                if (temp.CitiesM_Start != null)
                {
                    if (temp.CitiesM_Start._city_name != null)
                    {
                        startCity.SelectedItem = temp.CitiesM_Start._city_name;
                    }
                }

                if (temp.CitiesM_Finish != null)
                {
                    if (temp.CitiesM_Finish._city_name != null)
                    {
                        finishCity.SelectedItem = temp.CitiesM_Finish._city_name;
                    }
                }

                distance.Text = temp._distance.ToString();

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

            button.Click += new RoutedEventHandler(ExecuteAddEdit);

            // Вешаем элементы в Grid
            dialogGrid.Children.Add(RouteName);
            dialogGrid.Children.Add(StartCity);
            dialogGrid.Children.Add(FinishCity);
            dialogGrid.Children.Add(Distance);

            dialogGrid.Children.Add(routeName);
            dialogGrid.Children.Add(startCity);
            dialogGrid.Children.Add(finishCity);
            dialogGrid.Children.Add(distance);

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

            dialogV.ShowDialog();

            // Очищаем Grid
            dialogGrid.Children.Remove(RouteName);
            dialogGrid.Children.Remove(StartCity);
            dialogGrid.Children.Remove(FinishCity);
            dialogGrid.Children.Remove(Distance);

            dialogGrid.Children.Remove(routeName);
            dialogGrid.Children.Remove(startCity);
            dialogGrid.Children.Remove(finishCity);
            dialogGrid.Children.Remove(distance);

            routeName.Text           = null;
            startCity.SelectedIndex  = 0;
            finishCity.SelectedIndex = 0;
        }