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