public override IUpdatableBusinessEntity Copy() { var condominio = new SuperCondominio(Descrizione, GiornoChiusuraEsercizioOrdinario, MeseChiusuraEsercizioOrdinario, AnnoInizio, Azienda) { Indirizzo = (Address) Indirizzo.Clone(), Descrizione = Descrizione, Responsabile = Responsabile, NumeroUnitaImmobiliari = NumeroUnitaImmobiliari }; return condominio; }
private bool insert(CondominioDTO dto, out Condominio item) { var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); bool result; try { try { if (!dto.IsSupercondominio) { var azienda = daoFactory.GetAziendaDao().GetById(dto.AziendaID, false); item = new Condominio(dto.Descrizione, dto.GiornoChiusuraEsercizioOrdinario, dto.MeseChiusuraEsercizioOrdinario, dto.AnnoInizio, azienda); daoFactory.GetCondominioDao().SaveOrUpdate(item); item.TipoVersamentoDopoChiusura = dto.TipoVersamentoDopoChiusura; item.TipoVersamentoPrimaApertura = dto.TipoVersamentoPrimaApertura; // Piano Conti di default var conti = daoFactory.GetPianoContiDao().GetByAzienda(dto.AziendaID); foreach (var pianoConto in conti) pianoConto.ConvertToConto(item); // Esercizio di default var annoGestionale = new AnnoGestionale(item, item.AnnoInizio, item.AnnoInizio); daoFactory.GetAnnoGestionaleDao().SaveOrUpdate(annoGestionale); // Data chiusura esercizio if (item.AnnoInizio > 0 && item.MeseChiusuraEsercizioOrdinario > 0 && item.GiornoChiusuraEsercizioOrdinario > 0) { try { var dataChiusuraEsercizio = new DateTime(item.AnnoInizio, item.MeseChiusuraEsercizioOrdinario, item.GiornoChiusuraEsercizioOrdinario); var dataAperturaEsercizio = dataChiusuraEsercizio.AddDays(1).AddYears(-1); var esercizio = new Esercizio(item, dataAperturaEsercizio, dataChiusuraEsercizio, annoGestionale, GestioneEsercizioEnum.Ordinario); annoGestionale.AnnoFinale = esercizio.DataChiusura.GetValueOrDefault().Year; daoFactory.GetEsercizioDao().SaveOrUpdate(esercizio); item.Esercizi.Add(esercizio); } catch (Exception ex) { _log.ErrorFormat("Errore nell'inserimento del condominio - La data di chiusura NON è valida - DATA CHIUSURA - {0} - anno:{1} - mese:{2} - giorno:{3} - id:{4} - azienda:{5}", ex, Utility.GetMethodDescription(), item.AnnoInizio, item.MeseChiusuraEsercizioOrdinario, item.GiornoChiusuraEsercizioOrdinario, dto.ID, dto.AziendaID); throw; } } else { _log.WarnFormat("Errore nell'inserimento del condominio - La data di chiusura NON è valida - DATA CHIUSURA - {0} - anno:{1} - mese:{2} - giorno:{3} - id:{4} - azienda:{5}", Utility.GetMethodDescription(), item.AnnoInizio, item.MeseChiusuraEsercizioOrdinario, item.GiornoChiusuraEsercizioOrdinario, dto.ID, dto.AziendaID); } // Descrizione Automatica Spesa var impostazioniAzienda = daoFactory.GetImpostazioniAziendaDao().GetByAzienda(azienda.ID); if (impostazioniAzienda != null) item.DescrizioneSpeseAutomatica = impostazioniAzienda.DescrizioneSpeseAutomatica; } else { item = new SuperCondominio(dto.Descrizione, dto.GiornoChiusuraEsercizioOrdinario, dto.MeseChiusuraEsercizioOrdinario, dto.AnnoInizio, daoFactory.GetAziendaDao().GetById(dto.AziendaID, false)); daoFactory.GetSuperCondominioDao().SaveOrUpdate((SuperCondominio)item); } } catch (Exception ex) { _log.ErrorFormat("Errore nell'inserimento del condominio - {0} - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), dto.ID, dto.AziendaID); throw; } // ------------------------------------------------------ // Soggetto che presenta la parte della dichiarazione relativa ai contributi del dipendente // ------------------------------------------------------ if (dto.IdFornitoreDichiarazione770 > 0) item.FornitoreDichiarazione770 = daoFactory.GetFornitoreDao().GetById(dto.IdFornitoreDichiarazione770.GetValueOrDefault(), false); item.Codice = dto.Codice; item.CodiceFiscale = dto.CodiceFiscale; item.FormatoDescrizioneSpesa = dto.FormatoDescrizioneSpesa; item.FormatoDescrizioneMovimento = dto.FormatoDescrizioneMovimento; item.DescrizioneSpeseAutomatica = dto.DescrizioneSpeseAutomatica; item.IsAbilitataArchiviazioneOtticaPassivi = dto.IsAbilitataArchiviazioneOtticaPassivi; item.IsAbilitataArchiviazioneOtticaContratti = dto.IsAbilitataArchiviazioneOtticaContratti; item.IsSupercondominio = dto.IsSupercondominio; item.CodiceImportazione = dto.CodiceImportazione; item.CodiceCalcoloTariffaAcqua = dto.CodiceCalcoloTariffaAcqua; item.TemplateDescrizioneUnitaImmobiliare = dto.TemplateDescrizioneUnitaImmobiliare; if (string.IsNullOrEmpty(item.TemplateDescrizioneUnitaImmobiliare)) { var impostazioni = item.Azienda.Impostazioni.FirstOrDefault(); if (impostazioni != null) item.TemplateDescrizioneUnitaImmobiliare = impostazioni.TemplateDescrizioneUnitaImmobiliare; } item.Note = dto.Note ?? string.Empty; #region Indirizzo try { var civico = dto.Indirizzo.Civico; if (!string.IsNullOrEmpty(civico) && civico.Length > 200) civico = civico.Substring(0, 200); item.Indirizzo = new Address { Indirizzo = dto.Indirizzo.Indirizzo, Civico = civico, Cap = dto.Indirizzo.Cap, Localita = dto.Indirizzo.Localita }; if (dto.Indirizzo.CodiceComune != null) item.Indirizzo.Comune = daoFactory.GetComuneDao().GetById(dto.Indirizzo.CodiceComune, false); // Georeferenziazione - Solo se è cambiato l'indirizzo per la georeferenziazione string geoAddress = item.Indirizzo.GetGeoLocationAddress(); if (!string.IsNullOrEmpty(geoAddress)) { var geoLocationService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IGeoLocationService>(); GeoCoordinate? latLong = geoLocationService.GetLatLong(geoAddress); if (latLong != null) { if (item.GeoReferenziazione == null) item.GeoReferenziazione = new GeoReference(); item.GeoReferenziazione.AddedDate = DateTime.Now; item.GeoReferenziazione.AddressUsed = geoAddress; item.GeoReferenziazione.Latitude = latLong.Value.Latitude; item.GeoReferenziazione.Longitude = latLong.Value.Longitude; } } } catch (Exception ex) { _log.ErrorFormat("Errore nell'inserimento del condominio - INDIRIZZO - {0} - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), dto.ID, dto.AziendaID); throw; } #endregion Indirizzo #region Dati Catastali try { item.MappaleCatastale = dto.MappaleCatastale; if (dto.FoglioCatastale != null) item.FoglioCatastale = dto.FoglioCatastale; if (dto.GiornoAssemblea != null) item.GiornoAssemblea = dto.GiornoAssemblea; if (dto.MeseAssemblea != null) item.MeseAssemblea = dto.MeseAssemblea; item.LuogoAssemblea = dto.LuogoAssemblea; item.NumeroUnitaImmobiliari = dto.UnitaImmobiliari; } catch (Exception ex) { _log.Error("Errore nell'inserimento del condominio - " + Utility.GetMethodDescription() + " - Dati Catastali - id:" + dto.ID.ToString() + " - Azienda: " + dto.AziendaID.ToString(), ex); throw; } #endregion Dati Catastali #region Dati Esercizio item.GiornoChiusuraEsercizioOrdinario = dto.GiornoChiusuraEsercizioOrdinario; item.MeseChiusuraEsercizioOrdinario = dto.MeseChiusuraEsercizioOrdinario; item.AnnoInizio = dto.AnnoInizio; #endregion Dati Esercizio #region CBI item.CodiceSIA = dto.CodiceSIA; item.CodiceCUC = dto.CodiceCUC; #endregion CBI // ------------------------------------------------------ // Responsabile // ------------------------------------------------------ try { if (dto.IdResponsabile > 0) item.Responsabile = daoFactory.GetReferenteDao().GetById(dto.IdResponsabile.GetValueOrDefault(), false); } catch (Exception ex) { _log.ErrorFormat("Errore nell'inserimento del condominio - {0} - Responsabile - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), dto.ID, dto.AziendaID); throw; } // ------------------------------------------------------ // Responsabile Contabilita // ------------------------------------------------------ try { if (dto.IdResponsabileContabilita > 0) item.ResponsabileContabilita = daoFactory.GetReferenteDao().GetById(dto.IdResponsabileContabilita.GetValueOrDefault(), false); } catch (Exception ex) { _log.ErrorFormat("Errore nell'inserimento del condominio - {0} - Responsabili Contabilità - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), dto.ID, dto.AziendaID); throw; } // ------------------------------------------------------ // Responsabili Assemblea // ------------------------------------------------------ try { foreach (var t in dto.IdResponsabiliAssemblea) { try { var respCondominio = daoFactory.GetReferenteDao().Find(t, false); if (respCondominio != null) item.ResponsabiliAssemblea.Add(respCondominio); } catch (Exception ex) { _log.ErrorFormat("Errore nell'inserimento del condominio - {0} - SINGOLO RESPONSABILE ASSEMBLEA - idResponsabile:{1} - id:{2} - azienda:{3}", ex, Utility.GetMethodDescription(), t, dto.ID, dto.AziendaID); throw; } } } catch (Exception ex) { _log.ErrorFormat("Errore nell'inserimento del condominio - {0} - Responsabili Assemblea - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), dto.ID, dto.AziendaID); throw; } // ------------------------------------------------------ // Dati Bancari // ------------------------------------------------------ try { foreach (var t in dto.DatiBancari) { t.IdCondominio = item.ID; DatiBancariCondomini dbc = null; if ((t.Stato == "U") || (t.Stato == "I")) dbc = getDatiBancariRepository().ManageDomainEntity(t); if (dbc != null) { item.DatiBancari.Add(dbc); dbc.CondominioRiferimento = item; } } } catch (Exception ex) { _log.Error("Errore nell'inserimento del condominio - " + Utility.GetMethodDescription() + " - Dati Bancari - id:" + dto.ID + " - Azienda: " + dto.AziendaID, ex); throw; } result = true; } catch (Exception ex) { _log.ErrorFormat("Errore nell'inserimento del condominio - {0} - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), dto.ID, dto.AziendaID); throw; } return result; }