Beispiel #1
0
        private static DocumentVersionExpiry createVersionExpiry(DocumentArchive.Document document, DocumentArchive.Version version)
        {
            DocumentVersionExpiry dbExp = new DocumentVersionExpiry()
            {
                VersionNumber = version.Number,
                documentId    = document.Id,
                ExpiryDate    = version.ExpiryDate,
                ModifyingUser = version.User
            };

            return(dbExp);
        }
Beispiel #2
0
        public void PersistDocument(DocumentArchive.Document document)
        {
            Entities ent   = new Entities();
            Document dbDoc = ent.Documents
                             .Include(x => x.DocumentVersions)
                             .Include(x => x.DocumentVersions.Select(x1 => x1.DocumentVersionExpiries))
                             .Include(x => x.Roles)
                             .Include(x => x.DocumentMetaValues)
                             .SingleOrDefault(p => p.ID == document.Id);

            if (dbDoc == null)
            {
                //Create Document
                dbDoc = createDocument(document, dbDoc);
                ent.Documents.Add(dbDoc);
            }
            else
            {
                //Update Document
                updateDocument(document, dbDoc);
            }

            foreach (DocumentArchive.Version version in document.GetVersionHistory().OrderBy(p => p.Number))
            {
                DocumentVersion dbVersion = dbDoc.DocumentVersions.SingleOrDefault(p => p.VersionNumber == version.Number);
                if (dbVersion == null)
                {
                    //Create Version
                    dbVersion = createVersion(document, version, dbVersion);
                    ent.DocumentVersions.Add(dbVersion);

                    DocumentVersionExpiry dbExp = createVersionExpiry(document, version);
                    dbVersion.DocumentVersionExpiries.Add(dbExp);
                }
                else
                {
                    //Check if Expiry Date changed
                    DocumentVersionExpiry dbCurrentExpiry = dbVersion.DocumentVersionExpiries.OrderByDescending(p => p.ExpiryDate).First();
                    if (version.ExpiryDate != dbCurrentExpiry.ExpiryDate)
                    {
                        DocumentVersionExpiry dbExp = createVersionExpiry(document, version);
                        dbVersion.DocumentVersionExpiries.Add(dbExp);
                    }
                }
            }

            updateMetaValues(document, dbDoc);
            updateRoles(ent, document, dbDoc);
            ent.SaveChanges();
        }