Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        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();
            }
        }
Exemplo n.º 3
0
        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);
            }
        }