public async Task <BookingResponseModel> CancelBookingAsync(BookingCancellationModel bookingCancellationModel) { var response = new BookingResponseModel { IsSuccess = true }; var booking = bookingCancellationModel.BookingId > 0 ? await _context.Set <Booking>().FirstOrDefaultAsync(b => b.Id == bookingCancellationModel.BookingId) : await _context.Set <Booking>().FirstOrDefaultAsync(b => b.BookingReference == bookingCancellationModel.BookingReference && b.ReaderTicket == bookingCancellationModel.ReaderTicket); if (booking == null) { response.IsSuccess = false; response.ErrorMessage = $"There is no booking found for the booking id {bookingCancellationModel.BookingId}"; return(response); } _context.Attach(booking); booking.BookingStatusId = (int)BookingStatuses.Cancelled; booking.LastModifiedBy = bookingCancellationModel.CancelledBy; await _context.SaveChangesAsync(); if (!string.IsNullOrWhiteSpace(booking.Email)) { var cancelledBooking = await _context.Bookings.AsNoTracking <Booking>().Include(s => s.Seat).FirstOrDefaultAsync(b => b.Id == booking.Id); var bookingModel = GetSerialisedBooking(cancelledBooking); await _emailService.SendEmailAsync(EmailType.BookingCancellation, bookingModel.Email, bookingModel); } return(response); }
public async Task <IActionResult> CancellationConfirmation(CancelViewModel cancelViewModel) { var model = new BookingCancellationModel { ReaderTicket = cancelViewModel.ReaderTicket, BookingReference = cancelViewModel.BookingReference, CancelledBy = "visitor" }; await _bookingService.CancelBookingAsync(model); return(View(cancelViewModel)); }
public async Task <ActionResult <BookingResponseModel> > CancelBooking(BookingCancellationModel bookingCancellationModel) { var result = await _bookingService.CancelBookingAsync(bookingCancellationModel); if (result.IsSuccess) { return(Ok()); } else { if (result.ErrorMessage.Contains("no booking found")) { return(NotFound()); } else { return(StatusCode(500)); } } }
public async Task CancelBookingAsync(BookingCancellationModel bookingCancellationModel) { var response = await _client.PostAsJsonAsync("booking/cancel", bookingCancellationModel); response.EnsureSuccessStatusCode(); }