示例#1
0
        /// <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));
        }