/// <summary> /// Get package information asynchromusly /// </summary> /// <param name="bookingId">Booking Id</param> /// <returns>Deal package model</returns> public async Task <BookingThankYouViewModel> GetBookingThankYouById(int bookingId) { try { int dealId = await this.bookingInformationRepository.Table.Where(x => x.Id == bookingId).Select(x => x.DealId).FirstOrDefaultAsync(); DealsPackageModel dealModel = this.dealPackageRepository.Table .Include("DealsDestinationModels") .Include("DealContentModels") .Include("DealsHighlightModels") .Include("DealsNightModels.DealsItineraryModels.DealsInclusionModels") .Where(x => x.Id == dealId).FirstOrDefault(); BookingThankYouViewModel model = await this.bookingInformationRepository.Table.Where(x => x.Id == bookingId).Select(x => new BookingThankYouViewModel { BookingId = x.Id, BookingReferenceNumber = x.ReferenceNumber, DealName = dealModel.Name, CardImage = dealModel.DealContentModels.Select(y => y.CardImg).FirstOrDefault(), DealType = dealModel.Type, StartDate = x.Checkin, EndDate = x.Checkout, VisaOpted = x.BookingVisaModels.Count > 0, FlightOpted = x.FlightRequired, Childs = x.BookingHotelRoomModels.Sum(y => y.Child), Adults = x.BookingHotelRoomModels.Sum(y => y.Adult), Infants = x.BookingHotelRoomModels.Sum(y => y.Infant), BookingStatus = x.FlightRequired ? x.BookingFlightModels.All(y => y.TicketGenerated) && x.BookingFlightModels.Select(y => string.IsNullOrEmpty(y.PNR)).Any() && x.FlightSuccessful : true, PaymentStatus = true, Highlights = dealModel.DealsHighlightModels.Select(y => y.Title).ToList(), BookingSummarySerialized = x.BookingSummarySerialized }).FirstOrDefaultAsync(); if (model != null) { model.BookingStatusMessage = model.BookingStatus ? "Booking Confirmed" : "Booking Confirmed"; model.PaymentStatusMessage = model.PaymentStatus ? "Collected Succesfully" : "Payment Failed"; model.Locations = dealModel.DealsDestinationModels.Where(y => y.City > 0).Join(this.packageCityRepository.Table, d => d.City, c => c.Id, (d, c) => new { d, c }).Select(z => z.c.Name).ToList(); if (model.DealType == 1) { int hotelId = dealModel.DealsNightModels.Select(y => y.DealsItineraryModels.Select(z => z.DealsInclusionModels.Select(k => k.VendorInfoId).FirstOrDefault()).FirstOrDefault()).FirstOrDefault().HasValue ? dealModel.DealsNightModels.Select(y => y.DealsItineraryModels.Select(z => z.DealsInclusionModels.Select(k => k.VendorInfoId).FirstOrDefault()).FirstOrDefault()).FirstOrDefault().Value : 0; model.HotelName = dealModel.Type == 1 ? this.hotelierInformationRepository.Table.Where(x => x.Id == hotelId).Select(x => x.Name).FirstOrDefault() : string.Empty; } } return(model); } catch (Exception ex) { string msg = ex.ToString(); return(new BookingThankYouViewModel()); } }
public async Task <IActionResult> SearchNoLevel( bool showSearchTerm = true, int searchType = (int)Enums.SearchType.All, int value = 0, int adults = 1, int kids = 0, int infants = 0, int rooms = 1, string searchTerm = null, string kidsage = null, string startDate = null, string endDate = null) { this.ViewBag.startDate = startDate; this.ViewBag.endDate = endDate; this.ViewBag.adults = adults; this.ViewBag.kids = kids; this.ViewBag.infants = infants; this.ViewBag.rooms = rooms; this.ViewBag.searchTerm = searchTerm; this.ViewBag.showSearchTerm = showSearchTerm; ListingViewModel listingModel = new ListingViewModel(); listingModel.SearchTermViewModel = new SearchTermViewModel { Adults = adults, EndDate = endDate, SearchType = searchType, StartDate = startDate, Kids = kids, Infants = infants, Rooms = rooms, SearchTerm = searchTerm, ShowSearchTerm = showSearchTerm, Value = value, KidsAge = kidsage, StartDateVar = !string.IsNullOrEmpty(startDate) ? DateTime.ParseExact(startDate, "dd-MM-yyyy", null) : DateTime.Now.Date, EndDateVar = !string.IsNullOrEmpty(endDate) ? DateTime.ParseExact(endDate, "dd-MM-yyyy", null) : DateTime.Now.Date.AddYears(1), }; if (!string.IsNullOrEmpty(startDate)) { this.TempData["StartDate"] = listingModel.SearchTermViewModel.StartDateVar; } else { this.TempData["StartDate"] = null; } if (!string.IsNullOrEmpty(endDate)) { this.TempData["EndDate"] = listingModel.SearchTermViewModel.EndDateVar; } else { this.TempData["EndDate"] = null; } if (searchType == (int)Enums.SearchType.Product) { DealsPackageModel dealsPackageModel = await this.homePageService.GetDealPackageByIdAsync(listingModel.SearchTermViewModel.Value); if (dealsPackageModel.Type == 1) ////Hotel { return(this.RedirectToAction("Hotel", "Deal", new { url = dealsPackageModel.Url })); } else { return(this.RedirectToAction("Tour", "Deal", new { url = dealsPackageModel.Url })); } } ListingViewModel result = new ListingViewModel(); try { var searchkey = KeyCreator.Create(listingModel); var productRs = await this.tableCacheHandler.GetFromCacheAsync( searchkey, () => this.homePageBusiness.GetSearchResults(listingModel), SearchExpiryInSeconds); result = productRs.Result; } catch (Exception ex) { result = this.listingService.GetSearchResults(listingModel); string msg = ex.ToString(); } this.ViewBag.FilterActivated = false; if (result.ResultViewModels.Count == 0) { result.TrendingDeals = this.listingService.GetTop6TrendingDeals(); } return(this.View("Search", result)); }