Exemple #1
0
        /// <summary>
        /// Inserimento di un nuovo utente in amministrazione. L'utente verrà inserito in un gruppo che contiene tutti gli utenti DocsPA.
        /// il gruppo deve già esistere su OCS!!!
        /// </summary>
        /// <param name="utente"></param>
        /// <returns></returns>
        public EsitoOperazione InserisciUtente(OrgUtente utente)
        {
            //inserisce l'utente nel gruppo dei lettori DocsPA
            EsitoOperazione ret = new EsitoOperazione();

            try
            {
                string codiceRuolo  = OCSConfigurations.GetGroupUsers();
                string codiceUtente = utente.CodiceRubrica;
                CorteContentServices.GroupRequestType groupReq = new CorteContentServices.GroupRequestType();
                CorteContentServices.ResultType       result;
                groupReq.userCredentials = OCSServices.OCSUtils.getApplicationUserCredentials();
                groupReq.group           = new CorteContentServices.GroupType();
                groupReq.group.name      = codiceRuolo;
                //bisogna specificare la descrizione perchè l'elemento non è facoltativo al momento
                groupReq.group.description     = "";
                groupReq.group.users           = new CorteContentServices.UserType[1];
                groupReq.group.users[0]        = new CorteContentServices.UserType();
                groupReq.group.users[0].userId = codiceUtente;

                result = this.WsGroupInstance.AddGroupUsers(groupReq);

                if (OCSUtils.isValidServiceResult(result))
                {
                    logger.Debug(DEBUG_HEADER + "Inserimento utente nel gruppo DocsPa: " + codiceRuolo + " completata con SUCCESSO");
                    ret.Codice = 0;
                }
                else
                {
                    logger.Debug(DEBUG_HEADER + "Inserimento utente nel gruppo DocsPa: " + codiceRuolo + " operazione con ERRORE");
                    ret.Codice      = -1;
                    ret.Descrizione = "problema su OCS: " + result.message.Replace("'", " ");
                }

                return(ret);
            }
            catch (Exception ex)
            {
                String st = ex.ToString();
                logger.Debug(DEBUG_HEADER + "InserisciUtenteInRuolo FALLITA, Exception=" + st);
                ret.Codice      = -1;
                ret.Descrizione = ERR_HEADER + "InserisciUtenteInRuolo";
                return(ret);
            }
            //throw new NotSupportedException("InserisciUtente: operazione non supportata in OCS");
        }
Exemple #2
0
        /// <summary>
        /// Elimina un utente in amministrazione
        /// </summary>
        /// <param name="utente"></param>
        /// <returns></returns>
        public EsitoOperazione EliminaUtente(OrgUtente utente)
        {
            EsitoOperazione ret = new EsitoOperazione();

            try
            {
                string codiceRuolo  = OCSConfigurations.GetGroupUsers();
                string codiceUtente = utente.UserId;
                CorteContentServices.GroupRequestType groupReq = new CorteContentServices.GroupRequestType();
                CorteContentServices.ResultType       result;
                groupReq.userCredentials = OCSServices.OCSUtils.getApplicationUserCredentials();
                groupReq.group           = new CorteContentServices.GroupType();
                groupReq.group.name      = codiceRuolo;
                //bisogna specificare la descrizione perchè l'elemento non è facoltativo al momento
                groupReq.group.description     = "";
                groupReq.group.users           = new CorteContentServices.UserType[1];
                groupReq.group.users[0]        = new CorteContentServices.UserType();
                groupReq.group.users[0].userId = codiceUtente;

                result = this.WsGroupInstance.RemoveGroupUsers(groupReq);

                if (OCSUtils.isValidServiceResult(result))
                {
                    logger.Debug(DEBUG_HEADER + "EliminaUtente completata con SUCCESSO");
                    ret.Codice = 0;
                }
                else
                {
                    logger.Debug(DEBUG_HEADER + "EliminaUtente operazione con ERRORE su OCS: " + result.message);
                    ret.Codice      = -1;
                    ret.Descrizione = "Errore in OCS: " + result.message.Replace("'", " ");
                }

                return(ret);
            }
            catch (Exception ex)
            {
                String st = ex.ToString();
                logger.Debug(DEBUG_HEADER + "EliminaUtente FALLITA, Exception=" + st);
                ret.Codice      = -1;
                ret.Descrizione = ERR_HEADER + "EliminaUtente";
                return(ret);
            }
        }
Exemple #3
0
        /// <summary>
        /// Ricerca fulltext nell'oggetto document
        ///
        /// nb: da fare anche ricerca allegati
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public ArrayList FullTextSearch(ref FullTextSearchContext context)
        {
            ArrayList result = new ArrayList();

            try
            {
                List <string> fullTextResult = null;

                if (context.SearchResultList != null && context.SearchResultList.Length > 0)
                {
                    // Ricerca già effettuata, reperimento dall'oggetto di contesto
                    // dei risultati precedenti evitando così una dispendiosa
                    // chiamata al sistema documentale
                    fullTextResult = new List <string>(context.SearchResultList);
                }
                else
                {
                    //esegue la ricerca su OCS
                    CorteContentServices.FilterSearchRequestType searchDocumentRequest = new CorteContentServices.FilterSearchRequestType();
                    //costruisco la stringa di ricerca

                    //inserire i filtri di ricerca
                    //1. il path da cui cercare
                    //2. l'ordinamento
                    //3. solo i documenti del protocollo
                    //4. ...
                    searchDocumentRequest.userCredentials                   = OCSServices.OCSUtils.getUserCredentials(_infoUtente);
                    searchDocumentRequest.filter                            = new CorteContentServices.FilterSearchType();
                    searchDocumentRequest.filter.folderPath                 = OCSConfigurations.GetDocRootFolder();
                    searchDocumentRequest.filter.includeSubFolders          = true;
                    searchDocumentRequest.filter.includeSubFoldersSpecified = true;

                    searchDocumentRequest.filter.sortClause = "CREATE_DATE DESC";
                    // Query execution
                    int startIndex = (context.RequestedPageNumber * PAGE_SIZE) - PAGE_SIZE;
                    int maxResults = this.GetMaxRowCount();
                    searchDocumentRequest.filter.count          = maxResults;
                    searchDocumentRequest.filter.countSpecified = true;
                    //l'indice in OCS parte da 1 e non da 0
                    searchDocumentRequest.filter.offset          = startIndex + 1;
                    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 operatCr1  = "CONTAINS";
                    string rightOpCr1 = context.TextToSearch;

                    searchDocumentRequest.filter.searchExpress.SearchExprType.@operator    = operatCr1;
                    searchDocumentRequest.filter.searchExpress.SearchExprType.rightOperand = rightOpCr1;

                    //SABRINA: provo ad eliminare la catgoria in modo da ottenere tutti i documenti (anche allegati e stampe registro)

                    bool profilezioneDinamica = DocsPaDB.Query_DocsPAWS.Documenti.isEnabledProfilazioneAllegati;
                    if (!profilezioneDinamica)
                    {
                        searchDocumentRequest.filter.searchExpress.SearchExprType.sameLevelOperator = "AND";

                        searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1 = new DocsPaDocumentale_OCS.CorteContentServices.SearchExprType();
                        string operatCr2  = "HAS_CATEGORY";
                        string rightOpCr2 = "[" + DocsPaObjectType.ObjectTypes.CATEGOTY_PROTOCOLLO + "]";

                        searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.@operator    = operatCr2;
                        searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.rightOperand = rightOpCr2;
                    }
                    CorteContentServices.ItemSearchListResponseType listResult;
                    listResult = this.WsDocumentInstance.SearchDocuments(searchDocumentRequest);

                    OCSUtils.throwExceptionIfInvalidResult(listResult.result);

                    fullTextResult = new List <string>();

                    foreach (CorteContentServices.ItemSearchType item in listResult.items)
                    {
                        // Reperimento docnumber

                        //NB: momentaneamente ricavo il docNumber dall'oggetto info
                        string docNumber = item.info.name.Substring(0, item.info.name.IndexOf("."));

                        if (!fullTextResult.Contains(docNumber)) // Eliminazione dei risultati duplicati
                        {
                            fullTextResult.Add(docNumber);
                        }
                    }
                }

                // Paginazione dei risultati
                if (fullTextResult != null && fullTextResult.Count > 0)
                {
                    int startIndex = (context.RequestedPageNumber * PAGE_SIZE) - PAGE_SIZE;
                    int count      = PAGE_SIZE;
                    if ((fullTextResult.Count - startIndex) < count)
                    {
                        count = (fullTextResult.Count - startIndex);
                    }

                    result = this.GetDocuments(fullTextResult.GetRange(startIndex, count).ToArray(), InfoUtente);

                    int pageCount = (fullTextResult.Count / PAGE_SIZE);
                    if ((fullTextResult.Count % PAGE_SIZE) > 0)
                    {
                        pageCount++;
                    }

                    context.SearchResultList = fullTextResult.ToArray();
                    context.TotalPageNumber  = pageCount;
                    context.TotalRecordCount = fullTextResult.Count;
                }
            }
            catch (Exception ex)
            {
                result.Clear();
            }

            return(result);
        }