private DataView convertMillesimiToPivot(List<ContoDTO> conti, StabileDTO stabile, GruppoStabileDTO gruppo) { var tb = new DataTable("MillesimiPivot"); tb.Columns.Add("IdUnitaImmobiliare", typeof(int)); tb.Columns.Add("OrdineUnitaImmobiliare", typeof(int)); tb.Columns.Add("DescrizioneUnitaImmobiliare", typeof(string)); tb.Columns.Add("TipoUnitaImmobiliare", typeof(string)); tb.Columns.Add("InternoUnitaImmobiliare", typeof(string)); tb.Columns.Add("Stabile", typeof(string)); tb.Columns.Add("Scala", typeof(string)); tb.PrimaryKey = new[] { tb.Columns["IdUnitaImmobiliare"] }; var service = new PianoContiWCFService(_fornitoreService, _soggettoService); var idConti = new List<int>(conti.Count); idConti.AddRange(conti.Select(conto => conto.ID)); var millesimi = service.GetMillesimiByConti(idConti, stabile, gruppo); // ---------------------------------------------- // Aggiungo una colonna per ogni Conto // ---------------------------------------------- var contoColumns = new List<DataColumn>(conti.Count); foreach (var conto in conti.OrderBy(item => item.Ordine)) contoColumns = addColumnByConto(conto.ID, conto.Descrizione, tb, contoColumns); // ---------------------------------------------- // Riempio la tabella // ---------------------------------------------- foreach (var conto in conti) { var conto1 = conto; var millesimiSelezionati = from millesimo in millesimi where millesimo.IdContoRiferimento == conto1.ID && (gruppo == null || millesimo.IdGruppoRiferimento == gruppo.ID) && (stabile == null || millesimo.IdStabileRiferimento == stabile.ID) select millesimo; foreach (var millesimo in millesimiSelezionati) { var row = tb.Rows.Find(millesimo.IdUnitaRiferimento); if (row == null) { row = tb.NewRow(); row["IdUnitaImmobiliare"] = millesimo.IdUnitaRiferimento; row["OrdineUnitaImmobiliare"] = millesimo.Ordine; row["DescrizioneUnitaImmobiliare"] = millesimo.NominativoUnitaRiferimento; row["TipoUnitaImmobiliare"] = millesimo.TipoUnitaRiferimento; row["InternoUnitaImmobiliare"] = millesimo.InternoUnitaRiferimento; row["Stabile"] = millesimo.DescrizioneStabileRiferimento; row["Scala"] = millesimo.DescrizioneGruppoRiferimento; tb.Rows.Add(row); } var valore = millesimo.Valore ?? (object) DBNull.Value; row["Conto_" + conto.ID + "_" + conto.Descrizione] = valore; row["Ripartizione_" + conto.ID + "_" + conto.Descrizione] = millesimo.RipartizionePersonalizzata; } } return new DataView(tb, string.Empty, "OrdineUnitaImmobiliare", DataViewRowState.Added); }
public List<MillesimoDTO> GetRiepilogoMillesimiByEsercizio(IList<int> contiSelezionati, IList<int> unitaSelezionate, StabileDTO stabile, GruppoStabileDTO scala, EsercizioDTO esercizio) { var millesimi = new List<MillesimoDTO>(); var service = new PianoContiWCFService(_fornitoreService, _soggettoService); var millesimiContiSelezionati = service.GetMillesimiByConti(contiSelezionati, stabile, scala); foreach (var conto in GetDaMillesimareByCondominio(esercizio)) { var conto1 = conto; var millesimiConto = from item in millesimiContiSelezionati where item.IdContoRiferimento == conto1.ID select item; millesimi.AddRange(millesimiConto); } return new List<MillesimoDTO> ( (from mill in millesimi where contiSelezionati.Contains(mill.IdContoRiferimento) && unitaSelezionate.Contains(mill.IdUnitaRiferimento) select mill).ToList() ); }