using System;
using System.Collections.Generic;
using System.Linq;
using Consulenza.ExternalServices;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using System.Data;
using Consulenza.ReportWriter.Business.CHART_PDF;
using Consulenza.ReportCommon;
using Consulenza.ReportWriter.Business.Entity;
using System.Text;
using Consulenza.ReportWriter.Business.Headers;
using System.Reflection;
using System.ComponentModel;
using System.Configuration;
namespace Consulenza.ReportWriter.Manager.Section.Immobiliare.Monitoraggio
{
///
/// Scheda 21
///
public class S21 : Entity.Section
{
public S21(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S21", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
///
/// Scheda2. Patrimonio immobiliare –Sintesi (distribuzione del patrimonio complessivo del cliente diviso per tipologia e cointestatari)
///
protected override sealed void Draw()
{
var dataset = GetDataSet();
if (dataset == null)
return;
FormattedTextAreaPDF testoPagina = null;
FormattedTextAreaPDF notaTabella = null;
DataTable table = dataset.Tables[0];
if (table != null && table.Rows.Count > 0)
{
testoPagina = new FormattedTextAreaPDF(getTesto1(), 35) { FontSize = 10, FontColor = ColorPDF.Immobiliare_Grigio_TitoloPiccolo, AutoIncrementYWritable = true, Width = 740 };
notaTabella = new FormattedTextAreaPDF("Nota(*): Il \"Reddito dominicale\" dei terreni è esposto nella colonna \"Rendita catastale\".
", 60, 680) { AutoIncrementYWritable = false, Y = EnvironmentFacade.RendererFacade.YLowerLimit - 23, FontSize = 6, FontColor = ColorPDF.Nero, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, DeltaX = 5, DeltaY = 5 };
var listaOggettiDaRipetere = new List { new SpacePDF(30), testoPagina, new SpacePDF(25), notaTabella };
AddElement(listaOggettiDaRipetere);
AddElement(new RepeaterPDF(listaOggettiDaRipetere));
TablePDF tablePDF = new TablePDF(35, table)
{
Style = Style.Immobiliare,
AlternateRow = false,
HeaderHeight = 25,
Footer = false,
PageBreak = true,
ShowBorderLastLine = true,
DrawLineHeaderUP = false,
HeaderTextDrawJustOnce = false,
};
var lineaVerticaleSeparazione = new LinePDF(tablePDF.X, tablePDF.X + 720, 0.5F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo) { AutoIncrementYWritable = false, DeltaY = -15 };
tablePDF.HeaderNoteObjects.Add(lineaVerticaleSeparazione);
tablePDF.HeaderNoteObjects.Add(new FormattedTextAreaPDF("Semestre precedente", tablePDF.X + 445, 105) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Center, FontBold = true, DeltaY = - 10, AutoIncrementYWritable = false, });
tablePDF.HeaderNoteObjects.Add(new LinePDF(tablePDF.X + 445, tablePDF.X + 555) { DeltaY = 2, AutoIncrementYWritable = false, Color = new ColorPDF(0,0,0)});
tablePDF.HeaderNoteObjects.Add(new FormattedTextAreaPDF("Semestre attuale", tablePDF.X + 600, 120) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Center, FontBold = true, DeltaY = -10, AutoIncrementYWritable = false, });
tablePDF.HeaderNoteObjects.Add(new LinePDF(tablePDF.X + 600, tablePDF.X + 720) { DeltaY = 2, AutoIncrementYWritable = false, Color = new ColorPDF(0, 0, 0) });
tablePDF.Columns.Add(new ColumnPDF("descrizione", 300, HorizontalAlignmentType.Sinistra, false, false, 8, ColumnType.Testo, "colonnaImmobili", "Immobili") { FontBold = false, HeaderFontBold = true, HeaderFontSize = 7, DeltaYContent = 2 });
tablePDF.Columns.Add(new ColumnPDF("renditacatastale", 100, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Testo, "rendita", "Rendita catastale*") { FontBold = false, HeaderFontBold = true, HeaderFontSize = 7, DeltaYContent = 2 });
tablePDF.Columns.Add(new ColumnPDF("tipologiaprecedente", 100, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Testo, "Tipologiastorico", "Tipologia diritto") { FontBold = false, HeaderFontBold = true, HeaderFontSize = 7, DeltaYContent = 2 });
tablePDF.Columns.Add(new ColumnPDF("quotaprecedente", 60, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Testo, "quotaStorico", "Quota") { FontBold = false, HeaderFontBold = true, HeaderFontSize = 7, DeltaYContent = 2 });
tablePDF.Columns.Add(new ColumnPDF("tipologiaattuale", 100, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Testo, "tipologiaAttuale", "Tipologia diritto") { FontBold = false, HeaderFontBold = true, HeaderFontSize = 7, DeltaYContent = 2 });
tablePDF.Columns.Add(new ColumnPDF("quotaattuale", 60, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Testo, "quotaAttuale", "Quota") { FontBold = false, HeaderFontBold = true, HeaderFontSize = 7, DeltaYContent = 2 });
for (int k = 0; k < table.Rows.Count; k++)
{
//tablePDF.Cells[3, k].Value = Helper.FormatPercentage(Convert.ToDecimal(table.Rows[k].Field("quotaStorico")) * 100, 1);
//tablePDF.Cells[5, k].Value = Helper.FormatPercentage(Convert.ToDecimal(table.Rows[k].Field("quotaAttuale")) * 100, 1);
tablePDF.Cells[3, k].Value = Helper.FormatPercentage(Convert.ToDecimal(table.Rows[k].Field("quotaStorico")), 1);
tablePDF.Cells[5, k].Value = Helper.FormatPercentage(Convert.ToDecimal(table.Rows[k].Field("quotaAttuale")), 1);
if (table.Rows[k].Field("rendita").Equals("") || Convert.ToDecimal(table.Rows[k].Field("rendita")) == 0)
tablePDF.Cells[1, k].Value = "-";
else
tablePDF.Cells[1, k].Value = Helper.FormatCurrency(Convert.ToDecimal(table.Rows[k].Field("rendita")).ToString());
}
DataTable header = new DataTable();
header.Columns.Add("space");
header.Columns.Add("semestrePrecedente");
header.Columns.Add("semestreAttuale");
header.Rows.Add("",
"Semestre precedente",
"Semestre attuale");
var tableHeader = new TablePDF(35, header)
{
Style = Style.Immobiliare,
AlternateRow = false,
Header = false,
Footer = false,
ShowBorderLastLine = false,
DrawLineHeaderUP = false,
HideFirstSeparationLine = true,
IndexesOfRowLinesToIgnoreSeparators = new List() { 1 }
};
tableHeader.Columns.Add(new ColumnPDF("space", tablePDF.Columns[0].Width + tablePDF.Columns[1].Width + 20, HorizontalAlignmentType.Centrato, false, true, 8, ColumnType.Testo, "space", "") { DeltaYContent = 2 });
tableHeader.Columns.Add(new ColumnPDF("semestrePrecedente", tablePDF.Columns[2].Width + tablePDF.Columns[3].Width - 10, HorizontalAlignmentType.Centrato, false, true, 8, ColumnType.Testo, "semestrePrecedente", "") { DeltaYContent = 2, PaddingLeft = 10 });
tableHeader.Columns.Add(new ColumnPDF("semestreAttuale", tablePDF.Columns[4].Width + tablePDF.Columns[5].Width - 10, HorizontalAlignmentType.Centrato, false, true, 8, ColumnType.Testo, "semestreAttuale", "") { DeltaYContent = 2, PaddingLeft = 10 });
//AddElement(lineaVerticaleSeparazione);
//AddElement(tableHeader);
AddElement(tablePDF);
}
}
public string getTesto1()
{
return "Di seguito si rappresenta l'elenco degli immobili per i quali, rispetto al semestre precedente, sono intervenute " +
"variazioni nelle quote o nelle tipologie di diritto registrate all'Agenzia delle Entrate. Sono esclusi dalla rappresentazione gli immobili con anomalie catastali.";
}
///
/// Recupera i dati necessari alla Section restituendo un DataTable.
///
///
protected override DataTable GetDataTable()
{
return null;
}
///
/// Recupera i dati necessari alla Section restituendo un DataSet.
///
///
protected override DataSet GetDataSet()
{
DataSet data = new DataSet();
data.Tables.Add(new DataTable("quote")); // U
#region Definizione dei parametri
var parametri = new List
{
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "ChiaveClientePB",
Value = EnvironmentFacade.ReportEnvironment.Cliente.Chiave
}
};
#endregion
var dsOriginal = DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_ImmobiliareMonitoraggio_S_ImmobiliStoricoDirittoQuote", parametri);
if (dsOriginal.Tables[0].Rows.Count == 0)
return null;
/************************* FIX Quote Variate - Pino *************************/
DataSet _data = GetQuoteVariate(dsOriginal);
if (_data.Tables[0].Rows.Count == 0)
return null;
/****************************************************************************/
//DataTable dtCloned = dsOriginal.Tables[0].Clone();
//dtCloned.Columns[0].DataType = typeof(Int32);
//for (int i = 0; i < dsOriginal.Tables[0].Columns.Count; i++)
// dtCloned.Columns[i].DataType = typeof(string);
//for (int row = 0; row < dsOriginal.Tables[0].Rows.Count; row++)
//{
// object[] array = new object[dsOriginal.Tables[0].Columns.Count];
// for (int column = 0; column < dsOriginal.Tables[0].Columns.Count; column++)
// array[column] = dsOriginal.Tables[0].Rows[row][column].ToString();
// dtCloned.Rows.Add(array);
//}
//data.Tables["quote"].Merge(dtCloned);
data.Tables["quote"].Merge(_data.Tables[0]);
return data;
}
// Da qui comincia la fix per quote variate
#region Fix Quote Variate 16/07/2020 - Pino
private DataSet GetQuoteVariate(DataSet _ds)
{
DataSet data = new DataSet();
List ListaQuote = new List();
string oldImmobile = string.Empty;
try
{
/* Recupero tutti gli immobili per l'utente */
List _listaMaster = ConvertTo(_ds.Tables[0]);
//List _listaMaster = ConvertTo(_dtOrd);
// Recupero il Dettaglio per l'Attuale
var listaTotale = SetDetail(_listaMaster, "A");
/* Recupero tutti gli immobili per l'utente con riferimento all'ultima semestrale */
DataTable _dtST = GetDatiQuoteStorici(EnvironmentFacade.ReportEnvironment.Cliente.Chiave.ToString());
List _listaMasterST = ConvertTo(_dtST);
// Recupero il Dettaglio per la Precedente
var listaTotaleST = SetDetail(_listaMasterST, "P");
#region match tra le due liste
// Recupero gli elementi non presenti nel semestre precedente
var firstNotSecond = listaTotale.Where(f => f.dtStimaOMI == string.Empty || f.dtStimaOMI == null).ToList();
// Ciclo sulla lista del semestre precedente e verifico se vi sono differenze tra diritti/quote Precedenti e diritti/quote Attuali
foreach (var itemSemPrec in listaTotaleST)
{
Quote cls = null;
bool isEliminare = VerificaVariazioni(listaTotale, itemSemPrec);
foreach (var item in itemSemPrec._listaDetailQuote)
{
cls = new Quote();
if (itemSemPrec.colonnaImmobili != oldImmobile)
{
cls.idImmobileCatasto = itemSemPrec.IdImmobileCatasto;
cls.chiaveClientePB = Convert.ToString(itemSemPrec.chiaveClientePB);
cls.chiaveProdottiTerzi = Convert.ToString(itemSemPrec.chiaveProdottoTerzi);
cls.colonnaImmobili = itemSemPrec.colonnaImmobili;
cls.renditaCatastale = Convert.ToString(itemSemPrec.renditaCatastale);
cls.redditoAgrario = Convert.ToString(itemSemPrec.redditoAgrario);
cls.tipoImmobile = itemSemPrec.TipoImmobile;
cls.rendita = Convert.ToString((itemSemPrec.rendita == null ? string.Empty : itemSemPrec.rendita));
cls.descrizione = itemSemPrec.colonnaImmobili;
cls.comune = itemSemPrec.comune;
cls.valoreImmobileTotale = itemSemPrec.valoreImmobileTotale;
}
cls.Tipologiastorico = item.TipologiaDirittoST;
cls.QuotaStorico = Convert.ToString(item.QuoteDirittoST);
MasterQuote _semAtt = listaTotale.Where(f => f.chiaveProdottoTerzi == itemSemPrec.chiaveProdottoTerzi).Select(s => s).FirstOrDefault();
string _dirittiAtt = _semAtt._listaDetailQuote.Select(s => s.TipologiaDirittoATT).FirstOrDefault();
decimal _quoteAtt = _semAtt._listaDetailQuote.Select(s => s.QuoteDirittoATT).FirstOrDefault();
//string _dirittiAtt = _semAtt._listaDetailQuote.Where(f => f.TipologiaDirittoATT == item.TipologiaDirittoST).Select(s => s.TipologiaDirittoATT).FirstOrDefault();
//decimal _quoteAtt = _semAtt._listaDetailQuote.Where(f => f.QuoteDirittoATT == item.QuoteDirittoST).Select(s => s.QuoteDirittoATT).FirstOrDefault();
cls.tipologiaAttuale = _dirittiAtt;
cls.quotaAttuale = Convert.ToString(_quoteAtt);
cls.Elimina = (isEliminare ? "S" : "N");
ListaQuote.Add(cls);
cls = null;
oldImmobile = itemSemPrec.colonnaImmobili;
}
}
/* Aggiunge alla lista finale gli elementi presenti non presenti nel semestre precedente */
foreach (var itemNuovi in firstNotSecond)
{
Quote cls = null;
foreach (var item in itemNuovi._listaDetailQuote)
{
cls = new Quote();
if (itemNuovi.colonnaImmobili != oldImmobile)
{
cls.idImmobileCatasto = itemNuovi.IdImmobileCatasto;
cls.chiaveClientePB = Convert.ToString(itemNuovi.chiaveClientePB);
cls.chiaveProdottiTerzi = Convert.ToString(itemNuovi.chiaveProdottoTerzi);
cls.colonnaImmobili = itemNuovi.colonnaImmobili;
cls.renditaCatastale = Convert.ToString(itemNuovi.renditaCatastale);
cls.redditoAgrario = Convert.ToString(itemNuovi.redditoAgrario);
cls.tipoImmobile = itemNuovi.TipoImmobile;
cls.rendita = Convert.ToString((itemNuovi.rendita == null ? string.Empty : itemNuovi.rendita));
cls.descrizione = itemNuovi.colonnaImmobili;
cls.comune = itemNuovi.comune;
cls.valoreImmobileTotale = itemNuovi.valoreImmobileTotale;
}
cls.Tipologiastorico = item.TipologiaDirittoST;
cls.QuotaStorico = Convert.ToString(item.QuoteDirittoST);
cls.tipologiaAttuale = item.TipologiaDirittoATT;
cls.quotaAttuale = Convert.ToString(item.QuoteDirittoATT);
ListaQuote.Add(cls);
cls = null;
oldImmobile = itemNuovi.colonnaImmobili;
}
}
/* Ciclo sulla lista totale per recuperare gli altri immobili */
//foreach (var itemDiff in listaTotale)
//{
// int conta = ListaQuote.Where(f => f.idImmobileCatasto == itemDiff.IdImmobileCatasto).Count();
// if (conta == 0)
// {
// Quote cls = null;
// foreach (var item in itemDiff._listaDetailQuote)
// {
// cls = new Quote();
// if (itemDiff.colonnaImmobili != oldImmobile)
// {
// cls.idImmobileCatasto = itemDiff.IdImmobileCatasto;
// cls.chiaveClientePB = Convert.ToString(itemDiff.chiaveClientePB);
// cls.chiaveProdottiTerzi = Convert.ToString(itemDiff.chiaveProdottoTerzi);
// cls.colonnaImmobili = itemDiff.colonnaImmobili;
// cls.renditaCatastale = Convert.ToString(itemDiff.renditaCatastale);
// cls.redditoAgrario = Convert.ToString(itemDiff.redditoAgrario);
// cls.tipoImmobile = itemDiff.TipoImmobile;
// cls.rendita = Convert.ToString((itemDiff.rendita == null ? string.Empty : itemDiff.rendita));
// cls.descrizione = itemDiff.colonnaImmobili;
// cls.comune = itemDiff.comune;
// cls.valoreImmobileTotale = itemDiff.valoreImmobileTotale;
// }
// cls.Tipologiastorico = item.TipologiaDirittoST;
// cls.QuotaStorico = Convert.ToString(item.QuoteDirittoST);
// cls.tipologiaAttuale = item.TipologiaDirittoATT;
// cls.quotaAttuale = Convert.ToString(item.QuoteDirittoATT);
// ListaQuote.Add(cls);
// cls = null;
// oldImmobile = itemDiff.colonnaImmobili;
// }
// }
//}
ListaQuote.Where(f => f.rendita == null).ToList().ForEach(p => p.rendita = string.Empty);
ListaQuote.RemoveAll(rem => rem.Elimina == "S");
ListaQuote.Where(f => f.Tipologiastorico == null).ToList().ForEach(p => p.Tipologiastorico = "Nessuna");
#region Ordinamento
var newSort = (from row in ListaQuote
group row by row.comune into grp
select new
{
comune = grp.Key,
valoreImmobileTotale = grp.Sum(x => x.valoreImmobileTotale),
});
/* Dichiaro dei DataTable */
DataTable _dtFabbricati = new DataTable();
List _listaTotaleOridnata = new List();
foreach (var item in newSort)
{
var _listaFabbricati = ListaQuote.Where(f => f.comune == item.comune && f.tipoImmobile == "F").OrderByDescending(o => o.valoreImmobileTotale).Select(s => s).ToList();
if (_listaFabbricati.Count > 0)
_listaTotaleOridnata.AddRange(_listaFabbricati);
}
foreach (var itemTerreni in newSort)
{
var _listaTerreni = ListaQuote.Where(f => f.comune == itemTerreni.comune && f.tipoImmobile == "T").Select(s => s).ToList();
if (_listaTerreni.Count > 0)
_listaTotaleOridnata.AddRange(_listaTerreni);
}
#endregion
//DataTable _dt = ToDataTable(ListaQuote.OrderBy(o=> o.tipoImmobile).ToList());
DataTable _dt = ToDataTable(_listaTotaleOridnata.ToList());
data.Tables.Add(_dt);
#endregion
}
catch(Exception ex)
{
}
return data;
}
private DataTable GetDatiQuoteStorici(string _ccpb)
{
List _listaFiltrataStorica = new List();
DataTable _dt = null;
try
{
// Determino la data da utilizzare come filtro nella lista
string dataFineSemestreAttaule = ConfigurationManager.AppSettings["DataFineTrimestreCorrente_Copertina"].ToString();
DateTime dataSemestrePrecedente = Convert.ToDateTime(dataFineSemestreAttaule).AddMonths(-6).AddMonths(1);
string meseSemPrecedente = dataSemestrePrecedente.Month.ToString();
string annoSemPrecedente = dataSemestrePrecedente.Year.ToString();
string giornoSemPrecedente = "01"; //dataSemestrePrecedente.Day.ToString();
if (meseSemPrecedente.Length == 1)
meseSemPrecedente = string.Concat("0", meseSemPrecedente);
if (giornoSemPrecedente.Length == 1)
giornoSemPrecedente = string.Concat("0", giornoSemPrecedente);
string dataSemPrecedente = string.Concat(annoSemPrecedente, meseSemPrecedente, giornoSemPrecedente);
string meseSemAtt = Convert.ToDateTime(dataFineSemestreAttaule).Month.ToString();
string giornoSemAtt = Convert.ToDateTime(dataFineSemestreAttaule).Day.ToString();
string annoSemAtt = Convert.ToDateTime(dataFineSemestreAttaule).Year.ToString();
if (meseSemAtt.Length == 1)
meseSemAtt = string.Concat("0", meseSemAtt);
if (giornoSemAtt.Length == 1)
giornoSemAtt = string.Concat("0", giornoSemAtt);
string dataSemAttuale = string.Concat(annoSemAtt, meseSemAtt, giornoSemAtt);
#region Definizione dei parametri
var parametri = new List
{
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "@CCPB",
Value =_ccpb
},
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "@dataSemPrecedente",
Value =dataSemPrecedente
},
//new Parametro
//{
// Direction = ParameterDirection.Input,
// DbType = DbType.Int64,
// ParameterName = "@dataSemAttuale",
// Value =dataSemAttuale
//}
};
#endregion
string queryStatoAttuale = @"select pt.idImmobileCatasto,pt.chiaveClientePB,dett.chiaveProdottoTerzi,dett.descrizione as colonnaImmobili
,dett.renditaCatastale,dett.redditoAgrario,dett.tipoImmobile,Case when dett.tipoImmobile ='F' then dett.renditaCatastale
when dett.tipoImmobile ='T' then dett.redditoAgrario end rendita
,dett.tipologiaDiritto as tipologiaAttuale,dett.quotaProprieta as quotaAttuale,dett.descrizione,dett.quotaProprieta
,dett.valoreImmobileTotale,dett.tipologia,dett.dtStimaOMI,dett.dtUltimaModifica,dett.comune from ConsulenzaUnica..PatrimonioTerzi pt
inner join ConsulenzaUnica..DettImmobiliare dett on pt.chiaveProdottoTerzi = dett.chiaveProdottoTerzi
where pt.chiaveClientePB = @CCPB
and dett.tipoImmobile in ('F','T')
and pt.dtfinevalidita > GETDATE()
and convert(char(8),dett.dtStimaOMI,112) >= @dataSemPrecedente
--and convert(char(8),dett.dtStimaOMI,112) <= @dataSemAttuale
--and convert(char(8),pt.dtInizioValidita,112) >= @dataSemPrecedente
--and convert(char(8),pt.dtInizioValidita,112) <= @dataSemAttuale
order by dett.tipoImmobile,dett.descrizione";
var dsOriginal = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, queryStatoAttuale, parametri);
if (dsOriginal.Rows.Count > 0)
_dt = dsOriginal.AsEnumerable().CopyToDataTable();
return _dt;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
private List SetDetail(List _lista, string _Semestre)
{
try
{
// Ciclo sulla lista Master e per ogni CCPB e CTERZI
// 1. Ordino per CCPB
// 2. Faccio distinct
// 3. Per ogni CCPB trovo il dettaglio
_lista = _lista.OrderBy(o => o.chiaveClientePB).ToList();
//List _listaCCPB = _lista.Select(s => s.chiaveClientePB).Distinct().ToList();
foreach (var item in _lista)
{
if (_Semestre == "A")
{
#region Dati Attuali
DataTable _dt = GetDetail(item.chiaveClientePB, item.chiaveProdottoTerzi);
var listaDettaglio = _dt.AsEnumerable().ToList();
if (listaDettaglio.Count() > 0)
{
Int64 max = listaDettaglio.Max(m => m.Field("chiaveCointestatari"));
foreach (var itemDett in listaDettaglio.Where(f => f.Field("chiaveCointestatari") == max))
{
item._listaDetailQuote.Add(new DetailQuote()
{
TipologiaDirittoATT = itemDett.Field("tipologiaDiritto"),
QuoteDirittoATT = itemDett.Field("quotaDiritto")
});
}
}
#endregion
}
else
{
#region Storico Old
//DataTable _dtStorico = GetStorico(item.chiaveClientePB, item.chiaveProdottoTerzi);
//var listaStorico = _dtStorico.AsEnumerable().ToList();
//if (listaStorico.Count() > 0)
//{
// Int64 maxStorico = listaStorico.Max(m => m.Field("chiaveCointestatari"));
// int pos = 0;
// foreach (var itemST in listaStorico.Where(f => f.Field("chiaveCointestatari") == maxStorico))
// {
// if (pos <= item._listaDetailQuote.Count() - 1)
// {
// item._listaDetailQuote[pos].TipologiaDirittoST = itemST.Field("tipologiaDiritto");
// item._listaDetailQuote[pos].QuoteDirittoST = itemST.Field("quotaDiritto");
// item._listaDetailQuote[pos].AggiornatoAl = itemST.Field("dtImportazione").ToShortDateString();
// }
// else
// {
// item._listaDetailQuote.Add(new DetailQuote()
// {
// TipologiaDirittoST = itemST.Field("tipologiaDiritto"),
// QuoteDirittoST = itemST.Field("quotaDiritto"),
// AggiornatoAl = itemST.Field("dtImportazione").ToShortDateString()
// });
// }
// pos += 1;
// }
//}
#endregion
#region Storico New
//DataTable _dtST = GetDetail(item.chiaveClientePB, item.chiaveProdottoTerzi);
DataTable _dtST = GetStorico(item.chiaveClientePB, item.chiaveProdottoTerzi);
var listaDettaglioST = _dtST.AsEnumerable().ToList();
if (listaDettaglioST.Count() > 0)
{
Int64 max = listaDettaglioST.Max(m => m.Field("chiaveCointestatari"));
//int pos = 0;
foreach (var itemDett in listaDettaglioST.Where(f => f.Field("chiaveCointestatari") == max))
{
item._listaDetailQuote.Add(new DetailQuote()
{
TipologiaDirittoST = itemDett.Field("TD_ST"),
QuoteDirittoST = itemDett.Field("Q_ST")
});
}
}
#endregion
}
}
}
catch (Exception ex)
{
//MessageBox.Show("Errore: " + ex.Message);
}
return _lista;
}
private DataTable GetDetail(Int64 _ccpb, Int64 _cpt)
{
DataTable _dt = new DataTable();
try
{
#region Definizione dei parametri
var parametri = new List
{
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "@CCPB",
Value =_ccpb
},
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "CPT",
Value =_cpt
}
};
#endregion
string queryLogGenerale = @"Select coin.chiaveClientePB,coin.chiaveProdottoTerzi,coin.chiaveCointestatari,condett.tipologiaDiritto,condett.quotaDiritto from ConsulenzaUnica..cointestatari coin inner join ConsulenzaUnica..CointestatariDettaglioDiritto condett on coin.chiaveProdottoTerzi=condett.chiaveprodottoterzi and coin.chiaveCointestatari=condett.chiaveCointestatari where coin.chiaveClientePB = @CCPB and coin.chiaveClientePBProprietario = @CCPB and condett.chiaveprodottoterzi = @CPT";
var dsOriginal = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, queryLogGenerale, parametri);
_dt = dsOriginal.AsEnumerable().CopyToDataTable();
//#region Dettaglio
//DataSet ds = null;
//String connString = ConfigurationManager.ConnectionStrings["SqlServerConsulenzaUnicaCONG"].ToString();
//using (SqlConnection conn = new SqlConnection(connString))
//{
// string queryLogGenerale = @"Select coin.chiaveClientePB,coin.chiaveProdottoTerzi,coin.chiaveCointestatari,condett.tipologiaDiritto,condett.quotaDiritto from ConsulenzaUnica..cointestatari coin inner join ConsulenzaUnica..CointestatariDettaglioDiritto condett on coin.chiaveProdottoTerzi=condett.chiaveprodottoterzi and coin.chiaveCointestatari=condett.chiaveCointestatari where coin.chiaveClientePB = @CCPB and coin.chiaveClientePBProprietario = @CCPB and condett.chiaveprodottoterzi = @CPT";
// SqlCommand cmd = new SqlCommand(queryLogGenerale, conn);
// cmd.CommandType = CommandType.Text;
// cmd.Parameters.Add("@CCPB", SqlDbType.BigInt);
// cmd.Parameters["@CCPB"].Value = _ccpb; //6088; //6088; //1662180;
// cmd.Parameters.Add("@CPT", SqlDbType.BigInt);
// cmd.Parameters["@CPT"].Value = _cpt;
// try
// {
// conn.Open();
// ds = new DataSet();
// var da = new SqlDataAdapter(cmd);
// da.Fill(ds);
// _dt = ds.Tables[0].AsEnumerable().CopyToDataTable();//.AsEnumerable().GroupBy(x => x.Field("idImmobileCatasto")).Select(x => x.First()).Where(x => x.Field("ordinamento") == 4).CopyToDataTable();
// }
// catch (Exception ex)
// {
// Console.WriteLine(ex.Message);
// }
// finally
// {
// conn.Close();
// conn.Dispose();
// }
//}
//#endregion
}
catch (Exception ex)
{
//MessageBox.Show("Errore: " + ex.Message);
}
return _dt;
}
private DataTable GetStorico(Int64 _ccpb, Int64 _cpt)
{
DataTable _dt = new DataTable();
try
{
string DataRicCatastoPenSem = ConfigurationManager.AppSettings["DataRicCatastoUltimaSemestrale"].ToString();
string meseUltSemRicCata = Convert.ToDateTime(DataRicCatastoPenSem).Month.ToString();
string giornoUltSemRicCata = Convert.ToDateTime(DataRicCatastoPenSem).Day.ToString();
string annoUltSemRicCata = Convert.ToDateTime(DataRicCatastoPenSem).Year.ToString();
if (meseUltSemRicCata.Length == 1)
meseUltSemRicCata = string.Concat("0", meseUltSemRicCata);
if (giornoUltSemRicCata.Length == 1)
giornoUltSemRicCata = string.Concat("0", giornoUltSemRicCata);
string dataannoUltSemRicCata = string.Concat(annoUltSemRicCata, meseUltSemRicCata, giornoUltSemRicCata);
#region Definizione dei parametri
var parametri = new List
{
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "@CCPB",
Value =_ccpb
},
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "@CPT",
Value =_cpt
},
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.String,
ParameterName = "@dataannoUltSemRicCata",
Value = dataannoUltSemRicCata
},
};
#endregion
var queryStorico = @"Select dettdir.chiaveClientePB,
dettdir.chiaveprodottoterzi,
dettdir.chiaveCointestatari,
dettimm.tipologiaDiritto as TD_Att,
dettimm.quotaProprieta as Q_ATT,
dettimm.dtStimaOMI,
dettdir.tipologiaDiritto as TD_ST,
dettdir.quotaDiritto as Q_ST,
dettdir.dtImportazione
from ConsulenzaUnica..PatrimonioTerzi pt
inner join ConsulenzaUnica..DettImmobiliare dettimm ON pt.chiaveProdottoTerzi = dettimm.chiaveProdottoTerzi
left join ConsulenzaUnica..DettImmobiliareStoricoVariazioni dettdir
on pt.chiaveProdottoTerzi = dettdir.chiaveProdottoTerzi
where dettdir.chiaveClientePB = @CCPB
and dettdir.chiaveprodottoterzi = @CPT
and chiaveclientepbProprietario = @CCPB
and dtfinevalidita > getdate()
and dettdir.dtImportazione > @dataannoUltSemRicCata";
var dsOriginal = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, queryStorico, parametri);
_dt = dsOriginal.AsEnumerable().CopyToDataTable();
//#region Dettaglio storico
//DataSet ds = null;
//String connString = ConfigurationManager.ConnectionStrings["SqlServerConsulenzaUnicaCONG"].ToString();
//using (SqlConnection conn = new SqlConnection(connString))
//{
// var queryStorico = @"Select dettdir.chiaveClientePB,
// dettdir.chiaveprodottoterzi,
// dettdir.chiaveCointestatari,
// dettimm.tipologiaDiritto as TD_Att,
// dettimm.quotaProprieta as Q_ATT,
// dettimm.dtStimaOMI,
// dettdir.tipologiaDiritto as TD_ST,
// dettdir.quotaDiritto as Q_ST,
// dettdir.dtImportazione
// from ConsulenzaUnica..PatrimonioTerzi pt
// inner join ConsulenzaUnica..DettImmobiliare dettimm ON pt.chiaveProdottoTerzi = dettimm.chiaveProdottoTerzi
// left join ConsulenzaUnica..DettImmobiliareStoricoVariazioni dettdir
// on pt.chiaveProdottoTerzi = dettdir.chiaveProdottoTerzi
// where dettdir.chiaveClientePB = @CCPB
// and dettdir.chiaveprodottoterzi = @CPT
// and chiaveclientepbProprietario = @CCPB
// and dtfinevalidita > getdate()";
// SqlCommand cmd = new SqlCommand(queryStorico, conn);
// cmd.CommandType = CommandType.Text;
// cmd.Parameters.Add("@CCPB", SqlDbType.BigInt);
// cmd.Parameters["@CCPB"].Value = _ccpb; //6088; //6088; //1662180;
// cmd.Parameters.Add("@CPT", SqlDbType.BigInt);
// cmd.Parameters["@CPT"].Value = _cpt;
// //cmd.Parameters.Add("@meseSemPrecedente", SqlDbType.VarChar);
// //cmd.Parameters["@meseSemPrecedente"].Value = meseSemPrecedente;
// //cmd.Parameters.Add("@annoSemPrecedente", SqlDbType.VarChar);
// //cmd.Parameters["@annoSemPrecedente"].Value = annoSemPrecedente;
// //cmd.Parameters.Add("@data", SqlDbType.VarChar);
// //cmd.Parameters["@data"].Value = dataSemestrePrecedente;
// try
// {
// conn.Open();
// ds = new DataSet();
// var da = new SqlDataAdapter(cmd);
// da.Fill(ds);
// _dt = ds.Tables[0].AsEnumerable().CopyToDataTable();//.AsEnumerable().GroupBy(x => x.Field("idImmobileCatasto")).Select(x => x.First()).Where(x => x.Field("ordinamento") == 4).CopyToDataTable();
// }
// catch (Exception ex)
// {
// Console.WriteLine(ex.Message);
// }
// finally
// {
// conn.Close();
// conn.Dispose();
// }
//}
//#endregion
}
catch (Exception ex)
{
//MessageBox.Show("Errore: " + ex.Message);
}
return _dt;
}
private bool VerificaVariazioni(List listaAtt, MasterQuote _semPrec)
{
bool isEliminare = false;
bool isQuoteUguali = false;
bool isDirittiUguali = false;
Int64 cpt = _semPrec.chiaveProdottoTerzi;
// filtro la lista Att per quella cpt
MasterQuote _semAtt = listaAtt.Where(f => f.chiaveProdottoTerzi == cpt).Select(s => s).FirstOrDefault();
//foreach (var itemQuoteST in _semPrec._listaDetailQuote)
//{
// string _dirittiAtt = _semAtt._listaDetailQuote.Where(f => f.TipologiaDirittoATT == itemQuoteST.TipologiaDirittoST).Select(s => s.TipologiaDirittoATT).FirstOrDefault();
// decimal _quoteAtt = _semAtt._listaDetailQuote.Where(f => f.QuoteDirittoATT == itemQuoteST.QuoteDirittoST).Select(s => s.QuoteDirittoATT).FirstOrDefault();
// if (itemQuoteST.TipologiaDirittoST == _dirittiAtt)
// isDirittiUguali = true;
// else
// isDirittiUguali = false;
// if (itemQuoteST.QuoteDirittoST == _quoteAtt)
// isQuoteUguali = true;
// else
// isQuoteUguali = false;
//}
//if (isQuoteUguali && isDirittiUguali) isEliminare = true;
if (VerificaStoricoVariazione(_semPrec))
isEliminare = false;
else
{
if (isQuoteUguali && isDirittiUguali) isEliminare = true;
}
return isEliminare;
}
private bool VerificaStoricoVariazione(MasterQuote _semPrec)
{
bool isVariazioni = false;
// Verifico variazioni nelle quote
DataTable _dt = new DataTable();
try
{
#region Storico Variazioni
// Determino la data da utilizzare come filtro nella lista
string dataFineSemestreAttaule = ConfigurationManager.AppSettings["DataFineTrimestreCorrente_Copertina"].ToString();
DateTime dataSemestrePrecedente = Convert.ToDateTime(dataFineSemestreAttaule).AddMonths(-6).AddMonths(1);
string meseSemPrecedente = dataSemestrePrecedente.Month.ToString();
string annoSemPrecedente = dataSemestrePrecedente.Year.ToString();
string giornoSemPrecedente = "01"; //dataSemestrePrecedente.Day.ToString();
if (meseSemPrecedente.Length == 1)
meseSemPrecedente = string.Concat("0", meseSemPrecedente);
if (giornoSemPrecedente.Length == 1)
giornoSemPrecedente = string.Concat("0", giornoSemPrecedente);
string dataSemPrecedente = string.Concat(annoSemPrecedente, meseSemPrecedente, giornoSemPrecedente);
string meseSemAtt = Convert.ToDateTime(dataFineSemestreAttaule).Month.ToString();
string giornoSemAtt = Convert.ToDateTime(dataFineSemestreAttaule).Day.ToString();
string annoSemAtt = Convert.ToDateTime(dataFineSemestreAttaule).Year.ToString();
if (meseSemAtt.Length == 1)
meseSemAtt = string.Concat("0", meseSemAtt);
if (giornoSemAtt.Length == 1)
giornoSemAtt = string.Concat("0", giornoSemAtt);
string dataSemAttuale = string.Concat(annoSemAtt, meseSemAtt, giornoSemAtt);
#region Definizione dei parametri
var parametri = new List
{
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "@CCPB",
Value =_semPrec.chiaveClientePB
},
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "@CPT",
Value =_semPrec.chiaveProdottoTerzi
},
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.String,
ParameterName = "@dataSemPrecedente",
Value =dataSemPrecedente
},
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.String,
ParameterName = "@dataSemAttuale",
Value =dataSemAttuale
}
};
#endregion
string queryStoricoVariazioni = @"Select * from ConsulenzaUnica..DettImmobiliareStoricoVariazioni
where chiaveClientePB = @CCPB
and chiaveclientepbProprietario = @CCPB
and chiaveprodottoterzi = @CPT
and convert(char(8), dtimportazione, 112) >= @dataSemPrecedente
and convert(char(8), dtimportazione, 112) <= @dataSemAttuale";
var dsOriginal = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, queryStoricoVariazioni, parametri);
_dt = dsOriginal.AsEnumerable().CopyToDataTable();
if (_dt.Rows.Count > 0)
isVariazioni = true;
//DataSet ds = null;
//String connString = ConfigurationManager.ConnectionStrings["SqlServerConsulenzaUnicaCONG"].ToString();
//using (SqlConnection conn = new SqlConnection(connString))
//{
// string queryStoricoVariazioni = @"Select * from ConsulenzaUnica..DettImmobiliareStoricoVariazioni
// where chiaveClientePB = @CCPB
// and chiaveclientepbProprietario = @CCPB
// and chiaveprodottoterzi = @CPT
// and convert(char(8), dtimportazione, 112) >= @dataSemPrecedente
// and convert(char(8), dtimportazione, 112) <= @dataSemAttuale";
// SqlCommand cmd = new SqlCommand(queryStoricoVariazioni, conn);
// cmd.CommandType = CommandType.Text;
// cmd.Parameters.Add("@CCPB", SqlDbType.BigInt);
// cmd.Parameters["@CCPB"].Value = _semPrec.chiaveClientePB; //6088; //6088; //1662180;
// cmd.Parameters.Add("@CPT", SqlDbType.BigInt);
// cmd.Parameters["@CPT"].Value = _semPrec.chiaveProdottoTerzi;
// cmd.Parameters.Add("@dataSemPrecedente", SqlDbType.NVarChar);
// cmd.Parameters["@dataSemPrecedente"].Value = dataSemPrecedente;
// cmd.Parameters.Add("@dataSemAttuale", SqlDbType.NVarChar);
// cmd.Parameters["@dataSemAttuale"].Value = dataSemAttuale;
// try
// {
// conn.Open();
// ds = new DataSet();
// var da = new SqlDataAdapter(cmd);
// da.Fill(ds);
// _dt = ds.Tables[0].AsEnumerable().CopyToDataTable();//.AsEnumerable().GroupBy(x => x.Field("idImmobileCatasto")).Select(x => x.First()).Where(x => x.Field("ordinamento") == 4).CopyToDataTable();
// if (_dt.Rows.Count > 0)
// isVariazioni = true;
// }
// catch (Exception ex)
// {
// Console.WriteLine(ex.Message);
// }
// finally
// {
// conn.Close();
// conn.Dispose();
// }
//}
#endregion
}
catch (Exception ex)
{
//MessageBox.Show("Errore: " + ex.Message);
}
return isVariazioni;
}
//private DataSet GetQuoteVariate(DataSet _ds)
//{
// DataSet data = new DataSet();
// List ListaQuote = new List();
// string oldImmobile = string.Empty;
// try
// {
// List _listaMaster = ConvertTo(_ds.Tables[0]);
// var listaTotale = SetDetail(_listaMaster);
// foreach (var item in listaTotale)
// {
// Quote cls = null;
// foreach (var itemST in item._listaDetailQuote)
// {
// cls = new Quote();
// bool isEliminare = VerificaNessunaVariazione(item._listaDetailQuote);
// if (item.colonnaImmobili != oldImmobile)
// {
// cls.idImmobileCatasto = item.IdImmobileCatasto;
// cls.chiaveClientePB = Convert.ToString(item.chiaveClientePB);
// cls.chiaveProdottiTerzi = Convert.ToString(item.chiaveProdottoTerzi);
// cls.colonnaImmobili = item.colonnaImmobili;
// cls.renditaCatastale = Convert.ToString(item.renditaCatastale);
// cls.redditoAgrario = Convert.ToString(item.redditoAgrario);
// cls.tipoImmobile = item.TipoImmobile;
// cls.rendita = Convert.ToString((item.rendita != null ? item.rendita : "0"));
// cls.descrizione = item.colonnaImmobili;
// }
// cls.Tipologiastorico = itemST.TipologiaDirittoST;
// cls.QuotaStorico = Convert.ToString(itemST.QuoteDirittoST);
// cls.tipologiaAttuale = itemST.TipologiaDirittoATT;
// cls.quotaAttuale = Convert.ToString(itemST.QuoteDirittoATT);
// cls.Elimina = (isEliminare ? "S" : "N");
// ListaQuote.Add(cls);
// cls = null;
// oldImmobile = item.colonnaImmobili;
// }
// }
// }
// catch(Exception ex)
// {
// }
// ListaQuote.Where(f => f.rendita == null).ToList().ForEach(p => p.rendita = string.Empty);
// ListaQuote.RemoveAll(rem => rem.Elimina == "S");
// //ListaQuote.RemoveAll(rem => rem.tipologiaAttuale == rem.Tipologiastorico && rem.quotaAttuale == rem.QuotaStorico);
// ListaQuote.Where(f => f.Tipologiastorico == null).ToList().ForEach(p => p.Tipologiastorico = "Nessuna");
// DataTable _dt = ToDataTable(ListaQuote);
// data.Tables.Add(_dt);
// return data;
//}
//private List SetDetail(List _lista)
//{
// try
// {
// // Ciclo sulla lista Master e per ogni CCPB e CTERZI
// // 1. Ordino per CCPB
// // 2. Faccio distinct
// // 3. Per ogni CCPB trovo il dettaglio
// _lista = _lista.OrderBy(o => o.chiaveClientePB).ToList();
// //List _listaCCPB = _lista.Select(s => s.chiaveClientePB).Distinct().ToList();
// foreach (var item in _lista)
// {
// DataTable _dt = GetDetail(item.chiaveClientePB, item.chiaveProdottoTerzi);
// var listaDettaglio = _dt.AsEnumerable().ToList();
// if (listaDettaglio.Count() > 0)
// {
// Int64 max = listaDettaglio.Max(m => m.Field("chiaveCointestatari"));
// foreach (var itemDett in listaDettaglio.Where(f => f.Field("chiaveCointestatari") == max))
// {
// item._listaDetailQuote.Add(new DetailQuote()
// {
// TipologiaDirittoATT = itemDett.Field("tipologiaDiritto"),
// QuoteDirittoATT = itemDett.Field("quotaDiritto")
// });
// }
// }
// #region Storico
// DataTable _dtStorico = GetStorico(item.chiaveClientePB, item.chiaveProdottoTerzi);
// var listaStorico = _dtStorico.AsEnumerable().ToList();
// if (listaStorico.Count() > 0)
// {
// Int64 maxStorico = listaStorico.Max(m => m.Field("chiaveCointestatari"));
// int pos = 0;
// foreach (var itemST in listaStorico.Where(f => f.Field("chiaveCointestatari") == maxStorico))
// {
// if (pos <= item._listaDetailQuote.Count() - 1)
// {
// item._listaDetailQuote[pos].TipologiaDirittoST = itemST.Field("tipologiaDiritto");
// item._listaDetailQuote[pos].QuoteDirittoST = itemST.Field("quotaDiritto");
// }
// else
// {
// item._listaDetailQuote.Add(new DetailQuote()
// {
// TipologiaDirittoST = itemST.Field("tipologiaDiritto"),
// QuoteDirittoST = itemST.Field("quotaDiritto")
// });
// }
// pos += 1;
// }
// }
// #endregion
// }
// }
// catch (Exception ex)
// {
// //MessageBox.Show("Errore: " + ex.Message);
// }
// return _lista;
//}
//private DataTable GetDetail(Int64 _ccpb, Int64 _cpt)
//{
// DataTable _dt = new DataTable();
// try
// {
// #region Definizione dei parametri
// var parametri = new List
// {
// new Parametro
// {
// Direction = ParameterDirection.Input,
// DbType = DbType.Int64,
// ParameterName = "@CCPB",
// Value =_ccpb
// },
// new Parametro
// {
// Direction = ParameterDirection.Input,
// DbType = DbType.Int64,
// ParameterName = "CPT",
// Value =_cpt
// }
// };
// #endregion
// string queryLogGenerale = @"Select coin.chiaveClientePB,coin.chiaveProdottoTerzi,coin.chiaveCointestatari,condett.tipologiaDiritto,condett.quotaDiritto from ConsulenzaUnica..cointestatari coin inner join ConsulenzaUnica..CointestatariDettaglioDiritto condett on coin.chiaveProdottoTerzi=condett.chiaveprodottoterzi and coin.chiaveCointestatari=condett.chiaveCointestatari where coin.chiaveClientePB = @CCPB and coin.chiaveClientePBProprietario = @CCPB and condett.chiaveprodottoterzi = @CPT";
// var dsOriginal = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, queryLogGenerale, parametri);
// _dt = dsOriginal.AsEnumerable().CopyToDataTable();
// //#region Dettaglio
// //DataSet ds = null;
// //String connString = ConfigurationManager.ConnectionStrings["SqlServerConsulenzaUnicaCONG"].ToString();
// //using (SqlConnection conn = new SqlConnection(connString))
// //{
// // string queryLogGenerale = @"Select coin.chiaveClientePB,coin.chiaveProdottoTerzi,coin.chiaveCointestatari,condett.tipologiaDiritto,condett.quotaDiritto from ConsulenzaUnica..cointestatari coin inner join ConsulenzaUnica..CointestatariDettaglioDiritto condett on coin.chiaveProdottoTerzi=condett.chiaveprodottoterzi and coin.chiaveCointestatari=condett.chiaveCointestatari where coin.chiaveClientePB = @CCPB and coin.chiaveClientePBProprietario = @CCPB and condett.chiaveprodottoterzi = @CPT";
// // SqlCommand cmd = new SqlCommand(queryLogGenerale, conn);
// // cmd.CommandType = CommandType.Text;
// // cmd.Parameters.Add("@CCPB", SqlDbType.BigInt);
// // cmd.Parameters["@CCPB"].Value = _ccpb; //6088; //6088; //1662180;
// // cmd.Parameters.Add("@CPT", SqlDbType.BigInt);
// // cmd.Parameters["@CPT"].Value = _cpt;
// // try
// // {
// // conn.Open();
// // ds = new DataSet();
// // var da = new SqlDataAdapter(cmd);
// // da.Fill(ds);
// // _dt = ds.Tables[0].AsEnumerable().CopyToDataTable();//.AsEnumerable().GroupBy(x => x.Field("idImmobileCatasto")).Select(x => x.First()).Where(x => x.Field("ordinamento") == 4).CopyToDataTable();
// // }
// // catch (Exception ex)
// // {
// // Console.WriteLine(ex.Message);
// // }
// // finally
// // {
// // conn.Close();
// // conn.Dispose();
// // }
// //}
// //#endregion
// }
// catch (Exception ex)
// {
// //MessageBox.Show("Errore: " + ex.Message);
// }
// return _dt;
//}
//private DataTable GetStorico(Int64 _ccpb, Int64 _cpt)
//{
// DataTable _dt = new DataTable();
// try
// {
// string dataFineSemestreAttaule = ConfigurationManager.AppSettings["DataFineTrimestreCorrente_Copertina"].ToString();
// DateTime dataSemestrePrecedente = Convert.ToDateTime(dataFineSemestreAttaule).AddMonths(-6);
// string meseSemPrecedente = ((dataSemestrePrecedente.Month) + 1).ToString();
// string annoSemPrecedente = dataSemestrePrecedente.Year.ToString();
// #region Definizione dei parametri
// var parametri = new List
// {
// new Parametro
// {
// Direction = ParameterDirection.Input,
// DbType = DbType.Int64,
// ParameterName = "@CCPB",
// Value =_ccpb
// },
// new Parametro
// {
// Direction = ParameterDirection.Input,
// DbType = DbType.Int64,
// ParameterName = "@CPT",
// Value =_cpt
// },
// new Parametro
// {
// Direction = ParameterDirection.Input,
// DbType = DbType.String,
// ParameterName = "@meseSemPrecedente",
// Value = meseSemPrecedente
// },
// new Parametro
// {
// Direction = ParameterDirection.Input,
// DbType = DbType.String,
// ParameterName = "@annoSemPrecedente",
// Value = annoSemPrecedente
// }
// };
// #endregion
// //string queryLogGenerale = @"Select dettImmSTDD.tipologiaDiritto,dettImmSTDD.quotaDiritto,dettImmST.chiaveCointestatari from (Select * from ConsulenzaUnica..DettImmobiliareStoricoVariazioni where convert(char(8),dtimportazione,112) >= '20200331') as dettImmST
// // inner join (Select distinct chiaveprodottoterzi, tipologiaDiritto,quotaDiritto from ConsulenzaUnica..DettImmobiliareStoricoVariazioniDettaglioDiritto) as dettImmSTDD
// // on dettImmST.chiaveprodottoterzi = dettImmSTDD.chiaveprodottoterzi
// // where dettImmST.chiaveClientePB = @CCPB
// // and dettImmST.chiaveprodottoterzi = @CPT";
// //string queryLogGenerale = @"Select condett.tipologiaDiritto,condett.quotaDiritto,condett.chiaveCointestatari from ConsulenzaUnica..cointestatari coin
// // inner join ConsulenzaUnica..CointestatariDettaglioDiritto_1706 condett on coin.chiaveProdottoTerzi=condett.chiaveprodottoterzi and coin.chiaveCointestatari=condett.chiaveCointestatari
// // where coin.chiaveClientePB = @CCPB
// // and condett.chiaveprodottoterzi = @CPT";
// string queryLogGenerale = @"select DISTINCT
// CASE WHEN isnull(stor.tipologiaDiritto, '') = '' THEN dettimmST.tipologiaDiritto ELSE stor.tipologiaDiritto END AS tipologiaDiritto,
// CASE WHEN isnull(stor.quotaDiritto, 0) = 0 THEN dettimmST.quotaDiritto ELSE stor.quotaDiritto END AS quotaDiritto,
// --CAST(pt.chiaveClientePB AS bigint) AS chiaveClientePB,
// dettimmST.chiaveCointestatari
// --pt.chiaveProdottoTerzi,
// --dettimmST.dtImportazione
// from ConsulenzaUnica..PatrimonioTerzi pt
// inner join ConsulenzaUnica..DettImmobiliare dettimm on pt.chiaveProdottoTerzi = dettimm.chiaveProdottoTerzi AND pt.dtfinevalidita > GETDATE()
// inner join ConsulenzaUnica..DettImmobiliareStoricoVariazioni dettimmST on pt.chiaveClientePB = dettimmST.chiaveClientePB and pt.chiaveProdottoTerzi=dettimmST.chiaveprodottoterzi
// inner join dbo.DettImmobiliareStoricoVariazioniDettaglioDiritto AS stor ON stor.chiaveCointestatari = dettimmST.chiaveCointestatari
// where dettimmST.chiaveClientePB=@CCPB
// and dettimmST.chiaveProdottoTerzi = @CPT
// and dettImmST.chiaveclientepbProprietario = @CCPB
// and MONTH(dettimmST.dtimportazione) = @meseSemPrecedente
// and Year(dettimmST.dtimportazione) = @annoSemPrecedente";
// //and convert(char(8),dettimmST.dtimportazione,112) >= '20200331'";
// var dsOriginal = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, queryLogGenerale, parametri);
// _dt = dsOriginal.AsEnumerable().CopyToDataTable();
// //#region Dettaglio
// //DataSet ds = null;
// //String connString = ConfigurationManager.ConnectionStrings["SqlServerConsulenzaUnicaCONG"].ToString();
// //using (SqlConnection conn = new SqlConnection(connString))
// //{
// // string queryLogGenerale = @"Select dettImmSTDD.tipologiaDiritto,dettImmSTDD.quotaDiritto,dettImmST.chiaveCointestatari from (Select * from ConsulenzaUnica..DettImmobiliareStoricoVariazioni where convert(char(8),dtimportazione,112) >= '20200331') as dettImmST
// // inner join (Select distinct chiaveprodottoterzi, tipologiaDiritto,quotaDiritto from ConsulenzaUnica..DettImmobiliareStoricoVariazioniDettaglioDiritto) as dettImmSTDD
// // on dettImmST.chiaveprodottoterzi = dettImmSTDD.chiaveprodottoterzi
// // where dettImmST.chiaveClientePB = @CCPB
// // and dettImmST.chiaveprodottoterzi = @CPT";
// // //and dettImmST.chiaveCointestatari = @CC";
// // SqlCommand cmd = new SqlCommand(queryLogGenerale, conn);
// // cmd.CommandType = CommandType.Text;
// // cmd.Parameters.Add("@CCPB", SqlDbType.BigInt);
// // cmd.Parameters["@CCPB"].Value = _ccpb; //6088; //6088; //1662180;
// // cmd.Parameters.Add("@CPT", SqlDbType.BigInt);
// // cmd.Parameters["@CPT"].Value = _cpt;
// // //cmd.Parameters.Add("@CC", SqlDbType.BigInt);
// // //cmd.Parameters["@CC"].Value = _cc;
// // try
// // {
// // conn.Open();
// // ds = new DataSet();
// // var da = new SqlDataAdapter(cmd);
// // da.Fill(ds);
// // _dt = ds.Tables[0].AsEnumerable().CopyToDataTable();//.AsEnumerable().GroupBy(x => x.Field("idImmobileCatasto")).Select(x => x.First()).Where(x => x.Field("ordinamento") == 4).CopyToDataTable();
// // }
// // catch (Exception ex)
// // {
// // Console.WriteLine(ex.Message);
// // }
// // finally
// // {
// // conn.Close();
// // conn.Dispose();
// // }
// //}
// //#endregion
// }
// catch (Exception ex)
// {
// //MessageBox.Show("Errore: " + ex.Message);
// }
// return _dt;
//}
//private bool VerificaNessunaVariazione(List quote)
//{
// bool isEliminare = false;
// bool isQuoteUguali = false;
// bool isDirittiUguali = false;
// // Verifico variazini nelle quote
// foreach (var item in quote)
// {
// if (item.QuoteDirittoST == item.QuoteDirittoATT)
// isQuoteUguali = true;
// else
// isQuoteUguali = false;
// if (item.TipologiaDirittoST == item.TipologiaDirittoATT)
// isDirittiUguali = true;
// else
// isDirittiUguali = false;
// }
// if (isQuoteUguali && isDirittiUguali) isEliminare = true;
// return isEliminare;
//}
#region "getobject filled object with property reconized"
public List ConvertTo(DataTable datatable) where T : new()
{
List Temp = new List();
try
{
List columnsNames = new List();
foreach (DataColumn DataColumn in datatable.Columns)
columnsNames.Add(DataColumn.ColumnName);
Temp = datatable.AsEnumerable().ToList().ConvertAll(row => getObject(row, columnsNames));
return Temp;
}
catch
{
return Temp;
}
}
public T getObject(DataRow row, List columnsName) where T : new()
{
T obj = new T();
try
{
string columnname = "";
string value = "";
PropertyInfo[] Properties;
Properties = typeof(T).GetProperties();
foreach (PropertyInfo objProperty in Properties)
{
columnname = columnsName.Find(name => name.ToLower() == objProperty.Name.ToLower());
if (!string.IsNullOrEmpty(columnname))
{
value = row[columnname].ToString();
if (!string.IsNullOrEmpty(value))
{
if (Nullable.GetUnderlyingType(objProperty.PropertyType) != null)
{
value = row[columnname].ToString().Replace("$", "").Replace(",", "");
objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(Nullable.GetUnderlyingType(objProperty.PropertyType).ToString())), null);
}
else
{
value = row[columnname].ToString().Replace("%", "");
objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(objProperty.PropertyType.ToString())), null);
}
}
}
}
return obj;
}
catch
{
return obj;
}
}
private DataTable ToDataTable(IList data)
{
PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
for (int i = 0; i < props.Count; i++)
{
PropertyDescriptor prop = props[i];
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
}
object[] values = new object[props.Count];
foreach (T item in data)
{
for (int i = 0; i < values.Length; i++)
values[i] = props[i].GetValue(item) ?? DBNull.Value;
table.Rows.Add(values);
}
return table;
}
#endregion
#endregion
}
public class MasterQuote
{
public MasterQuote()
{
_listaDetailQuote = new List();
}
public int Id { get; set; }
public string IdImmobileCatasto { get; set; }
public Int64 chiaveClientePB { get; set; }
public Int64 chiaveProdottoTerzi { get; set; }
public string colonnaImmobili { get; set; }
public decimal renditaCatastale { get; set; }
public decimal redditoAgrario { get; set; }
public string TipoImmobile { get; set; }
public string rendita { get; set; }
public string dtStimaOMI { get; set; }
public string comune { get; set; }
public decimal valoreImmobileTotale { get; set; }
public List _listaDetailQuote { get; set; }
}
public class DetailQuote
{
public int Id { get; set; }
public string TipologiaDirittoATT { get; set; }
public decimal QuoteDirittoATT { get; set; }
public string TipologiaDirittoST { get; set; }
public decimal QuoteDirittoST { get; set; }
}
public class Quote
{
public string idImmobileCatasto { get; set; }
public string chiaveClientePB { get; set; }
public string chiaveProdottiTerzi { get; set; }
public string colonnaImmobili { get; set; }
public string renditaCatastale { get; set; }
public string redditoAgrario { get; set; }
public string tipoImmobile { get; set; }
public string rendita { get; set; }
public string tipologiaAttuale { get; set; }
public string quotaAttuale { get; set; }
public string descrizione { get; set; }
public string quotaProprieta { get; set; }
public decimal valoreImmobileTotale { get; set; }
public string Tipologiastorico { get; set; }
public string QuotaStorico { get; set; }
public string Elimina { get; set; }
public string comune { get; set; }
}
}