using System.Collections.Generic; using System.Data; using Consulenza.ReportCommon; using System; using System.Linq; namespace Consulenza.ReportWriter.Manager { public enum SectionLoggerMessageLevel { /// /// Errore /// E, /// /// Warning /// W, /// /// Informazione /// I } /// /// Si occupa di scrivere Errori, Warning o Information in funzione del TipoReport. /// Per ConsulenzaBase_Proposta scrive attraverso la stored sp_ReportProposal_SectionLogger_Write nella tabella [ConsulenzaBase].[Global_Error]. /// Per ConsulenzaEvoluta_Immobiliare scrive attraverso la stored "REP_TracciaErrore2" nella tabella [ConsulenzaEvoluta].[REP_Errore2]. /// public static class SectionLogger { /// /// Scrive il log. /// /// /// /// /// public static void Write(string classSender, string message, SectionLoggerMessageLevel level, ReportEnvironment reportEnvironment) { var parametri = new List { new Parametro { DbType = DbType.String, Direction = ParameterDirection.Input, ParameterName = "TipoReport", Value = reportEnvironment.ReportType.ToString() }, new Parametro { DbType = DbType.Int32, Direction = ParameterDirection.Input, ParameterName = "ChiavePb", Value = reportEnvironment.Cliente.Chiave }, new Parametro { DbType = DbType.String, Direction = ParameterDirection.Input, ParameterName = "Rete", Value = reportEnvironment.PrivateBanker.CodiceRete }, new Parametro { DbType = DbType.String, Direction = ParameterDirection.Input, ParameterName = "ClassSender", Value = classSender }, new Parametro { DbType = DbType.String, Direction = ParameterDirection.Input, ParameterName = "Messaggio", Value = message }, new Parametro { DbType = DbType.String, Direction = ParameterDirection.Input, ParameterName = "Livello", Value = level.ToString() } }; switch (reportEnvironment.ReportType) { case ReportType.Base_Proposta: parametri.Add(new Parametro { DbType = DbType.Int32, Direction = ParameterDirection.Input, ParameterName = "ChiaveProposta", Value = reportEnvironment.Proposta.Chiave }); parametri.Add(new Parametro { DbType = DbType.String, Direction = ParameterDirection.Input, ParameterName = "StatoAdeguatezza", Value = reportEnvironment.Proposta.EsitoAdeguatezza }); if (reportEnvironment.Proposta.PropostaCBUnica) DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "sp_ReportProposal_SectionLogger_Write", parametri); else DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.SqlServerConsulenzaBase, "sp_ReportProposal_SectionLogger_Write", parametri); break; case ReportType.Immobiliare_Diagnosi: case ReportType.Immobiliare_DiagnosiNucleo: case ReportType.Immobiliare_Finalita: case ReportType.Immobiliare_Monitoraggio: case ReportType.Immobiliare_MonitoraggioNuclei: var listaimmobiliEnvironment = reportEnvironment.Immobiliare.IdImmobileCatasto ?? reportEnvironment.NucleoImmobiliare.IdImmobileCatasto ?? reportEnvironment.FinalitaImmobiliare.IdImmobileCatasto ; var listasezioniEnvironment = reportEnvironment.Immobiliare.IdSezione ?? reportEnvironment.NucleoImmobiliare.IdSezione ?? reportEnvironment.FinalitaImmobiliare.IdSezione; parametri.Add(new Parametro { DbType = DbType.Int64, Direction = ParameterDirection.Input, ParameterName = "ChiaveNucleo", Value = reportEnvironment.NucleoImmobiliare.ChiaveNucleo }); parametri.Add(new Parametro { DbType = DbType.String, Direction = ParameterDirection.Input, ParameterName = "Lista_IdImmobileCatasto", Value = string.Join(";", listaimmobiliEnvironment) }); parametri.Add(new Parametro { DbType = DbType.String, Direction = ParameterDirection.Input, ParameterName = "Lista_IdSezione", Value = string.Join(";", listasezioniEnvironment) }); if(reportEnvironment.Immobiliare.ImmobiliareCEUnica || reportEnvironment.FinalitaImmobiliare.ImmobiliareCEUnica || reportEnvironment.NucleoImmobiliare.ImmobiliareCEUnica) DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.SqlServerReportModeler, "REP_TracciaErrore2", parametri); else DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.SqlServerConsulenzaEvoluta, "REP_TracciaErrore2", parametri); break; case ReportType.Immobiliare_MappaturaPreliminare: parametri.Add(new Parametro { DbType = DbType.Int64, Direction = ParameterDirection.Input, ParameterName = "ChiaveNucleo", Value = reportEnvironment.NucleoImmobiliare.ChiaveNucleo }); parametri.Add(new Parametro { DbType = DbType.String, Direction = ParameterDirection.Input, ParameterName = "Lista_IdImmobileCatasto", Value = string.Join(";", reportEnvironment.MappaturaPreliminare.IdImmobileCatasto) }); parametri.Add(new Parametro { DbType = DbType.String, Direction = ParameterDirection.Input, ParameterName = "Lista_IdSezione", Value = string.Join(";", reportEnvironment.MappaturaPreliminare.IdSezione) }); if (reportEnvironment.MappaturaPreliminare.ImmobiliareCEUnica) DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.SqlServerReportModeler, "REP_TracciaErrore2", parametri); else DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.SqlServerConsulenzaEvoluta, "REP_TracciaErrore2", parametri); break; case ReportType.Unica_Diagnosi: case ReportType.Unica_Monitoraggio: case ReportType.Unica_Proposta: case ReportType.Unica_Nucleo: var listaschede = from i in reportEnvironment.ReportStruct.Schede.Select(l => l.Id).ToList() select i; parametri.Add(new Parametro { DbType = DbType.Int64, Direction = ParameterDirection.Input, ParameterName = "ChiaveNucleo", Value = reportEnvironment.Cliente.Chiave}); parametri.Add(new Parametro { DbType = DbType.String, Direction = ParameterDirection.Input, ParameterName = "Lista_IdImmobileCatasto", Value = string.Join(";", "") }); parametri.Add(new Parametro { DbType = DbType.String, Direction = ParameterDirection.Input, ParameterName = "Lista_IdSezione", Value = string.Join(";", listaschede) }); DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.SqlServerReportModeler, "REP_TracciaErrore2", parametri); break; default: throw new Exception("ReportType da gestire: [Consulenza.ReportWriter.Manager.Write()]"); } } } }