143 lines
6.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using Consulenza.ReportCommon;
using Consulenza.ReportWriter.Business;
namespace Consulenza.ReportWriter.Manager.Section.Base.Proposta
{
public class T11 : Entity.Section
{
public T11(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("T11", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
/// <summary>
/// Disegna l'oggetto T11
/// </summary>
protected override sealed void Draw()
{
var dtT11Testo = GetText();
var dtT11Dati = GetDataTable();
if (dtT11Dati.Rows.Count <= 0) return;
var labelIntestazione = new FormattedTextAreaPDF(dtT11Testo.Rows[0]["Testo1"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 5);
AddElement(labelIntestazione);
AddElement(new SpacePDF(7));
List<string> stringheElencoPuntato;
//Adriano
//Adriano: bisogna poi avere anche l'informazione su cliente professionale/retail sul servizio di Consulenza Base
var cliente = GetCliente();
bool profiloProfessionale = false;
bool profiloAggressivo = Convert.ToInt32(cliente.Rows[0]["Profilo"].ToString().Substring(0, 1)) >= 5;
bool profiloProfessionaleAggressivo = profiloProfessionale && profiloAggressivo;
//E' richiesto di escludere dall'elenco puntato le motivazioni sull'inadeguatezza relative a complessità, frequenza e concentrazione prodotti complessi
// la stored procedure non restituisce i campi id degli indicatori, quindi bisogna fare un controllo sui campi descrittivi
if (profiloProfessionale)
stringheElencoPuntato = (from DataRow row in dtT11Dati.Rows
where !(row["Indicatore"].ToString().Contains("Complessità"))
&& !(row["Indicatore"].ToString().Contains("Frequenza"))
&& !(row["Indicatore"].ToString().Contains("Concentrazione prod"))
select row["Indicatore"] + ": " + Helper.ReplaceVariables(row["Descrizione"].ToString(), EnvironmentFacade.ReportEnvironment)).ToList();
else
stringheElencoPuntato = (from DataRow row in dtT11Dati.Rows
select row["Indicatore"] + ": " + Helper.ReplaceVariables(row["Descrizione"].ToString(), EnvironmentFacade.ReportEnvironment)).ToList();
//--Adriano
//originale:
//var stringheElencoPuntato = (from DataRow row in dtT11Dati.Rows select row["Indicatore"] + ": " + Helper.ReplaceVariables(row["Descrizione"].ToString(), EnvironmentFacade.ReportEnvironment)).ToList();
var lista = new UnorderedListPDF(EnvironmentFacade.RendererFacade.XLeftLimit, stringheElencoPuntato, BulletType.Trattino);
AddElement(lista);
AddElement(new SpacePDF(20));
}
/// <summary>
/// Recupera i dati necessari alla Section restituendo un DataTable.
/// </summary>
/// <returns></returns>
protected sealed override DataTable GetDataTable()
{
var parametri = new List<Parametro>();
#region Definizione dei parametri
var parametro = new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "chiaveClientePB",
Value = EnvironmentFacade.ReportEnvironment.Cliente.Chiave
};
parametri.Add(parametro);
parametro = new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int32,
ParameterName = "chiaveProposta",
Value = EnvironmentFacade.ReportEnvironment.Proposta.Chiave
};
parametri.Add(parametro);
#endregion
return EnvironmentFacade.ReportEnvironment.Proposta.PropostaCBUnica ?DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_Prop_T11", parametri)
: DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerConsulenzaBase, "REP_Prop_T11", parametri);
}
protected DataTable GetCliente()
{
var parametri = new List<Parametro>();
#region Definizione dei parametri
var parametro = new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "chiaveClientePB",
Value = EnvironmentFacade.ReportEnvironment.Cliente.Chiave
};
parametri.Add(parametro);
parametro = new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int32,
ParameterName = "chiaveProposta",
Value = EnvironmentFacade.ReportEnvironment.Proposta.Chiave
};
parametri.Add(parametro);
#endregion
return EnvironmentFacade.ReportEnvironment.Proposta.PropostaCBUnica ? DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_Prop_P10", parametri)
: DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerConsulenzaBase, "REP_Prop_P10", parametri);
}
/// <summary>
/// Recupera i dati necessari alla Section restituendo un DataSet.
/// </summary>
/// <returns></returns>
protected sealed override DataSet GetDataSet()
{
return null;
}
}
}