Example #1
0
        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;
            }
        }