Пример #1
0
        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()
                );
        }
Пример #2
0
        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);
        }
Пример #3
0
        public override List<ContoDTO> GetAllByEsercizio(int idEsercizio, bool gestione)
        {
            List<ContoDTO> result = null;
            if (_cache.Contains("PianoConti") && !gestione)
            {
                var conti = (Dictionary<int, List<ContoDTO>>)_cache.GetData("PianoConti");
                if (conti.ContainsKey(idEsercizio))
                    result = conti[idEsercizio];
            }

            if(result == null)
            {
                var pianoContiWcfService = new PianoContiWCFService(_fornitoreService, _soggettoService);
                var lista = pianoContiWcfService.GetAllByEsercizio(idEsercizio, gestione);

                // Se sono in gestione non uso la cache
                if (!gestione)
                {
                    Dictionary<int, List<ContoDTO>> conti = null;
                    if (_cache.Contains("PianoConti"))
                    {
                        conti = (Dictionary<int, List<ContoDTO>>) _cache.GetData("PianoConti");
                        if (conti != null && conti.ContainsKey(idEsercizio))
                            conti.Remove(idEsercizio);
                        _cache.Remove("PianoConti");
                    }

                    if(conti == null)
                        conti = new Dictionary<int, List<ContoDTO>>();

                    if(!conti.ContainsKey(idEsercizio))
                        conti.Add(idEsercizio, lista);
                    _cache.Add("PianoConti", conti);
                }

                result = lista;
            }

            // Seleziono solo i conti attivi se non sono in gestione, questo è necessario perchè in cache possono essere presenti tutti i conti anche quelli annullati
            if (result != null && !gestione)
                result = new List<ContoDTO>(result.Where(item => !item.Deleted).ToList());

            return result;
        }