Example #1
0
        private bool insert(PersonaDTO dto, out Persona item)
        {
            item = null;
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);

            try
            {
                if (dto.DataNascita != null)
                {
                    if (!Conversione.IsSqlSmallDateTime(dto.DataNascita.GetValueOrDefault()))
                    {
                        dto.DataNascita = null;
                        _log.WarnFormat("ATTENZIONE: Tentativo di memorizzare una data di nascita non corretta - {0} - persona:{1} - data:{2}", Utility.GetMethodDescription(), dto.ID, dto.DataNascita.GetValueOrDefault());                        
                    }
                }

                item = new Persona(dto.TipoPersona, dto.Nome, dto.Cognome, dto.Azienda, true)
                {
                    AziendaID = dto.Azienda,
                    CodiceFiscale = dto.CodiceFiscale,
                    Cognome = dto.Cognome,
                    DataNascita = dto.DataNascita,
                    Nome = dto.Nome,
                    Note = dto.Note,
                    PartitaIva = dto.PartitaIva,
                    RagioneSociale = dto.RagioneSociale,
                    Sesso = dto.Sesso,
                    Titolo = dto.Titolo,
                    Iban = dto.Iban
                };

                if(!string.IsNullOrEmpty(dto.Username))
                    item.DatiAutenticazione = new DatiAutenticazionePersona {Username = dto.Username, Password = dto.Password};
                
                // Se iban è valorizzato i dati singoli devono sempre essere estrapolati dall'IBAN
                if (!string.IsNullOrEmpty(item.Iban))
                {
                    var coord = new CoordinateBancarie();
                    if (coord.SetIBAN(item.Iban))
                    {
                        item.Abi = coord.Abi;
                        item.Cab = coord.Cab;
                        item.ContoCorrente = coord.ContoCorrente;
                        item.Cin = coord.Cin;
                    }
                }
                else
                {
                    item.Abi = dto.Abi;
                    item.Cab = dto.Cab;
                    item.ContoCorrente = dto.ContoCorrente;
                    item.Cin = dto.Cin;
                }

                if (dto.IndirizzoResidenza != null)
                {
                    if (item.IndirizzoResidenza == null)
                        item.IndirizzoResidenza = new Address();
                    item.IndirizzoResidenza.Cap = dto.IndirizzoResidenza.Cap;
                    item.IndirizzoResidenza.Civico = dto.IndirizzoResidenza.Civico;
                    item.IndirizzoResidenza.Indirizzo = dto.IndirizzoResidenza.Indirizzo;
                    item.IndirizzoResidenza.Localita = dto.IndirizzoResidenza.Localita;
                    item.IndirizzoResidenza.Presso = dto.IndirizzoResidenza.Presso;
                    if (dto.IndirizzoResidenza.CodiceComune != null)
                        item.IndirizzoResidenza.Comune = daoFactory.GetComuneDao().Find(dto.IndirizzoResidenza.CodiceComune, false);
                }

                if (dto.Domicilio != null)
                {
                    if (item.Domicilio == null)
                        item.Domicilio = new Address();
                    item.Domicilio.Cap = dto.Domicilio.Cap;
                    item.Domicilio.Civico = dto.Domicilio.Civico;
                    item.Domicilio.Indirizzo = dto.Domicilio.Indirizzo;
                    item.Domicilio.Localita = dto.Domicilio.Localita;
                    item.Domicilio.Presso = dto.Domicilio.Presso;
                    if (dto.Domicilio.CodiceComune != null)
                        item.Domicilio.Comune = daoFactory.GetComuneDao().Find(dto.Domicilio.CodiceComune, false);
                }
                
                if (dto.Recapito != null)
                {
                    if (item.Recapito == null)
                        item.Recapito = new Address();
                    item.Recapito.Cap = dto.Recapito.Cap;
                    item.Recapito.Civico = dto.Recapito.Civico;
                    item.Recapito.Indirizzo = dto.Recapito.Indirizzo;
                    item.Recapito.Localita = dto.Recapito.Localita;
                    item.Recapito.Presso = dto.Recapito.Presso;
                    if (dto.Recapito.CodiceComune != null)
                        item.Recapito.Comune = daoFactory.GetComuneDao().GetById(dto.Recapito.CodiceComune, false);
                }

                if (dto.ComuneNascita != null)
                {
                    _idComune = dto.ComuneNascita.ID;
                    item.ComuneNascita = daoFactory.GetComuneDao().GetById(_idComune, false);
                }
                else
                    item.ComuneNascita = null;

                //Lista Contatti
                item.Contatti.Clear();
                foreach (var t in dto.Contatti)
                {
                    _id = t.ID;
                    if (t.Stato != string.Empty)
                        _id = getContattoRepository(item).ManageDomainEntity(t, false);

                    item.Contatti.Add(daoFactory.GetContattoDao().GetById(_id.GetValueOrDefault(), false));
                }

                // Lista Gruppi
                item.Gruppi.Clear();
                foreach (var idGruppo in dto.Gruppi)
                {
                    var gruppo = daoFactory.GetGruppoDao().Find(idGruppo, false);
                    if (gruppo != null)
                    {
                        var personaGruppo = new PersonaGruppo(item, gruppo);
                        daoFactory.GetPersonaGruppoDao().SaveOrUpdate(personaGruppo);
                    }
                }
                    
                daoFactory.GetPersonaDao().SaveOrUpdate(item);

                // Dati autenticazione (solo ora perchè necessita dell'ID)
                if(item.DatiAutenticazione == null || string.IsNullOrEmpty(item.DatiAutenticazione.Username))
                {
                    if(item.DatiAutenticazione == null)
                        item.DatiAutenticazione = new DatiAutenticazionePersona();
                    var service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IPersonaService>();
                    service.SetDatiAutenticazione(item);
                }

                // Unità Immobiliari
                var unitaImmobiliari = daoFactory.GetUnitaImmobiliareDao().GetByPersona(item.ID);
                foreach (var unitaImmobiliare in unitaImmobiliari)
                {
                    unitaImmobiliare.Descrizione = daoFactory.GetUnitaImmobiliareDao().GetUnitaImmobiliareDescrizione(unitaImmobiliare);
                }

            }
            catch (Exception ex)
            {
                
                _log.Error("Errore nell'inserimento delle persone: " + Utility.GetMethodDescription() + " - id:" + dto.ID, ex);
                throw;
            }

            return true;
        }
Example #2
0
        private bool update(PersonaDTO dto, out Persona item)
        {
            bool result = false;
            item = null;
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);

            try
            {
                item = daoFactory.GetPersonaDao().GetById(dto.ID, false);

                // Condizione necessare per il controllo del fatto che sul DB ho una versione uguale o più vecchia
                // Per non viene più eseguito il controllo
                if (dto.Version == item.Version || true)
                {
                    item.AziendaID = dto.Azienda;
                    item.CodiceFiscale = dto.CodiceFiscale;
                    item.Cognome = dto.Cognome;

                    if (dto.DataNascita != null)
                    {
                        if (!Conversione.IsSqlSmallDateTime(dto.DataNascita.GetValueOrDefault()))
                            _log.WarnFormat("ATTENZIONE: Tentativo di memorizzare una data di nascita non corretta - {0} - persona:{1} - data:{2}", Utility.GetMethodDescription(), dto.ID, dto.DataNascita.GetValueOrDefault());
                        else
                            item.DataNascita = dto.DataNascita;
                    }
                    
                    item.Nome = dto.Nome;
                    item.Note = dto.Note;
                    item.PartitaIva = dto.PartitaIva;
                    item.RagioneSociale = dto.RagioneSociale;
                    item.Sesso = dto.Sesso;
                    item.TipoPersona = dto.TipoPersona;
                    item.Titolo = dto.Titolo;

                    if (!string.IsNullOrEmpty(dto.Username))
                    {
                        if (item.DatiAutenticazione == null)
                            item.DatiAutenticazione = new DatiAutenticazionePersona();

                        item.DatiAutenticazione.Username = dto.Username;
                        item.DatiAutenticazione.Password = dto.Password;
                    }

                    item.Iban = dto.Iban;
                    // Se iban è valorizzato i dati singoli devono sempre essere estrapolati dall'IBAN
                    if (!string.IsNullOrEmpty(item.Iban))
                    {
                        var coord = new CoordinateBancarie();
                        coord.SetIBAN(item.Iban);
                        item.Abi = coord.Abi;
                        item.Cab = coord.Cab;
                        item.ContoCorrente = coord.ContoCorrente;
                        item.Cin = coord.Cin;
                    }
                    else
                    {
                        item.Abi = dto.Abi;
                        item.Cab = dto.Cab;
                        item.ContoCorrente = dto.ContoCorrente;
                        item.Cin = dto.Cin;
                    }

                    if (dto.IndirizzoResidenza != null)
                    {
                        if (item.IndirizzoResidenza == null)
                            item.IndirizzoResidenza = new Address();
                        item.IndirizzoResidenza.Cap = dto.IndirizzoResidenza.Cap;
                        item.IndirizzoResidenza.Civico = dto.IndirizzoResidenza.Civico;
                        item.IndirizzoResidenza.Indirizzo = dto.IndirizzoResidenza.Indirizzo;
                        item.IndirizzoResidenza.Localita = dto.IndirizzoResidenza.Localita;
                        item.IndirizzoResidenza.Presso = dto.IndirizzoResidenza.Presso;
                        item.IndirizzoResidenza.Comune = dto.IndirizzoResidenza.CodiceComune != null ? daoFactory.GetComuneDao().Find(dto.IndirizzoResidenza.CodiceComune, false) : null;
                    }

                    if (dto.Domicilio != null)
                    {
                        if (item.Domicilio == null)
                            item.Domicilio = new Address();
                        item.Domicilio.Cap = dto.Domicilio.Cap;
                        item.Domicilio.Civico = dto.Domicilio.Civico;
                        item.Domicilio.Indirizzo = dto.Domicilio.Indirizzo;
                        item.Domicilio.Localita = dto.Domicilio.Localita;
                        item.Domicilio.Presso = dto.Domicilio.Presso;
                        item.Domicilio.Comune = dto.Domicilio.CodiceComune != null ? daoFactory.GetComuneDao().Find(dto.Domicilio.CodiceComune, false) : null;
                    }

                    if (dto.Recapito != null)
                    {
                        if (item.Recapito == null)
                            item.Recapito = new Address();
                        item.Recapito.Cap = dto.Recapito.Cap;
                        item.Recapito.Civico = dto.Recapito.Civico;
                        item.Recapito.Indirizzo = dto.Recapito.Indirizzo;
                        item.Recapito.Localita = dto.Recapito.Localita;
                        item.Recapito.Presso = dto.Recapito.Presso;
                        item.Recapito.Comune = dto.Recapito.CodiceComune != null ? daoFactory.GetComuneDao().GetById(dto.Recapito.CodiceComune, false) : null;
                    }

                    if (dto.ComuneNascita != null)
                    {
                        _idComune = dto.ComuneNascita.ID;
                        item.ComuneNascita = daoFactory.GetComuneDao().GetById(_idComune, false);
                    }
                    else
                        item.ComuneNascita = null;

                    // Lista Contatti
                    item.Contatti.Clear();
                    foreach (var t in dto.Contatti)
                    {
                        _id = t.ID;
                        if (t.Stato != string.Empty)
                            _id = getContattoRepository(item).ManageDomainEntity(t, false);

                        var contatto = daoFactory.GetContattoDao().Find(_id.GetValueOrDefault(), false);
                        if(contatto != null)
                            item.Contatti.Add(contatto);
                    }

                    // Lista Gruppi
                    var gruppi = item.Gruppi.ToArray();
                    foreach (var personaGruppo in gruppi)
                    {
                        personaGruppo.Gruppo.Persone.Remove(personaGruppo);
                        personaGruppo.Persona.Gruppi.Remove(personaGruppo);
                        personaGruppo.Gruppo = null;
                        personaGruppo.Persona = null;
                    }
                    item.Gruppi.Clear();
                    foreach (var idGruppo in dto.Gruppi)
                    {
                        var gruppo = daoFactory.GetGruppoDao().Find(idGruppo, false);
                        if(gruppo != null)
                        {
                            var personaGruppo = new PersonaGruppo(item, gruppo);
                            daoFactory.GetPersonaGruppoDao().SaveOrUpdate(personaGruppo);
                        }
                    }

                    // Unità Immobiliari
                    var unitaImmobiliari = daoFactory.GetUnitaImmobiliareDao().GetByPersona(item.ID);
                    foreach (var unitaImmobiliare in unitaImmobiliari)
                    {
                        unitaImmobiliare.Descrizione = daoFactory.GetUnitaImmobiliareDao().GetUnitaImmobiliareDescrizione(unitaImmobiliare);
                    }

                    daoFactory.GetPersonaDao().Update(item);

                    result = true;
                }
                else
                {
                    // Eccezione: Sul db c'è qualche cosa di più nuovo.
                    _log.ErrorFormat("Errore nel salvataggio della persona - {0} id:{1} - il dato sul db è più recente di quello che si vuole salvare", Utility.GetMethodDescription(), dto.ID);
                }
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel salvataggio della persona - {0} - id:{1}", ex, Utility.GetMethodDescription(), dto.ID);
                throw;
            }

            return result;
        }