public async Task <Result <Accommodation> > Get(string supplier, string supplierAccommodationCode, string languageCode) { var searchJson = "{" + $"\"{supplier}\":\"{supplierAccommodationCode}\"" + "}"; var accommodation = await _context.Accommodations .Where(ac => ac.IsActive && EF.Functions.JsonContains(ac.SupplierAccommodationCodes, searchJson)) .Select(ac => new { Id = ac.Id, CountryId = ac.CountryId, LocalityId = ac.LocalityId, LocalityZoneId = ac.LocalityZoneId, Data = ac.FinalAccommodation, SupplierCodes = ac.SupplierAccommodationCodes, Modified = ac.Modified }) .SingleOrDefaultAsync(); if (accommodation == null) { return(Result.Failure <Accommodation>("Accommodation does not exists")); } return(AccommodationConverter.Convert(accommodation.Id, accommodation.CountryId, accommodation.LocalityId, accommodation.LocalityZoneId, accommodation.Data, languageCode, accommodation.SupplierCodes, accommodation.Modified)); }
public async Task <List <SlimAccommodation> > Get(List <string> htIds, string languageCode) { return((await GetRichDetails(htIds)) .Select(a => AccommodationConverter.ConvertToSlim(htId: a.Id, htCountryId: a.CountryId, htLocalityId: a.LocalityId, htLocalityZoneId: a.LocalityZoneId, accommodation: a.FinalAccommodation, language: languageCode)) .ToList()); }
public async Task <List <Accommodation> > Get(int skip, int top, IEnumerable <string> suppliersFilter, bool?hasDirectContractFilter, DateTimeOffset?modifiedDate, string languageCode) { var suppliersKeys = suppliersFilter.ToArray(); var accommodationsQuery = _context.Accommodations .Where(ac => ac.IsActive); if (modifiedDate.HasValue) { accommodationsQuery = accommodationsQuery.Where(a => a.Modified > modifiedDate); } if (suppliersKeys.Any()) { accommodationsQuery = accommodationsQuery.Where(ac => EF.Functions.JsonExistAny(ac.SupplierAccommodationCodes, suppliersKeys)); } if (hasDirectContractFilter != null) { accommodationsQuery = accommodationsQuery.Where(ac => ac.HasDirectContract == hasDirectContractFilter.Value); } accommodationsQuery = accommodationsQuery .OrderBy(ac => ac.Id) .Skip(skip) .Take(top); var accommodations = await accommodationsQuery .Select(ac => new { Id = ac.Id, CountryId = ac.CountryId, LocalityId = ac.LocalityId, LocalityZoneId = ac.LocalityZoneId, Data = ac.FinalAccommodation, SupplierCodes = ac.SupplierAccommodationCodes, ModifiedDate = ac.Modified }) .ToListAsync(); return(accommodations.Select(ac => AccommodationConverter.Convert(ac.Id, ac.CountryId, ac.LocalityId, ac.LocalityZoneId, ac.Data, languageCode, ac.SupplierCodes, ac.ModifiedDate)) .ToList()); }
public async Task <Result <Accommodation> > Get(string htId, string languageCode) { var accommodations = await GetRichDetails(new List <string> { htId }); var accommodation = accommodations.SingleOrDefault(); if (accommodation == default) { return(Result.Failure <Accommodation>("Accommodation does not exists")); } return(AccommodationConverter.Convert(accommodation.Id, accommodation.CountryId, accommodation.LocalityId, accommodation.LocalityZoneId, accommodation.FinalAccommodation, languageCode, accommodation.SupplierAccommodationCodes, accommodation.Modified)); }
public static AccommodationData Convert(MultilingualAccommodation accommodation, string language) { var name = accommodation.Name.GetValueOrDefault(language); var accommodationAmenities = accommodation.AccommodationAmenities.GetValueOrDefault(language); var additionalInfo = accommodation.AdditionalInfo.GetValueOrDefault(language); var category = accommodation.Category.GetValueOrDefault(language); var address = accommodation.Location.Address.GetValueOrDefault(language); var localityName = accommodation.Location.Locality?.GetValueOrDefault(language); var countryName = accommodation.Location.Country.GetValueOrDefault(language); var localityZoneName = accommodation.Location.LocalityZone?.GetValueOrDefault(language); var textualDescriptions = new List <TextualDescription>(); foreach (var descriptions in accommodation.TextualDescriptions) { var description = descriptions.Description.GetValueOrDefault(language); textualDescriptions.Add(new TextualDescription(AccommodationConverter.GetTextualDescriptionType(descriptions.Type), description)); } return(new AccommodationData { Name = name, AccommodationAmenities = accommodationAmenities, AdditionalInfo = additionalInfo, Category = category, Contacts = AccommodationConverter.GetContacts(accommodation.Contacts), Location = new LocationInfo { CountryCode = accommodation.Location.CountryCode, CountryName = countryName, LocalityName = localityName, LocalityZoneName = localityZoneName, Coordinates = new GeoPoint(accommodation.Location.Coordinates.Longitude, accommodation.Location.Coordinates.Latitude), Address = address, LocationDescriptionCode = AccommodationConverter.GetLocationDescriptionCode(accommodation.Location.LocationDescriptionCode), PointsOfInterests = AccommodationConverter.GetPoiInfos(accommodation.Location.PointsOfInterests), IsHistoricalBuilding = accommodation.Location.IsHistoricalBuilding }, Photos = AccommodationConverter.GetPhotos(accommodation.Photos), Rating = AccommodationConverter.GetRating(accommodation.Rating), Schedule = AccommodationConverter.GetScheduleInfo(accommodation.Schedule), TextualDescriptions = textualDescriptions, Type = AccommodationConverter.GetPropertyType(accommodation.Type) }); }
public static SlimAccommodationData Convert(int id, MultilingualAccommodation accommodation, bool isActive, string language) { var name = accommodation.Name.GetValueOrDefault(language); var address = accommodation.Location.Address.GetValueOrDefault(language); var localityName = accommodation.Location.Locality?.GetValueOrDefault(language); var countryName = accommodation.Location.Country.GetValueOrDefault(language); var localityZoneName = accommodation.Location.LocalityZone?.GetValueOrDefault(language); var rating = AccommodationConverter.GetRating(accommodation.Rating); return(new SlimAccommodationData { HtId = HtId.Create(MapperLocationTypes.Accommodation, id), Name = name, Address = address, CountryName = countryName, LocalityName = localityName, LocalityZoneName = localityZoneName, Rating = rating, IsActive = isActive }); }