示例#1
0
        private static Byte[] GetReportData(string codice, string descrizione)
        {
            string templatePath = AppDomain.CurrentDomain.BaseDirectory + @"report/fascicolo/Fascetta.txt";
            string report       = ReportUtils.stringFile(templatePath);

            codice      = codice.Replace("\\", "\\\\");
            report      = report.Replace("XCODICE", codice);
            descrizione = descrizione.Replace("\\", "\\\\");
            report      = report.Replace("XDESCRIZIONE", descrizione);
            return(ReportUtils.toByteArray(report));
        }
示例#2
0
        private static DocsPaVO.documento.FileDocumento GetStampaProfiloRTF(DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.documento.SchedaDocumento schedaDocumento)
        {
            logger.Debug("GetStampaProfiloRTF");

            string reportData = ReportUtils.stringFile(AppDomain.CurrentDomain.BaseDirectory + @"\report\schedaDoc\schedaProfiloDoc.txt");

            reportData = reportData.Replace("XIDDOC", schedaDocumento.docNumber);
            reportData = reportData.Replace("XDTACREAZIONE", schedaDocumento.dataCreazione);
            reportData = reportData.Replace("XOGG", schedaDocumento.oggetto.descrizione);

            string paroleChiavi = string.Empty;

            for (int i = 0; i < schedaDocumento.paroleChiave.Count; i++)
            {
                if (paroleChiavi != string.Empty)
                {
                    paroleChiavi += "; ";
                }

                paroleChiavi += ((DocsPaVO.documento.ParolaChiave)schedaDocumento.paroleChiave[i]).descrizione;
            }

            reportData = reportData.Replace("XPAROLECHIAVI", paroleChiavi);
            reportData = reportData.Replace("XNOTE", BusinessLogic.Note.NoteManager.GetUltimaNotaAsString(infoUtente, new DocsPaVO.Note.AssociazioneNota(DocsPaVO.Note.AssociazioneNota.OggettiAssociazioniNotaEnum.Documento, schedaDocumento.systemId)));

            string tipoAtto = string.Empty;

            if (schedaDocumento.tipologiaAtto != null)
            {
                tipoAtto = schedaDocumento.tipologiaAtto.descrizione;
            }

            reportData = reportData.Replace("XTIPODOC", tipoAtto);

            DocsPaVO.documento.FileDocumento retValue = new DocsPaVO.documento.FileDocumento();

            retValue.content     = ReportUtils.toByteArray(reportData);
            retValue.length      = retValue.content.Length;
            retValue.contentType = "application/rtf";
            retValue.name        = "report.rtf";

            return(retValue);
        }
示例#3
0
        /// <summary>
        /// </summary>
        /// <param name="classificazione"></param>
        /// <param name="infoUtente"></param>
        /// <param name="pos"></param>
        /// <param name="report"></param>
        /// <param name="path"></param>
        private static void buildClassificazione(string idAmministrazione, string idGruppo, string idPeople, DocsPaVO.fascicolazione.Classificazione classificazione, int pos, ref System.Collections.ArrayList report, string path)
        {
            string voceTitolario = ReportUtils.stringFile(path + "report\\titolario\\voceTitolario.txt");
            int    firstPos      = 100 * classificazione.codice.Length;
            int    secondPos     = pos + 100 * classificazione.codice.Length;

            voceTitolario = voceTitolario.Replace("XFIRSTPOS", "" + firstPos);
            voceTitolario = voceTitolario.Replace("XPOS", "" + secondPos);
            string testo = classificazione.codice + " " + classificazione.descrizione;

            voceTitolario = voceTitolario.Replace("XTESTO_VOCE", testo);
            ReportUtils.addStringToReport(voceTitolario, ref report);

            for (int i = 0; i < classificazione.childs.Count; i++)
            {
                buildClassificazione(idAmministrazione, idGruppo, idPeople, (DocsPaVO.fascicolazione.Classificazione)classificazione.childs[i], secondPos, ref report, path);
            }
            //parte relativa ai fascicoli proc.
            //addFascProc(idAmministrazione, idGruppo, idPeople, classificazione,firstPos,ref report,path);
        }
示例#4
0
        /// <summary></summary>
        /// <param name="corr"></param>
        /// <param name="rowString"></param>
        /// <param name="report"></param>
        private static void addRowInTable(DocsPaVO.utente.Corrispondente corr, string rowString, ref ArrayList report)
        {
            string tmpStr = rowString;

            // tipo
            string tipo = "";

            if (corr.GetType().Equals(typeof(DocsPaVO.utente.Utente)))
            {
                tipo = "Utente";
            }
            else if (corr.GetType().Equals(typeof(DocsPaVO.utente.Ruolo)))
            {
                tipo = "Ruolo";
            }
            else if (corr.GetType().Equals(typeof(DocsPaVO.utente.UnitaOrganizzativa)))
            {
                tipo = "UO";
            }
            tmpStr = tmpStr.Replace("XTIPO", tipo);

            // codice
            tmpStr = tmpStr.Replace("XCODICE", corr.codiceRubrica);

            // descrizione
            tmpStr = tmpStr.Replace("XDESCRIZIONE", corr.descrizione);

            // email
            string email = "";

            if (corr.email != null)
            {
                email = corr.email;
            }
            tmpStr = tmpStr.Replace("XEMAIL", email);

            // tipo I/E
            tmpStr = tmpStr.Replace("XIE", corr.tipoIE);

            ReportUtils.addStringToReport(tmpStr, ref report);
        }
示例#5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="classificazione"></param>
 /// <param name="infoUtente"></param>
 /// <param name="pos"></param>
 /// <param name="report"></param>
 /// <param name="path"></param>
 private static void addFascProc(DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.fascicolazione.Classificazione classificazione, int pos, ref System.Collections.ArrayList report, string path)
 {
     logger.Debug("addFascProc");
     DocsPaVO.filtri.FiltroRicerca filtro = new DocsPaVO.filtri.FiltroRicerca();
     filtro.argomento = DocsPaVO.filtri.fascicolazione.listaArgomenti.TIPO_FASCICOLO.ToString();
     filtro.valore    = "P";
     DocsPaVO.filtri.FiltroRicerca[] filtri        = { filtro };
     System.Collections.ArrayList    fascicoliProc = BusinessLogic.Fascicoli.FascicoloManager.getListaFascicoli(infoUtente, classificazione, filtri, false, false, false, null, "");
     logger.Debug("Fascicoli procedimentali trovati: " + fascicoliProc.Count);
     for (int k = 0; k < fascicoliProc.Count; k++)
     {
         DocsPaVO.fascicolazione.Fascicolo fasc = (DocsPaVO.fascicolazione.Fascicolo)fascicoliProc[k];
         string voceFasc  = ReportUtils.stringFile(path + "report\\titolario\\voceProc.txt");
         int    firstPos  = 100 * fasc.codice.Length;
         int    secondPos = pos + 100 * fasc.codice.Length;
         voceFasc = voceFasc.Replace("XFIRSTPOS", "" + firstPos);
         voceFasc = voceFasc.Replace("XPOS", "" + secondPos);
         string testoFasc = fasc.codice + " " + fasc.descrizione;
         voceFasc = voceFasc.Replace("XTESTO_VOCE", testoFasc);
         ReportUtils.addStringToReport(voceFasc, ref report);
     }
 }
示例#6
0
        /// <summary></summary>
        /// <param name="classificazioni"></param>
        /// <param name="infoUtente"></param>
        /// <returns></returns>
        public static DocsPaVO.documento.FileDocumento getTitolarioReport(string idAmministrazione, string idGruppo, string idPeople, System.Collections.ArrayList classificazioni)
        {
            DocsPaVO.documento.FileDocumento result = new DocsPaVO.documento.FileDocumento();
            //string path = ReportUtils.getPathName();
            //string path = DocsPaUtils.Functions.Functions.GetReportsPath();
            string path = AppDomain.CurrentDomain.BaseDirectory;

            try
            {
                string headerString = ReportUtils.stringFile(path + "report\\titolario\\headerTitolario.txt");
                logger.Debug("Generazione report");
                System.DateTime data = System.DateTime.Now;
                System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("it-IT");
                string[] formats    = data.GetDateTimeFormats(ci);
                string   dataString = formats[5];
                headerString = headerString.Replace("XDATA", dataString);
                //string titolo=ConfigurationManager.AppSettings["intestazioneTitolario"];
                string titolo = "Titolario";               // prima lo prendeva dal web.config, ma non esiste più
                if (titolo != null)
                {
                    headerString = headerString.Replace("XTITOLO", titolo);
                }
                else
                {
                    headerString = headerString.Replace("XTITOLO", "");
                }
                System.Collections.ArrayList report = new System.Collections.ArrayList();
                ReportUtils.addStringToReport(headerString, ref report);
                logger.Debug("Inserimento voci di titolario");
                for (int i = 0; i < classificazioni.Count; i++)
                {
                    DocsPaVO.fascicolazione.Classificazione classificazione = (DocsPaVO.fascicolazione.Classificazione)classificazioni[i];
                    string headerTableString = ReportUtils.stringFile(path + "report\\titolario\\headerTableTitolario.txt");
                    headerTableString = headerTableString.Replace("XPRIMO_CODICE", classificazione.codice);
                    headerTableString = headerTableString.Replace("XPRIMA_DESCR", classificazione.descrizione);
                    ReportUtils.addStringToReport(headerTableString, ref report);

                    for (int j = 0; j < classificazione.childs.Count; j++)
                    {
                        buildClassificazione(idAmministrazione, idGruppo, idPeople, (DocsPaVO.fascicolazione.Classificazione)classificazione.childs[j], 0, ref report, path);
                    }

                    //inserimento fascicoli proc
                    //addFascProc(idAmministrazione, idGruppo, idPeople, classificazione,0,ref report,path);

                    string bottomTableString = ReportUtils.stringFile(path + "report\\titolario\\bottomTableTitolario.txt");
                    ReportUtils.addStringToReport(bottomTableString, ref report);
                }

                logger.Debug("Inserimento bottom");
                string bottomString = ReportUtils.stringFile(path + "report\\titolario\\bottomTitolario.txt");
                ReportUtils.addStringToReport(bottomString, ref report);
                logger.Debug("Generazione fileDocumento");
                result.content     = (byte[])report.ToArray(typeof(byte));
                result.length      = result.content.Length;
                result.contentType = "application/rtf";
                result.name        = "report.rtf";
                logger.Debug("fileDocumento generato");
            }
            catch (Exception e)
            {
                logger.Debug("Errore nella gestione di Report (getTitolarioReport)", e);
                throw e;
            }
            return(result);
        }
示例#7
0
        /// <summary></summary>
        /// <param name="qco"></param>
        /// <returns></returns>
        public static DocsPaVO.documento.FileDocumento stampa(DocsPaVO.addressbook.QueryCorrispondente qco)
        {
            //string path = ReportUtils.getPathName() + "\\corrispondenti\\";
            string path = AppDomain.CurrentDomain.BaseDirectory + "report\\corrispondenti\\";

            //string path = DocsPaUtils.Functions.Functions.GetReportsPath() + "\\corrispondenti\\";
            DocsPaVO.documento.FileDocumento result = new DocsPaVO.documento.FileDocumento();

            try
            {
                ArrayList report = new ArrayList();
                string    tmpStr = "";

                #region Testata
                tmpStr = ReportUtils.stringFile(path + "Header.txt");

                // Registri
                string registro = "COMUNI A TUTTI";
                if (qco.idRegistri.Count > 0)
                {
                    //db.openConnection();
                    registro = BusinessLogic.Utenti.RegistriManager.getRegistro((string)qco.idRegistri[0]).descrizione;
                    //db.closeConnection();
                }
                tmpStr = tmpStr.Replace("XREGISTRO", registro);

                // Tipo corrispondente
                string tipo = "INTERNI/ESTERNI";
                if (qco.tipoUtente == DocsPaVO.addressbook.TipoUtente.INTERNO)
                {
                    tipo = "INTERNI";
                }
                else if (qco.tipoUtente == DocsPaVO.addressbook.TipoUtente.ESTERNO)
                {
                    tipo = "ESTERNI";
                }

                tmpStr = tmpStr.Replace("XFILTRO", tipo);
                ReportUtils.addStringToReport(tmpStr, ref report);
                #endregion Testata

                #region Tabella
                //testata
                tmpStr = ReportUtils.stringFile(path + "TableHead.txt");
                ReportUtils.addStringToReport(tmpStr, ref report);

                //righe
                string rowString = ReportUtils.stringFile(path + "Row.txt");
                qco.getChildren = false;

                // UO
                qco.descrizioneUO = "";
                addRows(BusinessLogic.Utenti.addressBookManager.getListaCorrispondenti(qco), rowString, ref report);
                qco.descrizioneUO = null;

                // Ruoli
                qco.descrizioneRuolo = "";
                addRows(BusinessLogic.Utenti.addressBookManager.getListaCorrispondenti(qco), rowString, ref report);
                qco.descrizioneRuolo = null;

                // Utenti
                qco.cognomeUtente = "";
                ArrayList lista = BusinessLogic.Utenti.addressBookManager.getListaCorrispondenti(qco);
                if (qco.tipoUtente != DocsPaVO.addressbook.TipoUtente.INTERNO)
                {
                    ArrayList listaSciolti = BusinessLogic.Utenti.addressBookManager.listaCorrEstSciolti(qco);
                    for (int i = 0; i < listaSciolti.Count; i++)
                    {
                        lista.Add(listaSciolti[i]);
                    }
                }
                addRows(lista, rowString, ref report);

                #endregion Tabella

                #region Bottom
                tmpStr = ReportUtils.stringFile(path + "Bottom.txt");
                ReportUtils.addStringToReport(tmpStr, ref report);
                #endregion Bottom

                result.content     = (byte[])report.ToArray(typeof(byte));
                result.length      = result.content.Length;
                result.contentType = "application/msword";
                result.name        = "report.rtf";
            }
            catch (Exception e)
            {
                logger.Debug("Errore nella gestione di Report (stampa)", e);
                throw e;
            }
            return(result);
        }
示例#8
0
        /// <summary></summary>
        /// <param name="schedaDoc"></param>
        /// <returns></returns>
        public static DocsPaVO.documento.FileDocumento getRicevutaProtocolloRtf(DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.documento.SchedaDocumento schedaDoc)
        {
            DocsPaVO.documento.FileDocumento result = new DocsPaVO.documento.FileDocumento();
            string path = AppDomain.CurrentDomain.BaseDirectory + "report";

            try
            {
                logger.Debug("Generazione report");
                //string report = ReportUtils.stringFile(path + "\\ricevuta\\ricevuta.txt");
                string modelRootPath = System.Configuration.ConfigurationManager.AppSettings["MODELS_ROOT_PATH"];

                string report = ReportUtils.stringFile(string.Concat(modelRootPath, string.Format(@"\Modelli\{0}\Ricevute\{1}\Ricevuta.{2}", schedaDoc.registro.codAmministrazione, schedaDoc.registro.codRegistro, "rtf")));

                report = Regex.Replace(report, "#Amministrazione#", BusinessLogic.Amministrazione.AmministraManager.AmmGetInfoAmmCorrente(infoUtente.idAmministrazione).Descrizione, RegexOptions.IgnoreCase);
                report = Regex.Replace(report, "#Data ora protocollo#", BusinessLogic.Documenti.ProtoManager.getDataOraProtocollo(schedaDoc.docNumber), RegexOptions.IgnoreCase);
                report = Regex.Replace(report, "#Data protocollo#", schedaDoc.protocollo.dataProtocollazione, RegexOptions.IgnoreCase);
                report = Regex.Replace(report, "#Numero protocollo#", schedaDoc.protocollo.numero, RegexOptions.IgnoreCase);
                report = Regex.Replace(report, "#Segnatura#", schedaDoc.protocollo.segnatura, RegexOptions.IgnoreCase);
                report = Regex.Replace(report, "#Oggetto#", schedaDoc.oggetto.descrizione.Replace("\n", @" \par "), RegexOptions.IgnoreCase);

                if (schedaDoc.protocollatore != null)
                {
                    Corrispondente corr = new Corrispondente();
                    DocsPaDB.Query_DocsPAWS.Utenti obj = new DocsPaDB.Query_DocsPAWS.Utenti();
                    // PROTOCOLLATORE
                    if (schedaDoc.protocollatore.utente_idPeople != null && schedaDoc.protocollatore.utente_idPeople != string.Empty)
                    {
                        corr   = obj.GetCorrispondenteBySystemID(obj.GetIDUtCorr(schedaDoc.protocollatore.utente_idPeople));
                        report = Regex.Replace(report, "#Protocollatore#", corr.descrizione, RegexOptions.IgnoreCase);
                    }

                    // RUOLO PROTOCOLLATORE
                    if (schedaDoc.protocollatore.ruolo_idCorrGlobali != null && schedaDoc.protocollatore.ruolo_idCorrGlobali != string.Empty)
                    {
                        corr   = obj.GetCorrispondenteBySystemID(schedaDoc.protocollatore.ruolo_idCorrGlobali);
                        report = Regex.Replace(report, "#Ruolo protocollatore#", corr.descrizione, RegexOptions.IgnoreCase);
                    }

                    // UO PROTOCOLLATORE
                    if (schedaDoc.protocollatore.uo_idCorrGlobali != null && schedaDoc.protocollatore.uo_idCorrGlobali != string.Empty)
                    {
                        //descrizione
                        corr   = obj.GetCorrispondenteBySystemID(schedaDoc.protocollatore.uo_idCorrGlobali);
                        report = Regex.Replace(report, "#Uo protocollatore#", corr.descrizione, RegexOptions.IgnoreCase);
                    }
                }

                // NOTE
                // Reperimento dell'ultima nota visibile a tutti
                string testoNote = string.Empty;

                foreach (DocsPaVO.Note.InfoNota nota in BusinessLogic.Note.NoteManager.GetNote(infoUtente, new DocsPaVO.Note.AssociazioneNota(DocsPaVO.Note.AssociazioneNota.OggettiAssociazioniNotaEnum.Documento, schedaDoc.systemId), null))
                {
                    if (nota.TipoVisibilita == DocsPaVO.Note.TipiVisibilitaNotaEnum.Tutti)
                    {
                        testoNote = nota.Testo;
                        break;
                    }
                }

                report = Regex.Replace(report, "#Note#", testoNote, RegexOptions.IgnoreCase);


                //report custom pat momentaneo
                if (schedaDoc.creatoreDocumento != null && !string.IsNullOrEmpty(schedaDoc.creatoreDocumento.idCorrGlob_UO))
                {
                    Corrispondente corr = BusinessLogic.Utenti.UserManager.getCorrispondenteBySystemIDDisabled(schedaDoc.creatoreDocumento.idCorrGlob_UO);
                    report = Regex.Replace(report, "#Uo creatore#", corr.descrizione, RegexOptions.IgnoreCase);
                }
                else
                {
                    report = Regex.Replace(report, "#Uo creatore#", "", RegexOptions.IgnoreCase);
                }

                if (schedaDoc.protocollo.GetType() == typeof(DocsPaVO.documento.ProtocolloEntrata))
                {
                    report = Regex.Replace(report, "#Mittente#", ((DocsPaVO.documento.ProtocolloEntrata)schedaDoc.protocollo).mittente.descrizione, RegexOptions.IgnoreCase);
                }
                else if (schedaDoc.protocollo.GetType() == typeof(DocsPaVO.documento.ProtocolloUscita))
                {
                    report = Regex.Replace(report, "#Mittente#", ((DocsPaVO.documento.ProtocolloUscita)schedaDoc.protocollo).mittente.descrizione, RegexOptions.IgnoreCase);
                }
                else if (schedaDoc.protocollo.GetType() == typeof(DocsPaVO.documento.ProtocolloInterno))
                {
                    report = Regex.Replace(report, "#Mittente#", ((DocsPaVO.documento.ProtocolloInterno)schedaDoc.protocollo).mittente.descrizione, RegexOptions.IgnoreCase);
                }

                report = Regex.Replace(report, "#Numero Allegati#", schedaDoc.allegati.Count.ToString(), RegexOptions.IgnoreCase);

                logger.Debug("Generazione fileDocumento");
                logger.Debug("Creazione content");
                result.content = ReportUtils.toByteArray(report);
                logger.Debug("Content creato");
                result.length      = result.content.Length;
                result.contentType = "application/rtf";
                result.name        = "ricevuta.rtf";
                logger.Debug("fileDocumento generato");
            }
            catch (Exception e)
            {
                logger.Debug("Errore nella gestione di Report (getRicevutaProtocolloRtf)", e);
                throw e;
            }
            return(result);
        }
示例#9
0
        /// <summary></summary>
        /// <param name="schedaDoc"></param>
        /// <returns></returns>
        public static DocsPaVO.documento.FileDocumento getBustaReport(DocsPaVO.documento.SchedaDocumento schedaDoc)
        {
            DocsPaVO.documento.FileDocumento result = new DocsPaVO.documento.FileDocumento();
            //string path = ReportUtils.getPathName();
            //string path = DocsPaUtils.Functions.Functions.GetReportsPath();
            string path = AppDomain.CurrentDomain.BaseDirectory + "report";

            try
            {
                logger.Debug("Generazione report");
                string report = ReportUtils.stringFile(path + "\\busta\\headerBusta.txt");
                System.Collections.ArrayList dest = ((DocsPaVO.documento.ProtocolloUscita)schedaDoc.protocollo).destinatari;

                for (int i = 0; i < ((DocsPaVO.documento.ProtocolloUscita)schedaDoc.protocollo).destinatari.Count; i++)
                {
                    string body = ReportUtils.stringFile(path + "\\busta\\bodyBusta.txt");
                    logger.Debug("Sostituzione campi destinatario " + i);
                    body = body.Replace("XNOME_REG", schedaDoc.registro.descrizione);
                    logger.Debug("Ricerca dettagli destinatario " + i);
                    DocsPaVO.addressbook.QueryCorrispondente qco = new DocsPaVO.addressbook.QueryCorrispondente();
                    qco.systemId = ((DocsPaVO.utente.Corrispondente)dest[i]).systemId;
                    DocsPaVO.addressbook.DettagliCorrispondente dettDest = BusinessLogic.Utenti.addressBookManager.dettagliCorrispondenteMethod(qco);
                    body = body.Replace("XNOME_DEST", ((DocsPaVO.utente.Corrispondente)dest[i]).descrizione);
                    body = body.Replace("XINDIRIZZO_DEST", dettDest.Corrispondente[0].indirizzo);
                    string citta = "";
                    if (dettDest.Corrispondente[0].cap != null)
                    {
                        citta = citta + dettDest.Corrispondente[0].cap + "   ";
                    }
                    ;
                    if (dettDest.Corrispondente[0].citta != null)
                    {
                        citta = citta + dettDest.Corrispondente[0].citta + "   ";
                    }
                    ;
                    if (dettDest.Corrispondente[0].nazione != null)
                    {
                        citta = citta + "(" + dettDest.Corrispondente[0].nazione + ")";
                    }
                    ;
                    body = body.Replace("XCITTA_DEST", citta);
                    if (i != 0)
                    {
                        body = body.Replace("XNEW_PAGE", "{\\b0\\lang1040\\langfe1033\\langnp1040 \\page }");
                    }
                    else
                    {
                        body = body.Replace("XNEW_PAGE", "");
                    }
                    report = report + body;
                }

                string bottom = ReportUtils.stringFile(path + "\\busta\\bottomBusta.txt");
                report = report + bottom;
                logger.Debug("Generazione fileDocumento");
                logger.Debug("Creazione content");
                result.content = ReportUtils.toByteArray(report);
                logger.Debug("Content creato");
                result.length      = result.content.Length;
                result.contentType = "application/rtf";
                result.name        = "report.rtf";
                logger.Debug("fileDocumento generato");
            }
            catch (Exception e)
            {
                logger.Debug("Errore nella gestione di Report (getBustaReport)", e);
                throw e;
            }
            return(result);
        }
示例#10
0
        /// <summary></summary>
        /// <param name="schedaDoc"></param>
        /// <param name="infoUtente"></param>
        /// <returns></returns>
        public static DocsPaVO.documento.FileDocumento getSchedaDocReport(DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.documento.SchedaDocumento schedaDoc, string mittDest_Indirizzo)
        {
            DocsPaVO.documento.FileDocumento result = null;

            if (schedaDoc.protocollo == null)
            {
                result = GetStampaProfiloRTF(infoUtente, schedaDoc);
            }
            else
            {
                result = new DocsPaVO.documento.FileDocumento();

                string path        = AppDomain.CurrentDomain.BaseDirectory;
                string report      = string.Empty;
                bool   existUffRef = false;

                try
                {
                    existUffRef = ExistUfficioReferente(schedaDoc);

                    logger.Debug("Generazione report");

                    if (existUffRef)
                    {
                        report = ReportUtils.stringFile(path + "\\report\\schedaDoc\\SchedaDoc_UffRef.rtf");
                    }
                    else
                    {
                        report = ReportUtils.stringFile(path + "\\report\\schedaDoc\\SchedaDoc.rtf");
                    }
                    if (schedaDoc.registro != null)
                    {
                        report = report.Replace("XNOME_REGISTRO", schedaDoc.registro.descrizione);
                        report = report.Replace("XCODICE_REGISTRO", schedaDoc.registro.codRegistro);
                    }
                    else
                    {
                        report = report.Replace("XNOME_REGISTRO", string.Empty);
                        report = report.Replace("XCODICE_REGISTRO", string.Empty);
                    }
                    report = report.Replace("XNUM_PR", schedaDoc.protocollo.numero);
                    report = report.Replace("XDTA_PR", schedaDoc.protocollo.dataProtocollazione);
                    report = report.Replace("XA/P", schedaDoc.tipoProto);

                    string mittDest = "";
                    string protMitt = "";
                    string uffRef   = "";                       // Ufficio referente

                    DocsPaDB.Query_DocsPAWS.Documenti doc = new DocsPaDB.Query_DocsPAWS.Documenti();


                    if (schedaDoc.protocollo.GetType().Equals(typeof(DocsPaVO.documento.ProtocolloEntrata)))
                    {
                        if (mittDest_Indirizzo.ToUpper() == "FALSE")
                        {
                            mittDest = ((DocsPaVO.documento.ProtocolloEntrata)schedaDoc.protocollo).mittente.descrizione;
                        }
                        else
                        if (mittDest_Indirizzo.ToUpper() == "TRUE")
                        {
                            mittDest = doc.GetIndirizzoMittDest(schedaDoc.systemId, schedaDoc.tipoProto);
                        }
                        protMitt = ((DocsPaVO.documento.ProtocolloEntrata)schedaDoc.protocollo).dataProtocolloMittente + ((DocsPaVO.documento.ProtocolloEntrata)schedaDoc.protocollo).descrizioneProtocolloMittente;

                        // Ufficio referente
                        if (existUffRef)
                        {
                            uffRef = ((DocsPaVO.documento.ProtocolloEntrata)schedaDoc.protocollo).ufficioReferente.descrizione;
                        }
                    }
                    else
                    {
                        // Ufficio referente
                        if (existUffRef)
                        {
                            uffRef = ((DocsPaVO.documento.ProtocolloUscita)schedaDoc.protocollo).ufficioReferente.descrizione;
                        }

                        if (mittDest_Indirizzo.ToUpper() == "FALSE")
                        {
                            System.Collections.ArrayList dest = ((DocsPaVO.documento.ProtocolloUscita)schedaDoc.protocollo).destinatari;
                            for (int i = 0; i < dest.Count; i++)
                            {
                                mittDest = mittDest + ((DocsPaVO.utente.Corrispondente)dest[i]).descrizione;
                                if (i < (dest.Count - 1))
                                {
                                    mittDest = mittDest + " \\par ";
                                }
                            }
                            System.Collections.ArrayList destCC = ((DocsPaVO.documento.ProtocolloUscita)schedaDoc.protocollo).destinatariConoscenza;
                            if (destCC != null && destCC.Count > 0)
                            {
                                mittDest = mittDest + " \\par ";
                                for (int i = 0; i < destCC.Count; i++)
                                {
                                    mittDest = mittDest + ((DocsPaVO.utente.Corrispondente)destCC[i]).descrizione;
                                    if (i < (destCC.Count - 1))
                                    {
                                        mittDest = mittDest + " \\par ";
                                    }
                                }
                            }
                        }
                        else
                        if (mittDest_Indirizzo.ToUpper() == "TRUE")
                        {
                            mittDest = doc.GetIndirizzoMittDest(schedaDoc.systemId, schedaDoc.tipoProto);
                        }
                    }

                    report = report.Replace("XMITT/DEST", mittDest);
                    report = report.Replace("XPROT_MITT", protMitt);

                    //classifica
                    DocsPaVO.documento.InfoDocumento infoDoc   = new DocsPaVO.documento.InfoDocumento(schedaDoc);
                    System.Collections.ArrayList     fascicoli = BusinessLogic.Fascicoli.FascicoloManager.getFascicoliDaDoc(infoUtente, infoDoc.idProfile);
                    string classifica = "";
                    string codice     = "";
                    for (int i = 0; i < fascicoli.Count; i++)
                    {
                        //questo serve in caso nel codice fascicolo sia utilizzato come separatore il back slash "\", solo così è stampato nel file rtf...
                        codice     = ((DocsPaVO.fascicolazione.Fascicolo)fascicoli[i]).codice.Replace(@"\", @"{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1040\langfe1033\langnp1040\insrsid4612691 \\}");
                        classifica = classifica + " " + codice;
                        if (i < (fascicoli.Count - 1))
                        {
                            classifica = classifica + " \\par";
                        }
                    }
                    report = report.Replace("XCLASSIFICA", classifica);

                    report = report.Replace("XRISPOSTA", "");
                    report = report.Replace("XOGGETTO", schedaDoc.oggetto.descrizione);
                    report = report.Replace("XNOTE", BusinessLogic.Note.NoteManager.GetUltimaNotaAsString(infoUtente, new DocsPaVO.Note.AssociazioneNota(DocsPaVO.Note.AssociazioneNota.OggettiAssociazioniNotaEnum.Documento, schedaDoc.systemId)));

                    if (existUffRef)
                    {
                        report = report.Replace("XUFFREF", uffRef);
                    }

                    result.content     = ReportUtils.toByteArray(report);
                    result.length      = result.content.Length;
                    result.contentType = "application/rtf";
                    result.name        = "report.rtf";
                    logger.Debug("fileDocumento generato");
                }
                catch (Exception e)
                {
                    logger.Debug("Errore nella gestione di Report (getSchedaDocReport)", e);
                    throw e;
                }
            }

            return(result);
        }