Exemplo n.º 1
0
        public static LodgingListModel GetHotels(string hotelName, string userkey)
        {
            using (var dc = new TurismoDataContext())
            {
                var key = Guid.Empty;

                Guid.TryParse(userkey, out key);

                var hotels = dc.Alojamientos.Where(p => p.ACTIVO == true && p.ALTACONFIRMADA == 1 && p.CODIGOBLOQUEO == 0 && p.NOMBRE.Contains(hotelName));

                List <LodgingModel> lodgings = new List <LodgingModel>();

                foreach (var hotel in hotels)
                {
                    LodgingModel lodging = new LodgingModel
                    {
                        LodgingName = hotel.NOMBRE,
                        LodgingId   = hotel.IDALOJ.ToString()
                    };
                    lodgings.Add(lodging);
                }


                var lodgingsmodel = new LodgingListModel
                {
                    Lodgings = lodgings
                };

                return(lodgingsmodel);
            }
        }
Exemplo n.º 2
0
        public ActionResult SearchHotels(SearchLodgingRequestModel searchLodgingRequestModel)
        {
            SessionData.UserCredential = Manager.GetCredential(Session["userkey"].ToString());
            if (SessionData.UserCredential.Username == null)
            {
                return(View("Home"));
            }

            //searchLodgingRequestModel.DestinationType = string.IsNullOrEmpty(searchLodgingRequestModel.DestinationId) ? "NoEspecificado" : "Ciudad";
            if (searchLodgingRequestModel.Rooms != null)
            {
                foreach (var room in searchLodgingRequestModel.Rooms)
                {
                    switch (room.RoomTypeCode)
                    {
                    case "single":
                        room.RoomType = RoomType.Single;
                        break;

                    case "doble":
                        room.RoomType = RoomType.Double;
                        break;

                    case "triple":
                        room.RoomType = RoomType.Triple;
                        break;

                    case "cuadruple":
                        room.RoomType = RoomType.Quad;
                        break;

                    case "":
                        break;
                    }
                }
            }
            var results = Manager.SearchHotels(searchLodgingRequestModel, SessionData.UserCredential);

            if (results != null)
            {
                var model = new LodgingListModel();
                model.Lodgings = results.Lodgings;
                if (searchLodgingRequestModel.DisplayType == "tar")
                {
                    model.DisplayType = "tar";
                }
                else
                {
                    model.DisplayType = "det";
                }
                return(Json(model, JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 3
0
            public LodgingListModel SearchHotel(string hotelName)
            {
                var result   = new LodgingListModel();
                var lodgings = new List <LodgingModel>();

                using (var dc = new TurismoDataContext())
                {
                    lodgings = dc.Alojamientos.Where(a => a.NOMBRE.Contains(hotelName) && a.ACTIVO == true).Select(a => new LodgingModel()
                    {
                        LodgingName   = a.NOMBRE,
                        LodgingId     = a.IDALOJ.ToString(),
                        DestinationId = a.IDCIUDAD.ToString(),
                    }).ToList();
                }
                result.Lodgings = lodgings;
                return(result);
            }
        public ActionResult InternationalSearchResults(SearchLodgingRequestModel searchLodgingRequest)
        {
            //SessionData.UserCredential = Manager.GetCredential(searchLodgingRequest.UserKey);

            //int room1 = 0, room2 = 0, room3 = 0, room4 = 0, room5 = 0, room6 = 0, adultCount = 0, bedCount = 0;

            if (searchLodgingRequest.Rooms == null || searchLodgingRequest.Rooms.Count() == 0)
            {
                searchLodgingRequest.Rooms = new List <SearchLodgingModel> {
                    new SearchLodgingModel {
                        Count        = 1,
                        RoomTypeCode = "NMO.HTL.RMT.SGL"
                    }
                };
            }

            if (searchLodgingRequest.Rooms != null)
            {
                foreach (var room in searchLodgingRequest.Rooms)
                {
                    switch (room.RoomTypeCode)
                    {
                    case "NMO.HTL.RMT.SGL":
                        room.RoomType = RoomType.Single;
                        //room1 = 1;
                        //adultCount = 1;
                        //bedCount = 1;
                        break;

                    case "NMO.HTL.RMT.DBL.TSU":
                        room.RoomType = RoomType.DSU;
                        //room1 = 1;
                        //adultCount = 1;
                        //bedCount = 1;
                        break;

                    case "NMO.HTL.RMT.DBL":
                        room.RoomType = RoomType.Double;
                        //room2 = 1;
                        //adultCount = 2;
                        //bedCount = 1;
                        break;

                    case "NMO.HTL.RMT.DBL.TWN":
                        room.RoomType = RoomType.Twin;
                        //room2 = 1;
                        //adultCount = 2;
                        //bedCount = 2;
                        break;

                    case "NMO.HTL.RMT.TPL":
                        room.RoomType = RoomType.Triple;
                        //room3 = 1;
                        //adultCount = 3;
                        //bedCount = 3;
                        break;

                    case "NMO.HTL.RMT.QUA":
                        room.RoomType = RoomType.Quad;
                        //room4 = 1;
                        //adultCount = 4;
                        //bedCount = 4;
                        break;

                    case "NMO.HTL.RMT.PEN":
                        room.RoomType = RoomType.Quintuple;
                        //room5 = 1;
                        //adultCount = 5;
                        //bedCount = 5;
                        break;

                    case "NMO.HTL.RMT.HEX":
                        room.RoomType = RoomType.Sextuple;
                        //room6 = 1;
                        //adultCount = 6;
                        //bedCount = 6;
                        break;
                    }
                }
            }

            var results = Manager.SearchLodging(searchLodgingRequest, SessionData.UserCredential);

            var model = new LodgingListModel();

            //model.Lodgings = results.Lodgings.Where(l => l.Vacancies.Where(v => v.VacancyAdults == adultCount && v.VacancyBeds == bedCount).Count() > 0).ToList();
            //model.Lodgings.ForEach(l => l.Vacancies = l.Vacancies.Where(v => v.VacancyAdults == adultCount && v.VacancyBeds == bedCount).ToList());
            model.Lodgings = results.Lodgings;

            return(View(model));
        }
Exemplo n.º 5
0
        public ActionResult NationalSearchResults(SearchLodgingRequestModel searchLodgingRequestModel)
        {
            SessionData.UserCredential = Manager.GetCredential(searchLodgingRequestModel.UserKey);
            if (SessionData.User.UserId == Guid.Empty)
            {
                SessionData.User = ServiceManager.GetUser(searchLodgingRequestModel.UserKey);
            }

            int adultCount = 0, bedCount = 0;

            if (searchLodgingRequestModel.Rooms == null || searchLodgingRequestModel.Rooms.Count() == 0)
            {
                searchLodgingRequestModel.Rooms = new List <SearchLodgingModel> {
                    //new SearchLodgingModel{
                    //    Count = 1,
                    //    RoomTypeCode = "1 - Single"
                    //}
                    //new SearchLodgingModel{
                    //    Count = 1,
                    //    RoomTypeCode = "1 - DSU"
                    //},
                    new SearchLodgingModel {
                        Count        = 1,
                        RoomTypeCode = "2 - Double"
                    }
                    //new SearchLodgingModel{
                    //    Count = 1,
                    //    RoomTypeCode = "1 - Twin"
                    //},
                    //new SearchLodgingModel{
                    //    Count = 1,
                    //    RoomTypeCode = "1 - Triple"
                    //},
                    //new SearchLodgingModel{
                    //    Count = 1,
                    //    RoomTypeCode = "1 - Quad"
                    //}
                };
            }

            foreach (var room in searchLodgingRequestModel.Rooms)
            {
                switch (room.RoomTypeCode)
                {
                case "1 - Single":
                    room.RoomType = RoomType.Single;
                    adultCount   += 1;
                    bedCount     += 1;
                    break;

                case "1 - DSU":
                    room.RoomType = RoomType.DSU;
                    adultCount   += 1;
                    bedCount     += 1;
                    break;

                case "2 - Double":
                    room.RoomType = RoomType.Double;
                    adultCount   += 2;
                    bedCount     += 1;
                    break;

                case "2 - Twin":
                    room.RoomType = RoomType.Twin;
                    adultCount   += 2;
                    bedCount     += 2;
                    break;

                case "3 - Triple":
                    room.RoomType = RoomType.Triple;
                    adultCount   += 3;
                    bedCount     += 3;
                    break;

                case "4 - Quad":
                    room.RoomType = RoomType.Quad;
                    adultCount   += 4;
                    bedCount     += 4;
                    break;
                }
            }

            searchLodgingRequestModel.DestinationType = string.IsNullOrEmpty(searchLodgingRequestModel.DestinationId)  ? "NoEspecificado" : "Ciudad";

            var results = Manager.SearchLodging(searchLodgingRequestModel, SessionData.UserCredential);

            var model = new LodgingListModel();

            model.Lodgings = results.Lodgings.Where(l => l.Vacancies.Where(v => v.VacancyAdults == adultCount && v.VacancyBeds == bedCount).Count() > 0).ToList();
            model.Lodgings.ForEach(l => l.Vacancies = l.Vacancies.Where(v => v.VacancyAdults == adultCount && v.VacancyBeds == bedCount).ToList());

            if (searchLodgingRequestModel.DisplayType == "tar")
            {
                model.DisplayType = "tar";
            }
            else if (searchLodgingRequestModel.DisplayType == "det")
            {
                model.DisplayType = "det";
            }
            ModelState.Clear();

            return(View(model));
        }
Exemplo n.º 6
0
            public LodgingListModel SearchLodging(SearchLodgingRequestModel searchLodgingRequestModel, Credential userCredential)
            {
                SessionData.SearchType = SearchType.National;

                var results  = new LodgingListModel();
                var lodgings = new List <LodgingModel>();

                var petition = new PeticionBuscarAlojamientos();

                CompletePetition(petition, userCredential);

                if (!string.IsNullOrEmpty(searchLodgingRequestModel.DestinationId))
                {
                    petition.IdDestino = Guid.Parse(searchLodgingRequestModel.DestinationId);
                }

                petition.TipoDestino = (TipoDestino)Enum.Parse(typeof(TipoDestino), searchLodgingRequestModel.DestinationType);

                petition.FechaInicio = searchLodgingRequestModel.Checkin;
                petition.FechaFin    = searchLodgingRequestModel.Checkout;
                foreach (var room in searchLodgingRequestModel.Rooms)
                {
                    switch (room.RoomType)
                    {
                    case RoomType.Single:
                    case RoomType.DSU:
                        petition.Habitacion1 = petition.Habitacion1 ?? 0 + room.Count;
                        break;

                    case RoomType.Double:
                    case RoomType.Twin:
                        petition.Habitacion2 = petition.Habitacion2 ?? 0 + room.Count;
                        break;

                    case RoomType.Triple:
                        petition.Habitacion3 = petition.Habitacion3 ?? 0 + room.Count;
                        break;

                    case RoomType.Quad:
                        petition.Habitacion4 = petition.Habitacion4 ?? 0 + room.Count;
                        break;
                    }
                }

                if (!string.IsNullOrEmpty(searchLodgingRequestModel.Order))
                {
                    petition.Orden = (OrdenAlojamientos)Enum.Parse(typeof(OrdenAlojamientos), searchLodgingRequestModel.Order);
                }
                if (!string.IsNullOrEmpty(searchLodgingRequestModel.Nationality))
                {
                    petition.Nacionalidad = searchLodgingRequestModel.Nationality;
                }
                if (!string.IsNullOrEmpty(searchLodgingRequestModel.LodgingName) && searchLodgingRequestModel.LodgingName != "{}")
                {
                    petition.NombreAlojamiento = searchLodgingRequestModel.LodgingName;
                }

                var petitionResults = _service.BuscarAlojamientosEInfo(petition);

                if (petitionResults.Estado == EstadoRespuesta.Ok)
                {
                    foreach (var lodging in petitionResults.AlojamientosDisponibles)
                    {
                        if (searchLodgingRequestModel.LodgingName == "{}" || lodging.Nombre.ToLower().Contains((searchLodgingRequestModel.LodgingName ?? string.Empty).ToLower()))
                        {
                            var lodgingModel = new LodgingModel
                            {
                                LodgingId          = lodging.IdAlojamiento.ToString(),
                                LodgingName        = lodging.Nombre,
                                LodgingDescription = lodging.Alojamiento.Descripcion,
                                LodgingLocation    = lodging.Alojamiento.Direccion,
                                LodgingCity        = lodging.Destino.NombreDestino,
                                LodgingPhone       = lodging.Alojamiento.Telefono,
                                LodgingServices    = lodging.Alojamiento.Amenidades,
                                LodgingCategory    = GetCategory(lodging.Alojamiento.Categoria),
                                LodgingPhoto       = lodging.Alojamiento.FotoAlojamientoUrl,
                                LodgingPrice       = CalculateTotalPrice(lodging, petition.Habitacion1 ?? 0, petition.Habitacion2 ?? 0,
                                                                         petition.Habitacion3 ?? 0, petition.Habitacion4 ?? 0, 0, 0),
                                LodgingUnderPetition      = lodging.Alojamiento.BajoPeticion,
                                LodgingCancelationPolitic = lodging.Alojamiento.PoliticasCancelacion
                            };

                            var currency = "$";

                            switch (lodging.Moneda.GetValueOrDefault())
                            {
                            case Moneda.ARS: currency = "$"; break;

                            case Moneda.EUR: currency = "€"; break;

                            case Moneda.USD: currency = "U$S"; break;
                            }

                            lodgingModel.LodgingCurrency     = currency;
                            lodgingModel.LodgingCurrencyCode = MapCurrencyToNPS(lodging.Moneda.GetValueOrDefault());

                            var vacancies = new List <VacancyModel>();

                            var vacancyGroups = lodging.Alojamiento.Unidades.GroupBy(u => u.IdUnidad);

                            foreach (var group in vacancyGroups)
                            {
                                var vacancy = group.Select(v => new VacancyModel
                                {
                                    LodgingId       = lodgingModel.LodgingId,
                                    LodgingName     = lodgingModel.LodgingName,
                                    LodgingCurrency = lodgingModel.LodgingCurrency,
                                    VacancySelected = false,
                                    VacancyId       = v.IdUnidad.ToString(),
                                    VacancyName     = v.NombreUnidad,
                                    VacancyAdults   = v.Personas,
                                    VacancyBeds     = v.Camas,
                                    VacancyCount    = v.Disponibles,
                                    //VacancyPrice = Decimal.Round(v.MontoPorUnidad, 0),
                                    VacancyCheckin  = searchLodgingRequestModel.Checkin,
                                    VacancyCheckout = searchLodgingRequestModel.Checkout,
                                    VacancyDates    = group.Select(vg => vg.Fecha).ToList(),


                                    Available             = true,
                                    ConfirmedVacancyPrice = v.MontoPorUnidadRaCdTr,

                                    Rooms = new List <RoomModel> {
                                        new RoomModel {
                                            RoomId     = v.IdUnidad.ToString(),
                                            RoomName   = v.NombreUnidad,
                                            RoomAdults = v.Personas,
                                            RoomBeds   = v.Camas,
                                            RoomCount  = v.Disponibles
                                        }
                                    }
                                }).First();

                                vacancies.Add(vacancy);
                            }

                            lodgingModel.Vacancies = vacancies;

                            lodgings.Add(lodgingModel);
                        }
                    }
                }

                results.Lodgings = lodgings;

                return(results);
            }
            //public LodgingListModel SearchLodging(string destinationId, string destinationType, string lodgingType,
            //    DateTime checkin, DateTime checkout,
            //    int room1, int room2, int room3, int room4, int room5, int room6, string order, CheckArgentina.Models.Credential userCredential)
            //{

            public LodgingListModel SearchLodging(SearchLodgingRequestModel searchLodgingRequestModel, Credential userCredential)
            {
                SessionData.SearchType = SearchType.International;

                var results  = new LodgingListModel();
                var lodgings = new List <LodgingModel>();

                var rqHotelAvail = new WSHCEV_main.HotelRoomPricedInventorySearchRQ();
                var x            = new System.Xml.Serialization.XmlSerializer(rqHotelAvail.GetType());
                var sw           = new System.IO.StringWriter();
                var xw           = new System.Xml.XmlTextWriter(sw);
                var wsRnd        = new ServicioPruebaHeredado();

                var roomTypes = CacheData.NemoRoomTypes;

                try
                {
                    rqHotelAvail.Source = new WSHCEV_main.Source();
                    rqHotelAvail.Source.PricingSurferConfiguration = new WSHCEV_main.PricingSurferConfiguration();
                    rqHotelAvail.Source.PricingSurferConfiguration.PreferedLanguage            = new WSHCEV_main.PreferedLanguage();
                    rqHotelAvail.Source.PricingSurferConfiguration.PreferedCurrency            = new WSHCEV_main.PreferedCurrency();
                    rqHotelAvail.Source.PricingSurferConfiguration.ResponseSet                 = new WSHCEV_main.ResponseSet();
                    rqHotelAvail.Source.PricingSurferConfiguration.ResponseSet.SortingCriteria = new WSHCEV_main.SortingCriteria();
                    rqHotelAvail.Source.PricingSurferConfiguration.ContractId = 10273; // 10857;
                    rqHotelAvail.Source.PricingSurferConfiguration.PreferedLanguage.LanguageCode          = "es";
                    rqHotelAvail.Source.PricingSurferConfiguration.PreferedCurrency.CurrencyCode          = "USD";
                    rqHotelAvail.Source.PricingSurferConfiguration.ResponseSet.FirstItem                  = 1;
                    rqHotelAvail.Source.PricingSurferConfiguration.ResponseSet.ItemsPerPage               = 10000;
                    rqHotelAvail.Source.PricingSurferConfiguration.ResponseSet.SortingCriteria.ItemsCount = 1;
                    rqHotelAvail.Source.PricingSurferConfiguration.ResponseSet.SortingCriteria.SortField  = new WSHCEV_main.SortField[] { new WSHCEV_main.SortField {
                                                                                                                                              Sequence = 1, OrderBy = "ASC", SortFieldName = "name"
                                                                                                                                          } };

                    rqHotelAvail.Details                = new WSHCEV_main.HotelRoomPricedInventorySearchRQDetails();
                    rqHotelAvail.Details.Criterion      = new WSHCEV_main.HotelRoomPricedInventorySearchRQDetailsCriterion();
                    rqHotelAvail.Details.Criterion.Stay = new WSHCEV_main.Stay();

                    rqHotelAvail.Details.Criterion.Availability = "NMO.HTL.AVB.ALL";

                    rqHotelAvail.Details.Criterion.Stay.DestinationDetails             = new WSHCEV_main.DestinationDetails();
                    rqHotelAvail.Details.Criterion.Stay.DestinationDetails.Destination = new WSHCEV_main.Destination[] {
                        new WSHCEV_main.Destination {
                            Sequence        = 1,
                            DestinationCode = searchLodgingRequestModel.DestinationId,
                            DestinationType = "NMO.HTL.DST.CTY"
                        }
                    };

                    rqHotelAvail.Details.Criterion.Stay.DestinationDetails.ItemsCount = 1;

                    rqHotelAvail.Details.Criterion.Stay.CheckIn  = searchLodgingRequestModel.Checkin;
                    rqHotelAvail.Details.Criterion.Stay.CheckOut = searchLodgingRequestModel.Checkout;

                    rqHotelAvail.Details.Criterion.Stay.Rooms = new WSHCEV_main.AvailRequestRooms();

                    uint i            = 1;
                    var  requestRooms = searchLodgingRequestModel.Rooms.Select(r => new WSHCEV_main.AvailRequestRoom
                    {
                        Sequence = i++,
                        RoomType = r.RoomTypeCode,
                        Guests   = new WSHCEV_main.Guests
                        {
                            Guest = GetRequestGuests(r.ChildrenAges, GetAdultsByRoomType(r.RoomType)).ToArray()
                        }
                    });

                    rqHotelAvail.Details.Criterion.Stay.Rooms.Room = requestRooms.ToArray();

                    xw.Formatting = System.Xml.Formatting.None;
                    x.Serialize(xw, rqHotelAvail);

                    wsRnd.Timeout = 30000;
                    var response = wsRnd.HotelAvail(sw.ToString());
                    var sr       = new StringReader(response);

                    x = new System.Xml.Serialization.XmlSerializer(typeof(WSHCEV_main.HotelRoomPricedInventorySearchRS));
                    var lodgingListRS = (WSHCEV_main.HotelRoomPricedInventorySearchRS)x.Deserialize(sr);
                    sr.Close();

                    if (lodgingListRS != null && lodgingListRS.Item is WSHCEV_main.HotelRoomPricedInventorySearchRSDetails &&
                        ((WSHCEV_main.HotelRoomPricedInventorySearchRSDetails)lodgingListRS.Item).TinyHotels != null)
                    {
                        lodgings = ((WSHCEV_main.HotelRoomPricedInventorySearchRSDetails)lodgingListRS.Item).TinyHotels
                                   .Where(l => l.Rates.Count(r => r.Offer == WSHCEV_main.BooleanEnum.False) > 0).Select(l => new LodgingModel
                        {
                            LodgingId           = l.Code,
                            LodgingName         = l.Name,
                            LodgingDescription  = "",
                            LodgingCategory     = (int)l.Rating.Value,
                            LodgingCurrency     = l.Rates.First().RatePrices.First().Currency, //"U$S"
                            LodgingCurrencyCode = MapCurrencyToNPS(l.Rates.First().RatePrices.First().Currency),
                            LodgingPrice        = (decimal)l.Rates.First().RatePrices.First().Value,
                            LodgingSupplierId   = l.SupplierID,
                            Vacancies           = l.Rates.Where(r => r.Offer == WSHCEV_main.BooleanEnum.False).Select(r => new VacancyModel
                            {
                                LodgingId       = l.Code,
                                LodgingName     = l.Name,
                                LodgingCurrency = r.RatePrices.First().Currency,
                                VacancyId       = r.RateID,
                                VacancyName     = r.Rooms.First().Value + " / " + r.Boards.First().Value,
                                VacancyPrice    = (decimal)(r.RatePrices.First().Value / (searchLodgingRequestModel.Checkout - searchLodgingRequestModel.Checkin).TotalDays),
                                VacancyCheckin  = searchLodgingRequestModel.Checkin,
                                VacancyCheckout = searchLodgingRequestModel.Checkout,
                                VacancyDates    = GetDatesBetween(searchLodgingRequestModel.Checkin, searchLodgingRequestModel.Checkout),
                                VacancyCount    = 99,

                                Rooms = r.Rooms.Select(rr => new RoomModel {
                                    RoomId    = rr.RoomID.ToString(),
                                    RoomName  = rr.Value,
                                    RoomCount = 1
                                }).ToList()
                            }).ToList()
                        }).ToList();
                    }
                }
                catch (Exception ex)
                {
                }

                results.Lodgings = lodgings;

                return(results);
            }
Exemplo n.º 8
0
        public LodgingListModel SearchHotels(SearchLodgingRequestModel searchLodgingRequestModel, Credential userCredential)
        {
            var lodgings = new List <LodgingModel>();
            var results  = new LodgingListModel();
            var petition = new PeticionBuscarAlojamientos();

            CompletePetition(petition, userCredential);
            if (!string.IsNullOrEmpty(searchLodgingRequestModel.DestinationId))
            {
                petition.IdDestino = Guid.Parse(searchLodgingRequestModel.DestinationId);
            }

            //petition.TipoDestino = (TipoDestino)Enum.Parse(typeof(TipoDestino), searchLodgingRequestModel.DestinationType);

            using (var dc = new TurismoDataContext())
            {
                var ciudad = dc.Ciudads.Where(c => c.IDCIUDAD.ToString() == searchLodgingRequestModel.DestinationId).ToArray();
                if (ciudad.Length != 0)
                {
                    petition.TipoDestino = (TipoDestino)Enum.Parse(typeof(TipoDestino), "Ciudad");
                }
                else
                {
                    petition.TipoDestino = (TipoDestino)Enum.Parse(typeof(TipoDestino), "Provincia");
                }
            }

            petition.FechaInicio        = searchLodgingRequestModel.Checkin;
            petition.FechaFin           = searchLodgingRequestModel.Checkout;
            petition.desayuno           = searchLodgingRequestModel.Breakfast;
            petition.tarifaReembolsable = searchLodgingRequestModel.Tarifa;

            if (searchLodgingRequestModel.Rooms == null)
            {
                petition.Habitacion1 = petition.Habitacion1 ?? 0;
                petition.Habitacion2 = petition.Habitacion2 ?? 0;
                petition.Habitacion3 = petition.Habitacion3 ?? 0;
                petition.Habitacion4 = petition.Habitacion4 ?? 0 + 1;
                petition.Habitacion5 = petition.Habitacion5 ?? 0 + 1;
                petition.Habitacion6 = petition.Habitacion6 ?? 0 + 1;
            }
            else
            {
                foreach (var room in searchLodgingRequestModel.Rooms)
                {
                    switch (room.RoomType)
                    {
                    case RoomType.Single:
                        petition.Habitacion1 = (petition.Habitacion1 ?? 0) + 1;
                        break;

                    case RoomType.Double:
                        petition.Habitacion2 = (petition.Habitacion2 ?? 0) + 1;
                        break;

                    case RoomType.Triple:
                        petition.Habitacion3 = (petition.Habitacion3 ?? 0) + 1;
                        break;

                    case RoomType.Quad:
                        petition.Habitacion4 = (petition.Habitacion4 ?? 0) + 1;
                        break;
                    }
                }
            }

            if (!string.IsNullOrEmpty(searchLodgingRequestModel.Order))
            {
                petition.Orden = (OrdenAlojamientos)Enum.Parse(typeof(OrdenAlojamientos), searchLodgingRequestModel.Order);
            }

            if (!string.IsNullOrEmpty(searchLodgingRequestModel.Nationality))
            {
                petition.Nacionalidad = searchLodgingRequestModel.Nationality;
            }

            if (!string.IsNullOrEmpty(searchLodgingRequestModel.LodgingName) && searchLodgingRequestModel.LodgingName != "{}")
            {
                petition.NombreAlojamiento = searchLodgingRequestModel.LodgingName;
            }

            var petitionResults = _service.SearchHotels(petition);

            if (petitionResults.Estado == EstadoRespuesta.Ok)
            {
                foreach (var lodging in petitionResults.AlojamientosDisponibles)
                {
                    if (searchLodgingRequestModel.LodgingName == "{}" || lodging.Nombre.ToLower().Contains((searchLodgingRequestModel.LodgingName ?? string.Empty).ToLower()))
                    {
                        var lodgingModel = new LodgingModel
                        {
                            DestinationId             = lodging.Destino.IdDestino.ToString(),
                            LodgingId                 = lodging.IdAlojamiento.ToString(),
                            LodgingName               = lodging.Nombre,
                            LodgingDescription        = lodging.Alojamiento.Descripcion,
                            LodgingLocation           = lodging.Alojamiento.Direccion,
                            LodgingCity               = lodging.Destino.NombreDestino,
                            LodgingPhone              = lodging.Alojamiento.Telefono,
                            LodgingPrice              = Math.Round(Decimal.Parse(lodging.Tarifa1.ToString()), 0),
                            LodgingServices           = lodging.Alojamiento.Amenidades,
                            LodgingCategory           = GetCategory(lodging.Alojamiento.Categoria),
                            LodgingUnderPetition      = lodging.Alojamiento.BajoPeticion,
                            LodgingCancelationPolitic = lodging.Alojamiento.PoliticasCancelacion,
                            //LodgingBreakfast = searchLodgingRequestModel.Breakfast,
                            //LodgingTarifa = searchLodgingRequestModel.Tarifa
                        };
                        var currency = "$";

                        switch (lodging.Moneda.GetValueOrDefault())
                        {
                        case Moneda.ARS: currency = "$"; break;

                        case Moneda.EUR: currency = "€"; break;

                        case Moneda.USD: currency = "U$S"; break;
                        }

                        lodgingModel.LodgingCurrency     = currency;
                        lodgingModel.LodgingCurrencyCode = MapCurrencyToNPS(lodging.Moneda.GetValueOrDefault());
                        if (lodging.Alojamiento.Unidades != null)
                        {
                            var vacancies = new List <VacancyModel>();

                            var vacancyGroups = lodging.Alojamiento.Unidades.GroupBy(u => u.IdUnidad);

                            foreach (var group in vacancyGroups)
                            {
                                var vacancy = group.Select(v => new VacancyModel
                                {
                                    LodgingId           = lodgingModel.LodgingId,
                                    LodgingName         = lodgingModel.LodgingName,
                                    LodgingCurrency     = lodgingModel.LodgingCurrency,
                                    VacancySelected     = false,
                                    VacancyId           = v.IdUnidad.ToString(),
                                    VacancyName         = v.NombreUnidad,
                                    VacancyAdults       = v.Personas,
                                    VacancyBeds         = v.Camas,
                                    VacancyCount        = v.Disponibles,
                                    VacancyPriceRaCdTr  = Decimal.Round(v.MontoPorUnidadRaCdTr, 0),
                                    VacancyPriceRaCdTnr = Decimal.Round(v.MontoPorUnidadRaCdTnr, 0),
                                    VacancyPriceRaSdTr  = Decimal.Round(v.MontoPorUnidadRaSdTr, 0),
                                    VacancyPriceRaSdTnr = Decimal.Round(v.MontoPorUnidadRaSdTnr, 0),
                                    VacancyPriceExCdTr  = Decimal.Round(v.MontoPorUnidadExCdTr, 0),
                                    VacancyPriceExCdTnr = Decimal.Round(v.MontoPorUnidadExCdTnr, 0),
                                    VacancyPriceExSdTr  = Decimal.Round(v.MontoPorUnidadExSdTr, 0),
                                    VacancyPriceExSdTnr = Decimal.Round(v.MontoPorUnidadExSdTnr, 0),
                                    VacancyPriceMeCdTr  = Decimal.Round(v.MontoPorUnidadMeCdTr, 0),
                                    VacancyPriceMeCdTnr = Decimal.Round(v.MontoPorUnidadMeCdTnr, 0),
                                    VacancyPriceMeSdTr  = Decimal.Round(v.MontoPorUnidadMeSdTr, 0),
                                    VacancyPriceMeSdTnr = Decimal.Round(v.MontoPorUnidadMeSdTnr, 0),
                                    VacancyCheckin      = searchLodgingRequestModel.Checkin,
                                    VacancyCheckout     = searchLodgingRequestModel.Checkout,
                                    VacancyDates        = group.Select(vg => vg.Fecha).ToList(),
                                    //Breakfast = v.Desayuno,
                                    //Tarifa = v.Tarifa,
                                    Available             = true,
                                    ConfirmedVacancyPrice = 0,
                                    Promociones           = v.Promociones.Select(p => new Promociones_Alojamiento
                                    {
                                        ACTIVO                 = p.Activo,
                                        DESCRIPCION            = p.Descripcion1,
                                        DESCRIPCION2           = p.Descripcion2,
                                        DESCUENTO              = p.Descuento,
                                        DIASACOBRAR            = p.DiasACobrar,
                                        DIASRESERVADOS         = p.DiasReservados,
                                        FECHAFIN               = p.FechaFin,
                                        FECHAINICIO            = p.FechaInicio,
                                        IDALOJ                 = p.LodgingId,
                                        IDPROMOCION            = p.PromocionId,
                                        IDTIPOPUBLICACIONPROMO = p.TipoPromocionId,
                                        IDUNIDADPROMO          = p.IdUnidadPromo,
                                        MINIMONOCHES           = p.MinimoNoches,
                                        MAXIMONOCHES           = p.MaximoNoches,
                                        NOMBRE                 = p.NombrePromocion,
                                        SLOGAN                 = p.Slogan
                                    }).Where(p => p.FECHAFIN >= DateTime.Now.Date).ToArray(),
                                    Rooms = new List <RoomModel> {
                                        new RoomModel {
                                            RoomId     = v.IdUnidad.ToString(),
                                            RoomName   = v.NombreUnidad,
                                            RoomAdults = v.Personas,
                                            RoomBeds   = v.Camas,
                                            RoomCount  = v.Disponibles
                                        }
                                    }
                                }).First();

                                vacancies.Add(vacancy);
                            }
                            lodgingModel.Vacancies = vacancies;
                        }
                        lodgings.Add(lodgingModel);
                    }
                }
            }
            results.Lodgings = lodgings;
            return(results);
        }