Example #1
0
        public override List<MillesimoDTO> GetMillesimiByContoLottoStabileScala(ContoDTO conto, int? idLotto, int? idStabile, int? idGruppo, EsercizioDTO esercizio)
        {
            int? idEsercizio = null;
            if (esercizio != null)
                idEsercizio = esercizio.ID;

            var idConti = new List<int> { conto.ID };
            var filter = new MillesimiFilter
            {
                CodiceCondominio = conto.IdCondominio,
                IdConti = idConti,
                CodiceLotto = idLotto,
                CodiceScala = idGruppo,
                CodiceStabile = idStabile,
                IdEsercizio = idEsercizio
            };

            try
            {
                var result = GetServiceClient().GetMillesimiByFilter(filter, GetUserInfo());
                CloseService();
                return result;

            }
            catch (CommunicationObjectAbortedException ex)
            {
                _log.DebugFormat("Errore nella chiamata al servizio - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
            }
            catch (CommunicationObjectFaultedException ex)
            {
                _log.DebugFormat("Errore nella chiamata al servizio - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
            }
            catch (IOException ex)
            {
                _log.DebugFormat("Errore nella chiamata al servizio - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
            }
            catch (ObjectDisposedException ex)
            {
                _log.DebugFormat("Errore nella chiamata al servizio - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nella chiamata al servizio - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
            }

            return new List<MillesimoDTO>();
        }
Example #2
0
        public IList<MillesimoDTO> GetByFilter(MillesimiFilter filter)
        {
            try
            {
                if (filter.IdConti.Count > 0)
                {
                    var primoConto = _daoFactory.GetContoDao().Find(filter.IdConti[0], false);
                    if (primoConto != null)
                    {
                        const string hql = "FROM Millesimo MILL LEFT JOIN FETCH MILL.UnitaRiferimento UNI LEFT JOIN FETCH UNI.GruppoStabileRiferimento GRU LEFT JOIN FETCH GRU.PalazzinaRiferimento STAB LEFT JOIN FETCH STAB.CondominioRiferimento COND LEFT JOIN FETCH UNI.TipoUnitaImmobiliare TIP_UNI WHERE MILL.ContoRiferimento in (:conti)";
                        var millesimi = _daoFactory.GetMillesimoDao().GetByQuery(hql, new QueryParam("conti", filter.IdConti));
                        var listaUnita = _daoFactory.GetUnitaImmobiliareDao().GetByCondominio(primoConto.CondominioRiferimento.ID);
                        var ripartizioniPersonalizzate = _daoFactory.GetSoggettoCondominioRipartizioneDao().GetByCondominio(primoConto.CondominioRiferimento.ID);
                        var millesimiDto = new List<MillesimoDTO>();
                        var tipoUnita = _daoFactory.GetTipoUnitaImmobiliareDao().GetByAzienda(primoConto.CondominioRiferimento.Azienda.ID);

                        if (filter.CodiceLotto != null)
                        {
                            millesimi = millesimi.Where(item => item.UnitaRiferimento?.GruppoStabileRiferimento?.PalazzinaRiferimento != null && item.UnitaRiferimento.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento.ID == filter.CodiceLotto.GetValueOrDefault()).ToList();
                            listaUnita = listaUnita.Where(item => item.GruppoStabileRiferimento?.PalazzinaRiferimento?.LottoRiferimento != null && item.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento.ID == filter.CodiceLotto.GetValueOrDefault()).ToList();
                        }
                        if (filter.CodiceStabile != null)
                        {
                            millesimi = millesimi.Where(item => item.UnitaRiferimento?.GruppoStabileRiferimento?.PalazzinaRiferimento != null && item.UnitaRiferimento.GruppoStabileRiferimento.PalazzinaRiferimento.ID == filter.CodiceStabile.GetValueOrDefault()).ToList();
                            listaUnita = listaUnita.Where(item => item.GruppoStabileRiferimento?.PalazzinaRiferimento != null && item.GruppoStabileRiferimento.PalazzinaRiferimento.ID == filter.CodiceStabile.GetValueOrDefault()).ToList();
                        }
                        if (filter.CodiceScala != null)
                        {
                            millesimi = millesimi.Where(item => item.UnitaRiferimento?.GruppoStabileRiferimento != null && item.UnitaRiferimento.GruppoStabileRiferimento.ID == filter.CodiceScala.GetValueOrDefault()).ToList();
                            listaUnita = listaUnita.Where(item => item.GruppoStabileRiferimento != null && item.GruppoStabileRiferimento.ID == filter.CodiceScala.GetValueOrDefault()).ToList();
                        }
                        if (filter.CodiceCondominio != null)
                        {
                            millesimi = millesimi.Where(item => item.UnitaRiferimento.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.ID == filter.CodiceCondominio.GetValueOrDefault() || (item.UnitaRiferimento.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.Supercondominio != null && item.UnitaRiferimento.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.Supercondominio.ID == filter.CodiceCondominio.GetValueOrDefault())).ToList();
                            listaUnita = listaUnita.Where(item => item.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.ID == filter.CodiceCondominio.GetValueOrDefault() || (item.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.Supercondominio != null && item.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.Supercondominio.ID == filter.CodiceCondominio.GetValueOrDefault())).ToList();
                        }

                        var dataRiferimento = DateTime.Today;
                        if (filter.IdEsercizio != null)
                        {
                            var esercizio = _daoFactory.GetEsercizioDao().Find(filter.IdEsercizio.GetValueOrDefault(), false);
                            if (esercizio != null)
                                dataRiferimento = esercizio.DataChiusura.GetValueOrDefault();
                        }

                        foreach (var millesimo in millesimi)
                        {
                            try
                            {
                                var millDto = new MillesimoDTO
                                {
                                    ID = millesimo.ID,
                                    IdCondominioRiferimento = millesimo.UnitaRiferimento.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.ID,
                                    DescrizioneContoRiferimento = millesimo.ContoRiferimento.Descrizione,
                                    DisplayName = millesimo.ContoRiferimento.DescrizioneBilancio,
                                    DescrizioneGruppoRiferimento = millesimo.UnitaRiferimento.GruppoStabileRiferimento.Descrizione,
                                    DescrizioneStabileRiferimento = millesimo.UnitaRiferimento.GruppoStabileRiferimento.PalazzinaRiferimento.Descrizione,
                                    IdContoRiferimento = millesimo.ContoRiferimento.ID,
                                    IdGruppoRiferimento = millesimo.UnitaRiferimento.GruppoStabileRiferimento.ID,
                                    IdStabileRiferimento = millesimo.UnitaRiferimento.GruppoStabileRiferimento.PalazzinaRiferimento.ID,
                                    CodiceConto = millesimo.ContoRiferimento.Codice,
                                    IdUnitaRiferimento = millesimo.UnitaRiferimento.ID,
                                    InternoUnitaRiferimento = millesimo.UnitaRiferimento.InternoCompleto,
                                    NominativoUnitaRiferimento = millesimo.UnitaRiferimento.Descrizione,
                                    OrdineConto = millesimo.ContoRiferimento.Ordine,
                                    Ordine = millesimo.UnitaRiferimento.Ordine.GetValueOrDefault(),
                                    OrdineGruppoRiferimento = millesimo.UnitaRiferimento.GruppoStabileRiferimento.Ordine,
                                    OrdineStabileRiferimento = millesimo.UnitaRiferimento.GruppoStabileRiferimento.PalazzinaRiferimento.Ordine,
                                    RipartizionePersonalizzata = ripartizioniPersonalizzate.Any(item => item.Conto.ID == millesimo.ContoRiferimento.ID && item.Soggetto.UnitaImmobiliare.ID == millesimo.UnitaRiferimento.ID),
                                    IsDeleteAllow = false,
                                    Version = millesimo.Version,
                                    Valore = millesimo.Valore,
                                    TipoUnitaRiferimento = millesimo.UnitaRiferimento.TipoUnitaImmobiliare.Descrizione
                                };

                                //millDto.RipartizionePersonalizzata = _daoFactory.GetSoggettoCondominioRipartizioneDao().GetCountByContoUnitaImmobiliare(millesimo.ContoRiferimento.ID, millesimo.UnitaRiferimento.ID) > 0;

                                //if (unita.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento != null)
                                //    millDto.IdLottoRiferimento = unita.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento.ID;

                                millesimiDto.Add(millDto);
                            }
                            catch (Exception ex)
                            {
                                _log.ErrorFormat("Errore inaspettato durante la lettura dei millesimi - {0} - idMillesimo:{1}", ex, Utility.GetMethodDescription(), millesimo.ID);
                                throw;
                            }
                        }

                        foreach (var idConto in filter.IdConti)
                        {
                            try
                            {
                                var conto = _daoFactory.GetContoDao().GetById(idConto, false);
                                foreach (var unita in listaUnita)
                                {
                                    try
                                    {
                                        if (millesimiDto.All(item => item.IdUnitaRiferimento != unita.ID))
                                        {
                                            var millDto = new MillesimoDTO
                                            {
                                                ID = 0,
                                                IdCondominioRiferimento = conto.CondominioRiferimento.ID,
                                                DescrizioneContoRiferimento = conto.Descrizione,
                                                DescrizioneGruppoRiferimento = unita.GruppoStabileRiferimento.Descrizione,
                                                DescrizioneStabileRiferimento = unita.GruppoStabileRiferimento.PalazzinaRiferimento.Descrizione,
                                                IdContoRiferimento = conto.ID,
                                                IdGruppoRiferimento = unita.GruppoStabileRiferimento.ID,
                                                IdStabileRiferimento = unita.GruppoStabileRiferimento.PalazzinaRiferimento.ID,
                                                CodiceConto = conto.Codice,
                                                IdUnitaRiferimento = unita.ID,
                                                InternoUnitaRiferimento = unita.InternoCompleto,
                                                NominativoUnitaRiferimento = unita.Descrizione,
                                                OrdineConto = conto.Ordine,
                                                Ordine = unita.Ordine.GetValueOrDefault(),
                                                OrdineGruppoRiferimento = unita.GruppoStabileRiferimento.Ordine,
                                                OrdineStabileRiferimento = unita.GruppoStabileRiferimento.PalazzinaRiferimento.Ordine,
                                                RipartizionePersonalizzata = false,
                                                IsDeleteAllow = false,
                                                Version = 0,
                                                Valore = null,
                                            };

                                            var tipo = tipoUnita.FirstOrDefault(item => unita.TipoUnitaImmobiliare.ID == item.ID);
                                            if (tipo != null)
                                                millDto.TipoUnitaRiferimento = tipo.Descrizione;

                                            //if (unita.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento != null)
                                            //    millDto.IdLottoRiferimento = unita.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento.ID;
                                            millesimiDto.Add(millDto);
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        _log.ErrorFormat("Errore inaspettato durante la lettura dei millesimi - {0} - idUnita:{1}", ex, Utility.GetMethodDescription(), unita.ID);
                                        throw;
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                _log.ErrorFormat("Errore inaspettato durante la lettura dei millesimi - {0} - conto:{1}", ex, Utility.GetMethodDescription(), idConto);
                                throw;
                            }
                        }

                        return millesimiDto.OrderBy(item => item.Ordine).ToList();
                    }
                }
                return new List<MillesimoDTO>();
            }
            catch (Exception ex)
            {
                var idStr = string.Empty;
                if(filter.IdConti != null)
                    idStr = filter.IdConti.Aggregate(string.Empty, (current, id) => current + (id.ToString() + ", "));
                
                _log.ErrorFormat("Errore inaspettato durante la lettura dei millesimi - {0} - conti:{1} - condominio:{2} - stabile:{3} - scala:{4} - lotto:{5}", ex, Utility.GetMethodDescription(), idStr, filter.CodiceCondominio, filter.CodiceStabile, filter.CodiceScala, filter.CodiceLotto);
                throw;
            }
        }
Example #3
0
		public IList<MillesimoDTO> GetMillesimiByFilter(MillesimiFilter filter, UserInfo userinfo)
		{ 
			var windsorRep = new WindsorConfigRepository();
			try
			{
				windsorRep.BeginTransaction(userinfo);
				var service = windsorRep.GetContainer(userinfo.Azienda).Resolve<IMillesimiService>();
				var item = service.GetByFilter(filter);
				windsorRep.Commit();
				return item;
			}
			catch (Exception ex)
			{
                _log.ErrorFormat("Errore nella lettura dei millesmi - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), userinfo.Azienda);
				windsorRep.Rollback();
				throw;
			}
		}