예제 #1
0
        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};
        }