Beispiel #1
0
        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));
        }
Beispiel #3
0
        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));
                }
            }
        }
Beispiel #4
0
        public async Task CancelBookingAsync(BookingCancellationModel bookingCancellationModel)
        {
            var response = await _client.PostAsJsonAsync("booking/cancel", bookingCancellationModel);

            response.EnsureSuccessStatusCode();
        }