public int? ManageDomainEntity(MillesimoDTO dto) { try { return manage(dto).ID; } catch (Exception ex) { _log.Error("Errore nella gestione dei millesimi: " + Library.Utility.GetMethodDescription() + " - id:" + dto.ID, ex); throw; } }
public MillesimoDTO[] GetAll() { try { var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); var lista = daoFactory.GetMillesimoDao().GetAll(); var listaDto = new MillesimoDTO[lista.Count]; var index = 0; foreach (var item in lista) { listaDto[index] = setDto(item); index++; } return listaDto; } catch (Exception ex) { _log.Error("Errore nel caricamento dei millesimi: " + Library.Utility.GetMethodDescription(), ex); throw; } }
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> GetByConto(Conto conto, List<int> stabili, List<int> gruppi, Esercizio esercizio) { IList<MillesimoDTO> millesimiDto = new List<MillesimoDTO>(); if (conto.ContatoreRiferimento == null) { var millesimi = conto.GetMillesimiAttivi(stabili, gruppi); foreach (var millesimo in millesimi) { try { if (millesimo.UnitaRiferimento.GruppoStabileRiferimento != null) { millesimiDto.Add(new MillesimoDTO { ID = millesimo.ID, IdUnitaRiferimento = millesimo.UnitaRiferimento.ID, IdGruppoRiferimento = millesimo.UnitaRiferimento.GruppoStabileRiferimento.ID, IdStabileRiferimento = millesimo.UnitaRiferimento.GruppoStabileRiferimento.PalazzinaRiferimento.ID, IdLottoRiferimento = millesimo.UnitaRiferimento.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento?.ID ?? 0, IdContoRiferimento = conto.ID, Valore = millesimo.Valore, UnitaMisura = "PC" }); } else { throw new InvalidDataException($"L'unità immobiliare {millesimo.UnitaRiferimento.Ordine} - {millesimo.UnitaRiferimento.Descrizione} non è associata a nessuna scala"); } } catch (Exception ex) { _log.ErrorFormat("Errore nella creazione del dto di millesimo - {0} - id:{1}", ex, Utility.GetMethodDescription(), millesimo.ID); throw; } } } else { var dataIniziale = esercizio.DataApertura.GetValueOrDefault(); //var esercizioPrecedente = esercizio.GetEsercizioPrecedente(); //if (esercizioPrecedente != null) // dataIniziale = esercizioPrecedente.DataChiusura.GetValueOrDefault(); var letture = conto.ContatoreRiferimento.Letture.Where( item => (item.Data == dataIniziale || item.Data == esercizio.DataChiusura.GetValueOrDefault()) && ( (stabili == null || stabili.Contains(item.UnitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.ID)) && (gruppi == null || gruppi.Contains(item.UnitaImmobiliare.GruppoStabileRiferimento.ID)) )).ToList(); foreach (var lettura in letture.Where(item => item.Data == dataIniziale)) { var valoreIniziale = lettura.Valore; var letturaFinale = letture.FirstOrDefault(item => item.Data == esercizio.DataChiusura.GetValueOrDefault() && item.UnitaImmobiliare.ID == lettura.UnitaImmobiliare.ID); var valoreFinale = 0m; if (letturaFinale != null) valoreFinale = letturaFinale.Valore; // Cambio contatore rilevato if (valoreFinale < valoreIniziale) valoreIniziale = 0; var dto = new MillesimoDTO { IdUnitaRiferimento = lettura.UnitaImmobiliare.ID, InternoUnitaRiferimento = lettura.UnitaImmobiliare.InternoCompleto, IdGruppoRiferimento = lettura.UnitaImmobiliare.GruppoStabileRiferimento.ID, IdStabileRiferimento = lettura.UnitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.ID, IdLottoRiferimento = lettura.UnitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento?.ID ?? 0, IdContoRiferimento = conto.ID, DescrizioneContoRiferimento = conto.Descrizione, CodiceConto = conto.Codice, Valore = valoreFinale - valoreIniziale, UnitaMisura = "MC", ID = 0 }; millesimiDto.Add(dto); } } return millesimiDto; }
private Millesimo manage(MillesimoDTO dto) { Millesimo item = null; bool result; // Controllo sullo stato U, I switch (dto.Stato.ToUpper()) { case "U": result = update(dto, out item); if (!result) throw new Exception("Il dato sul database è più recente di quello utilizzato"); break; case "I": result = insert(dto, out item); if (!result) throw new Exception("Impossibile scrivere sul database"); break; } return item; }
private bool insert(MillesimoDTO dto, out Millesimo item) { var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); try { item = new Millesimo(daoFactory.GetContoDao().GetById(dto.IdContoRiferimento, false), daoFactory.GetUnitaImmobiliareDao().GetById(dto.IdUnitaRiferimento, false)) {Valore = dto.Valore}; daoFactory.GetMillesimoDao().SaveOrUpdate(item); } catch (Exception ex) { _log.Error("Errore nell'inserimento dei millesimi:" + Library.Utility.GetMethodDescription() + " - id:" + dto.ID, ex); throw; } return true; }
private bool update(MillesimoDTO dto, out Millesimo item) { var result = false; item = null; var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); try { item = daoFactory.GetMillesimoDao().Find(dto.ID, false); if(item != null) { // Condizione necessaria per il controllo del fatto che sul DB ho una versione uguale o più vecchia if (dto.Version == item.Version) { item.Valore = dto.Valore; item.ContoRiferimento = daoFactory.GetContoDao().GetById(dto.IdContoRiferimento, false); item.UnitaRiferimento = daoFactory.GetUnitaImmobiliareDao().GetById(dto.IdUnitaRiferimento, false); result = true; } else { // Eccezione: Sul db c'è qualche cosa di più nuovo. _log.Error("Errore nel salvataggio dei millesimi: id:" + dto.ID + " - il dato sul db è più recente di quello che si vuole salvare"); } } else result = true; } catch (Exception ex) { _log.Error("Errore nel salvataggio dei millesimi: " + Library.Utility.GetMethodDescription() + " - id:" + dto.ID, ex); throw; } return result; }
private MillesimoDTO setDto(Millesimo item) { var dto = new MillesimoDTO {ID = item.ID, Valore = item.Valore}; if (item.ContoRiferimento != null) { dto.IdContoRiferimento = item.ContoRiferimento.ID; dto.DescrizioneContoRiferimento = item.ContoRiferimento.Descrizione; dto.OrdineConto = item.ContoRiferimento.Ordine; dto.CodiceConto = item.ContoRiferimento.Codice; } if (item.UnitaRiferimento != null) { dto.IdUnitaRiferimento = item.UnitaRiferimento.ID; dto.InternoUnitaRiferimento = item.UnitaRiferimento.InternoCompleto; dto.TipoUnitaRiferimento = item.UnitaRiferimento.TipoUnitaImmobiliare.Descrizione; dto.NominativoUnitaRiferimento = item.UnitaRiferimento.Descrizione; dto.OrdineGruppoRiferimento = item.UnitaRiferimento.GruppoStabileRiferimento.Ordine; dto.OrdineStabileRiferimento = item.UnitaRiferimento.GruppoStabileRiferimento.PalazzinaRiferimento.Ordine; if (item.UnitaRiferimento.Ordine != null) dto.Ordine = item.UnitaRiferimento.Ordine.Value; } dto.Version = item.Version; return dto; }