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"));
        }
Beispiel #3
0
 public DocumentInfo(ContentDocument document, SuccessfulSync sync, ContentDistribution contentDistribution)
 {
     Document            = document;
     Sync                = sync;
     ContentDistribution = contentDistribution;
 }