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); }