private UnitaImmobiliareDTO setDto(UnitaImmobiliare item)
		{
			try
			{
				var dto = new UnitaImmobiliareDTO();

                if (item != null)
                {
                    if (item.AziendaID != null)
                    {
                        dto.IdAzienda = (int)item.AziendaID;
                    }

                    dto.ID = item.ID;
                    dto.Descrizione = item.Descrizione;
                    dto.DisplayName = item.Descrizione;
                    dto.EstensioneInterno = item.EstensioneInterno;
                    if (item.FoglioCatastale != null)
                        dto.FoglioCatastale = item.FoglioCatastale.Value;
                    if (item.Interno != null)
                        dto.Interno = item.Interno.Value;
                    if (item.Mappale != null)
                        dto.Mappale = item.Mappale.Value;

                    dto.Piano = item.Piano;
                    dto.NumeroResidenti = item.NumeroResidenti;
                    dto.Note = item.Note;

                    dto.Subalterno = item.Subalterno;
                    dto.CodiceTipo = item.TipoUnitaImmobiliare.ID;
                    dto.Tipo = item.TipoUnitaImmobiliare.Descrizione;
                    dto.Ordine = item.Ordine;
                    dto.ValoreMillesimo = item.ValoreMillesimo;
                    dto.ValoreMillesimoScala = item.ValoreMillesimoScala;
                    dto.ValoreMillesimoStabile = item.ValoreMillesimoStabile;
                    dto.EsclusaAddebitoQuotaFissa = item.EsclusaAddebitoQuotaFissa;
                    dto.CodiceImportazione = item.CodiceImportazione;
                    dto.Version = item.Version;

                    //Conduttore Principale
                    var conduttorePrincipale = item.GetConduttorePrincipale(null);
                    if (conduttorePrincipale != null)
                    {
                        var condut = getConduttoreRepository().GetByDomainEntity(conduttorePrincipale);
                        dto.ConduttorePrincipale = condut;
                    }

                    // Gruppo stabile riferimento
                    if (item.GruppoStabileRiferimento != null)
                    {
                        var gruppo = getGruppoStabileRepository().GetByDomainEntity(item.GruppoStabileRiferimento);
                        dto.GruppoStabileRiferimento = gruppo;
                        dto.IdCondominio = item.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.ID;
                        dto.DescrizioneCondominio = item.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.DisplayName;

                        if (item.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento != null)
                        {
                            dto.IdLotto = item.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento.ID;
                            dto.DescrizioneLotto = item.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento.Descrizione;
                        }
                    }

                    dto.InternoCompleto = item.InternoCompleto;
                    dto.Nominativo = item.Descrizione;

                    // Proprietario Principale
                    var proprietarioPrincipale = item.GetProprietarioPrincipale(null);
                    if (proprietarioPrincipale != null)
                    {
                        var propr = getProprietarioRepository().GetByDomainEntity(proprietarioPrincipale);
                        dto.ProprietarioPrincipale = propr;
                        dto.UnitaImmobiliarePrincipale = proprietarioPrincipale.GetDescrizioneAccorpamento();
                    }

                    // Proprietari
                    var indexProp = 0;
                    dto.Proprietari = new ProprietarioDTO[item.Proprietari.Count];
                    foreach (var proprietario in item.Proprietari)
                    {
                        var propDto = getProprietarioRepository().GetByDomainEntity(proprietario);
                        dto.Proprietari[indexProp] = propDto;
                        indexProp++;
                    }

                    // Conduttori
                    var indexCondut = 0;
                    dto.Conduttori = new ConduttoreDTO[item.Conduttori.Count];
                    foreach (var conduttore in item.Conduttori)
                    {
                        var condutDto = getConduttoreRepository().GetByDomainEntity(conduttore);
                        dto.Conduttori[indexCondut] = condutDto;
                        indexCondut++;
                    }

                    // Condizioni Sicurezza Impianto
                    if (item.CondizioniSicurezzaImpianto != null)
                    {
                        dto.CondizioniSicurezzaImpianto = new SicurezzaImpiantoDTO
                        {
                            Norma = item.CondizioniSicurezzaImpianto.Norma,
                            Note = item.CondizioniSicurezzaImpianto.Note,
                            Impiantistica = new List<UnitaImmobiliareImpiantisticaDTO>()
                        };
                        foreach (var itemImpiantistica in item.CondizioniSicurezzaImpianto.Impiantistica)
                        {
                            var dtoImpiantistica = new UnitaImmobiliareImpiantisticaDTO
                            {
                                ID = itemImpiantistica.ID,
                                IdUnitaImmobiliare = itemImpiantistica.Unita.ID,
                                Descrizione = itemImpiantistica.Descrizione,
                                Tipo = itemImpiantistica.Tipo,
                                Norma = itemImpiantistica.Norma,
                                NonSegnalato = itemImpiantistica.NonSegnalato
                            };
                            dto.CondizioniSicurezzaImpianto.Impiantistica.Add(dtoImpiantistica);
                        }
                    }

                    // Dettaglio
                    dto.Dettaglio = new List<UnitaImmobiliareDettaglioDTO>();
                    foreach (var itemDettaglio in item.Dettaglio)
                    {
                        var dtoDettaglio = new UnitaImmobiliareDettaglioDTO
                        {
                            ID = itemDettaglio.ID,
                            Numero = itemDettaglio.Numero,
                            Subalterno = itemDettaglio.Subalterno,
                            IdUnitaImmobiliare = itemDettaglio.Unita.ID,
                            IdTipoUnita = itemDettaglio.TipoUnita.ID,
                            TipoUnita = itemDettaglio.TipoUnita.Descrizione
                        };
                        dto.Dettaglio.Add(dtoDettaglio);
                    }
                }

				return dto;
			}

			catch (Exception ex)
			{
                _log.ErrorFormat("Errore nel creazione di UnitaImmobiliareDTO - {0} - id:{1}", ex, Utility.GetMethodDescription(), item != null ? item.ID.ToString() : "<NULL>");
				throw;
			}
		}
		private UnitaImmobiliareListaDTO setListaDto(UnitaImmobiliare item, DateTime? dataRiferimento)
		{
			try
			{
			    var dto = new UnitaImmobiliareListaDTO
			    {
			        Id = item.ID,
			        Descrizione = item.Descrizione,
			        Interno = item.InternoCompleto,
			        Piano = item.Piano,
			        Note = item.Note,
			        Subalterno = item.Subalterno,
			        CodiceTipo = item.TipoUnitaImmobiliare.ID,
			        Tipo = item.TipoUnitaImmobiliare.Descrizione,
			        Ordine = item.Ordine,
			        ValoreMillesimo = item.ValoreMillesimo,
                    NumeroInterno = item.Interno,
                    EstensioneInterno = item.EstensioneInterno
			    };

			    dto.DisplayName = dto.Ordine + " - " + dto.Tipo + " - " + dto.Descrizione;

			    if (item.Mappale != null)
					dto.Mappale = item.Mappale.Value;
				if (item.FoglioCatastale != null)
					dto.Foglio = item.FoglioCatastale.Value;

				if (item.GruppoStabileRiferimento != null)
				{
				    dto.IdGruppoStabile = item.GruppoStabileRiferimento.ID;
				    dto.GruppoStabile = item.GruppoStabileRiferimento.Descrizione;
				    dto.Stabile = item.GruppoStabileRiferimento.PalazzinaRiferimento.Descrizione;
					dto.CodiceCondominio = item.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.ID;
					dto.Condominio = item.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.DisplayName;

					if (item.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento != null)
					{
						dto.IdLotto = item.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento.ID;
						dto.Lotto = item.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento.Descrizione;
					}
				}
                
				//Conduttore Principale
                var conduttorePrincipale = item.GetConduttorePrincipale(dataRiferimento);
				if (conduttorePrincipale != null)
					dto.Conduttore = conduttorePrincipale.DisplayName;

				//Proprietario Principale
                var proprietarioPrincipale = item.GetProprietarioPrincipale(dataRiferimento);
				if (proprietarioPrincipale != null)
					dto.Proprietario = proprietarioPrincipale.DisplayName;

				return dto;
			}

			catch (Exception ex)
			{
				_log.ErrorFormat("Errore nel creazione di UnitaImmobiliareListaDTO - {0} - id:{1}", ex, Utility.GetMethodDescription(), item.ID);
				throw;
			}
		
		}