private IList <ContentDocument> FilterUsedDocuments(IList <ContentDocument> docMetadata, User currentUser, IList <Model.Models.CategoryContent> categoryContents = null) { categoryContents = categoryContents ?? new CategoryContent(_store).GetFromSoup(); List <string> documentsInCategories = categoryContents.Select(cc => cc.ContentId15).ToList(); var docsUserOrPrivateLib = docMetadata.Where(cd => (cd.OwnerId == currentUser.Id && cd.PublishStatus == "R") || documentsInCategories.Contains(cd.Id15)).ToList(); var docsLocal = SuccessfulSyncState.Instance.GetAllVersionedsSyncsFromSoupIndexedByDocId(); var delta = new List <ContentDocument>(); foreach (var item in docsUserOrPrivateLib) { SuccessfulSync ss = null; var isAlreadyStoredLocally = docsLocal.TryGetValue(item.Id, out ss); if ((!isAlreadyStoredLocally || item.LatestPublishedVersionId == ss.DocVersionId) && isAlreadyStoredLocally) { continue; } delta.Add(item); if (isAlreadyStoredLocally && item.LatestPublishedVersionId != ss.DocVersionId) { var versionDataFolder = VersionDataFolder.Instance; versionDataFolder.DeleteVersionDataIdWithContent(item.Id, ss.SyncId); //TODO: remove old version } } return(delta); }
private JObject SaveStateToSoup(SyncState state, string transactionItemType, DateTime lastModifiedDate) { if (state == null || state.Status != SyncState.SyncStatusTypes.Done) { throw new SyncException("Only SyncStatusTypes.Done can be saved to soup."); } var syncItem = new SuccessfulSync() { SyncId = state.Id.ToString(), TransactionItemType = transactionItemType, LastModifiedDate = lastModifiedDate }; var sync = JObject.FromObject(syncItem); return(_store.Upsert(SoupName, sync, "TransactionItemType")); }
public DocumentInfo(ContentDocument document, SuccessfulSync sync, ContentDistribution contentDistribution) { Document = document; Sync = sync; ContentDistribution = contentDistribution; }