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 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); }