public DatiCondomini Get([FromUri] SearchCriteria json) { var service = new SferaService(); var info = new UserInfo(0, json.Azienda); var rate = service.GetRateByPersonaCondominio(json.Condominio, json.Persona, info).Where(item => item.ImportoRata > 0).ToList(); var ratePerEsercizi = rate.OrderBy(item => item.DataScadenza).GroupBy(item => item.IdEsercizio); var esercizi = ratePerEsercizi.Select(kvp => new EsercizioDTO {ID = kvp.Key, Descrizione = kvp.ToList()[0].DescrizioneEsercizio}).ToList(); var soggetti = service.GetSoggettiByPersona(json.Persona, info); var saldiSoggetto = new List<SaldoSoggettoVersamentoDTO>(); foreach (var esercizioDTO in esercizi) { var importoRata = 0m; var importoVersamento = 0m; foreach (var soggettoCondominioDTO in soggetti) { var rateVersamenti = service.GetVersatoBySoggetto(esercizioDTO.ID, soggettoCondominioDTO.ID, DateTime.Today, info); importoRata += rateVersamenti.Sum(item => item.Importo.GetValueOrDefault()); importoVersamento += rateVersamenti.Sum(item => item.ImportoPagato.GetValueOrDefault()); } saldiSoggetto.Add(new SaldoSoggettoVersamentoDTO { IdEsercizio = esercizioDTO.ID, ImportoRate = importoRata, ImportoVersamenti = importoVersamento }); } return new DatiCondomini { Esercizi = esercizi, Rate = rate, SaldiSoggetto = saldiSoggetto}; }