public void ExecuteBuy(object sender, RoutedEventArgs e) { float localPrice = float.Parse(price.Text); var user = dbContext.UsersMs.Local .Single(o => o._user_id == Settings.Default.CurrentUserId); if (user._bill < localPrice) { MessageBox.Show(App.Current.Resources["Text_NotEnoughMoney"].ToString() + "", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } else { user._bill -= localPrice; dbContext.Entry(user).State = EntityState.Modified; dbContext.SaveChanges(); // Создание билета после покупки: if (seatnum.Text == null) { MessageBox.Show("Укажите место!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (carriageNum.Text == null) { MessageBox.Show("Укажите номер вагона!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error); return; } TicketsM temp = new TicketsM(); temp._seatnum = Convert.ToInt32(seatnum.SelectedItem); temp._carriage_number = Convert.ToInt32(carriageNum.SelectedItem); temp._user_id = (from o in dbContext.UsersMs where o._login == user._login select o._user_id).FirstOrDefault(); // Добавляем объект в БД dbContext.TicketsMs.Local.Add(temp); dbContext.SaveChanges(); MessageBox.Show(App.Current.Resources["Text_SuccessBuy"].ToString() + "", "Info", MessageBoxButton.OK, MessageBoxImage.Information); } }
// 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; TicketsM deleteEntity = SourceList[index]; SourceList.Remove(deleteEntity); } // Сохраняем контекст БД dbContext.SaveChanges(); TableV.Current_DataGrid.ItemsSource = SourceList; TableV.Current_DataGrid.Items.Refresh(); }
// Verified public void ExecuteAddEdit(object sender, RoutedEventArgs e) { if (scheduleNum.Items.Count < 1) { MessageBox.Show("Рейсы отсутствуют в базе данных! Сначала заполните ХОТЯ БЫ ОДИН рейс!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (seatnum.Text == null || seatnum.Text == "") { MessageBox.Show("Укажите место!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (username.Items.Count < 1) { MessageBox.Show("Пользователи отсутствуют в базе данных! Сначала заполните ХОТЯ БЫ ОДНОГО пользователя!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error); return; } TicketsM temp = new TicketsM(); temp._schedule_id = Convert.ToInt32(scheduleNum.SelectedItem); temp._seatnum = int.Parse(seatnum.Text); temp._carriage_number = Convert.ToInt32(carriageNum.SelectedItem); temp._user_id = (from o in dbContext.UsersMs where o._login == username.Text select o._user_id).FirstOrDefault(); // Сохранение нового юзера в БД if (isAdd) { // Добавляем объект в БД dbContext.TicketsMs.Local.Add(temp); // Очищаем поля scheduleNum.SelectedIndex = 0; seatnum.Text = null; carriageNum.SelectedIndex = 0; username.SelectedIndex = 0; } else { // Получаем объект из БД по айди, который будем изменять int id = SourceList[index]._ticket_id; var ticket = dbContext.TicketsMs.Local .Single(o => o._ticket_id == id); // Изменяем, просто изменяя поля на поля объекта temp ticket._schedule_id = temp._schedule_id; ticket._seatnum = temp._seatnum; ticket._carriage_number = temp._carriage_number; ticket._user_id = temp._user_id; // Говорим контексту БД, что данный объект был изменен dbContext.Entry(ticket).State = EntityState.Modified; } dbContext.SaveChanges(); // Обновление списка SourceList = dbContext.TicketsMs.Local.ToBindingList(); TableV.Current_DataGrid.ItemsSource = SourceList; TableV.Current_DataGrid.Items.Refresh(); }
// 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) { scheduleNum.SelectedIndex = 0; carriageNum.SelectedIndex = 0; username.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; //Если всё ок, вставляем данные для данного юзера в форму, который затем будем менять TicketsM temp = SourceList[index]; scheduleNum.SelectedItem = temp._schedule_id; seatnum.Text = temp._seatnum.ToString(); carriageNum.SelectedItem = temp._carriage_number; username.SelectedItem = temp.UsersM._login; button.Content = App.Current.Resources["Text_Edit"]; } button.Click += new RoutedEventHandler(ExecuteAddEdit); // Вешаем элементы в Grid dialogGrid.Children.Add(ScheduleNum); dialogGrid.Children.Add(Seatnum); dialogGrid.Children.Add(CarriageNum); dialogGrid.Children.Add(Username); dialogGrid.Children.Add(scheduleNum); dialogGrid.Children.Add(seatnum); dialogGrid.Children.Add(carriageNum); dialogGrid.Children.Add(username); // Заполняем нижний Button текстом и вешаем локальный обработчик события нажатия dialogV.ShowDialog(); // Очищаем Grid dialogGrid.Children.Remove(ScheduleNum); dialogGrid.Children.Remove(Seatnum); dialogGrid.Children.Remove(CarriageNum); dialogGrid.Children.Remove(Username); dialogGrid.Children.Remove(scheduleNum); dialogGrid.Children.Remove(seatnum); dialogGrid.Children.Remove(carriageNum); dialogGrid.Children.Remove(username);; scheduleNum.SelectedIndex = 0; seatnum.Text = null; carriageNum.SelectedIndex = 0; username.SelectedIndex = 0; }