Beispiel #1
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);
            }
        }
Beispiel #2
0
        public ActionResult SearchLodgingInfo(SearchLodgingRequestModel searchLodgingRequestModel)
        {
            SessionData.UserCredential = Manager.GetCredential(searchLodgingRequestModel.UserKey);
            if (SessionData.User.UserId == Guid.Empty)
            {
                SessionData.User = ServiceManager.GetUser(searchLodgingRequestModel.UserKey);
            }

            var model = Manager.SearchLodgingInfo(searchLodgingRequestModel, SessionData.UserCredential);

            ModelState.Clear();

            return(View(model));
        }
Beispiel #3
0
        public ActionResult SearchLodgingInfoJson(string lodgingId)
        {
            SessionData.UserCredential = Manager.GetCredential(Session["userkey"].ToString());
            if (SessionData.User.UserId == Guid.Empty)
            {
                SessionData.User = ServiceManager.GetUser(Session["userkey"].ToString());
            }
            SearchLodgingRequestModel searchLodgingRequestModel = new SearchLodgingRequestModel()
            {
                LodgingId = lodgingId
            };
            var model = Manager.SearchLodgingInfo(searchLodgingRequestModel, SessionData.UserCredential);

            ModelState.Clear();

            return(Json(model, JsonRequestBehavior.AllowGet));
        }
        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));
        }
Beispiel #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));
        }
Beispiel #6
0
            public LodgingModel SearchLodgingInfo(SearchLodgingRequestModel searchLodgingRequestModel, Credential userCredential)
            {
                SessionData.SearchType = SearchType.National;

                LodgingModel result = new LodgingModel();

                if (searchLodgingRequestModel.Checkin == null)
                {
                    searchLodgingRequestModel.Checkin = DateTime.Now.Date;
                }
                if (searchLodgingRequestModel.Checkout == null)
                {
                    searchLodgingRequestModel.Checkout = DateTime.Now.Date;
                }
                var petition = new PeticionInfoAlojamiento();

                petition.IdAlojamiento = Guid.Parse(searchLodgingRequestModel.LodgingId);
                CompletePetition(petition, userCredential);

                var petitionResults = _service.InfoAlojamiento(petition);

                if (petitionResults.Estado == EstadoRespuesta.Ok)
                {
                    var lodging = petitionResults.Alojamiento;

                    var lodgingModel = new LodgingModel
                    {
                        LodgingId                 = lodging.IdAlojamiento.ToString(),
                        LodgingName               = lodging.Nombre,
                        LodgingDescription        = lodging.Descripcion,
                        LodgingCategory           = GetCategory(lodging.Categoria),
                        LodgingPhoto              = lodging.FotoAlojamientoUrl,
                        LodgingCity               = lodging.Destino.NombreDestino,
                        LodgingCancelationPolitic = lodging.PoliticasCancelacion,
                        LodgingLocation           = lodging.Direccion,
                        LodgingServices           = lodging.Amenidades,
                        LodgingPhone              = lodging.Telefono,
                        Latitud  = lodging.Latitud,
                        Longitud = lodging.Longitud
                                   //LodgingPrice = CalculateTotalPrice(lodging, petition.Habitacion1 ?? 0, petition.Habitacion2 ?? 0,
                                   //        petition.Habitacion3 ?? 0, petition.Habitacion4 ?? 0, 0, 0)
                    };

                    var currency = "$";

                    switch (lodging.Moneda)
                    {
                    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);

                    var vacancies = new List <VacancyModel>();

                    if (lodging.Unidades != null)
                    {
                        var vacancyGroups = lodging.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 = v.MontoPorUnidad,
                                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;
                    }
                    result = lodgingModel;
                }

                return(result);
            }
Beispiel #7
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);
            }
Beispiel #8
0
 public LodgingModel SearchLodgingInfo(SearchLodgingRequestModel searchLodgingRequestModel, Credential userCredential)
 {
     return(_searchManager.SearchLodgingInfo(searchLodgingRequestModel, userCredential));
 }
            //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);
            }
Beispiel #10
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);
        }