private void ProcessUpdatedExhibits(IProgressListener listener, FetchedMediaData fetchedMedia, ITransactionDataAccess dataAccess) { var exhibits = dataAccess.Exhibits().GetExhibits().ToDictionary(x => x.IdForRestApi); foreach (var exhibitDto in updatedExhibits) { var dbExhibit = exhibits[exhibitDto.Id]; ExhibitConverter.Convert(exhibitDto, dbExhibit); AddImageToExhibit(dbExhibit, exhibitDto.Image, fetchedMedia); //TODO: Check if exhibit was already downloaded //if(dbExhibit.DetailsDataLoaded) //{ // IoCManager.Resolve<INewDataCenter>().AddExhibitToBeUpdated(dbExhibit); //} var removedPages = dbExhibit.Pages.Where(x => !exhibitDto.Pages.Contains(x.IdForRestApi)); foreach (var page in removedPages) { dbExhibit.Pages.Remove(page); } listener.ProgressOneStep(); } }
private void ProcessPages(string exhibitId, CancellationToken token, ITransactionDataAccess dataAccess, Dictionary <MediaDto, string> mediaToFilePath) { var fetchedMedia = mediaDataFetcher.CombineMediasAndFiles(dataAccess, mediaToFilePath); if (token.IsCancellationRequested) { return; } var exhibit = dataAccess.Exhibits().GetExhibit(exhibitId); foreach (var pageDto in pageItems) { var dbPage = PageConverter.Convert(pageDto); AddContentToPage(dbPage, pageDto, fetchedMedia); // Add Page with content to the exhibit exhibit.Pages.Add(dbPage); } // Rearrange additional information pages var pagesToBeRemoved = new List <Page>(); foreach (var pageDto in pageItems) { if (pageDto.AdditionalInformationPages.Count > 0) { foreach (var existingPageWithInfo in exhibit.Pages) { if (pageDto.Id == existingPageWithInfo.IdForRestApi) { foreach (var pageId in pageDto.AdditionalInformationPages) { foreach (var pageToBeAdded in exhibit.Pages) { if (pageToBeAdded.IdForRestApi == pageId) { existingPageWithInfo.AdditionalInformationPages.Add(pageToBeAdded); pagesToBeRemoved.Add(pageToBeAdded); break; } } } } } } } foreach (var pageToBeRemoved in pagesToBeRemoved) { exhibit.Pages.Remove(pageToBeRemoved); } exhibit.DetailsDataLoaded = true; }
private void ProcessNewExhibits(IProgressListener listener, FetchedMediaData fetchedMedia, ITransactionDataAccess dataAccess) { foreach (var exhibitDto in newExhibits) { var dbExhibit = ExhibitConverter.Convert(exhibitDto); AddImageToExhibit(dbExhibit, exhibitDto.Image, fetchedMedia); dataAccess.Exhibits().AddExhibit(dbExhibit); listener.ProgressOneStep(); } }
private void AddExhibitsToRoute(Route dbRoute, RouteDto routeDto, ITransactionDataAccess dataAccess) { var exhibits = dataAccess.Exhibits().GetExhibits().ToList(); if (routeDto.Exhibits.Count > 0) { foreach (var exhibitId in routeDto.Exhibits) { var dbExhibit = exhibits.SingleOrDefault(x => x.IdForRestApi == exhibitId); if (dbExhibit != null) { var waypoint = new Waypoint { Exhibit = dbExhibit, Location = dbExhibit.Location }; dbRoute.Waypoints.Add(waypoint); } } var removedWaypoints = dbRoute.Waypoints.Where(x => !routeDto.Exhibits.Contains(x.Exhibit.IdForRestApi)); foreach (var waypoint in removedWaypoints) { dbRoute.Waypoints.Remove(waypoint); } dbRoute.DetailsDataLoaded = false; } else { // Hide downloadbutton since there is nothing to download dbRoute.DetailsDataLoaded = true; } }
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); } }