Exemplo n.º 1
0
        /// <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());
        }
Exemplo n.º 2
0
        /// <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());
        }