public Guid MakeReservation(MakeReservationViewModel model) { using (var tran = db.Database.BeginTransaction()) { try { var reservation = new Reservation { ReservationDate = model.ReservationDate, CheckOutDate = model.CheckOutDate, RoomId = model.RoomId }; db.Reservations.Add(reservation); db.SaveChanges(); foreach (var registerViewModel in model.RegisterViewModels) { db.ReservationDetails.Add(new ReservationDetail() { FirstName = registerViewModel.Firstname, LastName = registerViewModel.Surname, ReservationId = reservation.Id, TelephoneNumber = registerViewModel.Number }); db.SaveChanges(); } var room = db.Rooms.Find(model.RoomId); room.IsEmpty = false; db.SaveChanges(); tran.Commit(); return(reservation.Id); } catch (Exception ex) { tran.Rollback(); throw; } } }
public async Task <IActionResult> MakeReservation(int?eventId, DateTime EventDate, string VenueCode) { if (eventId == null || VenueCode == null) { return(NotFound()); } var thisEvent = await _context.Events.FindAsync(eventId); HttpClient client = new HttpClient(); client.BaseAddress = new System.Uri("http://localhost:22263/"); var reservation = new MakeReservationViewModel { EventDate = EventDate, VenueCode = VenueCode }; HttpResponseMessage response = await client.PostAsJsonAsync("api/reservations/", reservation); if (response.IsSuccessStatusCode) { if (!String.IsNullOrEmpty(thisEvent.VenueCode)) { var reference = thisEvent.VenueCode + EventDate.ToString("yyyy/MM/dd"); await client.DeleteAsync("api/reservations/" + reference); } thisEvent.VenueCode = reservation.VenueCode; return(RedirectToAction(nameof(Index))); } else { return(BadRequest()); } }