示例#1
0
        public async Task <IActionResult> AddPassenger([FromRoute] int rideId, [FromBody] NewPassenger newPassenger)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var ride = await _context.Rides
                       .Include(r => r.PassengerRides)
                       .Include(r => r.From).ThenInclude(place => place.City)
                       .Include(r => r.To).ThenInclude(place => place.City)
                       .FirstOrDefaultAsync(r => r.RideId == rideId);

            var user = await _context.Users
                       .Include(r => r.PassengerRides)
                       .FirstOrDefaultAsync(u => u.UserId == newPassenger.PassengerId);

            if (ride != null && user != null)
            {
                if (ride.NumOfSeats > ride.BookedSeats)
                {
                    ride.BookedSeats = ride.BookedSeats + 1;
                    var passengerRide = new PassengerRide {
                        Ride = ride, RideId = ride.RideId, User = user, UserId = user.UserId
                    };
                    ride.PassengerRides.Add(passengerRide);
                    user.PassengerRides.Add(passengerRide);
                    _context.Rides.Update(ride);
                    _context.Users.Update(user);
                    await _context.SaveChangesAsync();

                    return(Ok());
                }
                else
                {
                    return(StatusCode(500, "No seats available"));
                }
            }
            return(NotFound());
        }
        public bool AddToList(List <Flight> FlightList)
        {
            NewPassenger newPassenger = new NewPassenger();

            DateTime DateStart = DateTime.Now, DateEnd = DateTime.Now.AddYears(-120);

            Console.WriteLine("The operation is allowed only for flights in condition 'CheckIn' or 'Delayed'");
            int IndexFlightNumber = EnteredFlightNumber(FlightList);

            if (IndexFlightNumber == -1)
            {
                return(false);
            }

            if (FlightList[IndexFlightNumber].FlightFreePlace == 0)
            {
                Console.WriteLine("On this flight there are no free places");
                return(false);
            }


            if (FlightList[IndexFlightNumber].GetFlightStatus() != "CheckIn" &&
                FlightList[IndexFlightNumber].GetFlightStatus() != "Delayed")
            {
                Console.WriteLine("Flight status does not allow additional passengers.");
                return(false);
            }

            int freeCell = FlightList[IndexFlightNumber].PassengersList.FindIndex(x => x == null);

            bool isCorrect = true;

            do
            {
                CleanerManager.CheckBorder();
                Console.ForegroundColor = ConsoleColor.DarkYellow;
                Console.Write("Enter first name: ");
                Console.ForegroundColor = ConsoleColor.DarkGray;
                newPassenger.insertPassengerFirstname = Console.ReadLine();
                if (String.IsNullOrWhiteSpace(newPassenger.insertPassengerFirstname))
                {
                    Console.WriteLine("Strange empty first name.Please repeat");
                }
                else
                {
                    isCorrect = false;
                }
            } while (isCorrect);

            isCorrect = true;
            do
            {
                CleanerManager.CheckBorder();
                Console.ForegroundColor = ConsoleColor.DarkYellow;
                Console.Write("Enter last name: ");
                Console.ForegroundColor = ConsoleColor.DarkGray;
                newPassenger.insertPassengerLastname = Console.ReadLine();
                if (String.IsNullOrWhiteSpace(newPassenger.insertPassengerLastname))
                {
                    Console.WriteLine("Strange empty last name.Please repeat");
                }
                else
                {
                    isCorrect = false;
                }
            } while (isCorrect);

            isCorrect = true;
            do
            {
                CleanerManager.CheckBorder();
                Console.ForegroundColor = ConsoleColor.DarkYellow;
                Console.Write("Enter nationality: ");
                Console.ForegroundColor = ConsoleColor.DarkGray;
                newPassenger.insertPassengerNationality = Console.ReadLine();
                if (String.IsNullOrWhiteSpace(newPassenger.insertPassengerNationality))
                {
                    Console.WriteLine("Strange empty nationality.Please repeat");
                }
                else
                {
                    isCorrect = false;
                }
            } while (isCorrect);

            isCorrect = true;
            do
            {
                CleanerManager.CheckBorder();
                Console.ForegroundColor = ConsoleColor.DarkYellow;
                Console.Write("Enter passpower: ");
                Console.ForegroundColor = ConsoleColor.DarkGray;
                newPassenger.insertPassengerPasspower = Console.ReadLine();
                if (String.IsNullOrWhiteSpace(newPassenger.insertPassengerPasspower))
                {
                    Console.WriteLine("Strange empty passport.Please repeat");
                }
                else
                {
                    isCorrect = false;
                }
                bool isPassport = true;
                foreach (char item in newPassenger.insertPassengerPasspower)
                {
                    if (!char.IsLetterOrDigit(item))
                    {
                        isPassport = false;
                    }
                }
                if (!isPassport)
                {
                    Console.WriteLine("Incoorect symbol in passport");
                    isCorrect = true;
                }
            } while (isCorrect);

            isCorrect = true;
            do
            {
                CleanerManager.CheckBorder();
                Console.ForegroundColor = ConsoleColor.DarkYellow;
                Console.WriteLine("Enter birthday date passenger (format YYYY-MM-DD): ");
                Console.ForegroundColor = ConsoleColor.DarkGray;
                bool isDate = DateTime.TryParse(Console.ReadLine(), out newPassenger.insertPassengerBirthday);
                if (isDate && newPassenger.insertPassengerBirthday < DateStart && newPassenger.insertPassengerBirthday > DateEnd)
                {
                    isCorrect = false;
                }
                else
                {
                    Console.WriteLine("Incorrect date(not yet born or long dead) or format. Please repeat");
                }
            } while (isCorrect);

            Console.ForegroundColor = ConsoleColor.DarkYellow;
            Console.WriteLine("Select sex passenger (M)ale, (F)emale");
            Console.ForegroundColor = ConsoleColor.DarkGray;
            isCorrect = true;
            do
            {
                switch (Console.ReadKey().KeyChar)
                {
                case 'm':
                case 'M':
                    newPassenger.insertPassengerSex = 0;
                    isCorrect = false;
                    break;

                case 'f':
                case 'F':
                    newPassenger.insertPassengerSex = 1;
                    isCorrect = false;
                    break;

                default:
                    Console.Write("Press 'M' or 'F'");
                    break;
                }
            } while (isCorrect);
            Console.WriteLine();

            Console.ForegroundColor = ConsoleColor.DarkYellow;
            Console.WriteLine("Select class ticket passenger (B)usiness, (E)conomy");
            Console.ForegroundColor = ConsoleColor.DarkGray;
            isCorrect = true;
            do
            {
                switch (Console.ReadKey().KeyChar)
                {
                case 'b':
                case 'B':
                    newPassenger.insertPassengerTicket = 0;
                    isCorrect = false;
                    break;

                case 'e':
                case 'E':
                    newPassenger.insertPassengerTicket = 1;
                    isCorrect = false;
                    break;

                default:
                    Console.Write("Press 'B' or 'E'");
                    break;
                }
            } while (isCorrect);
            Console.WriteLine();



            newPassenger.priceBussiness = FlightList[IndexFlightNumber].FlightPriceBussiness;
            newPassenger.priceEconomy   = FlightList[IndexFlightNumber].FlightPriceEconomy;
            if (freeCell != -1)
            {
                FlightList[IndexFlightNumber].PassengersList[freeCell] = new Passenger(newPassenger);
            }
            else
            {
                FlightList[IndexFlightNumber].PassengersList.Add(new Passenger(newPassenger));
            }
            LogManager.WriteToLog($"Add passenger {newPassenger.insertPassengerFirstname} {newPassenger.insertPassengerLastname} into flight {FlightList[IndexFlightNumber].FlightNumber}");
            return(true);
        }