Ejemplo n.º 1
0
        /// <summary>
        /// Funzione per la lettura dei dati da una riga del foglio excel
        /// </summary>
        /// <param name="row">La riga del foglio excel da cui estrarre i dati</param>
        /// <param name="userInfo">Le informazioni sull'utente che ha lanciato la procedura</param>
        /// <param name="role">Il ruolo dell'utente che ha lanciato la procedura</param>
        /// <param name="isEnabledPregressi">Il ruolo dell'utente che ha lanciato la procedura</param>
        /// <returns>Un oggetto con le informazioni estratte dal foglio excel</returns>
        protected override DocumentRowData ReadDataFromCurrentRow(OleDbDataReader row, InfoUtente userInfo, Ruolo role, bool isEnabledPregressi)
        {
            // L'oggetto da restituire
            DocumentRowData toReturn = new DocumentRowData();
            List <string>   colonne  = new List <string>();

            for (int i = 0; i < row.FieldCount; i++)
            {
                colonne.Add(row.GetName(i));
            }

            // Prelevamento dell'ordinale
            toReturn.OrdinalNumber = row["Ordinale"].ToString().Trim();

            // Prelevamento del codice dell'amministrazione
            toReturn.AdminCode = row["Codice Amministrazione"].ToString().Trim();

            // Prelevamento del numero da assegnare al protocollo e della data di protocollazione
            if (isEnabledPregressi)
            {
                if (colonne.Contains("Numero di protocollo"))
                {
                    toReturn.ProtocolNumber = row["Numero di protocollo"].ToString().Trim();
                }

                if (colonne.Contains("Data protocollo"))
                {
                    if (String.IsNullOrEmpty(row["Data protocollo"].ToString()))
                    {
                        toReturn.ProtocolDate = DateTime.Now;
                    }
                    else
                    {
                        toReturn.ProtocolDate = DateTime.Parse(row["Data protocollo"].ToString());
                    }
                }
                if (colonne.Contains("Codice Utente Creatore"))
                {
                    if (!String.IsNullOrEmpty(row["Codice Utente Creatore"].ToString()))
                    {
                        toReturn.CodiceUtenteCreatore = row["Codice Utente Creatore"].ToString().Trim();
                    }
                }

                if (colonne.Contains("Codice Ruolo Creatore"))
                {
                    if (!String.IsNullOrEmpty(row["Codice Ruolo Creatore"].ToString()))
                    {
                        toReturn.CodiceRuoloCreatore = row["Codice Ruolo Creatore"].ToString().Trim();
                    }
                }
            }
            else
            {
                if (colonne.Contains("Numero di protocollo") ||
                    colonne.Contains("Data protocollo") ||
                    colonne.Contains("Codice Utente Creatore") ||
                    colonne.Contains("Codice Ruolo Creatore")

                    )
                {
                    throw new Exception("Ruolo non abilitato per questa importazione");
                }
            }


            // Prelevamento del codice registro
            toReturn.RegCode = row["Codice Registro"].ToString().Trim();

            // Prelevamento del codice RF
            toReturn.RFCode = row["Codice RF"].ToString().Trim();

            // Prelevamento del codice oggetto
            toReturn.ObjCode = row["Codice oggetto"].ToString().Trim();

            // Prelevamento dell'oggetto
            toReturn.Obj = row["Oggetto"].ToString().Trim();

            // Prelevamento del codice corrispondente, se valorizzato
            if (!String.IsNullOrEmpty(row["Codice corrispondente"].ToString()))
            {
                toReturn.CorrCode = new List <string>()
                {
                    row["Codice corrispondente"].ToString().Trim()
                }
            }
            ;

            // Prelevamento della descrizione del corrispondente, se valorizzato
            if (!String.IsNullOrEmpty(row["Corrispondente"].ToString()))
            {
                toReturn.CorrDesc = new List <string>()
                {
                    row["Corrispondente"].ToString().Trim()
                }
            }
            ;

            // Prelevamento del pathname
            toReturn.Pathname = row["Pathname"].ToString().Trim();

            // Prelevamento del valore che indica se il documento deve
            // essere salvato nell'area di lavoro
            toReturn.InWorkingArea = !String.IsNullOrEmpty(row["ADL"].ToString()) &&
                                     row["ADL"].ToString().Trim().ToUpper() == "SI";

            // Prelevamento delle note
            if (!String.IsNullOrEmpty(row["Note"].ToString()))
            {
                // Creazione della nota
                toReturn.Note = new InfoNota(row["Note"].ToString().Trim());

                //Impostazione della visibilità Tutti
                toReturn.Note.TipoVisibilita = TipiVisibilitaNotaEnum.Tutti;

                // Creazione dell'oggetto utilizzato per memorizzare le informazioni
                // sull'utente creatore
                toReturn.Note.UtenteCreatore = new InfoUtenteCreatoreNota();

                // Impostazione della descrizione del ruolo
                toReturn.Note.UtenteCreatore.DescrizioneRuolo = role.descrizione;

                // Impostazione della descrizione dell'utente
                toReturn.Note.UtenteCreatore.DescrizioneUtente = userInfo.userId;

                // Impostazione dell'id del ruolo
                toReturn.Note.UtenteCreatore.IdRuolo = role.systemId;

                // Impostazione dell'id dell'utente
                toReturn.Note.UtenteCreatore.IdUtente = userInfo.userId;

                // La nota deve essere inserita
                toReturn.Note.DaInserire = true;

                // Impostazione della data di creazione
                toReturn.Note.DataCreazione = DateTime.Now;
            }

            // Prelevamento del codice del modello di trasmissione
            toReturn.TransmissionModelCode = row["Codice modello trasmissione"].ToString().
                                             Trim().Split(';');

            // Prelevamento della descrizione della tipologia di documento
            toReturn.DocumentTipology = row["Tipologia documento"].ToString().Trim().ToUpper();

            // Prelevamento del codice fascicolo
            if (!String.IsNullOrEmpty(row["Codice fascicolo"].ToString()))
            {
                toReturn.ProjectCodes = row["Codice fascicolo"].ToString().Trim().Split(';');
            }

            // Prelevamento della descrizione del fascicolo
            toReturn.ProjectDescription = row["Descrizione fascicolo"].ToString().Trim();

            // Prelevamento della descrizione del sottofascicolo
            toReturn.FolderDescrition = row["Descrizione sottofascicolo"].ToString().Trim();

            // Prelevamento della descrizione del titolario
            toReturn.Titolario = row["Titolario"].ToString().Trim();

            // Prelevamento del codice del nodo
            toReturn.NodeCode = row["Codice Nodo"].ToString().Trim();

            // Prelevamento della tipologia di fascicolo
            toReturn.ProjectTipology = row["Tipologia fascicolo"].ToString().Trim().ToUpper();

            //Prelevamento del valore che indica se il documento deve essere un predisposto
            if (colonne.Contains("Predisposto"))
            {
                toReturn.Predisposto = !String.IsNullOrEmpty(row["Predisposto"].ToString()) &&
                                       row["Predisposto"].ToString().Trim().ToUpper() == "SI";
            }

            // Restituzione dell'oggetto con i dati prelevati dalla riga
            return(toReturn);
        }
Ejemplo n.º 2
0
        public Fascicolo[] FascicolazioneGetListaFascicoli(DocsPaVO.fascicolazione.Classificazione classificazione, DocsPaVO.filtri.FiltroRicerca[] listaFiltri, bool enableUfficioRef, bool enableProfilazione, bool childs, InfoUtente infoUtente)
        {
            Fascicolo[] result = null;
            try
            {
                result = (Fascicolo[])BusinessLogic.Fascicoli.FascicoloManager.getListaFascicoli(infoUtente, classificazione, listaFiltri, enableUfficioRef, enableProfilazione, childs, null, null, String.Empty).ToArray(typeof(Fascicolo));
            }
            catch (Exception e)
            {
                logger.Debug("Hermes  - metodo: FascicolazioneGetListaFascicoli", e);
                result = null;
            }

            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Funzione per l'importazione dei documenti RDA
        /// </summary>
        /// <param name="content">Il contenuto del file Excel</param>
        /// <param name="fileName">Il nome da attribuire al file temporaneo</param>
        /// <param name="serverPath">L'indirizzo della WA</param>
        /// <param name="modelPath">Il path in cui sono memorizzati i modelli</param>
        /// <param name="userInfo">Le informazioni sull'utente che ha lanciato la procedura</param>
        /// <param name="role">Il ruolo con cui è stata lanciata la procedura</param>
        /// <param name="isRapidClassificationRequired">True se è richiesta classificazione rapida obbligatoria</param>
        /// <param name="isSmistamentoEnabled">True se è abilitato lo smistamento</param>
        /// <param name="sharedDirectoryPath">Il path della cartella condivisa</param>
        /// <param name="provider">Il provider da utilizzare per la connessione</param>
        /// <param name="extendedProperty">Le proprietà estese da utilizzare per l'instaurazione della connessione con il provider</param>
        /// <param name="versionNumber">Il numero di versione dell'importer da utilizzare.
        ///     - 1 per la versione che non contempla i protocolli interni ed i corrispondenti identificati tramite codice
        ///     - 2 per la versione che contempla i protocolli interni ed i corrispondenti identificati tramite codice</param>
        /// <returns>Il report relativo all'importazione RDE</returns>
        public static ResultsContainer CreateRDA(
            byte[] content,
            string fileName,
            string serverPath,
            string modelPath,
            InfoUtente userInfo,
            Ruolo role,
            bool isRapidClassificationRequired,
            bool isSmistamentoEnabled,
            string ftpAddress,
            string provider,
            string extendedProperty,
            int versionNumber,
            String ftpUsername,
            String ftpPassword,
            bool isEnabledPregressi)
        {
            // Il path completo in cui è posizionato il file excel contenente i dati
            // sui documenti da importare
            string completePath = String.Empty;

            // L'oggetto con le informazioni sui documenti RDE da importare
            DocumentRowDataContainer container = null;

            // Il risultato dell'elaborazione
            ResultsContainer result = new ResultsContainer();

            try
            {
                // 1. Creazione del file temporaneo in cui poggiare il foglio
                // excel contenente i dati sui documenti da importare
                completePath = ImportUtils.CreateTemporaryFile(content, modelPath, fileName);

                // 2. Caricamento dei dati contenuti all'interno della cartella Excel
                container = ReadDataFromExcel(provider, extendedProperty, completePath, versionNumber);

                // 3. Creazione dei documenti
                result = CreateDocuments(container, userInfo, role, serverPath, isRapidClassificationRequired, isSmistamentoEnabled, ftpAddress, ftpUsername, ftpPassword, isEnabledPregressi);

                // 4. Cancellazione file temporaneo
                ImportUtils.DeleteTemporaryFile(completePath);
            }
            catch (Exception e)
            {
                // Se il file è stato creato, cancellazione
                if (!String.IsNullOrEmpty(completePath))
                {
                    ImportUtils.DeleteTemporaryFile(completePath);
                }

                // Creazione di un nuovo risultato con i dettagli dell'eccezione
                result.General.Add(new ImportResult()
                {
                    Outcome = ImportResult.OutcomeEnumeration.KO,
                    Message = e.Message
                });
            }

            // 4. Restituzione del risultato
            return(result);
        }
Ejemplo n.º 4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="id"></param>
 /// <param name="infoUtente"></param>
 /// <returns></returns>
 private static DocsPaVO.fascicolazione.Fascicolo GetFascicolo(string id, InfoUtente infoUtente)
 {
     using (DocsPaDB.Query_DocsPAWS.Fascicoli fasc = new DocsPaDB.Query_DocsPAWS.Fascicoli())
         return(fasc.GetFascicoloById(id, infoUtente));
 }
Ejemplo n.º 5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="infoUtente"></param>
 /// <param name="idParentFolder"></param>
 /// <returns></returns>
 private static string GetQueryFolderChilds(InfoUtente infoUtente, string idParentFolder)
 {
     return(string.Format("SELECT * FROM PROJECT A WHERE A.id_parent = {0} AND A.ID_PARENT != A.ID_FASCICOLO AND CHA_TIPO_PROJ = 'C' ORDER BY A.DESCRIPTION ASC", idParentFolder));
 }
Ejemplo n.º 6
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="infoUtente"></param>
 public FullTextSearchManager(InfoUtente infoUtente)
 {
     this._infoUtente = infoUtente;
 }
Ejemplo n.º 7
0
        /// <summary>
        /// Migrazione di un singolo fascicolo
        /// </summary>
        /// <param name="fascicolo"></param>
        /// <param name="infoUtente"></param>
        /// <param name="amministrazione"></param>
        /// <param name="statoMigrazione"></param>
        private static void ImportaFascicolo(DocsPaVO.fascicolazione.Fascicolo fascicolo, InfoUtente infoUtente, InfoAmministrazione amministrazione, InfoStatoMigrazione statoMigrazione)
        {
            //DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager projectManager = new DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager(infoUtente);
            //DocsPaDocumentale.Interfaces.IAclEventListener aclEventListener = new DocsPaDocumentale_DOCUMENTUM.Documentale.AclEventListener(infoUtente);

            // 1. Reperimento del ruolo creatore del fascicolo
            //DocsPaVO.utente.Ruolo ruolo = DocsPaDocumentale_DOCUMENTUM.DocsPaServices.DocsPaQueryHelper.getRuoloCreatore(fascicolo.systemID);
            DocsPaVO.utente.Ruolo ruolo = null;
            // NB: il reperimento dei fascicoli generali serve solo per migrare
            // gli eventuali sottofascicoli, non per migrare il fascicolo stesso,
            // che è già stato creato in sede di creazione del nodo di titolario
            if (fascicolo.tipo == "G")
            {
                // 2. Migrazione dei sottofascicoli, in caso di fascicolo generale (già creato in sede di creazione del titolario)
                ImportaSottofascicoli(infoUtente, amministrazione, fascicolo, null, ruolo, statoMigrazione);
            }
            else
            {
                InfoFascicoloMigrazione fascicoloMigrazione = new InfoFascicoloMigrazione(fascicolo);

                // Calcolo dell'hash del fascicolo
                fascicoloMigrazione.HashFascicolo = GetHashFascicolo(fascicolo, true);

                // 2. Creazione del corrispondente fascicolo in documentum
                //DocsPaVO.fascicolazione.ResultCreazioneFascicolo result;
                //DocsPaVO.utente.Ruolo[] ruoliSuperiori;

                /*
                 * if (projectManager.ContainsFascicoloProcedimentale(fascicolo.systemID))
                 * {
                 *  // Fascicolo è già esistente, save dei dati con refresh delle entries dell'acl associata
                 *  fascicoloMigrazione.EsitoMigrazione = projectManager.ModifyProject(fascicolo, true);
                 *
                 *  if (!fascicoloMigrazione.EsitoMigrazione)
                 *      fascicoloMigrazione.ErroreMigrazione = string.Format("Si è verificato un errore nella modifica del fascicolo '{0}' per l'amministrazione '{1}'", fascicolo.codice, amministrazione.Codice);
                 *  else
                 *      // Migrazione dei sottofascicoli
                 *      ImportaSottofascicoli(infoUtente, amministrazione, fascicolo, null, ruolo, statoMigrazione);
                 *
                 *  Log.GetInstance(amministrazione).Write(string.Format("Migrazione fascicolo. Codice: '{0}' - Descrizione: '{1}'. Aggiornamento.", fascicolo.codice, fascicolo.descrizione), false);
                 * }
                 * else if (projectManager.CreateProject(null,
                 *                              fascicolo,
                 *                              ruolo,
                 *                              false,
                 *                              out result,
                 *                              out ruoliSuperiori))
                 * {
                 *  if (result == DocsPaVO.fascicolazione.ResultCreazioneFascicolo.OK)
                 *  {
                 *      fascicoloMigrazione.EsitoMigrazione = true;
                 *
                 *      Log.GetInstance(amministrazione).Write(string.Format("Migrazione fascicolo. Codice: '{0}' - Descrizione: '{1}'", fascicolo.codice, fascicolo.descrizione), false);
                 *
                 *      // 3. Notifica evento di creazione fascicolo completato
                 *      aclEventListener.FascicoloCreatoEventHandler(null, fascicolo, ruolo, ruoliSuperiori);
                 *
                 *      try
                 *      {
                 *          // 4. Migrazione dei sottofascicoli
                 *          ImportaSottofascicoli(infoUtente, amministrazione, fascicolo, null, ruolo, statoMigrazione);
                 *      }
                 *      catch (Exception ex)
                 *      {
                 *          //4a. Errore nella migrazione dei sottofascicoli, viene rimosso il fascicolo creato
                 *          ((DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager)projectManager).DeleteProject(fascicolo);
                 *
                 *          fascicoloMigrazione.EsitoMigrazione = false;
                 *          fascicoloMigrazione.ErroreMigrazione = ex.Message;
                 *      }
                 *
                 *      // 5. Impostazione ownership del fascicolo
                 *      string utenteCreatore = DocsPaDocumentale_DOCUMENTUM.DocsPaObjectTypes.TypeUtente.NormalizeUserName(DocsPaDocumentale_DOCUMENTUM.DocsPaServices.DocsPaQueryHelper.getUtenteCreatore(fascicolo.systemID).userId);
                 *      ((DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager)projectManager).SetOwnershipFascicolo(fascicolo.systemID, utenteCreatore);
                 *  }
                 *  else
                 *  {
                 *      // 3a. Errore nella creazione del fascicolo
                 *      fascicoloMigrazione.EsitoMigrazione = false;
                 *      fascicoloMigrazione.ErroreMigrazione = string.Format("Si è verificato un errore nella creazione del fascicolo '{0}' per l'amministrazione '{1}'", fascicolo.codice, amministrazione.Codice);
                 *  }
                 * }*/

                fascicoloMigrazione.DataMigrazione = DateTime.Now.ToString();
                statoMigrazione.SetFascicoloMigrazione(fascicoloMigrazione);
            }
        }
Ejemplo n.º 8
0
 private ArrayList GetListaDocumenti(string[] docNumbers, InfoUtente infoUtente)
 {
     DocsPaDB.Query_DocsPAWS.RicercaFullText ricercaFT = new DocsPaDB.Query_DocsPAWS.RicercaFullText();
     return(ricercaFT.GetDocumenti(docNumbers, infoUtente));
 }
Ejemplo n.º 9
0
        /// <summary>
        /// Reperimento numero documenti in docspa che corrispondono alla ricerca fulltext
        /// </summary>
        /// <returns></returns>
        private string[] GetIDDocumentiETDOCS(string[] files, InfoUtente infoUtente)
        {
            RicercaFullText ricercaFT = new RicercaFullText();

            return(ricercaFT.GetIDDocumentiETDOCS(files, infoUtente));
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Reperimento proprietà ocs contenenti i valori corrispondenti del documento
        /// </summary>
        /// <param name="schedaDoc"></param>
        /// <param name="infoUtente"></param>
        /// <returns></returns>
        public static CorteContentServices.CategoryType[] getDocumentProperties(SchedaDocumento schedaDoc, InfoUtente infoUtente)
        {
            // Lista attributi documento ocs
            List <MetadataType> metaDataList = new List <MetadataType>();

            metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.AUTORE, infoUtente.userId));
            metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.DOC_NUMBER, schedaDoc.docNumber));
            metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.OGGETTO, schedaDoc.oggetto.descrizione));
            metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.TIPO_PROTOCOLLO, schedaDoc.tipoProto));

            if (schedaDoc.tipoProto.Equals("A") || schedaDoc.tipoProto.Equals("P") || schedaDoc.tipoProto.Equals("I"))
            {
                if (schedaDoc.protocollo.numero != null)
                {
                    metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.NUMERO_PROTOCOLLO, schedaDoc.protocollo.numero));
                }

                if (schedaDoc.protocollo.dataProtocollazione != null)
                {
                    metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.DATA_PROTOCOLLO, OCSServices.OCSUtils.getOCSDateStringFormat(schedaDoc.protocollo.dataProtocollazione)));
                }

                if (schedaDoc.protocollo.segnatura != null)
                {
                    metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.SEGNATURA, schedaDoc.protocollo.segnatura));
                }

                if (schedaDoc.registro != null)
                {
                    metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.CODICE_REGISTRO, DocsPaServices.DocsPaQueryHelper.getCodiceRegistroFromId(schedaDoc.registro.systemId)));
                }

                fetchMittentiDestinatari(schedaDoc, metaDataList);

                if (schedaDoc.tipoProto.Equals("A"))
                {
                    if (((DocsPaVO.documento.ProtocolloEntrata)schedaDoc.protocollo).dataProtocolloMittente != null)
                    {
                        metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.DATA_PROTOCOLLO_MITTENTE, OCSServices.OCSUtils.getOCSDateStringFormat(((DocsPaVO.documento.ProtocolloEntrata)schedaDoc.protocollo).dataProtocolloMittente)));
                    }

                    //PROTOCOLLO_MITTENTE
                    if (((DocsPaVO.documento.ProtocolloEntrata)schedaDoc.protocollo).descrizioneProtocolloMittente != null)
                    {
                        metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.PROTOCOLLO_MITTENTE, ((DocsPaVO.documento.ProtocolloEntrata)schedaDoc.protocollo).descrizioneProtocolloMittente));
                    }

                    //DATA_ARRIVO
                    if (schedaDoc.documenti != null && schedaDoc.documenti.Count > 0)
                    {
                        if (schedaDoc.documenti[0] != null && ((DocsPaVO.documento.Documento)schedaDoc.documenti[0]).dataArrivo != null && !((DocsPaVO.documento.Documento)schedaDoc.documenti[0]).dataArrivo.Equals(""))
                        {
                            metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.DATA_ARRIVO, OCSServices.OCSUtils.getOCSDateStringFormat(((DocsPaVO.documento.Documento)schedaDoc.documenti[0]).dataArrivo)));
                        }
                    }
                }
            }

            //gestione documento collegato ORA RIGUARDA ANCHE I DOCUMENTI GRIGI
            if (schedaDoc.rispostaDocumento != null)
            {
                string risposta = schedaDoc.rispostaDocumento.docNumber;
                if (!String.IsNullOrEmpty(schedaDoc.rispostaDocumento.segnatura))
                {
                    risposta = schedaDoc.rispostaDocumento.segnatura;
                }
                if (!String.IsNullOrEmpty(risposta))
                {
                    metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.RISPOSTA_A, risposta));
                }
            }

            //NOTE --  reperimento ultima nota visibile a tutti
            foreach (DocsPaVO.Note.InfoNota item in schedaDoc.noteDocumento)
            {
                if (item.TipoVisibilita.Equals(DocsPaVO.Note.TipiVisibilitaNotaEnum.Tutti))
                {
                    if (!string.IsNullOrEmpty(item.Testo))
                    {
                        metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.NOTE, item.Testo));
                    }
                    break;
                }
            }

            //TIPO_DOCUMENTO
            if (schedaDoc.tipologiaAtto != null)
            {
                metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.TIPO_DOCUMENTO, schedaDoc.tipologiaAtto.descrizione));
            }

            //PAROLE_CHIAVE
            if (schedaDoc.paroleChiave != null)
            {
                List <string> items = new List <string>();
                foreach (DocsPaVO.documento.ParolaChiave item in schedaDoc.paroleChiave)
                {
                    if (!string.IsNullOrEmpty(item.descrizione))
                    {
                        items.Add(item.descrizione);
                    }
                }

                if (items.Count > 0)
                {
                    metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.PAROLE_CHIAVE, items.ToArray()));
                }
            }

            //ANNULLAMENTO
            if (schedaDoc.protocollo != null && schedaDoc.protocollo.protocolloAnnullato != null &&
                schedaDoc.protocollo.protocolloAnnullato.dataAnnullamento != null)
            {
                //DATA
                metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.DATA_ANNULLAMENTO_PROTOCOLLO, OCSServices.OCSUtils.getOCSDateStringFormat(schedaDoc.protocollo.protocolloAnnullato.dataAnnullamento)));

                //MOTIVO
                metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.NOTE_ANNULLAMENTO_PROTOCOLLO,
                                                          schedaDoc.protocollo.protocolloAnnullato.autorizzazione));
            }

            //PROTOCOLLO_EMERGENZA
            if (schedaDoc.protocollo != null && schedaDoc.datiEmergenza != null &&
                schedaDoc.datiEmergenza.dataProtocollazioneEmergenza != null)
            {
                //DATA
                metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.DATA_PROTOCOLLO_EMERGENZA,
                                                          OCSServices.OCSUtils.getOCSDateStringFormat(schedaDoc.datiEmergenza.dataProtocollazioneEmergenza)));

                //MOTIVO
                metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.PROTOCOLLO_EMERGENZA, schedaDoc.datiEmergenza.protocolloEmergenza));
            }

            //ABBATANGELI GIANLUIGI
            //COD_EXT_APP
            if (!string.IsNullOrEmpty(schedaDoc.codiceApplicazione))
            {
                metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.COD_EXT_APP, schedaDoc.codiceApplicazione));
            }

            //PREDISPOSTO ALLA PROTOCOLLAZIONE
            string predispostoProtoc = "NO";

            if (schedaDoc.predisponiProtocollazione)
            {
                predispostoProtoc = "SI";
            }
            metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.PREDISPOSTO_PROTOCOLLAZIONE, predispostoProtoc));

            //LIVELLO RISERVATEZZA  //privato-personale
            string livello_riservatezza = "";

            if (schedaDoc.privato != null && schedaDoc.privato.Equals("1"))
            {
                livello_riservatezza = "PRIVATO";
            }
            if (schedaDoc.personale != null && schedaDoc.personale.Equals("1"))
            {
                livello_riservatezza = "PERSONALE";
            }
            metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoProtocollo.LIVELLO_RISERVATEZZA, livello_riservatezza));

            List <CategoryType> retValue = new List <CategoryType>();

            CategoryType categoryType = new CategoryType();

            categoryType.name         = DocsPaObjectType.ObjectTypes.CATEGOTY_PROTOCOLLO;
            categoryType.metadataList = metaDataList.ToArray();
            retValue.Add(categoryType);

            return(retValue.ToArray());
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Ricerca fulltext su Hummingbird
        /// </summary>
        /// <param name="testo">testo da ricercare, sia nell'oggetto, sia nel contenuto dei documenti</param>
        /// <param name="libreria">libreria sulla quale eseguire la ricerca</param>
        /// <param name="dst">dst per la connessione alla libreria specificata</param>
        /// <param name="infoUtente">oggetto di contesto utente</param>
        /// <returns>ArrayList contenente le informazioni dei documenti di interesse</returns>
        public ArrayList RicercaFT(string testo,
                                   string idReg,
                                   InfoUtente infoUtente,
                                   int numPage,
                                   out int numTotPage,
                                   out int nRec)
        {
            logger.Debug("RicercaFT");

            numTotPage = 0;
            nRec       = 0;

            //creiamo la stringa da usare per la ricerca delle info dei docs
            //che conterrà tutti i system_id recuperati dalla ricerca fulltext
            ArrayList resultSet = new ArrayList();

            //controllo sulla stringa
            testo = testo.Replace("'", "''");

            //Creiamo l'oggetto per la ricerca
            PCDCLIENTLib.PCDSearch objSearch = new PCDCLIENTLib.PCDSearchClass();

            //impostiamo DST e libreria, indispensabili per la connessione ad Hummingbird
            objSearch.SetDST(infoUtente.dst);
            objSearch.AddSearchLib(this.GetLibreria(infoUtente.idAmministrazione));             // ESTRARRE LA LIBRERIA
            //Aggiungiamo la clausola from
            objSearch.SetSearchObject("DEF_PROF");

            //Aggiungiamo la clausola where
            objSearch.AddSearchCriteria("FULLTEXT_CONTENT_PROFILE", testo);

            //Aggiungiamo la clausola where
            objSearch.AddReturnProperty("DOCNUM");
            objSearch.AddReturnProperty("DOCNAME");
            objSearch.AddReturnProperty("SYSTEM_ID");
            objSearch.AddOrderByProperty("DOCNUM", 1);

            objSearch.SetMaxRows(100);

            //Eseguiamo la ricerca
            objSearch.Execute();

            int numDocs = 0;

            //Controlliamo eventuali errori
            if (objSearch.ErrNumber != 0)
            {
                //errore
            }
            else
            {
                numDocs = objSearch.GetRowsFound();

                if (numDocs != 0)
                {
                    // Reperimento chiavi di ricerca
                    string[] docNumbers = this.GetSearchDocNumbers(objSearch);

                    if (docNumbers.Length > 0)
                    {
                        // Estrazione dei soli id relativi alla pagina richiesta
                        docNumbers = this.ExtractPageDocNumbers(docNumbers, numPage);
                    }

                    // Reperimento dettagli sui documenti
                    resultSet = this.GetListaDocumenti(docNumbers, infoUtente);
                }
            }

            objSearch.ReleaseResults();
            objSearch = null;

            numTotPage = (numDocs / PAGE_SIZE);

            if (numTotPage * PAGE_SIZE < numDocs)
            {
                numTotPage++;
            }

            nRec = numDocs;

            return(resultSet);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Reperimento proprietà per documento di tipo stampa registro
        /// </summary>
        /// <param name="schedaDoc"></param>
        /// <param name="infoUtente"></param>
        /// <returns></returns>
        public static CorteContentServices.CategoryType[] getDocumentStampaRegistroProperties(SchedaDocumento schedaDoc, InfoUtente infoUtente)
        {
            List <MetadataType> metaDataList = new List <MetadataType>();

            metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoStampaRegistro.AUTORE, infoUtente.userId));
            metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoStampaRegistro.DOC_NUMBER, schedaDoc.docNumber));

            if (schedaDoc.oggetto != null && !string.IsNullOrEmpty(schedaDoc.oggetto.descrizione))
            {
                metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoStampaRegistro.OGGETTO, schedaDoc.oggetto.descrizione));
            }

            //DATA_STAMPA
            metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoStampaRegistro.DATA_STAMPA, System.DateTime.Now.ToString("yyyy-MM-ddThh:mm:ss", new CultureInfo("it-IT"))));

            //COD_REGISTRO
            if (schedaDoc.registro != null)
            {
                metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoStampaRegistro.CODICE_REGISTRO,
                                                          DocsPaServices.DocsPaQueryHelper.getCodiceRegistroFromId(schedaDoc.registro.systemId)));
            }

            List <CategoryType> retValue = new List <CategoryType>();

            CategoryType categoryType = new CategoryType();

            categoryType.name         = DocsPaObjectType.ObjectTypes.CATEGOTY_STAMPA_REGISTRO;
            categoryType.metadataList = metaDataList.ToArray();
            retValue.Add(categoryType);

            return(retValue.ToArray());
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Reperimento proprietà allegato
        /// </summary>
        /// <param name="allegato"></param>
        /// <param name="infoUtente"></param>
        /// <returns></returns>
        public static CorteContentServices.CategoryType[] getAttachmentProperties(Allegato allegato, InfoUtente infoUtente)
        {
            List <MetadataType> metaDataList = new List <MetadataType>();

            metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoAllegato.AUTORE, infoUtente.userId));
            metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoAllegato.DOC_NUMBER, DocsPaServices.DocsPaQueryHelper.getDocNumberDocumentoPrincipale(allegato.docNumber)));
            metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoAllegato.ATTACHID, allegato.docNumber));
            metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoAllegato.DESCRIZIONE, allegato.descrizione));
            metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoAllegato.NUM_PAGINE, allegato.numeroPagine.ToString()));

            if (!string.IsNullOrEmpty(allegato.versionLabel))
            {
                metaDataList.Add(OCSUtils.getMetadataItem(DocsPaObjectType.TypeDocumentoAllegato.CODICE, allegato.versionLabel.ToString()));
            }

            List <CategoryType> retValue = new List <CategoryType>();

            CategoryType categoryType = new CategoryType();

            categoryType.name         = DocsPaObjectType.ObjectTypes.CATEGOTY_ALLEGATO;
            categoryType.metadataList = metaDataList.ToArray();
            retValue.Add(categoryType);

            return(retValue.ToArray());
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Funzione per la creazione dell'oggetto protocollo in entrata
        /// </summary>
        /// <param name="rowData">L'oggetto con le informazioni sul documento da creare</param>
        /// <param name="registrySyd">Il system id del registo in cui protocollare</param>
        /// <param name="rfSyd">Il system id dell'rf in cui protocollare</param>
        /// <param name="administrationSyd">Il system id dell'amministrazione incui creare il documento</param>
        /// <param name="isSmistamentoEnabled">True se, da configurazione, è abilitato lo smistamento</param>
        /// <param name="userInfo">Le informazioni sull'utente che ha lanciato la procedura</param>
        /// <param name="role">Il ruolo dell'utente che ha lanciato la procedura</param>
        /// <returns>L'oggetto Protocollo con le informazioni sul protocollo in ingresso da creare</returns>
        protected override Protocollo CreateProtocolObject(DocumentRowData rowData, string registrySyd, string rfSyd, string administrationSyd, bool isSmistamentoEnabled, InfoUtente userInfo, Ruolo role)
        {
            // Creazione dell'oggetto ProtocolloEntrata
            ProtocolloEntrata inProto = new ProtocolloEntrata();

            // Calcolo del mittente del protocollo
            // Se è valorizzata la proprietà CorrDesc della rowData, significa che
            // il corrispondente è di tipo occasionale
            if (rowData.CorrDesc != null && rowData.CorrDesc.Count > 0)
            {
                // Creazione del corrispondente
                inProto.mittente = new Corrispondente();

                // Impostazione della descrizione del corrispondente
                inProto.mittente.descrizione = rowData.CorrDesc[0];

                // Impostazione dell'id amministrazione
                inProto.mittente.idAmministrazione = administrationSyd;

                // Impostazione del tipo corrispondente ad O
                inProto.mittente.tipoCorrispondente = "O";
            }

            if (rowData.CorrCode != null && rowData.CorrCode.Count > 0)
            {
                // Altrimenti si procede con il caricamento delle informazioni sul
                // corrispondente
                inProto.mittente = ImportUtils.GetCorrispondenteByCode(
                    ParametriRicercaRubrica.CallType.CALLTYPE_PROTO_IN,
                    rowData.CorrCode[0].Trim(),
                    role,
                    userInfo,
                    registrySyd,
                    rfSyd,
                    isSmistamentoEnabled,
                    TipoUtente.GLOBALE);
            }

            // Se non è stato ptrovato il corrispondente, eccezione
            if (inProto.mittente == null)
            {
                throw new Exception("Impossibile recuperare le informazioni sul mittente del protocollo.");
            }

            // Restituzione dell'oggetto con le informazioni sul protocollo
            return(inProto);
        }
Ejemplo n.º 15
0
        public static bool AddVersion(DocsPaVO.documento.FileRequest fileRequest, bool daInviare, InfoUtente infoUtente)
        {
            bool result = true;

            bool   update = false;
            string oldApp = null;

            System.Data.DataSet ds;
            DocsPaDB.Query_DocsPAWS.Documenti doc = new DocsPaDB.Query_DocsPAWS.Documenti();

            try
            {
                if (fileRequest.applicazione != null)
                {
                    if (fileRequest.applicazione.systemId == null)
                    {
                        logger.Debug("sysid vuoto");

                        DocsPaVO.documento.Applicazione res = new DocsPaVO.documento.Applicazione();
                        doc.GetExt(fileRequest.applicazione.estensione, ref res);

                        fileRequest.applicazione = res;
                    }
                    logger.Debug("Update della tabella profile");
                    string param = "(APPLICATION is NULL OR APPLICATION != " + fileRequest.applicazione.systemId + ") AND DOCNUMBER=" + fileRequest.docNumber;
                    doc.GetApplication(out oldApp, fileRequest.docNumber, fileRequest.applicazione.systemId, param);

                    update = true;
                }

                DocsPaDB.Query_DocsPAWS.Documentale documentale = new DocsPaDB.Query_DocsPAWS.Documentale();
                documentale.AddVersion(ref fileRequest, infoUtente.idPeople, infoUtente.userId);

                //ESTRAZIONE DEL FILENAME, VERSION, LASTEDITTIME
                doc.SetCompVersions(fileRequest.versionId, fileRequest.docNumber, out ds);

                fileRequest.fileName        = ds.Tables["VERS"].Rows[0]["PATH"].ToString();
                fileRequest.version         = ds.Tables["VERS"].Rows[0]["VERSION"].ToString();
                fileRequest.subVersion      = ds.Tables["VERS"].Rows[0]["SUBVERSION"].ToString();
                fileRequest.versionLabel    = ds.Tables["VERS"].Rows[0]["VERSION_LABEL"].ToString();
                fileRequest.dataInserimento = ds.Tables["VERS"].Rows[0]["DTA_CREAZIONE"].ToString();
                DocsPaDB.Query_DocsPAWS.Utenti u = new DocsPaDB.Query_DocsPAWS.Utenti();
                string full_name_utente          = u.getUtenteById(infoUtente.idPeople).descrizione;
                if (full_name_utente != null)
                {
                    fileRequest.autore = full_name_utente;
                }

                //EMosca 29/11/2004

                /*Aggiunto && oldApp!="" nell'if.
                 * oldApp risulta vuoto per tutte le versioni
                 * (tranne Hummingbird che inserisce di default un pdf di size=0 alla creazione del doc.)
                 */
                if (update && oldApp != "")
                {
                    DocsPaDB.Query_DocsPAWS.Documenti documenti = new DocsPaDB.Query_DocsPAWS.Documenti();
                    documenti.UpdateApplication(oldApp, fileRequest.docNumber);
                }

                DocsPaDB.Query_DocsPAWS.Documenti documenti2 = new DocsPaDB.Query_DocsPAWS.Documenti();
                documenti2.UpdateVersionManager(fileRequest, daInviare);

                logger.Debug("Fine addVersion");
            }
            catch (Exception exception)
            {
                logger.Debug("Errore durante l'aggiunta di una versione.", exception);

                if (update)
                {
                    DocsPaDB.Query_DocsPAWS.Documenti documenti = new DocsPaDB.Query_DocsPAWS.Documenti();
                    documenti.UpdateApplication(oldApp, fileRequest.docNumber);
                }

                result = false;
            }

            return(result);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Reperimento documenti
        /// </summary>
        /// <param name="files"></param>
        /// <param name="infoUtente"></param>
        /// <returns></returns>
        private ArrayList GetDocuments(string[] files, InfoUtente infoUtente)
        {
            RicercaFullText ricercaFT = new RicercaFullText();

            return(ricercaFT.GetDocumentiETDOCS(files, infoUtente));
        }
Ejemplo n.º 17
0
        public static bool CheckIn(DocsPaVO.CheckInOut.CheckOutStatus checkOutStatus, byte[] content, string checkInComments, InfoUtente infoUtente)
        {
            bool retValue = false;

            try
            {
                DocsPaUtils.Query queryDef = DocsPaUtils.InitQuery.getInstance().getQuery("CHECKINOUT_CHECKIN_DOCUMENT");
                queryDef.setParam("id", checkOutStatus.ID.ToString());

                string commandText = queryDef.getSQL();
                logger.Debug(commandText);

                using (DocsPaDB.DBProvider dbProvider = new DocsPaDB.DBProvider())
                    retValue = dbProvider.ExecuteNonQuery(commandText);

                if (retValue)
                {
                    // Creazione della versione del documento
                    retValue = CreateDocumentVersion(checkOutStatus, content, checkInComments, infoUtente);
                }
            }
            catch (Exception ex)
            {
                logger.Debug(ex.Message, ex);

                throw new ApplicationException("Errore nel CheckIn del documento. IDDocumento: " + checkOutStatus.IDDocument, ex);
            }

            return(retValue);
        }
Ejemplo n.º 18
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="infoUtente"></param>
 public TitolarioManager(InfoUtente infoUtente)
 {
     this._infoUtente = infoUtente;
 }
Ejemplo n.º 19
0
        /// <summary>
        /// Verifica se il documento principale o un allegato è in checkout, relativamente al parametro checkAllegati
        /// </summary>
        /// <param name="idDocument">SystemID del documento</param>
        /// <param name="checkedOutUser"></param>
        /// <param name="documentNumber"></param>
        /// <param name="utente">Utente che ha fatto il checkout del documento</param>
        /// <returns></returns>
        public static bool IsCheckedOutDocument(string idDocument, string documentNumber, InfoUtente utente, bool checkAllegati)
        {
            //bool retValue = false;
            //if (!string.IsNullOrEmpty(idDocument) && !string.IsNullOrEmpty(documentNumber)) retValue = _webServices.IsCheckedOutDocument(idDocument, documentNumber, utente, checkAllegati);
            //return retValue;

            return(false);
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Metodo per il download di un file associato ad un documento
        /// </summary>
        /// <param name="documentInfo">Informazioni sul documento</param>
        /// <param name="senderAdministrationId">Id dell'amministrazione</param>
        /// <param name="fileRequest">Informazioni sul file richiesto</param>
        /// <param name="userInfo">Informazioni sull'utente con cui recuperare il file</param>
        /// <param name="senderFileManagerUrl">Url del servizio per la gestione dei file</param>
        public static void DownloadFile(DocumentInfo documentInfo, String senderAdministrationId, FileRequest fileRequest, InfoUtente userInfo, String senderFileManagerUrl, out string errPutFile)
        {
            logger.Debug("BEGIN");
            // Reperimento del file
            InteroperabilityController interoperabilityController = new InteroperabilityController();

            Interoperability.Service.Library.FileServiceReference.RemoteFileInfo fileResponse = interoperabilityController.DownloadFile(
                new Interoperability.Service.Library.FileServiceReference.SendFileRequest(
                    senderAdministrationId,
                    documentInfo.DocumentNumber,
                    documentInfo.DocumentServerLocation,
                    documentInfo.FileName,
                    documentInfo.FilePath,
                    documentInfo.Version,
                    documentInfo.VersionId,
                    documentInfo.VersionLabel),
                senderFileManagerUrl);

            // Caricamento del file in DocsPa
            byte[] documentContent = ReadFileContent(fileResponse.FileData, (int)fileResponse.FileTransferInfo.FileLength);

            FileDocumento fileDocument = new FileDocumento()
            {
                content = documentContent,
                length  = (int)fileResponse.FileTransferInfo.FileLength,
                name    = fileResponse.FileTransferInfo.FileName
            };

            String err = String.Empty;

            //Gestione TSDis (DOC+TSR)
            //Siccome non si possono mandare piu file allo stesso tempo, ne è possibile alterare la struttura
            //si è pensato in fase di invio, in caso di documenti con TSR associato, l'invio dello stesso un formato
            //TSD, come marca verrà presa l'ultima disponibile, e unita al documento, creadno un file con estensione TSDis
            //In fase di ricezione il TsdIs, sarà poi spacchettato, il TSR messo in DPA_TIMESTAMP dopo verifica hash e
            //infine il payload messo in documentale con la putfile.


            DocsPaVO.areaConservazione.OutputResponseMarca resultMarca = null;
            if (Path.GetExtension(fileDocument.name) == ".TSDis")
            {
                try
                {
                    Documenti.DigitalSignature.PKCS_Utils.tsd tsdMgr = new Documenti.DigitalSignature.PKCS_Utils.tsd();
                    tsdMgr.explode(fileDocument.content);
                    fileDocument.content = tsdMgr.Data.Content;
                    fileDocument.length  = (int)fileDocument.content.Length;
                    fileDocument.name    = fileDocument.name.Replace(".TSDis", string.Empty);
                    Documenti.DigitalSignature.VerifyTimeStamp vts = new Documenti.DigitalSignature.VerifyTimeStamp();
                    byte[] tsrFile = tsdMgr.TSR.FirstOrDefault().Content;
                    if (vts.machTSR(tsrFile, fileDocument.content))
                    {
                        resultMarca = vts.Verify(fileDocument.content, tsrFile);
                    }
                }
                catch (Exception e)
                {
                    logger.ErrorFormat("Errore gestendo il TSDis {0} {1}", e.Message, e.StackTrace);
                    //manca il loggher pdpdpdpdp
                }
            }

            FileManager.putFile(ref fileRequest, fileDocument, userInfo, out errPutFile, false);
            if (resultMarca != null && resultMarca.esito == "OK")
            {
                DocsPaDB.Query_DocsPAWS.TimestampDoc timestampDoc = new DocsPaDB.Query_DocsPAWS.TimestampDoc();
                timestampDoc.saveTSR(userInfo, resultMarca, fileRequest);
            }

            logger.Debug("END");
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Import dei sottofascicoli per un fascicolo
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="amministrazione"></param>
        /// <param name="fascicolo"></param>
        /// <param name="ruolo"></param>
        /// <param name="statoMigrazione"></param>
        /// <param name="folders"></param>
        private static void ImportaSottofascicoli(InfoUtente infoUtente, InfoAmministrazione amministrazione, DocsPaVO.fascicolazione.Fascicolo fascicolo, DocsPaVO.fascicolazione.Folder[] folders, DocsPaVO.utente.Ruolo ruolo, InfoStatoMigrazione statoMigrazione)
        {
            //DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager projectManager = new DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager(infoUtente);

            // Fascicolo precedentementei importato
            DocsPaVO.fascicolazione.Folder previousFolder = null;
            int countRenamed = 0;

            if (folders == null)
            {
                folders = GetFolders(infoUtente, fascicolo);
            }

            /*
             * // 1. Reperimento sottofascicoli contenuti nel fascicolo
             * foreach (DocsPaVO.fascicolazione.Folder folder in folders)
             * {
             *  if (projectManager.ContainsSottofascicolo(folder.systemID))
             *  {
             *      // Inserimento dei metadati di migrazione per il folder
             *      InfoFascicoloMigrazione infoFascicolo = new InfoFascicoloMigrazione(fascicolo, folder);
             *
             *      // Sottofascicolo è già esistente, save dei dati
             *      infoFascicolo.EsitoMigrazione = projectManager.ModifyFolder(folder);
             *
             *      if (!infoFascicolo.EsitoMigrazione)
             *          infoFascicolo.ErroreMigrazione = string.Format("Errore nella modifica del sottofascicolo: '{0}'", folder.descrizione);
             *
             *      statoMigrazione.SetFascicoloMigrazione(infoFascicolo);
             *
             *      if (folder.childs.Count > 0)
             *      {
             *          // Import dei sottofascicoli figli
             *          ImportaSottofascicoli(infoUtente, amministrazione, fascicolo,
             *                              (DocsPaVO.fascicolazione.Folder[])folder.childs.ToArray(typeof(DocsPaVO.fascicolazione.Folder)),
             *                              ruolo, statoMigrazione);
             *      }
             *
             *      // Sottofascicolo già esistente
             *      Log.GetInstance(amministrazione).Write(string.Format("Sottofascicolo con codice {0} già esistente. Aggiornamento.", folder.descrizione), false);
             *  }
             *  else
             *  {
             *      // Il sottofascicolo non ha descrizione, viene impostata la system_id
             *      if (string.IsNullOrEmpty(folder.descrizione))
             *      {
             *          folder.descrizione = folder.systemID;
             *      }
             *
             *      string oldDescription = folder.descrizione;
             *
             *      // Verifica se, nell'ambito dello stesso fascicolo, esistono sottofascicoli con descrizione duplicata
             *      // if (DocsPaDocumentale_DOCUMENTUM.DctmServices.Dfs4DocsPa.containsSottofascicoloByDescription(folder.idFascicolo, folder.descrizione))
             *      // {
             *          folder.descrizione = string.Format("{0} ({1})", folder.descrizione, folder.systemID);
             *
             *          // Log.GetInstance(amministrazione).Write(string.Format("Migrazione sottofascicolo. Rinominato sottofascicolo duplicato '{0}' in '{1}'", oldDescription, folder.descrizione), false);
             *      // }
             *
             *      DocsPaVO.fascicolazione.ResultCreazioneFolder resultCreazioneFolder;
             *
             *      // 3. Creazione oggetto Folder
             *      if (projectManager.CreateFolder(folder, ruolo, out resultCreazioneFolder))
             *      {
             *          // Inserimento dei metadati di migrazione per il folder
             *          InfoFascicoloMigrazione infoFascicolo = new InfoFascicoloMigrazione(fascicolo, folder);
             *          infoFascicolo.EsitoMigrazione = true;
             *          statoMigrazione.SetFascicoloMigrazione(infoFascicolo);
             *
             *          Log.GetInstance(amministrazione).Write(string.Format("Migrazione sottofascicolo. Descrizione sottofascicolo: '{0}' - Codice: '{1}' - Descrizione: '{2}'", folder.descrizione, fascicolo.codice, fascicolo.descrizione), false);
             *
             *          folder.descrizione = oldDescription;
             *          previousFolder = folder;
             *
             *          if (folder.childs.Count > 0)
             *          {
             *              // Import dei sottofascicoli figli
             *              ImportaSottofascicoli(infoUtente, amministrazione, fascicolo,
             *                                  (DocsPaVO.fascicolazione.Folder[])folder.childs.ToArray(typeof(DocsPaVO.fascicolazione.Folder)),
             *                                  ruolo, statoMigrazione);
             *          }
             *      }
             *      else
             *      {
             *          // 2a. Errore nell'inserimento del folder
             *          throw new ApplicationException(
             *                  string.Format("Si è verificato un errore nell'inserimento del sottofascicolo '{0}' per il fascicolo '{1}' per l'amministrazione '{2}'",
             *                  folder.descrizione, fascicolo.codice, amministrazione.Codice));
             *      }
             *  }
             * }*/
        }
Ejemplo n.º 22
0
        public override void buildResponse(RicercaRequest request, RicercaResponse response)
        {
            logger.Debug("ricerca in Adl di fascicolo per testo");
            int numRec;
            int numTotPage;

            FiltroRicerca[] filtri = new FiltroRicerca[3];
            filtri[0]           = new FiltroRicerca();
            filtri[0].argomento = DocsPaVO.filtri.fascicolazione.listaArgomenti.TITOLO.ToString();
            filtri[0].valore    = request.Text;

            /*
             * //Filtro ricerca temporale -1anno
             * FiltroRicerca fascDataPrec = new FiltroRicerca();
             * fascDataPrec.argomento = DocsPaVO.filtri.fascicolazione.listaArgomenti.APERTURA_PRECEDENTE_IL.ToString();
             * fascDataPrec.valore = DateTime.Now.Date.ToShortDateString();
             * FiltroRicerca fascDataSuccAl = new FiltroRicerca();
             * fascDataSuccAl.argomento = DocsPaVO.filtri.fascicolazione.listaArgomenti.APERTURA_SUCCESSIVA_AL.ToString();
             * fascDataSuccAl.valore = DateTime.Now.AddYears(-1).Date.ToShortDateString();
             *
             * filtri[1] = fascDataSuccAl;
             * filtri[2] = fascDataPrec;
             */


            FiltroRicerca fascInAdl = new FiltroRicerca();

            fascInAdl.argomento = DocsPaVO.filtri.fascicolazione.listaArgomenti.DOC_IN_FASC_ADL.ToString();
            fascInAdl.valore    = String.Format("{0}@{1}", request.UserInfo.IdPeople, request.IdCorrGlobali);
            filtri[1]           = fascInAdl;


            //filtro per titolari come nel frontend vero.
            List <OrgTitolario> titolari = BusinessLogic.Amministrazione.TitolarioManager.getTitolariUtilizzabili(request.UserInfo.IdAmministrazione).Cast <OrgTitolario>().ToList();
            string listaTitolari         = string.Empty;

            foreach (OrgTitolario tit in titolari)
            {
                listaTitolari += "," + tit.ID.ToString();
            }

            listaTitolari = listaTitolari.Substring(1);
            FiltroRicerca titInAdl = new FiltroRicerca();

            titInAdl.argomento = DocsPaVO.filtri.fascicolazione.listaArgomenti.ID_TITOLARIO.ToString();
            titInAdl.valore    = listaTitolari;
            filtri[2]          = titInAdl;


            InfoUtente iu = request.UserInfo.InfoUtente;

            iu.idGruppo      = request.IdGruppo;
            iu.idCorrGlobali = request.IdCorrGlobali;

            List <SearchResultInfo> idProjectList = null;

            logger.Debug("testo da cercare: " + request.Text);
            ArrayList result = BusinessLogic.Fascicoli.FascicoloManager.getListaFascicoliPaging(iu, null, null, filtri, request.EnableUfficioRef, request.EnableProfilazione, true, out numTotPage, out numRec, request.RequestedPage, request.PageSize, false, out idProjectList, null, string.Empty);

            logger.Debug("numero totale risultati: " + numRec);
            response.TotalRecordCount = numRec;
            response.Risultati        = new List <RicercaElement>();
            foreach (Fascicolo temp in result)
            {
                response.Risultati.Add(RicercaElement.buildInstance(temp));
            }
        }
Ejemplo n.º 23
0
        /// <summary>
        /// Reperimento query ricerca sottofascicoli in tutti i fascicoli, sia generali che procedimentali
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="idFascicolo"></param>
        /// <returns></returns>
        private static string GetQueryFolders(InfoUtente infoUtente, string idFascicolo)
        {
            string innerCommandText = string.Format("SELECT system_id FROM project p WHERE p.id_fascicolo = {0} AND p.id_fascicolo = p.id_parent AND p.cha_tipo_proj = 'C'", idFascicolo);

            return(string.Format("SELECT * FROM PROJECT A WHERE A.id_parent = ({0}) AND A.ID_PARENT != A.ID_FASCICOLO AND CHA_TIPO_PROJ = 'C' ORDER BY A.DESCRIPTION ASC", innerCommandText));
        }
Ejemplo n.º 24
0
        public override void buildResponse(RicercaRequest request, RicercaResponse response)
        {
            logger.Debug("ricerca di documento per testo");
            int numRec;
            int numTotPage;


            if (string.IsNullOrEmpty(request.Text))
            {
                response.TotalRecordCount = 0;
                response.Risultati        = new List <RicercaElement>();
            }
            else
            {
                FiltroRicerca[][]    filtriArray = new FiltroRicerca[1][];
                List <FiltroRicerca> filtri      = new List <FiltroRicerca>();;
                if (!string.IsNullOrEmpty(request.Text))
                {
                    FiltroRicerca fOgg = new FiltroRicerca();
                    fOgg.argomento = listaArgomenti.OGGETTO.ToString();
                    fOgg.valore    = request.Text;//
                    filtri.Add(fOgg);

                    /*
                     * FiltroRicerca fOggAnno = new FiltroRicerca();
                     * fOggAnno.argomento = listaArgomenti.ANNO_PROTOCOLLO.ToString();
                     * fOggAnno.valore = System.DateTime.Now.Year.ToString();
                     * filtri.Add(fOggAnno);
                     */
                }
                listaArgomenti[] defaultArgomenti = new listaArgomenti[] {
                    listaArgomenti.PROT_ARRIVO,
                    listaArgomenti.PROT_PARTENZA,
                    listaArgomenti.PROT_INTERNO,
                    listaArgomenti.GRIGIO,
                    listaArgomenti.PREDISPOSTO
                };
                foreach (listaArgomenti arg in defaultArgomenti)
                {
                    FiltroRicerca temp = new FiltroRicerca();
                    temp.argomento = arg.ToString();
                    temp.valore    = "true";
                    filtri.Add(temp);
                }


                //Filtro ricerca temporale -1anno
                FiltroRicerca fDataPrec = new FiltroRicerca();
                fDataPrec.argomento = listaArgomenti.DATA_CREAZIONE_PRECEDENTE_IL.ToString();
                fDataPrec.valore    = DateTime.Now.Date.AddDays(1).ToString("dd/MM/yyyy");
                FiltroRicerca fDataSuccAl = new FiltroRicerca();
                fDataSuccAl.argomento = listaArgomenti.DATA_CREAZIONE_SUCCESSIVA_AL.ToString();
                fDataSuccAl.valore    = DateTime.Now.AddDays(-31).Date.ToString("dd/MM/yyyy");


                filtri.Add(fDataPrec);
                filtri.Add(fDataSuccAl);

                filtriArray[0] = filtri.ToArray();
                InfoUtente iu = request.UserInfo.InfoUtente;
                iu.idGruppo      = request.IdGruppo;
                iu.idCorrGlobali = request.IdCorrGlobali;
                List <SearchResultInfo> idProfileList = new List <SearchResultInfo>();
                ArrayList result = BusinessLogic.Documenti.InfoDocManager.getQueryPaging(request.IdGruppo, request.UserInfo.IdPeople, filtriArray, false, request.RequestedPage, request.PageSize, true, out numTotPage, out numRec, false, out idProfileList, false);
                response.TotalRecordCount = numRec;
                response.Risultati        = new List <RicercaElement>();
                foreach (InfoDocumento temp in result)
                {
                    response.Risultati.Add(RicercaElement.buildInstance(temp));
                }
            }
        }
Ejemplo n.º 25
0
        public Fascicolo FascicolazioneNewFascicolo(Classificazione classificazione, Fascicolo fascicolo, bool enableUffRef, InfoUtente infoUtente, Ruolo ruolo)
        {
            DocsPaVO.fascicolazione.Fascicolo objFascicolo = null;
            DocsPaVO.fascicolazione.ResultCreazioneFascicolo resultCreazione = DocsPaVO.fascicolazione.ResultCreazioneFascicolo.OK;
            try
            {
                objFascicolo = BusinessLogic.Fascicoli.FascicoloManager.newFascicolo(classificazione, fascicolo, infoUtente, ruolo, enableUffRef, out resultCreazione);
                if (objFascicolo != null)
                {
                    BusinessLogic.UserLog.UserLog.WriteLog(infoUtente, "FASCICOLAZIONENEWFASCICOLO", objFascicolo.systemID, string.Format("{0} {1}", "Cod. Fascicolo:", objFascicolo.codice), DocsPaVO.Logger.CodAzione.Esito.OK);
                }
            }
            catch (Exception e)
            {
                resultCreazione = DocsPaVO.fascicolazione.ResultCreazioneFascicolo.GENERIC_ERROR;
                logger.Debug("Hermes  - metodo: FascicolazioneNewFascicolo", e);
                objFascicolo = null;
            }

            return(objFascicolo);
        }
Ejemplo n.º 26
0
        public override void buildResponse(RicercaRequest request, RicercaResponse response)
        {
            logger.Debug("ricerca in Adl di documento per testo");
            int numRec;
            int numTotPage;

            FiltroRicerca[][]    filtriArray = new FiltroRicerca[1][];
            List <FiltroRicerca> filtri      = new List <FiltroRicerca>();;

            if (!string.IsNullOrEmpty(request.Text))
            {
                FiltroRicerca fOgg = new FiltroRicerca();
                fOgg.argomento = listaArgomenti.OGGETTO.ToString();
                fOgg.valore    = request.Text;//
                filtri.Add(fOgg);

                /*
                 * FiltroRicerca fOggAnno = new FiltroRicerca();
                 * fOggAnno.argomento = listaArgomenti.ANNO_PROTOCOLLO.ToString();
                 * fOggAnno.valore = System.DateTime.Now.Year.ToString();
                 * filtri.Add(fOggAnno);
                 */
            }
            listaArgomenti[] defaultArgomenti = new listaArgomenti[] {
                listaArgomenti.PROT_ARRIVO,
                listaArgomenti.PROT_PARTENZA,
                listaArgomenti.PROT_INTERNO,
                listaArgomenti.GRIGIO,
                listaArgomenti.PREDISPOSTO
            };
            foreach (listaArgomenti arg in defaultArgomenti)
            {
                FiltroRicerca temp = new FiltroRicerca();
                temp.argomento = arg.ToString();
                temp.valore    = "true";
                filtri.Add(temp);
            }

            //Per l'adl magari non mettiamo il limete a un anno

            /*
             * //Filtro ricerca temporale -1anno
             * FiltroRicerca fDataPrec = new FiltroRicerca();
             * fDataPrec.argomento = listaArgomenti.DATA_CREAZIONE_PRECEDENTE_IL.ToString();
             * fDataPrec.valore = DateTime.Now.Date.ToShortDateString();
             * FiltroRicerca fDataSuccAl = new FiltroRicerca();
             * fDataSuccAl.argomento = listaArgomenti.DATA_CREAZIONE_SUCCESSIVA_AL.ToString();
             * fDataSuccAl.valore = DateTime.Now.AddYears(-1).Date.ToShortDateString();
             *
             *
             * filtri.Add(fDataPrec);
             * filtri.Add(fDataSuccAl);
             */

            //Filtro ADL
//            DOC_IN_ADL
            //String.Format("{0}@{1}", infoUt.idPeople, ruolo.systemId),
            FiltroRicerca fAdldoc = new FiltroRicerca();

            fAdldoc.argomento = listaArgomenti.DOC_IN_ADL.ToString();
            Ruolo AdlRuolo = BusinessLogic.Utenti.UserManager.getRuoloByIdGruppo(request.IdGruppo);

            fAdldoc.valore = String.Format("{0}@{1}", request.UserInfo.IdPeople, request.IdCorrGlobali);
            filtri.Add(fAdldoc);

            //Filtro per Registro attivo:
            string listaRegistri = string.Empty;

            foreach (DocsPaVO.utente.Registro reg in AdlRuolo.registri)
            {
                if (!reg.flag_pregresso)
                {
                    listaRegistri += "," + reg.systemId.ToString();
                }
            }
            listaRegistri = listaRegistri.Substring(1);


            FiltroRicerca fAdlReg = new FiltroRicerca();

            fAdlReg.argomento = listaArgomenti.REGISTRO.ToString();
            fAdlReg.valore    = listaRegistri;
            filtri.Add(fAdlReg);


            filtriArray[0] = filtri.ToArray();
            InfoUtente iu = request.UserInfo.InfoUtente;

            iu.idGruppo      = request.IdGruppo;
            iu.idCorrGlobali = request.IdCorrGlobali;
            List <SearchResultInfo> idProfileList = new List <SearchResultInfo>();
            ArrayList result = BusinessLogic.Documenti.InfoDocManager.getQueryPaging(request.IdGruppo, request.UserInfo.IdPeople, filtriArray, false, request.RequestedPage, request.PageSize, true, out numTotPage, out numRec, false, out idProfileList, false);

            response.TotalRecordCount = numRec;
            response.Risultati        = new List <RicercaElement>();
            foreach (InfoDocumento temp in result)
            {
                response.Risultati.Add(RicercaElement.buildInstance(temp));
            }
        }
Ejemplo n.º 27
0
        /// <summary>
        /// Funzione per l'importazione di un documento di emergenza a partire dai dati
        /// descrittivi contenuti all'interno di uno specifico oggetto.
        /// </summary>
        /// <param name="rowData">L'oggetto con le informazioni sul documento da importare</param>
        /// <param name="userInfo">Le informazioni sull'utente che ha lanciato la procedura</param>
        /// <param name="role">Il ruolo con cui è stata lanciata la procedura</param>
        /// <param name="serverPath">L'indirizzo della WA</param>
        /// <param name="isRapidClassificationRequired">True se è abilitata la classificazione rapida</param>
        /// <param name="isSmistamentoEnabled">True se è abilitato lo smistamento</param>
        /// <param name="sharedDirectoryPath">L'indirizzo della cartella scharata</param>
        /// <param name="protoType">Il tipo di documento da creare</param>
        /// <returns>Il risultato dell'importazione del documento</returns>
        public static ImportResult ImportRDEDocument(
            DocumentRowData rowData,
            InfoUtente userInfo,
            Ruolo role,
            string serverPath,
            bool isRapidClassificationRequired,
            bool isSmistamentoEnabled,
            string ftpAddress,
            bool isProfilationRequired,
            ImportDocumentsManager.ProtoType protoType,
            String ftpUsername,
            String ftpPassword,
            bool isEnabledPregressi)
        {
            #region Dichiarazione variabili

            // Possibilità da parte dell'utente di creare il documento della tipologia richiesta
            bool canCreateDocuments;

            // Il risultato dell'elaborazione
            ImportResult toReturn;

            // Il contenitore dei risultati
            ResultsContainer resultContainer = new ResultsContainer();

            #endregion

            // Verifica della possibilità di creare documenti del tipo specificato
            canCreateDocuments = CanCreateDocumentOfType(protoType, (Funzione[])role.funzioni.ToArray(typeof(Funzione)));

            // Se con il ruolo corrente è possibile creare il documento della tipologi richiesta,
            // si procede alla creazione
            if (canCreateDocuments)
            {
                toReturn = ImportDocumentsManager.ImportDocument(
                    rowData,
                    userInfo,
                    role,
                    serverPath,
                    isProfilationRequired,
                    isRapidClassificationRequired,
                    ftpAddress,
                    isSmistamentoEnabled,
                    protoType,
                    ref resultContainer,
                    ftpUsername,
                    ftpPassword,
                    isEnabledPregressi);
            }
            else
            {
                // Altrimenti aggiunta di un result negativo
                toReturn = new ImportResult()
                {
                    Outcome = ImportResult.OutcomeEnumeration.KO,
                    Message = "Utente non abilitato alla creazione di documenti di tipo " + protoType + "."
                }
            };

            // Restituzione del risultato
            return(toReturn);
        }
Ejemplo n.º 28
0
        public override void buildResponse(RicercaRequest request, RicercaResponse response)
        {
            int numRec;
            int numTotPage;


            //Filtro ricerca temporale -1anno
            FiltroRicerca fascDataPrec = new FiltroRicerca();

            fascDataPrec.argomento = DocsPaVO.filtri.fascicolazione.listaArgomenti.APERTURA_PRECEDENTE_IL.ToString();
            fascDataPrec.valore    = DateTime.Now.Date.AddDays(1).ToString("dd/MM/yyyy");
            FiltroRicerca fascDataSuccAl = new FiltroRicerca();

            fascDataSuccAl.argomento = DocsPaVO.filtri.fascicolazione.listaArgomenti.APERTURA_SUCCESSIVA_AL.ToString();
            fascDataSuccAl.valore    = DateTime.Now.AddYears(-1).Date.ToString("dd/MM/yyyy");



            logger.Debug("ricerca di documenti e fascicoli per testo");
            List <RicercaElement> risultati = new List <RicercaElement>();

            FiltroRicerca[] filtriFasc = new FiltroRicerca[3];
            filtriFasc[0]           = new FiltroRicerca();
            filtriFasc[0].argomento = DocsPaVO.filtri.fascicolazione.listaArgomenti.TITOLO.ToString();
            filtriFasc[0].valore    = request.Text;
            filtriFasc[1]           = fascDataSuccAl;
            filtriFasc[2]           = fascDataPrec;
            InfoUtente iu = request.UserInfo.InfoUtente;

            iu.idGruppo      = request.IdGruppo;
            iu.idCorrGlobali = request.IdCorrGlobali;
            logger.Debug("testo da cercare: " + request.Text);
            List <SearchResultInfo> idProjectList = null;
            //ArrayList resultFasc = BusinessLogic.Fascicoli.FascicoloManager.getListaFascicoliPaging(iu, null, null, filtriFasc, request.EnableUfficioRef, request.EnableProfilazione, true, out numTotPage, out  numRec, request.RequestedPage, request.PageSize, false, out idProjectList, null, string.Empty);



            ArrayList resultFasc = BusinessLogic.Fascicoli.FascicoloManager.getListaFascicoli(iu, null, filtriFasc, request.EnableUfficioRef, request.EnableProfilazione, true, null, null, null);

            logger.Debug("numero totale risultati: " + resultFasc.Count);
            foreach (Fascicolo temp in resultFasc)
            {
                risultati.Add(RicercaElement.buildInstance(temp));
            }
            FiltroRicerca[][]    filtriArrayDoc = new FiltroRicerca[1][];
            List <FiltroRicerca> filtriDoc      = new List <FiltroRicerca>();;

            if (!string.IsNullOrEmpty(request.Text))
            {
                FiltroRicerca fOgg = new FiltroRicerca();
                fOgg.argomento = listaArgomenti.OGGETTO.ToString();
                fOgg.valore    = request.Text;
                filtriDoc.Add(fOgg);
            }
            listaArgomenti[] defaultArgomenti = new listaArgomenti[] {
                listaArgomenti.PROT_ARRIVO,
                listaArgomenti.PROT_PARTENZA,
                listaArgomenti.PROT_INTERNO,
                listaArgomenti.GRIGIO,
                listaArgomenti.PREDISPOSTO
            };
            foreach (listaArgomenti arg in defaultArgomenti)
            {
                FiltroRicerca temp = new FiltroRicerca();
                temp.argomento = arg.ToString();
                temp.valore    = "true";
                filtriDoc.Add(temp);
            }


            //Filtro ricerca temporale -1anno
            FiltroRicerca fDataPrec = new FiltroRicerca();

            fDataPrec.argomento = listaArgomenti.DATA_CREAZIONE_PRECEDENTE_IL.ToString();
            fDataPrec.valore    = DateTime.Now.Date.AddDays(1).ToString("dd/MM/yyyy");
            FiltroRicerca fDataSuccAl = new FiltroRicerca();

            fDataSuccAl.argomento = listaArgomenti.DATA_CREAZIONE_SUCCESSIVA_AL.ToString();
            fDataSuccAl.valore    = DateTime.Now.AddYears(-1).Date.ToString("dd/MM/yyyy");

            filtriDoc.Add(fDataPrec);
            filtriDoc.Add(fDataSuccAl);
            List <SearchResultInfo> idProfileList = new List <SearchResultInfo>();

            filtriArrayDoc[0] = filtriDoc.ToArray();
            //ArrayList resultDoc = BusinessLogic.Documenti.InfoDocManager.getQueryPaging(request.IdGruppo, request.UserInfo.IdPeople, filtriArrayDoc, true, request.RequestedPage, request.PageSize, true, out numTotPage, out numRec, false, out idProfileList, false);
            ArrayList resultDoc = BusinessLogic.Documenti.InfoDocManager.getQuery(request.IdGruppo, request.UserInfo.IdPeople, filtriArrayDoc);

            foreach (InfoDocumento temp in resultDoc)
            {
                risultati.Add(RicercaElement.buildInstance(temp));
            }
            risultati.Sort(new RicercaElementComparer());
            PaginatorDecorator <RicercaElement> pag = new PaginatorDecorator <RicercaElement>(request.RequestedPage, request.PageSize, risultati);

            response.Risultati        = pag.execute();
            response.TotalRecordCount = pag.TotalResultCount;
        }
Ejemplo n.º 29
0
        /// <summary>
        /// Funzione per l'importazione dei documenti
        /// </summary>
        /// <param name="completePath">Il path in cui è memorizzato il file temporaneo</param>
        /// <param name="userInfo">Le informazioni sull'utente cha ha lanciato la procedura</param>
        /// <param name="role">Il ruolo con cui è stata lanciata la procedura</param>
        /// <param name="serverPath">L'indirizzo della WA</param>
        /// <param name="isRapidClassificationRequired">True se è richiesta classificazione rapida obbligatoria</param>
        /// <param name="isSmistamentoEnabled">True se è abilitato lo smistamento</param>
        /// <returns></returns>
        private static ResultsContainer CreateDocuments(DocumentRowDataContainer container, InfoUtente userInfo, Ruolo role, string serverPath, bool isRapidClassificationRequired, bool isSmistamentoEnabled, string ftpAddress, String ftpUsername, String ftpPassword, bool isEnabledPregressi)
        {
            #region Dichiarazione variabili

            // La stringa di connessione al foglio excel
            string connectionString = String.Empty;

            // Il risultato dell'elaborazione
            ResultsContainer result = null;

            // La lista di funzioni associate al ruolo
            Funzione[] functions = null;

            // Un booleano utilizzato per tesare se con il ruolo segnalato può creare
            // creato un documento di un certo tipo
            bool canCreateDocuments = false;

            #endregion

            // Creazione della lista dei risultati
            result = new ResultsContainer();

            // Recupero delle funzioni associate al ruolo
            functions = (Funzione[])role.funzioni.ToArray(typeof(Funzione));

            #region Creazione documenti di emergenza in Arrivo

            // Verifica della possibilità di creare documenti in arrivo con il ruolo
            // role
            canCreateDocuments = functions.Where(e => e.codice == "PROTO_IN").FirstOrDefault() != null;

            // Se con il ruolo corrente è possibile creare documenti in arrivo,
            // si procede alla creazione
            if (canCreateDocuments)
            {
                // Se la lista dei documenti in Arrivo in è valorizzata, si procede con l'importazione
                if (container.InDocument != null)
                {
                    result.InDocument.AddRange(new InDocument().ImportDocuments(
                                                   container.InDocument,
                                                   userInfo,
                                                   role,
                                                   serverPath,
                                                   false,
                                                   isRapidClassificationRequired,
                                                   ftpAddress,
                                                   false,
                                                   isSmistamentoEnabled,
                                                   "A",
                                                   ftpUsername,
                                                   ftpPassword,
                                                   isEnabledPregressi));
                }
            }
            else
            {
                // Altrimenti aggiunta di un result negativo
                result.InDocument.Add(new ImportResult()
                {
                    Outcome = ImportResult.OutcomeEnumeration.KO,
                    Message = "Ruolo non abilitato alla creazione di documenti in arrivo."
                });
            }

            #endregion

            #region Creazione documenti di emergenza in Partenza

            // Verifica della possibilità di creare documenti in uscita con il ruolo
            // role
            canCreateDocuments = functions.Where(e => e.codice == "PROTO_OUT").FirstOrDefault() != null;

            // Se con il ruolo corrente è possibile creare documenti in partenza,
            // si procede alla creazione
            if (canCreateDocuments)
            {
                if (container.OutDocument != null)
                {
                    result.OutDocument.AddRange(new OutDocument().ImportDocuments(
                                                    container.OutDocument,
                                                    userInfo,
                                                    role,
                                                    serverPath,
                                                    false,
                                                    isRapidClassificationRequired,
                                                    ftpAddress,
                                                    false,
                                                    isSmistamentoEnabled,
                                                    "P",
                                                    ftpUsername,
                                                    ftpPassword,
                                                    isEnabledPregressi));
                }
            }
            else
            {
                // Altrimenti aggiunta di un result negativo
                result.OutDocument.Add(new ImportResult()
                {
                    Outcome = ImportResult.OutcomeEnumeration.KO,
                    Message = "Utente non abilitato alla creazione di documenti in partenza."
                });
            }

            #endregion

            #region Creazione documenti di emergenza Interni

            // Verifica della possibilità di creare documenti interni con il ruolo
            // role
            canCreateDocuments = functions.Where(e => e.codice == "PROTO_OWN").FirstOrDefault() != null;

            // Se con il ruolo corrente è possibile creare documenti interni,
            // si procede alla creazione
            if (canCreateDocuments)
            {
                if (container.OwnDocument != null)
                {
                    result.OwnDocument.AddRange(new OwnDocument().ImportDocuments(
                                                    container.OwnDocument,
                                                    userInfo,
                                                    role,
                                                    serverPath,
                                                    false,
                                                    isRapidClassificationRequired,
                                                    ftpAddress,
                                                    false,
                                                    isSmistamentoEnabled,
                                                    "I",
                                                    ftpUsername,
                                                    ftpPassword,
                                                    isEnabledPregressi));
                }
            }
            else
            {
                // Altrimenti aggiunta di un result negativo
                result.OwnDocument.Add(new ImportResult()
                {
                    Outcome = ImportResult.OutcomeEnumeration.KO,
                    Message = "Utente non abilitato alla creazione di documenti interni."
                });
            }

            #endregion

            // Restituzione del risultato dell'importazione
            return(result);
        }
Ejemplo n.º 30
0
        /// <summary>
        /// Implementazione della logica del task di migrazione dati
        /// per tutti i titolari di una singola amministrazione DocsPa
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="amministrazione"></param>
        internal static void ImportaTitolari(InfoUtente infoUtente, InfoAmministrazione amministrazione)
        {
            using (DocsPaDB.DBProvider dbProvider = new DocsPaDB.DBProvider())
            {
                // 1. Reperimento titolari per l'amministrazione
                using (DataSet ds = new DataSet())
                {
                    if (dbProvider.ExecuteQuery(ds, GetQueryTitolari(infoUtente, amministrazione)))
                    {
                        DocsPaDocumentale_DOCUMENTUM.Documentale.TitolarioManager titolarioManager = new DocsPaDocumentale_DOCUMENTUM.Documentale.TitolarioManager(infoUtente);

                        foreach (DataRow row in ds.Tables[0].Rows)
                        {
                            string codice = DataReaderHelper.GetValue <string>(row, "CODICE", false);

                            if (codice == CODICE_TITOLARIO)
                            {
                                // 2. Import titolario
                                OrgTitolario titolario = GetTitolario(row, infoUtente, amministrazione);

                                if (titolarioManager.SaveTitolario(titolario))
                                {
                                    Log.GetInstance(amministrazione).Write(string.Format("Migrazione titolario. Codice: '{0}' - Descrizione: '{1}'", titolario.Codice, titolario.Descrizione), false);
                                }
                                else
                                {
                                    // 2a. Errore nell'inserimento del titolario
                                    throw new ApplicationException(
                                              string.Format("Si è verificato un errore nell'import del titolario '{0}' per l'amministrazione '{1}'",
                                                            titolario.Codice, amministrazione.Codice));
                                }
                            }
                            else
                            {
                                // 3. Import nodo titolario
                                OrgNodoTitolario nodoTitolario = GetNodoTitolario(row, infoUtente, amministrazione);

                                if (titolarioManager.ContainsNodoTitolario(nodoTitolario.ID))
                                {
                                    // Nodo titolario già esistente, save dei dati con refresh delle entries dell'acl associata
                                    titolarioManager.SaveNodoTitolario(nodoTitolario, true);

                                    Log.GetInstance(amministrazione).Write(string.Format("Migrazione nodo titolario. Codice: '{0}' - Descrizione: '{1}'. Aggiornamento.", nodoTitolario.Codice, nodoTitolario.Descrizione), false);
                                }
                                else
                                {
                                    if (titolarioManager.SaveNodoTitolario(nodoTitolario))
                                    {
                                        Log.GetInstance(amministrazione).Write(string.Format("Migrazione nodo titolario. Codice: '{0}' - Descrizione: '{1}'", nodoTitolario.Codice, nodoTitolario.Descrizione), false);
                                    }
                                    else
                                    {
                                        // 3a. Errore nell'inserimento del nodo titolario
                                        throw new ApplicationException(
                                                  string.Format("Si è verificato un errore nell'import del nodo titolario '{0}' per l'amministrazione '{1}'",
                                                                nodoTitolario.Codice, amministrazione.Codice));
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        // 1a. Errore nel reperimento dei titolari per l'amministrazione
                        throw new ApplicationException(
                                  string.Format("Si è verificato un errore nel reperimento dei titolari per l'amministrazione '{0}'",
                                                amministrazione.Codice));
                    }
                }
            }
        }