/// <summary> /// Handler dell'evento di avvenuta trasmissione di un documento / fascicolo /// </summary> /// <param name="trasmissione"></param> /// <param name="infoSecurity"> /// Oggetto contenente i metadati relativi alla tipologia di ACL /// impostata nella trasmissione di un documento / fascicolo /// </param> public void TrasmissioneCompletataEventHandler(DocsPaVO.trasmissione.Trasmissione trasmissione, DocsPaVO.trasmissione.infoSecurity[] infoSecurityList) { // In caso di trasmissione con cessione diritti attivata, cambia il proprietario del documento // in OCS proprietario e non, hanno il solo diritto di lettura, quindi basta aggiornare l'acl //TODO: if (trasmissione.tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO) { // Reperimento ACL per il documento smistato bool retValue = false; try { //bisogna reperire l'id OCS UserCredentialsType credentials = OCSUtils.getApplicationUserCredentials(); long idOCS = OCSDocumentHelper.getDocumentIdOCS(trasmissione.infoDocumento.docNumber, null, credentials); //reperisco la acl del documento docspa e aggiorno quelle di OCS retValue = OCSDocumentHelper.setAclDocument(trasmissione.infoDocumento.idProfile, idOCS, this.InfoUtente, credentials); } catch (Exception ex) { retValue = false; logger.Error("Errore in OCS.TrasmissioneCompletataEventHandler", ex); } } }
/// <summary> /// Reperimento del token di autenticazione per il superuser del documentale /// </summary> /// <returns></returns> public string GetSuperUserAuthenticationToken() { UserCredentialsType credentials = OCSServices.OCSUtils.getApplicationUserCredentials(); // Creazione token di autenticazione return(this.GetAuthenticationToken(credentials.userId, credentials.password)); }
/// <summary> /// Reperimento credenziali OCS da superutente /// </summary> /// <returns></returns> public static UserCredentialsType getApplicationUserCredentials() { UserCredentialsType userCred = new UserCredentialsType(); userCred.userId = OCSConfigurations.GetSuperUser(); userCred.password = OCSConfigurations.GetSuperUserPwd(); return(userCred); }
/// <summary> /// /// </summary> /// <param name="docNumber"></param> /// <param name="versionId"></param> /// <param name="ocsCredentials">Credenziali per effettuare l'operazione in ocs</param> /// <returns></returns> public static long getAttachIdOCS(string docNumber, string versionId, UserCredentialsType ocsCredentials) { long idOCS = -1; //Reperimento idOCS in base al path e al nome del documento string pathDoc = DocsPaServices.DocsPaQueryHelper.getDocumentPath(docNumber); string nameDoc = DocsPaServices.DocsPaQueryHelper.getDocumentName(docNumber, versionId); if (pathDoc != null) { idOCS = getIdOCSByPath(pathDoc, nameDoc, ocsCredentials); } return(idOCS); }
/// <summary> /// Reperimento credenziali OCS per l'utente richiesto /// </summary> /// <param name="infoUtente"></param> /// <returns></returns> public static UserCredentialsType getUserCredentials(InfoUtente infoUtente) { CorteContentServices.UserCredentialsType userCred = new UserCredentialsType(); string decryptedToken = OCSServices.OCSTokenHelper.Decrypt(infoUtente.dst); // Creazione oggetto RepositoryIdentity if (!string.IsNullOrEmpty(decryptedToken)) { string[] items = decryptedToken.Split('|'); if (items.Length == 2) { userCred.userId = items[0]; userCred.password = items[1]; } } return(userCred); }
/// <summary> /// Accesso ad OCS usando il metodo GetDocumentByName /// </summary> /// <param name="path"></param> /// <param name="name"></param> /// <param name="ocsCredentials">Credenziali per effettuare l'operazione in ocs</param> /// <returns></returns> private static long getIdOCSByPath(string path, string name, UserCredentialsType ocsCredentials) { CorteContentServices.DocumentNameSearchRequestType nameReq = new CorteContentServices.DocumentNameSearchRequestType(); CorteContentServices.ItemIdResponseType itemIdResp; nameReq.userCredentials = ocsCredentials; nameReq.document = new DocsPaDocumentale_OCS.CorteContentServices.DocumentNameSearchType(); nameReq.document.info = new DocsPaDocumentale_OCS.CorteContentServices.InfoType(); nameReq.document.info.location = path; nameReq.document.info.name = name; DocumentManagementSOAPHTTPBinding wsDocument = OCSServiceFactory.GetDocumentServiceInstance <DocumentManagementSOAPHTTPBinding>(); itemIdResp = wsDocument.GetDocumentByName(nameReq); OCSUtils.throwExceptionIfInvalidResult(itemIdResp.result); return(itemIdResp.itemId); }
/// <summary> /// Handler dell'evento di avvenuto smistamento di un documento ad un ruolo /// </summary> /// <param name="mittente"></param> /// <param name="documento"></param> /// <param name="ruolo"></param> /// <param name="accessRights"></param> public void SmistamentoDocumentoCompletatoEventHandler(DocsPaVO.Smistamento.MittenteSmistamento mittente, DocsPaVO.Smistamento.DocumentoSmistamento documento, DocsPaVO.Smistamento.RuoloSmistamento ruolo, string accessRights) { // Reperimento ACL per il documento smistato bool retValue = false; try { //bisogna reperire l'id OCS UserCredentialsType credentials = OCSUtils.getApplicationUserCredentials(); long idOCS = OCSDocumentHelper.getDocumentIdOCS(documento.DocNumber, null, credentials); //reperisco la acl del documento docspa e aggiorno quelle di OCS retValue = OCSDocumentHelper.setAclDocument(documento.IDDocumento, idOCS, this.InfoUtente, credentials); } catch (Exception ex) { retValue = false; logger.Debug("Errore in OCS.SmistamentoDocumentoCompletatoEventHandler", ex); } return; }
/// <summary> /// <summary> /// /// </summary> /// <param name="docNumber"></param> /// <param name="versionId"></param> /// <param name="path"></param> /// <param name="name"></param> /// <param name="ocsCredentials">Credenziali per effettuare l'operazione in ocs</param> /// <returns></returns> public static long getDocumentIdOCSByPath(string docNumber, string versionId, string path, string name, UserCredentialsType ocsCredentials) { long idOCS = -1; //Reperimento idOCS in base al path e al nome del documento string pathDoc = path; if (pathDoc == null || pathDoc.Equals("")) { pathDoc = DocsPaServices.DocsPaQueryHelper.getDocumentPath(docNumber); } string nameDoc = name; if (nameDoc == null || nameDoc.Equals("")) { nameDoc = DocsPaServices.DocsPaQueryHelper.getDocumentName(docNumber, versionId); } if (pathDoc != null) { idOCS = getIdOCSByPath(pathDoc, nameDoc, ocsCredentials); } return(idOCS); }
/// <summary> /// Ricerca dell'id in ocs del documento in docspa /// </summary> /// <param name="idDocsPa"> /// Id del documento in docspa da cercare in ocs /// </param> /// <param name="documentCategoryName"> /// Categoria di appartenenza del documento /// </param> /// <param name="categoryFieldName"> /// Campo della categoria in base a cui cercare il documento /// </param> /// <param name="searchInCestino"> /// Se true, indica di cercare il documento nel cestino /// </param> /// <param name="ocsCredentials"></param> /// <returns> /// Corrispondente id in ocs del documento /// </returns> public static long getIdDocument(string idDocsPa, string documentCategoryName, string categoryFieldName, bool searchInCestino, UserCredentialsType ocsCredentials) { long idOCS = -1; //Reperimento idOCS in base ad una ricerca CorteContentServices.FilterSearchRequestType searchDocumentRequest = new CorteContentServices.FilterSearchRequestType(); searchDocumentRequest.userCredentials = ocsCredentials; searchDocumentRequest.filter = new CorteContentServices.FilterSearchType(); if (searchInCestino) { // Ricerca del documento nella cartella del cestino searchDocumentRequest.filter.folderPath = OCSConfigurations.GetPathCestino(); } else { // Ricerca del documento a partire dalla root path della libreria ocs corrente searchDocumentRequest.filter.folderPath = OCSConfigurations.GetDocRootFolder(); } searchDocumentRequest.filter.includeSubFolders = true; searchDocumentRequest.filter.includeSubFoldersSpecified = true; searchDocumentRequest.filter.count = 0; searchDocumentRequest.filter.countSpecified = true; searchDocumentRequest.filter.offset = 0; searchDocumentRequest.filter.offsetSpecified = true; searchDocumentRequest.filter.searchExpress = new DocsPaDocumentale_OCS.CorteContentServices.searchExpress(); searchDocumentRequest.filter.searchExpress.SearchExprType = new DocsPaDocumentale_OCS.CorteContentServices.SearchExprType(); string leftOpCr1 = string.Format("[{0}:{1}]", documentCategoryName, categoryFieldName); string operatCr1 = "EQUAL"; string rightOpCr1 = idDocsPa; searchDocumentRequest.filter.searchExpress.SearchExprType.leftOperand = leftOpCr1; searchDocumentRequest.filter.searchExpress.SearchExprType.@operator = operatCr1; searchDocumentRequest.filter.searchExpress.SearchExprType.rightOperand = rightOpCr1; searchDocumentRequest.filter.searchExpress.SearchExprType.sameLevelOperator = "AND"; searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1 = new DocsPaDocumentale_OCS.CorteContentServices.SearchExprType(); string operatCr2 = "HAS_CATEGORY"; string rightOpCr2 = string.Format("[{0}]", documentCategoryName); searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.@operator = operatCr2; searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.rightOperand = rightOpCr2; CorteContentServices.ItemSearchListResponseType listResult; DocumentManagementSOAPHTTPBinding wsDocument = OCSServiceFactory.GetDocumentServiceInstance <DocumentManagementSOAPHTTPBinding>(); listResult = wsDocument.SearchDocuments(searchDocumentRequest); OCSUtils.throwExceptionIfInvalidResult(listResult.result); // Reperimento itemId if (listResult.items != null && listResult.items.Length == 1) { idOCS = listResult.items[0].itemId; } return(idOCS); }
///// <summary> ///// ///// </summary> ///// <param name="docNumber"></param> ///// <param name="folderPath"></param> ///// <param name="ocsCredentials">Credenziali per effettuare l'operazione in ocs</param> ///// <returns></returns> //public static long getGeneralDocumentIdOCSBySearch(string docNumber, string folderPath, UserCredentialsType ocsCredentials) //{ // long idOCS = -1; // //Reperimento idOCS in base ad una ricerca // CorteContentServices.FilterSearchRequestType searchDocumentRequest = new CorteContentServices.FilterSearchRequestType(); // searchDocumentRequest.userCredentials = ocsCredentials; // searchDocumentRequest.filter = new CorteContentServices.FilterSearchType(); // if (folderPath != null) // searchDocumentRequest.filter.folderPath = folderPath; // searchDocumentRequest.filter.includeSubFolders = true; // searchDocumentRequest.filter.includeSubFoldersSpecified = true; // searchDocumentRequest.filter.count = 0; // searchDocumentRequest.filter.countSpecified = true; // searchDocumentRequest.filter.offset = 0; // searchDocumentRequest.filter.offsetSpecified = true; // searchDocumentRequest.filter.searchExpress = new DocsPaDocumentale_OCS.CorteContentServices.searchExpress(); //TODO: da fare!!! // searchDocumentRequest.filter.searchExpress.SearchExprType = new DocsPaDocumentale_OCS.CorteContentServices.SearchExprType(); // string leftOpCr1 = "[" + DocsPaObjectType.ObjectTypes.CATEGOTY_PROTOCOLLO + ":" + DocsPaObjectType.TypeDocumentoProtocollo.DOC_NUMBER + "]"; // string operatCr1 = "EQUAL"; // string rightOpCr1 = docNumber; // searchDocumentRequest.filter.searchExpress.SearchExprType.leftOperand = leftOpCr1; // searchDocumentRequest.filter.searchExpress.SearchExprType.@operator = operatCr1; // searchDocumentRequest.filter.searchExpress.SearchExprType.rightOperand = rightOpCr1; // searchDocumentRequest.filter.searchExpress.SearchExprType.sameLevelOperator = "OR"; // searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1 = new DocsPaDocumentale_OCS.CorteContentServices.SearchExprType(); // string leftOpCr2 = "[" + DocsPaObjectType.ObjectTypes.CATEGOTY_STAMPA_REGISTRO + ":" + DocsPaObjectType.TypeDocumentoStampaRegistro.DOC_NUMBER + "]"; // string operatCr2 = "EQUAL"; // string rightOpCr2 = docNumber; // searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.@operator = operatCr2; // searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.rightOperand = rightOpCr2; // searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.leftOperand = leftOpCr2; // searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.sameLevelOperator = "OR"; // searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.SearchExprType1 = new DocsPaDocumentale_OCS.CorteContentServices.SearchExprType(); // string leftOpCr3 = "[" + DocsPaObjectType.ObjectTypes.CATEGOTY_ALLEGATO + ":" + DocsPaObjectType.TypeDocumentoAllegato.DOC_NUMBER + "]"; // string operatCr3 = "EQUAL"; // string rightOpCr3 = docNumber; // searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.SearchExprType1.@operator = operatCr3; // searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.SearchExprType1.rightOperand = rightOpCr3; // searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.SearchExprType1.leftOperand = leftOpCr3; // CorteContentServices.ItemSearchListResponseType listResult; // DocumentManagementSOAPHTTPBinding wsDocument = OCSServiceFactory.GetDocumentServiceInstance<DocumentManagementSOAPHTTPBinding>(); // listResult = wsDocument.SearchDocuments(searchDocumentRequest); // OCSUtils.throwExceptionIfInvalidResult(listResult.result); // // Reperimento itemId // if (listResult.items != null && listResult.items.Length == 1) // idOCS = listResult.items[0].itemId; // return idOCS; //} /// <summary> /// Ricerca dell'id in ocs del documento in docspa /// </summary> /// <param name="idDocsPa"></param> /// <param name="documentCategoryName"></param> /// <param name="categoryFieldName"></param> /// <param name="ocsCredentials"></param> /// <returns></returns> public static long getIdDocument(string idDocsPa, string documentCategoryName, string categoryFieldName, UserCredentialsType ocsCredentials) { return(getIdDocument(idDocsPa, documentCategoryName, categoryFieldName, false, ocsCredentials)); }
/// <summary> /// Rimozione delle ACL per un documento /// </summary> /// <param name="idDocsPa">ID del documento in docspa</param> /// <param name="idOcs">ID del documento in ocs</param> /// <param name="infoUtente">Credenziali docspa</param> /// <param name="ocsCredentials">Credenziali per effettuare l'operazione in ocs</param> /// <returns></returns> public static bool removeAclDocument(string idDocsPa, long idOcs, InfoUtente infoUtente, UserCredentialsType ocsCredentials) { CorteContentServices.GrantsType grants; CorteContentServices.ItemGrantsRequestType itemGrantsRequest; CorteContentServices.ItemGrantsType itemGrantsType; CorteContentServices.ResultType resultGrants; grants = OCSServices.OCSUtils.getAclSecurity(idDocsPa); itemGrantsRequest = new CorteContentServices.ItemGrantsRequestType(); itemGrantsRequest.userCredentials = ocsCredentials; itemGrantsType = new CorteContentServices.ItemGrantsType(); itemGrantsType.itemId = idOcs; itemGrantsType.grants = grants; itemGrantsRequest.grants = itemGrantsType; DocumentManagementSOAPHTTPBinding wsDocumentInstance = OCSServiceFactory.GetDocumentServiceInstance <DocumentManagementSOAPHTTPBinding>(); resultGrants = wsDocumentInstance.RemoveDocumentGrants(itemGrantsRequest); OCSUtils.throwExceptionIfInvalidResult(resultGrants); return(true); }