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>(); }
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; } }
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; } }