Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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));
        }