/// <summary> /// Обращается к базе данных и находит в ней поезд, соответствующий переданному в параметре, и уменьшает у него количество билетов на 1. /// После окончания этой операции вызывает у класса MainWindow метод BookingReady. /// </summary> /// <param name="CurrentTrain"></param> public static void BookTicket(Train CurrentTrain) { using (ContextForBookingDataBase BookingDBcontext = new ContextForBookingDataBase(NamesOfVariables.ConnectionStringName)) { BookingDBcontext.ListOfTrains.First((res) => res.TrainName == CurrentTrain.TrainName).AmountOfFreeTickets = CurrentTrain.AmountOfFreeTickets; BookingDBcontext.SaveChanges(); Application.Current.Dispatcher.Invoke(new Action(() => ApplicationMainWindow.BookingReady())); } }
private void ShowInfoAboutFoundTrainToUser(Train FoundTrain) { if (FoundTrain != null) { ProgramStateLabel.Foreground = Brushes.Green; ProgramStateLabel.Content = Texts.LabelProgramStateReady; CurrentTrainInfo = FoundTrain.TrainName + " " + FoundTrain.Stations.First().StationName + " - " + FoundTrain.Stations.Last().StationName; TrainInfoLabel.Content = CurrentTrainInfo; TrainInfoLabel.Foreground = Brushes.Blue; AmountOfTicketsLabel.Content = FoundTrain.AmountOfFreeTickets.ToString(); AmountOfTicketsLabel.Foreground = Brushes.Blue; if (CurrentTrain.AmountOfFreeTickets > 0) { BookTicketButton.Visibility = Visibility.Visible; } } else { ProgramStateLabel.Foreground = Brushes.Red; ProgramStateLabel.Content = Texts.LabelProgramStateTrainNotFound; TrainInfoLabel.Content = Texts.LabelsForValuesErrorText; TrainInfoLabel.Foreground = Brushes.Red; AmountOfTicketsLabel.Content = Texts.LabelsForValuesErrorText; AmountOfTicketsLabel.Foreground = Brushes.Red; } }
/// <summary> /// Оповещаетпользователя о результатах поиска поезда. (Совершает необходимые изменения визуальных элементов главного окна приложения) /// Кроме того 'освобождает' программу для следующего запроса на поиск поезда. /// </summary> /// <param name="FoundTrain"></param> public void SearchOver(Train FoundTrain, bool DepartureStationFound, bool DestinationStationFound) { CurrentTrain = FoundTrain; Storyboard StoryBoardForSearchAnimation = null; StoryBoardForSearchAnimation = this.FindResource("LoadingAnimationStoryBoard") as Storyboard; StoryBoardForSearchAnimation.Stop(); SearchDataAnimatedEllipse.Visibility = Visibility.Collapsed; if (!DepartureStationFound) { DepartureStationNotFoundLabel.Visibility = Visibility.Visible; } else { DepartureStationNotFoundLabel.Visibility = Visibility.Collapsed; } if (!DestinationStationFound) { DestinationStationNotFoundLabel.Visibility = Visibility.Visible; } else { DestinationStationNotFoundLabel.Visibility = Visibility.Collapsed; } ShowInfoAboutFoundTrainToUser(FoundTrain); ProgramBusy = false; }