Ejemplo n.º 1
0
        private void BtnAddPassenger_Click(object sender, RoutedEventArgs e)
        {
            //adding passengers to train and doing additional checks
            var aPassenger = new Passenger();

            try
            {
                aPassenger.TrainID = lblPtrainIdHolder.Content.ToString();
                aPassenger.Name    = txtFname.Text;
                aPassenger.Surname = txtSurname.Text;
                aPassenger.Coach   = cbCoach.SelectionBoxItem.ToString();
                if (train.GetType() == typeof(SleeperTrain))
                {
                    aPassenger.Sleeper = true;
                }
                else
                {
                    aPassenger.Sleeper = false;
                }
                if (txtPseat.Text.Length == 0)
                {
                    throw new ArgumentException("Seat number should be entered");
                }
                if (int.TryParse(txtPseat.Text, out int seatNum))
                {
                    aPassenger.Seat = seatNum;
                }

                if (train.FirstClass == true && cbCoach.SelectionBoxItem.ToString().Equals("A"))
                {
                    aPassenger.FirstClass = true;
                }
                else if (train.FirstClass == true && !cbCoach.SelectionBoxItem.ToString().Equals("A"))
                {
                    aPassenger.FirstClass = false;
                }
                else if (train.FirstClass == false)
                {
                    aPassenger.FirstClass = false;
                }
                else
                {
                    throw new ArgumentException("Train or coach does not offer first class");
                }
                if (train.SleeperBerth == true && cbCoach.SelectionBoxItem.ToString().Equals("H"))
                {
                    aPassenger.Cabin = true;
                }
                else if (train.SleeperBerth == true && !cbCoach.SelectionBoxItem.ToString().Equals("H"))
                {
                    aPassenger.Cabin = false;
                }
                else if (train.SleeperBerth == false)
                {
                    aPassenger.Cabin = false;
                }
                else
                {
                    throw new ArgumentException("Train or coach does not offer sleeper berth");
                }

                if (train.Departure.Equals("Edinburgh (Waverley)") && train.Destination.Equals("London (Kings Cross)") &&
                    cbPassengerDep.SelectedIndex < cbPassengerArrival.SelectedIndex)
                {
                    aPassenger.DepStation     = cbPassengerDep.SelectionBoxItem.ToString();
                    aPassenger.ArrivalStation = cbPassengerArrival.SelectedItem.ToString();
                }
                else if (train.Destination.Equals("Edinburgh (Waverley)") && train.Departure.Equals("London (Kings Cross)") &&
                         cbPassengerDep.SelectedIndex > cbPassengerArrival.SelectedIndex)
                {
                    aPassenger.DepStation     = cbPassengerDep.SelectionBoxItem.ToString();
                    aPassenger.ArrivalStation = cbPassengerArrival.SelectedItem.ToString();
                }
                else
                {
                    throw new ArgumentException("Station unavailable for this train");
                }

                // calculating booking price
                if ((cbPassengerDep.SelectedItem.ToString().Equals("Edinburgh (Waverley)") && cbPassengerArrival.SelectedItem.ToString().Equals("London (Kings Cross)")) ||
                    (cbPassengerArrival.SelectedItem.Equals("Edinburgh (Waverley)") && cbPassengerDep.SelectedItem.ToString().Equals("London (Kings Cross)")))
                {
                    price = 50;
                }
                else
                {
                    price = price - 25;
                }
                if (aPassenger.FirstClass == true)
                {
                    price = price + 10;
                }
                if (aPassenger.Cabin == true)
                {
                    price = price + 20;
                }
                //messagebox with buttons
                switch (MessageBox.Show($"Ticket price is {price} ", "Ticket", MessageBoxButton.YesNoCancel, MessageBoxImage.Question))
                {
                case MessageBoxResult.Yes:
                    aPassenger.Ticket = price;
                    trains.AddPassengerToTrain(aPassenger.TrainID, aPassenger);
                    MessageBox.Show("Passenger added");
                    break;

                case MessageBoxResult.No:
                    return;


                case MessageBoxResult.Cancel:
                    return;
                }
            }
            catch (ArgumentException exc4)
            {
                MessageBox.Show(exc4.Message);
            }
        }