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()]");
}
}
}
}