public async Task <HotelWithDetails> GetHotel(string travelIdentity) { var hotel = await HotelRepository.GetHotel(travelIdentity); if (hotel == null) { return(null); } var transportCategories = await HotelRepository.GetTransportCategories(hotel.HotelId); var transports = new List <HotelTransport>(); foreach (var category in transportCategories) { var transport = await HotelRepository.GetTransport(hotel.HotelId, category.Category); var tr = new HotelTransport { Category = category.Category, TransportLocations = transport.Select(t => HotelConverter.ToDomainTransportLocation(t)).ToArray() }; transports.Add(tr); } return(new HotelWithDetails { Hotel = HotelConverter.ToDomainHotel(hotel), Transport = transports }); }
async public Task AddHotelTransport(string hotelId, HotelTransport transportCategory, IEnumerable <TransportLocation> transports) { await GraphClient.ConnectAsync(); await GraphClient.Cypher .Match("(hotel:Hotel)") .Where((Hotel hotel) => hotel.HotelId == hotelId) .Create("(category:HotelTransport $category)") .WithParam("category", transportCategory) .Create("(hotel)-[r:HasTransportType]->(category)") .Return(category => category.As <HotelTransport>()) .ResultsAsync; foreach (var transport in transports) { await GraphClient.Cypher .Match("(hotel:Hotel)--(category:HotelTransport)") .Where((HotelTransport category) => category.Category == transportCategory.Category) .AndWhere((Hotel hotel) => hotel.HotelId == hotelId) .Create("(transp:TransportLocation $transp)") .WithParam("transp", transport) .Create("(category)-[r:HasTransport]->(transp)") .Return(transp => transp.As <TransportLocation>()) .ResultsAsync; } }