private Model.DocumentUnit UdsGetDocumentUnitModel(Guid idDocumentUnit, out bool isReadOnly, out bool isPreserved) { isReadOnly = false; isPreserved = false; var unit = this.db.DocumentUnit .Include("DocumentUnitAggregate") .SingleOrDefault(p => p.IdDocumentUnit == idDocumentUnit); if (unit == null) { throw DocumentUnitException.NotFound(); } if (unit.CloseDate != null) { isReadOnly = true; } foreach (var aggregate in unit.DocumentUnitAggregate) { isReadOnly = isReadOnly || (aggregate.CloseDate != null || aggregate.PreservationDate != null); isPreserved = isPreserved || aggregate.PreservationDate != null; } return(unit); }
/// <summary> /// Aggiunge una nuova DocumentUnit /// </summary> /// <param name="unit">DocumentUnit da aggiungere</param> /// <returns>DocumentUnit inserita</returns> public DocumentUnit UdsAddDocumentUnit(DocumentUnit unit) { try { if (unit == null) { throw DocumentUnitException.NotFound(); } var entity = new Model.DocumentUnit { IdDocumentUnit = Guid.NewGuid(), InsertDate = DateTime.Now, CloseDate = null, Identifier = unit.Identifier ?? "", Subject = unit.Subject ?? "", Classification = unit.Classification ?? "", UriFascicle = unit.UriFascicle ?? "", XmlDoc = unit.XmlDoc ?? "" }; this.db.DocumentUnit.AddObject(entity); if (requireSave) { this.db.SaveChanges(); } var ret = entity.Convert(0, 3); return(ret); } finally { Dispose(); } }
private Model.DocumentUnit UdsGetDocumentUnitByIdentifierModel(string identifierDocumentUnit) { var unit = this.db.DocumentUnit .SingleOrDefault(p => p.Identifier == identifierDocumentUnit); if (unit == null) { throw DocumentUnitException.NotFound(); } return(unit); }
private Model.DocumentUnit UdsTryEditDocumentUnit(Guid idDocumentUnit) { bool isReadOnly; bool isPreserved; var docUnit = UdsGetDocumentUnitModel(idDocumentUnit, out isReadOnly, out isPreserved); if (isReadOnly) { throw DocumentUnitException.ReadOnly(); } return(docUnit); }
/// <summary> /// Collega Documenti ad una DocumentUnit esistente /// </summary> /// <param name="idDocumentUnit"></param> /// <param name="documents"></param> /// <param name="checkUnitExist">Verifica l'esistenza della document unit prima di collegare i documenti (default true)</param> /// <returns>N.di documenti collegati</returns> public int UdsDocumentUnitAddDocuments(Guid idDocumentUnit, DocumentUnitChain[] documents, bool checkUnitExist = true) { try { //trova document unit if (checkUnitExist) { UdsTryEditDocumentUnit(idDocumentUnit); } //determina se i documenti passati sono tutti capo catena validi var docs = documents.Select(x => x.IdParentBiblos).ToArray(); var query = this.db.Document.Where( x => !x.IdParentBiblos.HasValue && x.IsVisible == 1 && docs.Contains(x.IdDocument)).ToArray(); var notFounds = query.Where(x => !docs.Contains(x.IdDocument)).Select(x => x.IdDocument.ToString()).ToArray(); if (notFounds.Count() > 0) { throw DocumentUnitException.InvalidDocuments(notFounds); } foreach (var doc in documents) { var entity = new Model.DocumentUnitChain { IdDocumentUnit = idDocumentUnit, IdParentBiblos = doc.IdParentBiblos, Name = doc.Name }; this.db.DocumentUnitChain.AddObject(entity); } int count = 0; if (requireSave) { count = this.db.SaveChanges(); } return(count); } finally { Dispose(); } }