public async Task <IActionResult> Update(string reservationId) { if (!await this.IsValidReservation(reservationId)) { return(this.NotFound()); } var reservation = await this.reservationsService.GetByIdAsync <ReservationUpdateViewModel>(reservationId); var viewModel = new ReservationUpdateInputModel() { Id = reservation.Id, Room = reservation.Room, ReservedByGuest = new ReservedByGuestInputModel() { FirstName = reservation.ReservedByGuest.FirstName, LastName = reservation.ReservedByGuest.LastName, PhoneNumber = reservation.ReservedByGuest.PhoneNumber, }, ArrivalDate = reservation.ArrivalDate, ReturnDate = reservation.ReturnDate, AdultCount = reservation.AdultCount, ChildCount = reservation.ChildCount, HasBreakfast = reservation.HasBreakfast, HasLunch = reservation.HasLunch, HasDinner = reservation.HasDinner, AllPrice = reservation.Price, CustomPrice = this.CalculateCustomPrice(reservation.Room.Price, reservation.Nights, reservation.Price), }; return(this.View(viewModel)); }
public async Task <IActionResult> Update(ReservationUpdateInputModel input) { if (!await this.IsValidReservation(input.Id)) { return(this.NotFound()); } if (!this.ModelState.IsValid) { return(this.View(input)); } var userId = this.userManager.GetUserId(this.User); var user = await this.userManager .Users .Include(u => u.Hotel) .ThenInclude(h => h.Rooms) .FirstOrDefaultAsync(x => x.Id == userId); if (!user.Hotel.Rooms.Any(x => x.Id == input.Room.Id)) { return(this.RedirectToAction("Manager")); } if (input.Room.MaxAdultCount < input.AdultCount || input.AdultCount < 1) { input.AdultCount = null; return(this.View(input)); } if (input.Room.MaxChildCount < input.ChildCount || input.ChildCount < 0) { input.ChildCount = null; return(this.View(input)); } await this.reservationsService.UpdateAsync( user.Id, input.Id, input.Room.Id, input.ArrivalDate, input.ReturnDate, (int)input.AdultCount, (int)input.ChildCount, input.ReservedByGuest.FirstName, input.ReservedByGuest.LastName, input.ReservedByGuest.PhoneNumber, input.Description, input.AllPrice, input.HasBreakfast, input.HasLunch, input.HasDinner); return(this.RedirectToAction("Manager")); }