private void ProcessNewRoutes(IProgressListener listener, ITransactionDataAccess dataAccess) { foreach (var routeDto in newRoutes) { var dbRoute = RouteConverter.Convert(routeDto); AddImageToRoute(dbRoute, routeDto.Image, fetchedMedia); AddTagsToRoute(dbRoute, routeDto, fetchedMedia); AddExhibitsToRoute(dbRoute, routeDto, dataAccess); dataAccess.Routes().AddRoute(dbRoute); listener.ProgressOneStep(); } }
private void ProcessUpdatedRoutes(IProgressListener listener, ITransactionDataAccess dataAccess) { var routes = dataAccess.Routes().GetRoutes().ToList(); foreach (var routeDto in updatedRoutes) { var dbRoute = routes.First(x => x.IdForRestApi == routeDto.Id); RouteConverter.Convert(routeDto, dbRoute); AddImageToRoute(dbRoute, routeDto.Image, fetchedMedia); AddTagsToRoute(dbRoute, routeDto, fetchedMedia); AddExhibitsToRoute(dbRoute, routeDto, dataAccess); if (dbRoute.DetailsDataLoaded) { IoCManager.Resolve <INewDataCenter>().AddRouteToBeUpdated(dbRoute); } listener.ProgressOneStep(); } }
public void CleanupRemovedData(ITransactionDataAccess dataAccess) { //Backup data fake id allMedias.Add(-1); var routes = dataAccess.Routes().GetRoutes().ToList(); var exhibits = dataAccess.Exhibits().GetExhibits().ToList(); var deletedExhibits = exhibits.Where(x => !allExhibits.Contains(x.IdForRestApi)).ToList(); var deletedRoutes = routes.Where(x => !allRoutes.Contains(x.IdForRestApi)); var deletedWaypoints = new List <Waypoint>(); var deletedTags = new List <RouteTag>(); var deletedImages = new List <Image>(); var deletedAudios = new List <Audio>(); var deletedPages = new List <Page>(); foreach (var route in routes) { RemoveWaypoints(route, deletedWaypoints, deletedExhibits); RemoveRouteTags(route, deletedTags, deletedImages); if (route.Image != null && !allMedias.Contains(route.Image.IdForRestApi)) { deletedImages.Add(route.Image); route.Image = null; } if (route.Audio != null && !allMedias.Contains(route.Audio.IdForRestApi)) { deletedAudios.Add(route.Audio); route.Audio = null; } } foreach (var exhibit in exhibits) { RemovePages(exhibit, deletedPages, deletedImages, deletedAudios); if (exhibit.Image != null && !allMedias.Contains(exhibit.Image.IdForRestApi)) { deletedImages.Add(exhibit.Image); exhibit.Image = null; } } foreach (var exhibit in deletedExhibits) { dataAccess.DeleteItem(exhibit); } foreach (var route in deletedRoutes) { dataAccess.DeleteItem(route); } foreach (var waypoint in deletedWaypoints) { dataAccess.DeleteItem(waypoint); } foreach (var tag in deletedTags) { dataAccess.DeleteItem(tag); } var fileManager = IoCManager.Resolve <IMediaFileManager>(); foreach (var image in deletedImages) { dataAccess.DeleteItem(image); fileManager.DeleteFile(image.DataPath); } foreach (var audio in deletedAudios) { dataAccess.DeleteItem(audio); fileManager.DeleteFile(audio.DataPath); } foreach (var page in deletedPages) { dataAccess.DeleteItem(page); } }