コード例 #1
0
        private AvailabilityRQ ConvertToHotelBedsSearchRequest(HotelAvailabilityProviderReq request)
        {
            Logger.Instance.LogFunctionEntry(this.GetType().Name, "ConvertToHotelBedsSearchRequest");
            AvailabilityRQ hotelBedsAvailabilityRQ = new AvailabilityRQ();

            if (request.HotelCodes != null && request.HotelCodes.Any())
            {
                hotelBedsAvailabilityRQ.hotels = new HotelsFilter()
                {
                    hotel = request.HotelCodes.Select(int.Parse).ToList()
                };
            }

            hotelBedsAvailabilityRQ.stay = new Stay(request.CheckInDate, request.CheckOutDate, 2, true);

            hotelBedsAvailabilityRQ.occupancies = new List <Occupancy>();
            hotelBedsAvailabilityRQ.occupancies.Add(new Occupancy
            {
                adults   = request.TotalAdults,
                rooms    = HotelBedsConstants.TotalRooms,
                children = 0,
                paxes    = new List <Pax>()
                {
                    new Pax
                    {
                        age  = HotelBedsConstants.AdultAge,
                        type = com.hotelbeds.distribution.hotel_api_model.auto.common.SimpleTypes.HotelbedsCustomerType.AD
                    }
                }
            });
            Logger.Instance.LogFunctionExit(this.GetType().Name, "ConvertToHotelBedsSearchRequest");
            return(hotelBedsAvailabilityRQ);
        }
コード例 #2
0
        private AvailabilityRQ ConvertToHotelBedsSearchRequest(HotelAvailabilityProviderReq request)
        {
            Logger.Instance.LogFunctionEntry(this.GetType().Name, "ConvertToHotelBedsSearchRequest");
            AvailabilityRQ hotelBedsAvailabilityRQ = new AvailabilityRQ();

            if (request.HotelCodes != null && request.HotelCodes.Any())
            {
                hotelBedsAvailabilityRQ.hotels = new HotelsFilter()
                {
                    hotel = request.HotelCodes.Select(int.Parse).ToList()
                };
            }

            hotelBedsAvailabilityRQ.stay = new Stay(request.CheckInDate, request.CheckOutDate, 2, true);

            hotelBedsAvailabilityRQ.occupancies = new List<Occupancy>();
            hotelBedsAvailabilityRQ.occupancies.Add(new Occupancy
            {
                adults = request.TotalAdults,
                rooms = HotelBedsConstants.TotalRooms,
                children = 0,
                paxes = new List<Pax>()
                    {
                        new Pax
                        {
                             age = HotelBedsConstants.AdultAge,
                             type = com.hotelbeds.distribution.hotel_api_model.auto.common.SimpleTypes.HotelbedsCustomerType.AD
                        }
                    }
            });
            Logger.Instance.LogFunctionExit(this.GetType().Name, "ConvertToHotelBedsSearchRequest");
            return hotelBedsAvailabilityRQ;
        }
コード例 #3
0
        private HotelAvailabilityProviderReq ConvertToProviderReqeust(HotelSearchDto hotelDto)
        {
            HotelBedsSearchProvider      provider    = new HotelBedsSearchProvider();
            HotelAvailabilityProviderReq providerReq = new HotelAvailabilityProviderReq();

            if (hotelDto != null)
            {
                providerReq.CheckInDate = Convert.ToDateTime(hotelDto.StartDate);

                providerReq.CheckOutDate = Convert.ToDateTime(hotelDto.EndDate);
                providerReq.MaxRating    = hotelDto.MaxRating;
                providerReq.MinRating    = hotelDto.MinRating;

                //Hotel code should come from search manager class
                if (hotelDto.HotelCodes != null)
                {
                    providerReq.HotelCodes = hotelDto.HotelCodes;
                }

                else if (hotelDto.Latitude.ToString().Length > 0)
                {
                    providerReq.GeoLocation = new GeoLocation()
                    {
                        Latitude  = Convert.ToDecimal(hotelDto.Latitude),
                        Longitude = Convert.ToDecimal(hotelDto.Longitude)
                    };
                }
                //TODO:RoomDto
                //providerReq.TotalAdults = Convert.ToInt16(hotelDto.TotalGuest);
            }
            return(providerReq);
        }
コード例 #4
0
        public HotelAvailabilityProviderRes Execute(HotelAvailabilityProviderReq request)
        {
            //Logger.Instance.LogFunctionEntry(this.GetType().Name, "Execute");
            Availability avail  = new Availability();
            List <Hotel> hotels = new List <Hotel>();

            if (request.CheckInDate <= DateTime.Today)
            {
                throw new ArgumentOutOfRangeException(nameof(request.CheckInDate));
            }
            if (request.CheckInDate >= request.CheckOutDate)
            {
                throw new ArgumentOutOfRangeException(nameof(request.CheckOutDate));
            }
            if (request.TotalAdults < HotelBedsConstants.TotalAdults)
            {
                throw new ArgumentOutOfRangeException(nameof(request.TotalAdults));
            }
            //Check if #of nights are more than 30, if so throw exception
            var duration = (request.CheckOutDate - request.CheckInDate).TotalDays;

            if (duration > HotelBedsConstants.NightsDuration)
            {
                throw new ArgumentOutOfRangeException(nameof(duration));
            }

            HotelAvailabilityProviderRes hotelSearchResults;

            using (var hotelBedsworker = new HotelBedsWorker())
            {
                //convert the request dto to the HotelBeds search api payload
                AvailabilityRQ hotelBedsSearchRq = ConvertToHotelBedsSearchRequest(request);

                try
                {
                    var hotelBedsHotels = hotelBedsworker.GetAvailability <AvailabilityRQ, AvailabilityRS>(hotelBedsSearchRq);
                    //Check if we need to check .hotels == null
                    if (hotelBedsHotels.hotels == null)
                    {
                        //throw new ProviderUnavailableException(ProviderTypes.HotelBeds.ToString(), $"No response to {nameof(AvailabilityRQ)}.", null);
                        throw new ProviderUnavailableException(ProviderTypes.HotelBeds.ToString(), hotelBedsHotels.error.message.ToString(), null);
                    }
                    hotelSearchResults = ConvertToProviderResponse(hotelBedsHotels);
                }
                catch (HotelBedsProviderException e)
                {
                    if (e.HasKnownError(HotelBedsProviderException.HotelKnownError.NoListings))
                    {
                        hotelSearchResults = new HotelAvailabilityProviderRes();
                    }
                    else
                    {
                        throw;
                    }
                }
            }
            //Logger.Instance.LogFunctionExit(this.GetType().Name, "Execute");
            return(hotelSearchResults);
        }
コード例 #5
0
        public HotelAvailabilityProviderRes Execute(HotelAvailabilityProviderReq request)
        {
            //Logger.Instance.LogFunctionEntry(this.GetType().Name, "Execute");
            Availability avail = new Availability();
            List<Hotel> hotels = new List<Hotel>();

            if (request.CheckInDate <= DateTime.Today)
            {
                throw new ArgumentOutOfRangeException(nameof(request.CheckInDate));
            }
            if (request.CheckInDate >= request.CheckOutDate)
            {
                throw new ArgumentOutOfRangeException(nameof(request.CheckOutDate));
            }
            if (request.TotalAdults < HotelBedsConstants.TotalAdults)
            {
                throw new ArgumentOutOfRangeException(nameof(request.TotalAdults));
            }
            //Check if #of nights are more than 30, if so throw exception
            var duration = (request.CheckOutDate - request.CheckInDate).TotalDays;

            if (duration > HotelBedsConstants.NightsDuration)
            {
                throw new ArgumentOutOfRangeException(nameof(duration));
            }

            HotelAvailabilityProviderRes hotelSearchResults;
            using (var hotelBedsworker = new HotelBedsWorker())
            {
                //convert the request dto to the HotelBeds search api payload
                AvailabilityRQ hotelBedsSearchRq = ConvertToHotelBedsSearchRequest(request);

                try
                {
                    var hotelBedsHotels = hotelBedsworker.GetAvailability<AvailabilityRQ, AvailabilityRS>(hotelBedsSearchRq);
                    //Check if we need to check .hotels == null
                    if (hotelBedsHotels.hotels == null)
                    {
                        //throw new ProviderUnavailableException(ProviderTypes.HotelBeds.ToString(), $"No response to {nameof(AvailabilityRQ)}.", null);
                        throw new ProviderUnavailableException(ProviderTypes.HotelBeds.ToString(), hotelBedsHotels.error.message.ToString(), null);
                    }
                    hotelSearchResults = ConvertToProviderResponse(hotelBedsHotels);
                }
                catch (HotelBedsProviderException e)
                {
                    if (e.HasKnownError(HotelBedsProviderException.HotelKnownError.NoListings))
                    {
                        hotelSearchResults = new HotelAvailabilityProviderRes();
                    }
                    else
                    {
                        throw;
                    }
                }
            }
            //Logger.Instance.LogFunctionExit(this.GetType().Name, "Execute");
            return hotelSearchResults;
        }
コード例 #6
0
        private AvailabilityRQ ConvertToHotelBedsSearchRequest(HotelAvailabilityProviderReq request)
        {
            AvailabilityRQ hotelBedsAvailabilityRQ = new AvailabilityRQ();

            if (request.HotelCodes != null && request.HotelCodes.Any())
            {
                hotelBedsAvailabilityRQ.hotels = new HotelsFilter()
                {
                    hotel = request.HotelCodes.Select(int.Parse).ToList()
                };
            }
            else
            {
                var gLocation = request.GeoLocation;
                hotelBedsAvailabilityRQ.geolocation = new com.hotelbeds.distribution.hotel_api_model.auto.model.GeoLocation
                {
                    latitude  = gLocation.HasValue ? Convert.ToDouble(gLocation.Value.Latitude) : 0,
                    longitude = gLocation.HasValue ? Convert.ToDouble(gLocation.Value.Longitude) : 0,
                    radius    = HotelBedsConstants.RadiusLimit,
                    unit      = com.hotelbeds.distribution.hotel_api_model.util.UnitMeasure.UnitMeasureType.km
                };
            }

            hotelBedsAvailabilityRQ.filter = new Filter
            {
                minCategory = HotelBedsConstants.MinRating, //request.MinRating,
                maxCategory = HotelBedsConstants.MaxRating  //request.MaxRating
            };

            hotelBedsAvailabilityRQ.stay = new Stay(request.CheckInDate, request.CheckOutDate, 0, true);

            hotelBedsAvailabilityRQ.occupancies = new List <Occupancy>();
            hotelBedsAvailabilityRQ.occupancies.Add(new Occupancy
            {
                adults   = request.TotalAdults,
                rooms    = HotelBedsConstants.TotalRooms,
                children = 0,
                paxes    = new List <Pax>()
                {
                    new Pax
                    {
                        age  = HotelBedsConstants.AdultAge,
                        type = com.hotelbeds.distribution.hotel_api_model.auto.common.SimpleTypes.HotelbedsCustomerType.AD
                    }
                }
            });

            return(hotelBedsAvailabilityRQ);
        }
コード例 #7
0
        // GET api/<controller>
        public HotelAvailabilityProviderRes Get()
        {
            TouricoHotelSearchProvider searchProvider = new TouricoHotelSearchProvider();

            HotelAvailabilityProviderReq request = new HotelAvailabilityProviderReq();

            request.CheckInDate = DateTime.Now.AddDays(3).Date;
            request.CheckOutDate = DateTime.Now.AddDays(5).Date;

            request.HotelCodes = new System.Collections.Generic.List<string> { "8198" };
            //TODO:
            //request.TotalAdults = 2;

            HotelAvailabilityProviderRes res = searchProvider.Search(request);

            return res;
        }
コード例 #8
0
        public HotelAvailabilityProviderRes Execute(HotelAvailabilityProviderReq request)
        {
            Logger.Instance.LogFunctionEntry(this.GetType().Name, "Execute");
            Availability avail  = new Availability();
            List <Hotel> hotels = new List <Hotel>();

            if (request.CheckInDate <= DateTime.Today)
            {
                throw new ArgumentOutOfRangeException(nameof(request.CheckInDate));
            }
            if (request.CheckInDate >= request.CheckOutDate)
            {
                throw new ArgumentOutOfRangeException(nameof(request.CheckOutDate));
            }
            if (request.TotalAdults < 1)
            {
                throw new ArgumentOutOfRangeException(nameof(request.TotalAdults));
            }


            HotelAvailabilityProviderRes hotelSearchResults;

            using (var hotelBedsworker = new HotelBedsWorker())
            {
                //convert the request dto to the Hot Beds search api payload
                AvailabilityRQ hotelBedsSearchRq = ConvertToHotelBedsSearchRequest(request);
                try
                {
                    var hotelBedsHotels = hotelBedsworker.GetHotelDetails(hotelBedsSearchRq);

                    hotelSearchResults = ConvertToProviderResponse(hotelBedsHotels);

                    if (hotelSearchResults == null)
                    {
                        throw new ProviderUnavailableException(ProviderTypes.HotelBeds.ToString(), $"No response to {nameof(AvailabilityRQ)}.", null);
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }
            Logger.Instance.LogFunctionExit(this.GetType().Name, "Execute");
            return(hotelSearchResults);
        }
コード例 #9
0
        public HotelAvailabilityProviderRes Execute(HotelAvailabilityProviderReq request)
        {
            Logger.Instance.LogFunctionEntry(this.GetType().Name, "Execute");
            Availability avail = new Availability();
            List<Hotel> hotels = new List<Hotel>();

            if (request.CheckInDate <= DateTime.Today)
            {
                throw new ArgumentOutOfRangeException(nameof(request.CheckInDate));
            }
            if (request.CheckInDate >= request.CheckOutDate)
            {
                throw new ArgumentOutOfRangeException(nameof(request.CheckOutDate));
            }
            if (request.TotalAdults < 1)
            {
                throw new ArgumentOutOfRangeException(nameof(request.TotalAdults));
            }

            HotelAvailabilityProviderRes hotelSearchResults;
            using (var hotelBedsworker = new HotelBedsWorker())
            {
                //convert the request dto to the Hot Beds search api payload
                AvailabilityRQ hotelBedsSearchRq = ConvertToHotelBedsSearchRequest(request);
                try
                {
                    var hotelBedsHotels = hotelBedsworker.GetHotelDetails(hotelBedsSearchRq);

                    hotelSearchResults = ConvertToProviderResponse(hotelBedsHotels);

                    if (hotelSearchResults == null)
                    {
                        throw new ProviderUnavailableException(ProviderTypes.HotelBeds.ToString(), $"No response to {nameof(AvailabilityRQ)}.", null);
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }
            Logger.Instance.LogFunctionExit(this.GetType().Name, "Execute");
            return hotelSearchResults;
        }
コード例 #10
0
        // GET api/<controller>
        public HotelAvailabilityProviderRes Get()
        {
            TouricoHotelSearchProvider searchProvider = new TouricoHotelSearchProvider();

            HotelAvailabilityProviderReq request = new HotelAvailabilityProviderReq();

            request.CheckInDate  = DateTime.Now.AddDays(3).Date;
            request.CheckOutDate = DateTime.Now.AddDays(5).Date;

            request.HotelCodes = new System.Collections.Generic.List <string> {
                "8198"
            };
            //TODO:
            //request.TotalAdults = 2;

            HotelAvailabilityProviderRes res = searchProvider.Search(request);

            return(res);
        }
コード例 #11
0
 //
 // GET: /BBHotelDetails/
 public ActionResult Index(FormCollection collection)
 {
     HotelBedsDetailsHandler hotelInfo = new HotelBedsDetailsHandler();
     HotelAvailabilityProviderReq providerReq = new HotelAvailabilityProviderReq();
     HotelSearchDto searchCriteria = new HotelSearchDto();
     searchCriteria.HotelCodes = collection["hotelCode"];
     searchCriteria.StartDate = collection["checkIn"];
     searchCriteria.EndDate = collection["checkOut"];
     Hotel hotelfiltered = new Hotel();
     providerReq.CheckInDate = Convert.ToDateTime(collection["checkIn"]);
     providerReq.CheckOutDate = Convert.ToDateTime(collection["checkOut"]);
     providerReq.TotalAdults = Convert.ToInt32(collection["totalTravellers"]);
     providerReq.TotalRooms = Convert.ToInt32(collection["totalRooms"]);
     if (searchCriteria.HotelCodes.Length > 0)
     {
         providerReq.HotelCodes = searchCriteria.HotelCodes.Split(' ').ToList<string>();
     }
     var hotelinfoRS = hotelInfo.Execute(providerReq).Hotels.FirstOrDefault();
     return View(hotelinfoRS);
 }
コード例 #12
0
        //
        // GET: /BBHotelDetails/

        public ActionResult Index(FormCollection collection)
        {
            HotelBedsDetailsHandler      hotelInfo   = new HotelBedsDetailsHandler();
            HotelAvailabilityProviderReq providerReq = new HotelAvailabilityProviderReq();
            HotelSearchDto searchCriteria            = new HotelSearchDto();

            searchCriteria.HotelCodes = collection["hotelCode"];
            searchCriteria.StartDate  = collection["checkIn"];
            searchCriteria.EndDate    = collection["checkOut"];
            Hotel hotelfiltered = new Hotel();

            providerReq.CheckInDate  = Convert.ToDateTime(collection["checkIn"]);
            providerReq.CheckOutDate = Convert.ToDateTime(collection["checkOut"]);
            providerReq.TotalAdults  = Convert.ToInt32(collection["totalTravellers"]);
            providerReq.TotalRooms   = Convert.ToInt32(collection["totalRooms"]);
            if (searchCriteria.HotelCodes.Length > 0)
            {
                providerReq.HotelCodes = searchCriteria.HotelCodes.Split(' ').ToList <string>();
            }
            var hotelinfoRS = hotelInfo.Execute(providerReq).Hotels.FirstOrDefault();

            return(View(hotelinfoRS));
        }
コード例 #13
0
        private AvailabilityRQ ConvertToHotelBedsSearchRequest(HotelAvailabilityProviderReq request)
        {
            AvailabilityRQ hotelBedsAvailabilityRQ = new AvailabilityRQ();

            if (request.HotelCodes != null && request.HotelCodes.Any())
            {
                hotelBedsAvailabilityRQ.hotels = new HotelsFilter()
                {
                    hotel = request.HotelCodes.Select(int.Parse).ToList()
                };
            }
            else
            {
                hotelBedsAvailabilityRQ.geolocation = new com.hotelbeds.distribution.hotel_api_model.auto.model.GeoLocation
                {
                    latitude = Convert.ToDouble(40.71),
                    longitude = Convert.ToDouble(74.00),
                    radius = HotelBedsConstants.RadiusLimit,
                    unit = com.hotelbeds.distribution.hotel_api_model.util.UnitMeasure.UnitMeasureType.km
                };
            }

            hotelBedsAvailabilityRQ.filter = new Filter
            {
                minCategory = request.MinRating,
                maxCategory = request.MaxRating
            };

            hotelBedsAvailabilityRQ.stay = new Stay(request.CheckInDate, request.CheckOutDate, 0, true);

            hotelBedsAvailabilityRQ.occupancies = new List<Occupancy>();
            hotelBedsAvailabilityRQ.occupancies.Add(new Occupancy
            {
                adults = request.TotalAdults,
                rooms = HotelBedsConstants.TotalRooms,
                children = 0,
                paxes = new List<Pax>()
                    {
                        new Pax
                        {
                             age = HotelBedsConstants.AdultAge,
                             type = com.hotelbeds.distribution.hotel_api_model.auto.common.SimpleTypes.HotelbedsCustomerType.AD
                        }
                    }
            });

            return hotelBedsAvailabilityRQ;
        }
コード例 #14
0
        public HotelAvailabilityProviderRes Search(HotelAvailabilityProviderReq request)
        {
            var response = new HotelBedsAvailabilityHandler().Execute(request);

            return(response);
        }
コード例 #15
0
        private HotelAvailabilityProviderReq ConvertToProviderReqeust(HotelSearchDto hotelDto)
        {
            HotelBedsSearchProvider provider = new HotelBedsSearchProvider();
            HotelAvailabilityProviderReq providerReq = new HotelAvailabilityProviderReq();
            if (hotelDto != null)
            {
                providerReq.CheckInDate = Convert.ToDateTime(hotelDto.StartDate);

                providerReq.CheckOutDate = Convert.ToDateTime(hotelDto.EndDate);
                providerReq.MaxRating = hotelDto.MaxRating;
                providerReq.MinRating = hotelDto.MinRating;

                //Hotel code should come from search manager class
                if (hotelDto.HotelCodes != null)
                {
                    providerReq.HotelCodes = hotelDto.HotelCodes;
                }

                else if (hotelDto.Latitude.ToString().Length > 0)
                {
                    providerReq.GeoLocation = new GeoLocation()
                    {

                        Latitude = Convert.ToDecimal(hotelDto.Latitude),
                        Longitude = Convert.ToDecimal(hotelDto.Longitude)
                    };
                }
                //TODO:RoomDto
                //providerReq.TotalAdults = Convert.ToInt16(hotelDto.TotalGuest);

            }
            return providerReq;
        }
コード例 #16
0
        public ActionResult SearchHotel(FormCollection collection)
        {
            HotelSearchDto hotelDto = TempData["HotelSearchDto"] as HotelSearchDto;
            HotelBedsSearchProvider provider = new HotelBedsSearchProvider();
            HotelAvailabilityProviderReq providerReq = new HotelAvailabilityProviderReq();
            if (hotelDto != null)
            {
               // List<Tuple<string, string>> param;
                Availability avail = new Availability();
                //avail.checkIn = Convert.ToDateTime(collection["checkIn"]);
                avail.checkIn = Convert.ToDateTime(hotelDto.StartDate);
                //avail.checkOut = Convert.ToDateTime(collection["checkOut"]);
                avail.checkOut = Convert.ToDateTime(hotelDto.EndDate);
                //var address = collection["add"];
                var address = hotelDto.Address;
                ViewBag.checkIn = avail.checkIn;
                ViewBag.checkOut = avail.checkOut;
                //avail.destination = "PMI";
                //avail.zone = 90;
                avail.language = "CAS";
                avail.shiftDays = 2;
                AvailRoom room = new AvailRoom();
                //room.adults = Convert.ToInt32(collection["ddlTotalGuest"]);
                room.adults = Convert.ToInt32(hotelDto.TotalGuest);
                ViewBag.GuestNo = room.adults;
                room.children = 0;

                //Hotel code should come from search manager class
                if (hotelDto.HotelCodes != null)
                {
                    providerReq.HotelCodes = hotelDto.HotelCodes.Split(',').ToList<string>();
                }

                else if (hotelDto.Latitude.ToString().Length > 0)
                {
                    providerReq.GeoLocation = new HotelBeds.ServiceCatalogues.HotelCatalog.Dtos.GeoLocation()
                    {

                        Latitude = Convert.ToDecimal(hotelDto.Latitude),
                        Longitude = Convert.ToDecimal(hotelDto.Longitude)
                    };
                }
                ViewBag.LatOrg = hotelDto.Latitude;
                ViewBag.LanOrg = hotelDto.Longitude;
                providerReq.TotalAdults = Convert.ToInt16(hotelDto.TotalGuest);
                ViewBag.TotalTravellers = providerReq.TotalAdults;
                providerReq.TotalRooms = Convert.ToInt16(hotelDto.TotalRoom);
                ViewBag.TotalRooms = providerReq.TotalRooms;
                try
                {
                    //Call provider not handler
                    var hotels = provider.Search(providerReq).Hotels;
                    if (hotels != null)
                        return View(hotels);
                    else
                        return null;
                }
                catch (Exception ex)
                {
                    ViewBag.error = ex.Message;
                    return View();
                }

            }
            else
            {
                return View("Home");
            }
        }
コード例 #17
0
 //SearchHotelById - returns list of Hotels  based on hotelCodes[]
 public HotelAvailabilityProviderRes Search(HotelAvailabilityProviderReq request)
 {
     var response = new TouricoHotelAvailabilityHandler().Execute(request);
     return response;
 }
コード例 #18
0
        public ActionResult SearchHotel(FormCollection collection)
        {
            HotelSearchDto               hotelDto    = TempData["HotelSearchDto"] as HotelSearchDto;
            HotelBedsSearchProvider      provider    = new HotelBedsSearchProvider();
            HotelAvailabilityProviderReq providerReq = new HotelAvailabilityProviderReq();

            if (hotelDto != null)
            {
                // List<Tuple<string, string>> param;
                Availability avail = new Availability();
                //avail.checkIn = Convert.ToDateTime(collection["checkIn"]);
                avail.checkIn = Convert.ToDateTime(hotelDto.StartDate);
                //avail.checkOut = Convert.ToDateTime(collection["checkOut"]);
                avail.checkOut = Convert.ToDateTime(hotelDto.EndDate);
                //var address = collection["add"];
                var address = hotelDto.Address;
                ViewBag.checkIn  = avail.checkIn;
                ViewBag.checkOut = avail.checkOut;
                //avail.destination = "PMI";
                //avail.zone = 90;
                avail.language  = "CAS";
                avail.shiftDays = 2;
                AvailRoom room = new AvailRoom();
                //room.adults = Convert.ToInt32(collection["ddlTotalGuest"]);
                room.adults     = Convert.ToInt32(hotelDto.TotalGuest);
                ViewBag.GuestNo = room.adults;
                room.children   = 0;

                //Hotel code should come from search manager class
                if (hotelDto.HotelCodes != null)
                {
                    providerReq.HotelCodes = hotelDto.HotelCodes.Split(',').ToList <string>();
                }

                else if (hotelDto.Latitude.ToString().Length > 0)
                {
                    providerReq.GeoLocation = new HotelBeds.ServiceCatalogues.HotelCatalog.Dtos.GeoLocation()
                    {
                        Latitude  = Convert.ToDecimal(hotelDto.Latitude),
                        Longitude = Convert.ToDecimal(hotelDto.Longitude)
                    };
                }
                ViewBag.LatOrg          = hotelDto.Latitude;
                ViewBag.LanOrg          = hotelDto.Longitude;
                providerReq.TotalAdults = Convert.ToInt16(hotelDto.TotalGuest);
                ViewBag.TotalTravellers = providerReq.TotalAdults;
                providerReq.TotalRooms  = Convert.ToInt16(hotelDto.TotalRoom);
                ViewBag.TotalRooms      = providerReq.TotalRooms;
                try
                {
                    //Call provider not handler
                    var hotels = provider.Search(providerReq).Hotels;
                    if (hotels != null)
                    {
                        return(View(hotels));
                    }
                    else
                    {
                        return(null);
                    }
                }
                catch (Exception ex)
                {
                    ViewBag.error = ex.Message;
                    return(View());
                }
            }
            else
            {
                return(View("Home"));
            }
        }