public async Task <ActionResult> Bookings(string tenant, int bookingId, int guestId, decimal roomPrice, int roomsCount, int roomId)
        {
            try
            {
                bool purchaseResult = false;

                var ticketPurchaseModel = new BookingPurchaseModel
                {
                    GuestId    = guestId,
                    TotalPrice = roomPrice
                };

                var tenantDetails = (_catalogRepository.GetTenantAsync(tenant)).Result;
                if (tenantDetails != null)
                {
                    SetTenantConfig(tenantDetails.TenantId, tenantDetails.TenantIdInString);

                    var hotelDetails = await _tenantRepository.GetHotelDetailsAsync(tenantDetails.TenantId);

                    var bookingsPurchaseId = await _tenantRepository.AddBookingPurchase(ticketPurchaseModel, tenantDetails.TenantId);

                    List <BookingModel> ticketsModel = BuildTicketModel(bookingId, roomId, roomsCount, bookingsPurchaseId);
                    purchaseResult = await _tenantRepository.AddBookings(ticketsModel, tenantDetails.TenantId);

                    var guest = HttpContext.Session.GetObjectFromJson <List <GuestModel> >("SessionUsers");

                    if (purchaseResult)
                    {
                        DisplayMessage(_localizer[$"You have successfully booked {roomsCount} rooms(s)."], "Confirmation");

                        var fromHotelEmailId = hotelDetails.AdminEmail;
                        var fromHotelName    = hotelDetails.HotelName;
                        var toEmailAddress   = guest[0].Email;
                        var fullName         = $"{guest[0].FirstName} {guest[0].LastName}";
                        var confirmMessage   = _localizer[$"You have successfully booked {roomsCount} rooms(s)."];

                        _emailService.SendEmailToGuests(fromHotelEmailId, fromHotelName, toEmailAddress, fullName, confirmMessage);
                    }
                    else
                    {
                        DisplayMessage(_localizer["Failed to book rooms."], "Error");
                    }
                }
                else
                {
                    return(View("TenantError", tenant));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(0, ex, "Booking rooms failed for tenant {tenant} and room {roomId}", tenant, bookingId);
                return(View("TenantError", tenant));
            }
            return(RedirectToAction("Index", "Bookings", new { tenant }));
        }
        public void AddBookingTest()
        {
            var ticketModel = new BookingModel
            {
                BookingId         = 2,
                RoomId            = 4,
                BookingPurchaseId = 50,
                HotelName         = "Novatel",
                RoomName          = "A506",
                GuestId           = 100,
                Checkin_Date      = DateTime.Now,
                Checkout_Date     = DateTime.Now.AddDays(3),
                GuestName         = "Pramati"
            };
            List <BookingModel> bookingModels = new List <BookingModel>();

            bookingModels.Add(ticketModel);

            var result = _tenantRepository.AddBookings(bookingModels, _tenantId).Result;

            Assert.True(result);
        }