/// <summary> /// Apre a modifiche una DocumentUnit e le relative Aggregate a meno che una queste non sia già stata Preservata /// </summary> /// <param name="idDocumentUnit"></param> public DocumentUnit UdsOpenDocumentUnit(Guid idDocumentUnit) { bool isReadOnly; bool isPreserved; var docUnit = UdsGetDocumentUnitModel(idDocumentUnit, out isReadOnly, out isPreserved); //già aperta if (!isReadOnly) { return(docUnit.Convert()); } //preservata, non si può fare if (isPreserved) { throw DocumentUnitAggregateException.Preserved(); } //apre la unit docUnit.CloseDate = null; //apre gli aggregaati var aggregates = UdsGetUnitAggregates(docUnit.IdDocumentUnit); foreach (var aggregate in aggregates) { aggregate.CloseDate = null; } if (requireSave) { this.db.SaveChanges(); } return(docUnit.Convert()); }
/// <summary> /// Apre una DocumentUnitAggregate a meno che una queste non sia già stata Preservata e tutte le relative DocumentUnit /// </summary> /// <param name="idDocumentUnit"></param> public DocumentUnitAggregate UdsOpenDocumentUnitAggregate(Guid idAggregate) { bool isReadOnly; bool isPreserved; var aggregate = UdsGetDocumentUnitAggregateModel(idAggregate, out isReadOnly, out isPreserved); //già aperta if (!isReadOnly) { return(aggregate.Convert()); } //preservata, non si può fare if (isPreserved) { throw DocumentUnitAggregateException.Preserved(); } //apre la unit aggregate.CloseDate = null; //apre le units var units = UdsGetAggregateChain(aggregate.IdAggregate); foreach (var unit in units) { unit.CloseDate = null; } if (requireSave) { this.db.SaveChanges(); } return(aggregate.Convert()); }