public async Task <IActionResult> AddPeople(AddPeopleToBookingViewModel model) { model.NumberOfPeople = model.PeopleToAdd.Count(); if (ModelState.IsValid) { //gets the booking from the database var booking = await _context.Bookings.FindAsync(model.BookingId); //convert IList to List as it can be casted as IEnumerable booking.Persons = model.PeopleToAdd.ToList(); //update special requirements booking.SpecialRequirements = model.SpecialRequirements; //update the database foreach (var person in booking.Persons) { _context.Persons.Add(person); } await _context.SaveChangesAsync(); //redirect to Confirmation page return(RedirectToAction(nameof(BookingController.Confirmation), "Booking", new { bookingId = model.BookingId })); } //on fail, return view model.NumberOfPeople = model.PeopleToAdd.Count(); model.ErrorMessage = "Insuffiecent Details"; return(View(model)); }
public ActionResult AddPeople(int?bookingId, int?numberOfPeople) { //if bookingId is null, redirect to browse brochures page if (bookingId == null) { return(RedirectToAction(nameof(BrochureController.Browse), "Booking")); } List <Person> peopleToAdd = new List <Person>(); for (int i = 0; i < numberOfPeople; i++) { peopleToAdd.Add(new Person { Forename = "", MiddleNames = "", Surname = "", DateOfBirth = DateTime.Now }); } //populate the model and inject into the page AddPeopleToBookingViewModel model = new AddPeopleToBookingViewModel { BookingId = (int)bookingId, NumberOfPeople = (int)numberOfPeople, PeopleToAdd = peopleToAdd, SpecialRequirements = "", ErrorMessage = "" }; return(View(model)); }