示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="schedaDoc"></param>
        /// <param name="enableUffRef"></param>
        /// <param name="saveUffRef"></param>
        /// <returns></returns>
        private static DocsPaVO.documento.SchedaDocumento salvaModifiche(DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.documento.SchedaDocumento schedaDoc, bool enableUffRef, out bool saveUffRef)
        {
            if (!AllegatiManager.isEnabledProfilazioneAllegati() && schedaDoc.documentoPrincipale != null)
            {
                string errorMessage = "Errore nell'operazione 'BusinessLogic.Documenti.DocSave.salvaModifiche': la profilazione dell'allegato non è attivata.";

                logger.Debug(errorMessage);
                throw new ApplicationException(errorMessage);
            }

            logger.Debug("salvaModifiche");
            bool daAggiornareUffRef = false;

            DocsPaDocumentale.Documentale.DocumentManager documentManager = new DocsPaDocumentale.Documentale.DocumentManager(infoUtente);
            if (!documentManager.SalvaDocumento(schedaDoc, enableUffRef, out daAggiornareUffRef))
            {
                string msg = "Errore nel'operazione di salva modifiche del documento";
                logger.Debug(msg);
                throw new ApplicationException(msg);
            }

            saveUffRef = daAggiornareUffRef;
            //AS400
            if (schedaDoc != null && schedaDoc.protocollo != null &&
                schedaDoc.protocollo.segnatura != null &&
                schedaDoc.protocollo.segnatura != "")
            {
                AS400.AS400.setAs400(schedaDoc, DocsPaAS400.Constants.CREATE_MODIFY_OPERATION);
            }

            return(schedaDoc);
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="userInfo"></param>
        /// <param name="idDocument"></param>
        /// <param name="toState"></param>
        /// <param name="bypassFinalStateCheck">
        /// Se true, indica di non effettuare i controlli sul consolidamento di un documento in stato finale
        /// </param>
        /// <returns></returns>
        internal static DocsPaVO.documento.DocumentConsolidationStateInfo ConsolidateNoSecurity(DocsPaVO.utente.InfoUtente userInfo, string idDocument, DocsPaVO.documento.DocumentConsolidationStateEnum toState, bool bypassFinalStateCheck)
        {
            bool cont = true;

            //if (!HasDocumentConsolidationRights(userInfo))
            //    throw new ApplicationException(string.Format("L'utente {0} non dispone dei diritti necessari per effettuare l'operazione di consolidamento", userInfo.userId));

            // Reperimento stato di consolidamento del documento richiesto
            DocsPaVO.documento.SchedaDocumento savedDocument = BusinessLogic.Documenti.DocManager.getDettaglioNoSecurity(userInfo, idDocument);

            if (savedDocument.documentoPrincipale != null)
            {
                cont = false;
            }

            if (savedDocument.checkOutStatus != null)
            {
                cont = false;
            }

            // Verifica sei il documento si trova nello stato finale
            if (!bypassFinalStateCheck)
            {
                DocsPaVO.DiagrammaStato.Stato workflowState = BusinessLogic.DiagrammiStato.DiagrammiStato.getStatoDoc(savedDocument.docNumber);
                if (workflowState != null && workflowState.STATO_FINALE)
                {
                    cont = false;
                }
            }

            //// Verifica dei diritti di lettura / scrittura sul documento
            //int accessRights;
            //Int32.TryParse(savedDocument.accessRights, out accessRights);
            //if (accessRights > 0 && accessRights < 63)
            //    throw new ApplicationException(string.Format("L'utente {0} non dispone dei diritti di lettura / scrittura sul documento necessari per effettuare l'operazione di consolidamento", userInfo.userId));

            DocsPaVO.documento.DocumentConsolidationStateInfo state = savedDocument.ConsolidationState;

            // Controllo sullo stato di destinazione
            if (toState <= state.State)
            {
                cont = false;
            }

            // Un documento predisposto alla protocollazione non può essere consolidato in quanto rappresenta uno stato intermedio
            if (savedDocument.predisponiProtocollazione)
            {
                cont = false;
            }

            if (cont)
            {
                using (DocsPaDB.TransactionContext transactionalContext = new DocsPaDB.TransactionContext())
                {
                    // Operazione di consolidamento
                    DocsPaDB.Query_DocsPAWS.DocumentConsolidation consolidationDb = new DocsPaDB.Query_DocsPAWS.DocumentConsolidation(userInfo);
                    state = consolidationDb.SetState(idDocument, toState);

                    // Operazione di consolidamento sui singoli allegati del documento
                    foreach (DocsPaVO.documento.Allegato attatchment in AllegatiManager.getAllegati(idDocument, string.Empty))
                    {
                        DocsPaVO.documento.DocumentConsolidationStateInfo attState = null;
                        attState = consolidationDb.SetState(attatchment.docNumber, toState);
                    }

                    transactionalContext.Complete();
                }
            }

            return(state);
        }
示例#3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="userInfo"></param>
        /// <param name="idDocument"></param>
        /// <param name="toState"></param>
        /// <param name="bypassFinalStateCheck">
        /// Se true, indica di non effettuare i controlli sul consolidamento di un documento in stato finale
        /// </param>
        /// <returns></returns>
        internal static DocsPaVO.documento.DocumentConsolidationStateInfo Consolidate(DocsPaVO.utente.InfoUtente userInfo, string idDocument, DocsPaVO.documento.DocumentConsolidationStateEnum toState, bool bypassFinalStateCheck)
        {
            if (!HasDocumentConsolidationRights(userInfo))
            {
                throw new ApplicationException(string.Format("L'utente {0} non dispone dei diritti necessari per effettuare l'operazione di consolidamento", userInfo.userId));
            }

            // Reperimento stato di consolidamento del documento richiesto
            DocsPaVO.documento.SchedaDocumento savedDocument = BusinessLogic.Documenti.DocManager.getDettaglio(userInfo, idDocument, idDocument);

            if (savedDocument.documentoPrincipale != null)
            {
                throw new ApplicationException("Il documento risulta un allegato di un altro documento, pertanto non può essere consolidato singolarmente");
            }

            if (savedDocument.checkOutStatus != null)
            {
                throw new ApplicationException(string.Format("Il documento risulta bloccato dall'utente {0}, pertanto non può essere consolidato", savedDocument.checkOutStatus.UserName));
            }

            if (BusinessLogic.LibroFirma.LibroFirmaManager.IsDocOrAllInLibroFirma(savedDocument.docNumber))
            {
                throw new ApplicationException("Il documento o uno dei suoi allegati risulta coinvolto in un processo di firma, pertanto non può essere consolidato ");
            }

            // Verifica sei il documento si trova nello stato finale
            if (!bypassFinalStateCheck)
            {
                DocsPaVO.DiagrammaStato.Stato workflowState = BusinessLogic.DiagrammiStato.DiagrammiStato.getStatoDoc(savedDocument.docNumber);
                if (workflowState != null && workflowState.STATO_FINALE)
                {
                    throw new ApplicationException("Il documento risulta in stato finale");
                }
            }

            // Verifica dei diritti di lettura / scrittura sul documento
            int accessRights;

            Int32.TryParse(savedDocument.accessRights, out accessRights);
            if (accessRights > 0 && accessRights < 63)
            {
                throw new ApplicationException(string.Format("L'utente {0} non dispone dei diritti di lettura / scrittura sul documento necessari per effettuare l'operazione di consolidamento", userInfo.userId));
            }

            DocsPaVO.documento.DocumentConsolidationStateInfo state = savedDocument.ConsolidationState;

            // Controllo sullo stato di destinazione
            if (toState <= state.State)
            {
                throw new ApplicationException(string.Format("Il documento è attualmente in stato '{1}'",
                                                             idDocument,
                                                             DocsPaVO.documento.DocumentConsolidationStateDescriptionAttribute.GetDescription(state.State)));
            }

            // Un documento predisposto alla protocollazione non può essere consolidato in quanto rappresenta uno stato intermedio
            if (savedDocument.predisponiProtocollazione)
            {
                throw new ApplicationException("Il documento risulta predisposto alla protocollazione e non può essere consolidato");
            }

            using (DocsPaDB.TransactionContext transactionalContext = new DocsPaDB.TransactionContext())
            {
                // Operazione di consolidamento
                DocsPaDB.Query_DocsPAWS.DocumentConsolidation consolidationDb = new DocsPaDB.Query_DocsPAWS.DocumentConsolidation(userInfo);
                state = consolidationDb.SetState(idDocument, toState);

                // Operazione di consolidamento sui singoli allegati del documento
                foreach (DocsPaVO.documento.Allegato attatchment in AllegatiManager.getAllegati(idDocument, string.Empty))
                {
                    DocsPaVO.documento.DocumentConsolidationStateInfo attState = null;
                    attState = consolidationDb.SetState(attatchment.docNumber, toState);
                }

                transactionalContext.Complete();
            }

            return(state);
        }