/// <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); }
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); }
/// <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); }
/// <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)); }
/// <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)); }
/// <summary> /// /// </summary> /// <param name="infoUtente"></param> public FullTextSearchManager(InfoUtente infoUtente) { this._infoUtente = infoUtente; }
/// <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); } }
private ArrayList GetListaDocumenti(string[] docNumbers, InfoUtente infoUtente) { DocsPaDB.Query_DocsPAWS.RicercaFullText ricercaFT = new DocsPaDB.Query_DocsPAWS.RicercaFullText(); return(ricercaFT.GetDocumenti(docNumbers, infoUtente)); }
/// <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)); }
/// <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()); }
/// <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); }
/// <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()); }
/// <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()); }
/// <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); }
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); }
/// <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)); }
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); }
/// <summary> /// /// </summary> /// <param name="infoUtente"></param> public TitolarioManager(InfoUtente infoUtente) { this._infoUtente = infoUtente; }
/// <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); }
/// <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"); }
/// <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)); * } * } * }*/ }
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)); } }
/// <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)); }
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)); } } }
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); }
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)); } }
/// <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); }
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; }
/// <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); }
/// <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)); } } } }