private bool insert(UnitaImmobiliareDTO dto, out UnitaImmobiliare item) { var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); try { if(dto.CodiceTipo == 0) { dto.CodiceTipo = 1; _log.WarnFormat("Tentativo di inserire una unità immobiliare con TIPO non definito - {0} - id:{1}", Utility.GetMethodDescription(), dto.ID); } // Se non viene trovato il tipo per default: Abitazione bugid#3727 var tipoUnitaImmobiliare = daoFactory.GetTipoUnitaImmobiliareDao().Find(dto.CodiceTipo, false) ?? daoFactory.GetTipoUnitaImmobiliareDao().GetById(1, false); item = new UnitaImmobiliare(tipoUnitaImmobiliare, dto.IdAzienda); if (dto.GruppoStabileRiferimento != null) item.GruppoStabileRiferimento = daoFactory.GetGruppoStabileDao().GetById(dto.GruppoStabileRiferimento.ID, false); item.Descrizione = dto.Descrizione; item.EstensioneInterno = dto.EstensioneInterno; item.FoglioCatastale = dto.FoglioCatastale; item.Interno = dto.Interno; item.Mappale = dto.Mappale; item.Note = dto.Note; item.Piano = dto.Piano; item.NumeroResidenti = dto.NumeroResidenti.GetValueOrDefault(); item.Subalterno = dto.Subalterno; item.Ordine = dto.Ordine; item.ValoreMillesimo = dto.ValoreMillesimo; item.ValoreMillesimoStabile = dto.ValoreMillesimoStabile; item.EsclusaAddebitoQuotaFissa = dto.EsclusaAddebitoQuotaFissa; item.CodiceImportazione = dto.CodiceImportazione; item.ValoreMillesimoScala = dto.ValoreMillesimoScala; if (string.IsNullOrEmpty(dto.Descrizione)) { item.Descrizione = daoFactory.GetUnitaImmobiliareDao().GetUnitaImmobiliareDescrizione(item); item.DescrizioneUnitaImmobiliareAutomatica = true; } if (item.GruppoStabileRiferimento != null) { if (item.FoglioCatastale == null) item.FoglioCatastale = item.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.FoglioCatastale; if (item.Mappale == null) item.Mappale = item.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.MappaleCatastale; } daoFactory.GetUnitaImmobiliareDao().SaveOrUpdate(item); //Lista Soggetti item.Soggetti.Clear(); foreach (var t in dto.Soggetti) { t.IdUnitaImmobiliare = item.ID; _id = t.ID; if ((t.Stato == "U") || (t.Stato == "I")) _id = getSoggettoRepository().ManageDomainEntity(t); var soggDomain = daoFactory.GetSoggettoCondominioDao().Find(_id.GetValueOrDefault(), false); if (soggDomain != null) { soggDomain.UnitaImmobiliare = item; item.Soggetti.Add(soggDomain); } } // Condizioni Sicurezza Impianto updateCondizioniSicurezzaImpianto(dto.CondizioniSicurezzaImpianto, item, daoFactory); // Dettaglio item.Dettaglio.Clear(); foreach (var unitaImmobiliareDettaglioDTO in dto.Dettaglio) { // Se non viene trovato il tipo per default: Abitazione bugid#3727 var tipo = daoFactory.GetTipoUnitaImmobiliareDao().Find(unitaImmobiliareDettaglioDTO.IdTipoUnita, false) ?? daoFactory.GetTipoUnitaImmobiliareDao().GetById(1, false); UnitaImmobiliareDettaglio itemDettaglio = null; if (unitaImmobiliareDettaglioDTO.ID > 0) itemDettaglio = daoFactory.GetUnitaImmobiliareDettaglioDao().Find(unitaImmobiliareDettaglioDTO.ID, false); if (itemDettaglio == null) itemDettaglio = new UnitaImmobiliareDettaglio(item, tipo, unitaImmobiliareDettaglioDTO.Numero); itemDettaglio.TipoUnita = tipo; itemDettaglio.Numero = unitaImmobiliareDettaglioDTO.Numero; itemDettaglio.Subalterno = unitaImmobiliareDettaglioDTO.Subalterno; itemDettaglio.Unita = item; } } catch (Exception ex) { _log.ErrorFormat("Errore nel salvataggio delle Unita Immobiliari - {0} - id:{1}", ex, Utility.GetMethodDescription(), dto.ID); throw; } return true; }
private bool update(UnitaImmobiliareDTO dto, out UnitaImmobiliare item) { var result = false; item = null; var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); try { item = daoFactory.GetUnitaImmobiliareDao().Find(dto.ID, false); if (item != null) { // Condizione necessare per il controllo del fatto che sul DB ho una versione uguale o più vecchia // Per ora non viene eseguito il controllo if (dto.Version == item.Version || true) { if (dto.IdAzienda > 0) item.AziendaID = dto.IdAzienda; item.EstensioneInterno = dto.EstensioneInterno; item.FoglioCatastale = dto.FoglioCatastale; item.Interno = dto.Interno; item.Mappale = dto.Mappale; item.Note = dto.Note; item.Subalterno = dto.Subalterno; item.Piano = dto.Piano; item.Ordine = dto.Ordine; item.NumeroResidenti = dto.NumeroResidenti.GetValueOrDefault(); item.ValoreMillesimo = dto.ValoreMillesimo; item.ValoreMillesimoStabile = dto.ValoreMillesimoStabile; item.ValoreMillesimoScala = dto.ValoreMillesimoScala; item.EsclusaAddebitoQuotaFissa = dto.EsclusaAddebitoQuotaFissa; item.CodiceImportazione = dto.CodiceImportazione; if (string.IsNullOrEmpty(dto.Descrizione)) { item.Descrizione = daoFactory.GetUnitaImmobiliareDao().GetUnitaImmobiliareDescrizione(item); item.DescrizioneUnitaImmobiliareAutomatica = true; } else if(item.Descrizione != dto.Descrizione) { item.Descrizione = dto.Descrizione; item.DescrizioneUnitaImmobiliareAutomatica = false; } if (dto.CodiceTipo > 0) { var tipo = daoFactory.GetTipoUnitaImmobiliareDao().Find(dto.CodiceTipo, false); if (tipo != null) item.TipoUnitaImmobiliare = tipo; } if (dto.GruppoStabileRiferimento != null) { _id = dto.GruppoStabileRiferimento.ID; if ((dto.GruppoStabileRiferimento.Stato == "U") || (dto.GruppoStabileRiferimento.Stato == "I")) _id = getGruppoStabileRepository().ManageDomainEntity(dto.GruppoStabileRiferimento); item.GruppoStabileRiferimento = daoFactory.GetGruppoStabileDao().GetById(_id.GetValueOrDefault(), false); } //Lista Soggetti item.Soggetti.Clear(); foreach (var t in dto.Soggetti) { _id = t.ID; if ((t.Stato == "U") || (t.Stato == "I") || (t.Stato == "D")) _id = getSoggettoRepository().ManageDomainEntity(t); if (_id != null) { var soggDomain = daoFactory.GetSoggettoCondominioDao().Find(_id.Value, false); if (soggDomain != null) { soggDomain.UnitaImmobiliare = item; item.Soggetti.Add(soggDomain); } } } // Descrizione Unità Immobiliare item.Descrizione = daoFactory.GetUnitaImmobiliareDao().GetUnitaImmobiliareDescrizione(item); // Condizioni Sicurezza Impianto updateCondizioniSicurezzaImpianto(dto.CondizioniSicurezzaImpianto, item, daoFactory); // Dettaglio item.Dettaglio.Clear(); foreach (var unitaImmobiliareDettaglioDTO in dto.Dettaglio) { // Se non viene trovato il tipo per default: Abitazione bugid#3727 var tipo = daoFactory.GetTipoUnitaImmobiliareDao().Find(unitaImmobiliareDettaglioDTO.IdTipoUnita, false) ?? daoFactory.GetTipoUnitaImmobiliareDao().GetById(1, false); UnitaImmobiliareDettaglio itemDettaglio = null; if (unitaImmobiliareDettaglioDTO.ID > 0) itemDettaglio = daoFactory.GetUnitaImmobiliareDettaglioDao().Find(unitaImmobiliareDettaglioDTO.ID, false); if (itemDettaglio == null) itemDettaglio = new UnitaImmobiliareDettaglio(item, tipo, unitaImmobiliareDettaglioDTO.Numero); itemDettaglio.TipoUnita = tipo; itemDettaglio.Subalterno = unitaImmobiliareDettaglioDTO.Subalterno; itemDettaglio.Numero = unitaImmobiliareDettaglioDTO.Numero; itemDettaglio.Unita = item; item.Dettaglio.Add(itemDettaglio); } result = true; } else { // Eccezione: Sul db c'è qualche cosa di più nuovo. _log.Error("Errore nel salvataggio dell'unità immobiliare: id:" + dto.ID + " - il dato sul db è più recente di quello che si vuole salvare"); } } } catch (Exception ex) { _log.ErrorFormat("Errore nel salvataggio dell'unita immobiliare - {0} - id:{1}", ex, Utility.GetMethodDescription(), dto.ID); throw; } return result; }