コード例 #1
0
        public async Task <IEnumerable <CityWalk> > GetCityWalks(string travelIdentity)
        {
            var dbWalks = await CityWalkRepository.GetCityWalks(travelIdentity);

            if (!dbWalks.Any())
            {
                return(new List <CityWalk>());
            }
            var domainWalks = new List <CityWalk>();

            foreach (var walk in dbWalks)
            {
                var dbPoints = await CityWalkRepository.GetWayPoints(walk.CityWalkId);

                var domainPoints = new List <WayPoint>();
                foreach (var point in dbPoints)
                {
                    var dbPoi = await CityWalkRepository.GetPoi(point.WayPointId);

                    var dbAttributions = await PoiRepository.GetPoiAttributions(dbPoi.PoiId);

                    var domainAttributions = dbAttributions.Select(a => PoiConverter.ToDomainAttribution(a));
                    var domainPoi          = PoiConverter.ToDomainPoi(dbPoi);
                    domainPoi.Attribution = domainAttributions.ToArray();
                    var domainPoint = CityWalkConverter.ToDomainWayPoint(point, domainPoi);
                    domainPoints.Add(domainPoint);
                }
                var domainWalk = CityWalkConverter.ToDomainCityWalk(walk, domainPoints.ToArray());
                domainWalks.Add(domainWalk);
            }
            return(domainWalks.ToArray());
        }
コード例 #2
0
        public async Task AddCityWalk(CityWalk newWalk, string travelIdentity)
        {
            var location = await LocationRepository.GetLocation(travelIdentity);

            var dbWalk = CityWalkConverter.ToDbCityWalk(newWalk);
            var walk   = await CityWalkRepository.AddCityWalk(dbWalk, travelIdentity, location.LocationId);

            foreach (var domainPoint in newWalk.WayPoints)
            {
                var dbPoint = CityWalkConverter.ToDbWayPoint(domainPoint);
                var point   = await CityWalkRepository.AddWayPoint(dbPoint, walk.CityWalkId);

                var poi = PoiConverter.ToDbPoi(domainPoint.Poi);
                if (domainPoint.Poi.Attribution != null)
                {
                    var attributions = domainPoint.Poi.Attribution.Select(a => PoiConverter.ToDbAttribution(a)).ToList();
                    await PoiRepository.AddAttributionToPoi(poi.PoiId, attributions);
                }
                await PoiRepository.AddPoiToWayPoint(poi, point.WayPointId, location.LocationId);
            }
        }