/// <summary> /// Logouts this instance. /// </summary> /// <param name="bookingId">The Booking ID.</param> /// <returns>Logout User Async</returns> public async Task <IActionResult> MyBookings(int?bookingId) { if (bookingId.HasValue) { MyBookingDescriptionViewModel model = await this.userDetailService.GetMyBookingDescriptionByBookingId(bookingId.Value); if (model.bookingFlightViewModel != null && model.bookingFlightViewModel.Count > 0) { model.ticketsViewModel = new List <TicketLCCResponse>(); foreach (var item in model.bookingFlightViewModel) { Ticket ticketRequest = new Ticket { EndUserIp = this.configuration.GetValue <string>("TBOCredentials:EndUserIp"), BookingId = Convert.ToInt64(item.TBOBookingId), PNR = item.PNR, TraceId = item.TraceId, TokenId = await this.tboController.GetTBOLoginToken() }; ApiResponse response = this.tboController.PostCustom( this.tboController.GetTboUrl(TboMethods.BookingDetails), JsonConvert.SerializeObject(ticketRequest, this.tboController.JsonIgnoreNullable), TboMethods.BookingDetails); if (response.IsSuccess) { TicketLCCResponse ticketLCCResponse = JsonConvert.DeserializeObject <TicketLCCResponse>(response.Response); model.ticketsViewModel.Add(ticketLCCResponse); } } model.ticketsViewModel = model.ticketsViewModel.OrderBy(x => DateTime.ParseExact(x.Response.FlightItinerary.Segments.FirstOrDefault().Origin.DepTime, "yyyy-MM-ddTHH:mm:ss", null)).ToList(); } return(this.View("MyBookingDetail", model)); } else { var claimInformation = this.HttpContext.User.Claims.FirstOrDefault(); if (claimInformation != null) { var userId = Convert.ToInt32(claimInformation.Value); List <MyBookingsListViewModel> myBookings = await this.userDetailService.GetDealBookingsByUserId(userId); return(this.View(myBookings)); } return(this.View(new List <MyBookingsListViewModel>())); } }
/// <summary> /// Gets the password. /// </summary> /// <param name="bookingId">The Booking identifier.</param> /// <returns>Password</returns> public async Task <MyBookingDescriptionViewModel> GetMyBookingDescriptionByBookingId(int bookingId) { MyBookingDescriptionViewModel model = new MyBookingDescriptionViewModel(); model.bookingInformationViewModel = await this.bookingInfomationRepository.Table.Where(x => x.Id == bookingId).Select(x => new BookingInformationViewModel { Id = x.Id, ReferenceNumber = x.ReferenceNumber, BookedDate = x.BookedDate, Checkin = x.Checkin, Checkout = x.Checkout, Currency = x.Currency, DealId = x.DealId, CustomerId = x.CustomerId, Discount = x.Discount, DiscountAmount = x.DiscountAmount, DiscountApplied = x.DiscountAmount > 0 && string.IsNullOrEmpty(x.DiscountCoupon) && x.Discount > 0 ? true : false, DiscountType = x.DiscountType, DiscountCoupon = x.DiscountCoupon, Email = x.Email, FlightOptionAvailable = x.FlightOptionAvailable, FlightRequired = x.FlightRequired, FlightSuccessful = x.FlightSuccessful, FlightTraceId = x.FlightTraceId, GST = x.GST, HoldFromDate = x.HoldFromDate, HoldToDate = x.HoldToDate, IsCompleted = x.IsCompleted, IsConfirmed = x.IsConfirmed, IsHold = x.IsHold, LeadFullName = x.LeadFullName, MobileNumber = x.PhoneNumber, NightId = x.NightId, PackagePrice = x.PackagePrice, TaxAmount = x.TaxAmount, TotalAmount = x.TotalAmount, VisaOptionAvailable = x.VisaOptionAvailable, BookingSummarySerialized = x.BookingSummarySerialized }).FirstOrDefaultAsync(); model.dealPackageViewModel = this.dealPackageRepository.Table.Where(x => x.Id == model.bookingInformationViewModel.DealId).Select(x => new DealsPackageViewModel { Code = x.Code, Name = x.Name, Id = x.Id, Type = x.Type, DealsHighlightViewModels = x.DealsHighlightModels.OrderBy(y => y.SortOrder).Select(y => new DealsHighlightViewModel { Title = y.Title, Description = y.Description, SortOrder = y.SortOrder, StarRating = y.StarRating }).ToList() }).FirstOrDefault(); model.LocationNames = new List <string>(); if (model.dealPackageViewModel.Type == 1) { int hotelId = this.dealPackageRepository.Table.Where(x => x.Id == model.dealPackageViewModel.Id).Select(x => x.DealsNightModels.Select(y => y.DealsItineraryModels.Select(z => z.DealsInclusionModels.Select(a => a.VendorInfoId.Value).FirstOrDefault()).FirstOrDefault()).FirstOrDefault()).FirstOrDefault(); model.LocationNames.Add(this.hotelierRepository.Table.Where(x => x.Id == hotelId).Select(x => x.Name).FirstOrDefault()); model.LocationNames.Add(this.dealPackageRepository.Table.Where(x => x.Id == model.dealPackageViewModel.Id).SelectMany(x => x.DealsDestinationModels.Join(this.packageCityRepository.Table, y => y.City, ci => ci.Id, (y, ci) => new { y, ci }).Select(k => k.ci.Name)).FirstOrDefault()); model.LocationNames.Add(this.dealPackageRepository.Table.Where(x => x.Id == model.dealPackageViewModel.Id).SelectMany(x => x.DealsDestinationModels.Join(this.packageCountryRepository.Table, y => y.Country, co => co.Id, (y, co) => new { y, co }).Select(k => k.co.Name)).FirstOrDefault()); } else { model.LocationNames.AddRange(this.dealPackageRepository.Table.Where(x => x.Id == model.dealPackageViewModel.Id).SelectMany(x => x.DealsDestinationModels.Join(this.packageCountryRepository.Table, y => y.Country, co => co.Id, (y, co) => new { y, co }).Select(k => k.co.Name)).ToList()); } model.dealContentViewModel = this.dealContentRepository.Table.Where(x => x.PackageId == model.dealPackageViewModel.Id).Select(x => new DealsContentViewModel { LogoImg = x.LogoImg, BannerImg2x2_1 = x.BannerImg2x2_1, BannerImg2x2_2 = x.BannerImg2x2_2, BannerImg2x2_3 = x.BannerImg2x2_3, BannerImg2x2_4 = x.BannerImg2x2_4, BannerImg2x4 = x.BannerImg2x4, BannerImg4x4 = x.BannerImg4x4, CardImg = x.CardImg }).FirstOrDefault(); model.dealsImageViewModels = this.dealImageRepository.Table.Where(x => x.PackageId == model.dealPackageViewModel.Id).OrderBy(x => x.SortOrder).Select(x => new DealsImageViewModel { Id = x.Id, Image = x.Image, SortOrder = x.SortOrder, Caption = x.Caption }).ToList(); model.flightAvailable = model.bookingInformationViewModel.FlightOptionAvailable; model.flightRequired = model.bookingInformationViewModel.FlightRequired; model.bookingVisaViewModel = await this.bookingVisaRepository.Table.Where(x => x.BookingId == bookingId).Select(x => new BookingVisaViewModel { Id = x.Id, CountryName = this.dealVisaRepository.Table.Where(y => y.Id == x.VisaId).Join(this.packageCountryRepository.Table, v => v.CountryId, c => c.Id, (v, c) => new { v, c }).Select(y => y.c.Name).FirstOrDefault(), Count = x.Count, BookingId = x.BookingId, Markup = x.MarkUp, Price = x.Price, TotalAmount = x.TotalAmount, VisaId = x.VisaId }).ToListAsync(); List <BookingHotelRoomModel> roomModels = this.bookingHotelRoomRepository.Table.Where(x => x.BookingId == bookingId).ToList(); model.bookingHotelViewModel = new List <BookingHotelRoomViewModel>(); if (model.dealPackageViewModel.Type == 1) { foreach (var item in roomModels) { BookingHotelRoomViewModel hotelSubModel = new BookingHotelRoomViewModel { Id = item.Id, RatePlanId = item.RatePlanId, Adult = item.Adult, BookingId = item.BookingId, CheckinDate = item.CheckinDate, CheckoutDate = item.CheckoutDate, Child = item.Child, hotelRoomConfigViewModel = JsonConvert.DeserializeObject <DealRoomConfigViewModel>(item.RoomConfigSerialized) }; model.bookingHotelViewModel.Add(hotelSubModel); } } else { foreach (var item in roomModels) { BookingHotelRoomViewModel hotelSubModel = new BookingHotelRoomViewModel { Id = item.Id, RatePlanId = item.RatePlanId, Adult = item.Adult, BookingId = item.BookingId, CheckinDate = item.CheckinDate, CheckoutDate = item.CheckoutDate, Child = item.Child, tourRoomConfigViewModel = JsonConvert.DeserializeObject <DealTourHotelInfoViewModel>(item.RoomConfigSerialized) }; model.bookingHotelViewModel.Add(hotelSubModel); } } if (model.bookingInformationViewModel.FlightOptionAvailable && model.bookingInformationViewModel.FlightRequired && model.bookingInformationViewModel.FlightSuccessful) { model.bookingFlightViewModel = this.bookingFlightRepository.Table.Where(x => x.BookingId == model.bookingInformationViewModel.Id).Select(x => new BookingFlightViewModel { Id = x.Id, BookingId = x.BookingId, BookingDate = x.BookingDate, DayOfItinerary = x.DayOfItinerary, Destination = x.Destination, ItineraryId = x.ItineraryId, PNR = x.PNR, FlightCabinClass = x.FlightCabinClass, TBOBookingId = x.TBOBookingId, TokenId = x.TokenId, TraceId = x.TraceId }).ToList(); } return(model); }