/// <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); }
/// <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); }
/// <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); }