public async Task <HotelsByBookingGetRes> GetProductHotelDetails([FromBody] ProductSRPHotelGetReq request) { var response = new HotelsByBookingGetRes(); try { if (request != null) { response = await _hotelsRepository.GetProductHotelDetails(request); if (response == null) { response.ResponseStatus.Status = "Failure"; response.ResponseStatus.ErrorMessage = "An error."; } } else { response.ResponseStatus.Status = "Failure"; response.ResponseStatus.ErrorMessage = "Product details can not be blank."; } } catch (Exception ex) { response.ResponseStatus.Status = "Failure"; response.ResponseStatus.ErrorMessage = "An error occurs " + ex.Message; } return(response); }
public async Task <HotelsByBookingGetRes> GetProductHotelDetails(ProductSRPHotelGetReq productSearchReq, string ticket) { HotelsByBookingGetRes productHotelGetRes = new HotelsByBookingGetRes(); productHotelGetRes = await serviceProxy.PostData(_configuration.GetValue <string>("ServiceHotels:GetProductHotelDetails"), productSearchReq, typeof(HotelsByBookingGetRes), ticket); return(productHotelGetRes); }
public IActionResult ViewHotelsByBooking() { HotelsViewBookingViewModel model = new HotelsViewBookingViewModel(); try { string BookingNo = Request.Query["BookingNo"].ToString(); #region Get Hotel Booking details by booking number HotelsByBookingGetRes response = hotelsProviders.GetProductHotelDetails(new ProductSRPHotelGetReq() { QRFID = BookingNo }, token).Result; model.Bookings = response.Bookings; model.Bookings.Positions.ForEach(b => { //b.AlternateServices = b.AlternateServices.OrderBy(a => a.Product_Name).ToList(); b.BookingRoomsAndPrices = b.BookingRoomsAndPrices.Where(a => a.Req_Count > 0).OrderBy(a => a.RoomName.Contains("SINGLE") ? "A" : a.RoomName.Contains("DOUBLE") ? "B" : a.RoomName.Contains("TWIN") ? "C" : a.RoomName.Contains("TRIPLE") ? "D" : a.RoomName.Contains("QUAD") ? "E" : a.RoomName.Contains("TSU") ? "F" : a.PersonType.ToLower().Contains("child + bed") ? "G" : a.PersonType.ToLower().Contains("child - bed") ? "H" : a.RoomName.ToLower().Contains("infant") ? "I" : "J").ThenBy(a => a.RoomName).ThenBy(a => a.PersonType).ThenBy(a => a.Req_Count).ToList(); }); //Sorting by availablity status with order available, waitlist, pending, unavailable and twin room rate ascending model.Bookings.Positions.ForEach(b => { if (b.AlternateServices != null && b.AlternateServices.Count > 0) { b.AlternateServices.ForEach(c => c.Availability_Status = (c.Availability_Status == null ? "" : c.Availability_Status)); b.AlternateServices = b.AlternateServices.OrderBy(a => a.Availability_Status.ToUpper() == "AVAILABLE" ? "A" : a.Availability_Status.ToUpper() == "WAITLIST" ? "D" : a.Availability_Status.ToUpper() == "PENDING" ? "F" : a.Availability_Status.ToUpper() == "UNAVAILABLE" ? "I" : "M") .ThenBy(a => a.Availability_Status).ThenBy(a => a.PPTwin_Rate).ToList(); } else { b.AlternateServices = new List <AlternateServices>(); } }); List <BookingProductsSRPInfo> list = new List <BookingProductsSRPInfo>(); model.SRPViewModelList.AddRange(response.Bookings.Positions.Select(a => new BookingProductsSRPInfo { PositionId = a.Position_Id, ProductsSRPViewModel = new ProductsSRPViewModel { PageName = "hotel", ProductSRPDetails = response.ProductSRPDetails.Where(b => b.VoyagerProduct_Id == a.Product_Id).ToList() } }).ToList()); #endregion #region Get Costing Officer Tour Info Header By QRFId NewQuoteViewModel modelQuote = new NewQuoteViewModel { QRFID = response.Bookings.QRFID }; model.COHeaderViewModel = coCommonLibrary.GetCOTourInfoHeader(ref modelQuote, token); model.COHeaderViewModel.BookingNumber = BookingNo; #endregion #region Status dropdownlist binding var name = new List <string>(); var attr = new List <Attributes>(); foreach (var p in model.Bookings.Positions) { var altservices = model.Bookings.Positions.Where(a => a.Position_Id == p.Position_Id).FirstOrDefault().AlternateServices.Select(x => new Attributes { Attribute_Id = p.Position_Id, AttributeName = x.Availability_Status }).Distinct().ToList(); name = altservices.Select(x => x.AttributeName).Distinct().ToList(); foreach (var alt in name) { attr.Add(new Attributes { AttributeName = alt, Attribute_Id = p.Position_Id }); } } attr.RemoveAll(x => string.IsNullOrWhiteSpace(x.AttributeName)); model.Status = attr.OrderBy(x => x.AttributeName == "AVAILABLE" ? "A" : x.AttributeName == "WAITLIST" ? "D" : x.AttributeName == "PENDING" ? "F" : x.AttributeName == "UNAVAILABLE" ? "I" : "M").ToList(); #endregion if (string.IsNullOrEmpty(model.COHeaderViewModel.QRFID)) { model.COHeaderViewModel.TourName = model.Bookings.BookingNumber + " : " + model.Bookings.CustRef; model.COHeaderViewModel.NoOfNights = Convert.ToInt16(model.Bookings.Duration); model.COHeaderViewModel.NoOfDays = model.COHeaderViewModel.NoOfNights + 1; model.COHeaderViewModel.TravelDate = model.Bookings.STARTDATE; model.COHeaderViewModel.SalesPerson = model.Bookings.StaffDetails.Staff_SalesUser_Name; model.COHeaderViewModel.CostingOfficer = model.Bookings.StaffDetails.Staff_SalesUser_Name; model.COHeaderViewModel.Pax = model.Bookings.BookingPax.Where(a => a.PERSTYPE == "ADULT").Select(b => b.PERSONS).FirstOrDefault(); } else { model.COHeaderViewModel.TourName = model.Bookings.BookingNumber + " : " + model.COHeaderViewModel.TourName; } } catch (Exception ex) { Console.WriteLine(ex.Message); } #region replacing image urls from resources to ImageResources foreach (var SRPViewModel in model.SRPViewModelList) { if (SRPViewModel.ProductsSRPViewModel != null) { foreach (var ProductSRP in SRPViewModel.ProductsSRPViewModel.ProductSRPDetails) { if (ProductSRP.HotelImageURL != null) { ProductSRP.HotelImageURL = ProductSRP.HotelImageURL.Replace("resources/", "ImageResources/"); } } } } #endregion return(View(model)); }