using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Configuration; using System.Web; using Consulenza.PDFLettera.LetteraAccompagnamento; namespace Consulenza.PDFLettera { public class GestoreLettera { static int idLettera = -1; static string testo = string.Empty; static LetteraBenvenuto w = null; static string indirizzo = string.Empty; static string nome = string.Empty; static string cognome = string.Empty; //string codiceContratto = string.Empty; static string appellativo = string.Empty; static string oggetto = string.Empty; static string firma = string.Empty; static int codiceLettera = 0; public static void RestGestoreLettera() { idLettera = -1; testo = string.Empty; w = null; indirizzo = string.Empty; nome = string.Empty; cognome = string.Empty; //string codiceContratto = string.Empty; appellativo = string.Empty; oggetto = string.Empty; firma = string.Empty; codiceLettera = 0; } //public static byte[] componiLetteraBenvenuto(string cf, string rete, TipoLettera tipo,TipoContratto tc, TipoReport tr, int idReport) //{ // leggiDaDB(cf, rete, tipo, tc, tr, idReport,false); // switch (codiceLettera) // { // case 1: case 2: case 200: case 201: case 204: case 205: // w = new LetteraAccettazioneConAttivazioneSei(rete, idLettera, testo, nome, cognome, indirizzo, appellativo, oggetto, firma); // break; // case 3: case 4: case 202: case 203: case 206: case 207: // w = new LetteraAccettazioneAttivazioneSeiPosticipata(rete, idLettera, testo, nome, cognome, indirizzo, appellativo, oggetto, firma); // break; // case 5: case 6: // w = new LetteraRistampa(rete, idLettera, testo, nome, cognome, indirizzo, appellativo, oggetto, firma); // break; // } // testout += " " + cf + " " + rete + " " + codiceLettera; // w.writePDF(); // return w.Data; //} public static string testout = ""; //public static byte[] componiLetteraBenvenuto(string cf, string rete, TipoLettera tipo,TipoContratto tc, TipoReport tr) { // return componiLetteraBenvenuto(cf, rete, tipo,tc, tr, -1); //} public static byte[] componiLetteraAccompagnamento (string cf, string rete) { int nTipoContratto = readTipoContratto(cf, rete); readInfoLettera(cf, rete, nTipoContratto); //if (rete == "S") // w = new LetteraAccompagnamentoPeriodico(rete,idLettera,testo,nome,cognome,indirizzo,appellativo,oggetto,firma); // else w = new LetteraAccompagnamentoPeriodico(rete,idLettera,testo,nome,cognome,indirizzo,appellativo,oggetto,firma); w.writePDF(); return w.Data; } //public static byte[] componiLetteraRistampa(string cf, string rete, TipoReport tr, int idReport, bool periodico) //{ // leggiDaDB(cf, rete, TipoLettera.RistampaLettera, tr, idReport, periodico); // w = new LetteraRistampa(rete, idLettera, testo, nome, cognome, indirizzo, appellativo, oggetto, firma); // w.writePDF(); // return w.Data; //} private static int readTipoContratto(string cf, string rete) { int nRet = 0; DataTable table1 = new DataTable(); try { string sSql = "SELECT TIP_CONTRATTO FROM C6Mart.VCONTRATTI "; sSql = sSql + "WHERE COD_FISCALE ='" + cf + "' "; sSql = sSql + "AND rete='" + rete + "'"; table1 = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerStampeC6, sSql, null); if (table1.Rows.Count == 0) { if (rete == "F") nRet = 500; else nRet = 503; } else { switch (table1.Rows[0][0].ToString()) { case "0": if (rete == "F") nRet = 500; else nRet = 503; break; case "1": if (rete == "F") nRet = 501; else nRet = 504; break; case "2": if (rete == "F") nRet = 502; else nRet = 505; break; } } return nRet; } catch (Exception ex) { string errmes = "Errore nel recupero Tipo Contratto da vContratti: " + getException(ex) + " codfiscale " + cf + " rete " + rete; Console.WriteLine(errmes); throw ex; } } private static void readInfoLettera(string cf, string rete, int lettera) { codiceLettera = lettera; string nomestored = "[C6MartPeriodicoImmobiliare].[GESTIONE_SELECT_LETTERE_DA_INVIARE]"; try { List parametri = new List(); Parametro p = new Parametro(); p.DbType = DbType.AnsiString; p.Value = rete; p.ParameterName = "rete"; parametri.Add(p); p = new Parametro(); p.DbType = DbType.AnsiString; p.Value = cf; p.ParameterName = "cf"; parametri.Add(p); p = new Parametro(); p.DbType = DbType.Int16; p.Value = codiceLettera; p.ParameterName = "codiceLettera"; parametri.Add(p); p = new Parametro(); p.DbType = DbType.AnsiString; p.Value = -1; p.ParameterName = "idReport"; parametri.Add(p); p = new Parametro(); p.DbType = DbType.AnsiString; p.Value = 'M'; p.ParameterName = "tipoReport"; parametri.Add(p); IDataReader lettere = DataAccess.ExecuteDataReaderStoredProcedure(DBProvider.SqlServerStampeC6, nomestored, parametri); if (lettere.ToString() == "" && lettere == null ) { testo = ""; indirizzo = ""; nome = ""; cognome = ""; appellativo = ""; oggetto = ""; firma = ""; } else { if (lettere.Read()) { testo = lettere["testo"].ToString(); indirizzo = lettere["via"].ToString() + "\r\n"; if (!string.IsNullOrEmpty( lettere["cap"].ToString())) indirizzo += lettere["cap"].ToString() + " " ; else indirizzo += lettere["cap"].ToString(); indirizzo += lettere["localita"].ToString(); // indirizzo = lettere["via"].ToString() + "\r\n" + //lettere["cap"].ToString() + " " + // lettere["localita"].ToString(); if (!string.IsNullOrEmpty(lettere["provincia"].ToString())) indirizzo += " (" + lettere["provincia"].ToString() + ")"; nome = lettere["nome"].ToString(); cognome = lettere["cognome"].ToString(); appellativo = lettere["appellativo"].ToString(); oggetto = lettere["oggetto"].ToString(); firma = lettere["firma"].ToString(); //V if (!lettere.IsClosed) { lettere.Close(); lettere.Dispose(); } } else //testo = ""; //indirizzo = rete + " - " + codiceLettera + " - " + cf; //nome = ""; //cognome = ""; //appellativo = ""; //oggetto = ""; //firma = ""; throw new Exception("DataReader vuoto dopo l'esecuzione della stored procedure"); } } catch (Exception ex) { string errmes = "Errore nel Generatore della Lettera di Benvenuto: " + getException(ex) + " codfiscale " + cf + " rete " + rete + " lettera " + codiceLettera; Console.WriteLine(errmes); throw ex; //testo = ""; //indirizzo = rete + " - " + codiceLettera + " - " + cf; //nome = ""; //cognome = ""; //appellativo = ""; //oggetto = ""; //firma = ""; } } /* private static void leggiDaDB(string cf, string rete, TipoLettera tipo, TipoReport tr, int idReport, bool periodico) { List parametri = new List(); Parametro p = new Parametro(); p.DbType = DbType.AnsiString; p.Value = rete; p.ParameterName = "rete"; parametri.Add(p); p = new Parametro(); p.DbType = DbType.AnsiString; p.Value = cf; p.ParameterName = "cf"; parametri.Add(p); p = new Parametro(); p.DbType = DbType.AnsiString; p.Value = idReport; p.ParameterName = "idReport"; parametri.Add(p); if (tipo == TipoLettera.LetteraAccettazioneConAttivazioneSei) if (rete.ToUpper() == "S") codiceLettera = 1; else codiceLettera = 2; if (tipo == TipoLettera.LetteraAccettazioneAttivazioneSeiPosticipata) if (rete.ToUpper() == "S") codiceLettera = 3; else codiceLettera = 4; if (tipo == TipoLettera.RistampaLettera) if (rete.ToUpper() == "S") codiceLettera = 5; else codiceLettera = 6; p = new Parametro(); p.DbType = DbType.AnsiString; p.ParameterName = "tipoReport"; parametri.Add(p); p.Value = string.Empty; if (periodico) { if (tr == TipoReport.Diagnosi) p.Value = "Diagnosi"; else p.Value = "Monitoraggio"; if (rete.ToUpper() == "S") codiceLettera = 7; else codiceLettera = 8; } else p.Value = "Diagnosi"; p = new Parametro(); p.DbType = DbType.Int16; p.Value = codiceLettera; p.ParameterName = "codiceLettera"; parametri.Add(p); //START try { IDataReader lettere; if (periodico) lettere = DataAccess.ExecuteDataReaderStoredProcedure(DBProvider.SqlServerStampeC6, "[C6MartPeriodico].[GESTIONE_SELECT_LETTERE_DA_INVIARE]", parametri); else lettere = DataAccess.ExecuteDataReaderStoredProcedure(DBProvider.SqlServerStampeC6, "[C6Mart].[GESTIONE_SELECT_LETTERE_DA_INVIARE]", parametri); if (lettere.Read()) { //idLettera = Convert.ToInt32(lettere["id"]); testo = lettere["testo"].ToString(); indirizzo = lettere["via"].ToString() + "\r\n" + lettere["cap"].ToString() + " " + lettere["localita"].ToString(); if (!string.IsNullOrEmpty(lettere["provincia"].ToString())) indirizzo += " (" + lettere["provincia"].ToString() + ")"; nome = lettere["nome"].ToString(); cognome = lettere["cognome"].ToString(); appellativo = lettere["appellativo"].ToString(); oggetto = lettere["oggetto"].ToString(); firma = lettere["firma"].ToString(); //V if (!lettere.IsClosed) { lettere.Close(); lettere.Dispose(); } // } else throw new Exception("DataReader vuoto dopo l'esecuzione della stored procedure: [C6Mart].[GESTIONE_SELECT_LETTERE_DA_INVIARE]"); } catch (DataBaseException ex) { //StartTng(ambiente, cawTo_Bin, argomentiCawToErrore); Console.WriteLine(ex.Message); if (HttpContext.Current == null) ScriviErroreNelDB(-292929, "Errore nel Generatore della Lettera di Benvenuto: " + getDataBaseException(ex), -292929, "Generatore Lettera Benvenuto", "Generatore Lettera Benvenuto"); else throw ex; //return null; } catch (Exception ex) { //StartTng(ambiente, cawTo_Bin, argomentiCawToErrore); Console.WriteLine(ex.Message); if (HttpContext.Current == null) ScriviErroreNelDB(-292929, "Errore nel Generatore della Lettera di Benvenuto: " + getException(ex), -292929, "Generatore Lettera Benvenuto", "Generatore Lettera Benvenuto"); else throw ex; } } */ private static string getDataBaseException(DataBaseException ecc) { const string aCapo = "#/n#"; string ritorno = ""; ritorno += aCapo; ritorno += " Informazioni Comando SQL:" + aCapo; ritorno += " sql file name: " + ecc.SqlFileName + aCapo; ritorno += " connection string: " + ecc.ConnectionStringWithoutCredentials + aCapo; //ritorno += " command text: " + ecc.CommandText + aCapo; //controllo se ci sono i parametri if (ecc.Parameters != null) { foreach (Parametro parametro in ecc.Parameters) { ritorno += aCapo; ritorno += " parametro: " + parametro.ParameterName + aCapo; ritorno += " dimensione: " + parametro.Size.ToString() + aCapo; ritorno += " direzione: " + parametro.Direction.ToString() + aCapo; ritorno += " tipo: " + parametro.DbType.ToString() + aCapo; if (parametro.Value == null) ritorno += " valore: null" + aCapo; else { string valoreParametro = ""; if (parametro.Size > 500) { valoreParametro = " valore: null(sono visualizzati solo i primi 500 bytes): " + parametro.Value.ToString().Substring(0, 500); } else { valoreParametro = " valore: " + parametro.Value.ToString(); } ritorno += valoreParametro + aCapo; } } } ritorno += aCapo; ritorno += " tipo: DataBaseException" + aCapo; ritorno += " descrizione: " + ecc.Eccezione.Message + aCapo; ritorno += " sorgente: " + ecc.Eccezione.Source + aCapo; ritorno += " traccia: " + FormattaErrore(ecc.StackTrace) + aCapo; return ritorno; } private static string getException(Exception ecc) { const string aCapo = "#/n#"; string ritorno = ""; ritorno += aCapo; ritorno += " tipo: " + ecc.GetType().ToString() + aCapo; ritorno += " descrizione: " + ecc.Message + aCapo; ritorno += " sorgente: " + ecc.Source + aCapo; if (ecc.InnerException != null) { ritorno += " descrizione Inner: " + ecc.InnerException.Message + aCapo; ritorno += " sorgente Inner: " + ecc.InnerException.Source + aCapo; } ritorno += " traccia: " + FormattaErrore(ecc.StackTrace) + aCapo; return ritorno; } private static string FormattaErrore(string errore) { const string aCapo = "#/n#"; const string spazio = " "; string separatore1 = " at "; string separatore2 = " in "; string separatore3 = ":line "; string erroreInterno = errore.Replace(separatore1, "@"); string ritorno = aCapo; //nome metodo e tutto il resto string[] messaggioErrore = erroreInterno.Split('@'); string messaggioSenzaSpazi; string[] messaggioInterno; foreach (string messaggio in messaggioErrore) { messaggioSenzaSpazi = messaggio.Trim(); if (messaggioSenzaSpazi != "") { messaggioSenzaSpazi = messaggioSenzaSpazi.Replace(separatore2, "@"); messaggioInterno = messaggioSenzaSpazi.Split('@'); if (messaggioInterno.GetUpperBound(0) == 1) { ritorno += spazio + "metodo: " + messaggioInterno[0] + aCapo; string fileLineaSingolo = messaggioInterno[1].Replace(separatore3, "@"); string[] fileLinea = fileLineaSingolo.Split('@'); ritorno += spazio + "percorsoFile: " + fileLinea[0] + aCapo; ritorno += spazio + "linea: " + fileLinea[1] + aCapo; ritorno += aCapo; } else { ritorno += spazio + "metodo: " + messaggioInterno[0] + aCapo; } } } return ritorno; } private static void ScriviErroreNelDB(int codiceErrore, string descrizioErrore, int localeId, string nomePackage, string descrizionePackage) { int scriviErroreNelDB = int.Parse(ConfigurationManager.AppSettings["scriviErroreNelDB"]); if (scriviErroreNelDB == 1) { try { List parametri = new List(); Parametro parametro = new Parametro(); parametro.DbType = DbType.Int32; parametro.ParameterName = "codiceErrore"; parametro.Value = codiceErrore; parametri.Add(parametro); parametro = new Parametro(); parametro.DbType = DbType.String; parametro.ParameterName = "descrizioErrore"; parametro.Value = descrizioErrore; parametri.Add(parametro); parametro = new Parametro(); parametro.DbType = DbType.DateTime; parametro.ParameterName = "dataTime"; parametro.Value = DateTime.Now; parametri.Add(parametro); parametro = new Parametro(); parametro.DbType = DbType.String; parametro.ParameterName = "localeID"; if (localeId == 0) parametro.Value = System.DBNull.Value; else parametro.Value = localeId; parametri.Add(parametro); parametro = new Parametro(); parametro.DbType = DbType.String; parametro.ParameterName = "descrizionePackage"; parametro.Value = descrizionePackage; parametri.Add(parametro); parametro = new Parametro(); parametro.DbType = DbType.String; parametro.ParameterName = "nomePackage"; parametro.Value = nomePackage; parametri.Add(parametro); DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.SqlServerStampeC6, "[C6Mart].[UT_INSERT_ERROR]", parametri); } catch (Exception ex) { DataBaseException dataBaseException = (DataBaseException)ex; Console.WriteLine(dataBaseException.Message); } } } } }