Exemple #1
0
        public GestioneCondomini.Domain.Persona SetNew(PersonaDTO personaDto)
        {
            var persona = new GestioneCondomini.Domain.Persona(personaDto.TipoPersona, personaDto.Nome, personaDto.Cognome, personaDto.Azienda, true)
            {
                Abi = personaDto.Abi,
                Cab = personaDto.Cab,
                Cin = personaDto.Cin,
                CodiceFiscale = personaDto.CodiceFiscale,
                ContoCorrente = personaDto.ContoCorrente,
                DataNascita = personaDto.DataNascita,
                Iban = personaDto.Iban,
                Note = personaDto.Note,
                PartitaIva = personaDto.PartitaIva,
                RagioneSociale = personaDto.RagioneSociale,
                Sesso = personaDto.Sesso,
                Titolo = personaDto.Titolo
            };

            if (personaDto.ComuneNascita != null)
                persona.ComuneNascita = _daoFactory.GetComuneDao().GetById(personaDto.ComuneNascita.ID, false);

            // Indirizzo
            if (personaDto.IndirizzoResidenza != null)
            {
                var indirizzoResidenza = new Address
                {
                    Cap = personaDto.IndirizzoResidenza.Cap,
                    Civico = personaDto.IndirizzoResidenza.Civico,
                    Indirizzo = personaDto.IndirizzoResidenza.Indirizzo,
                    Localita = personaDto.IndirizzoResidenza.Localita
                };
                persona.IndirizzoResidenza = indirizzoResidenza;
                if (!string.IsNullOrEmpty(personaDto.IndirizzoResidenza.CodiceComune))
                    indirizzoResidenza.Comune = _daoFactory.GetComuneDao().GetById(personaDto.IndirizzoResidenza.CodiceComune, false);

            }

            // Contatti
            if (personaDto.Contatti != null)
            {
                foreach (var t in personaDto.Contatti)
                {
                    Contatto contatto;
                    switch (t.TipoContatto)
                    { 
                        case "Email":
                            contatto = new Email(t.Valore, t.Predefinito, persona);
                            break;

                        case "Telefono":
                            contatto = new Telefono(t.Valore, t.Predefinito, persona);
                            break;

                        case "Fax":
                            contatto = new Fax(t.Valore, t.Predefinito, persona);
                            break;

                        case "Cellulare":
                            contatto = new Cellulare(t.Valore, t.Predefinito, persona);
                            break;

                        case "EmailCertificata":
                            contatto = new EmailCertificata(t.Valore, t.Predefinito, persona);
                            break;

                        case "WWW":
                            contatto = new SitoInternet(t.Valore, t.Predefinito, persona);
                            break;

                        default:
                            contatto = new Email(t.Valore, t.Predefinito, persona);
                            break;
                    }

                    contatto.Descrizione = t.Descrizione;

                    persona.Contatti.Add(contatto);
                }
            }

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

            _daoFactory.GetPersonaDao().SaveOrUpdate(persona);

            // Dati autenticazione (solo ora perchè necessita dell'ID)
            SetDatiAutenticazione(persona); 

            return persona;
        }
        public string LoadFornitori(string key, int idAzienda, string password) 
        {
            string message = string.Empty;

            try
            {
                var databasePath = saveDatabase(key);
                var conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; User Id=; Jet OLEDB:Database Password="******"; Data Source=" + databasePath);
                var azienda = _daoFactory.GetAziendaDao().GetById(idAzienda, false);

                var ds = new DataSet();

                var fornitoriAdapter = new OleDbDataAdapter("SELECT * FROM Fornitori " +
                "ORDER BY Fornitori.F_RAG_SOC, Fornitori.F_TITOLARE", conn);
                fornitoriAdapter.Fill(ds, "Fornitori");
                ds.Tables["Fornitori"].PrimaryKey = new[] { ds.Tables["Fornitori"].Columns["F_COD"] };

                foreach (DataRow row in ds.Tables["Fornitori"].Rows)
                {
                    try
                    {
                        // ===========================
                        // Persona
                        // ===========================
                        Persona persona;
                        var fornitore = _daoFactory.GetFornitoreDao().GetByCodiceImportazione(row["F_COD"].ToString().Trim(), azienda.ID);
                        if (fornitore == null)
                        {
                            var tipoPersona = TipoPersonaEnum.Giuridica;
                            if ((bool)row["F_PERSONA"])
                                tipoPersona = TipoPersonaEnum.Fisica;
                            persona = new Persona(tipoPersona, string.Empty, row["F_TITOLARE"].ToString().Trim(), idAzienda, false);
                        }
                        else
                            persona = fornitore.PersonaRiferimento;

                        persona.RagioneSociale = row["F_RAG_SOC"].ToString().Trim();

                        if (persona.Nome != null && persona.Nome.Length > 50)
                            persona.Nome = persona.Nome.Substring(0, 50);
                        if (persona.Cognome != null && persona.Cognome.Length > 50)
                            persona.Cognome = persona.Cognome.Substring(0, 50);
                        if (persona.RagioneSociale != null && persona.RagioneSociale.Length > 100)
                            persona.RagioneSociale = persona.RagioneSociale.Substring(0, 100);

                        if (persona.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica && row["F_SESSO_PF"] != DBNull.Value)
                        {
                            if (row["F_SESSO_PF"].ToString().Trim() == "M")
                                persona.Sesso = SessoEnum.Maschio;
                            else if(row["F_SESSO_PF"].ToString().Trim() == "F")
                                persona.Sesso = SessoEnum.Femmina;
                        }

                        if (row["F_COD_FISC"] != DBNull.Value && !string.IsNullOrEmpty(row["F_COD_FISC"].ToString().Trim()))
                            persona.CodiceFiscale = row["F_COD_FISC"].ToString().Trim();
                        if (row["F_PIVA"] != DBNull.Value && !string.IsNullOrEmpty(row["F_PIVA"].ToString().Trim()))
                            persona.PartitaIva = row["F_PIVA"].ToString().Trim();
                        if (row["F_NOTE"] != DBNull.Value && !string.IsNullOrEmpty(row["F_NOTE"].ToString().Trim()))
                            persona.Note = row["F_NOTE"].ToString().Trim();

                        persona.IndirizzoResidenza = new Address();
                        if (row["F_LOCALITA"] != DBNull.Value && !string.IsNullOrEmpty(row["F_LOCALITA"].ToString()))
                        {
                            var comuni = _daoFactory.GetComuneDao().GetByDescrizione(row["F_LOCALITA"].ToString().Trim());
                            if (comuni.Count == 1)
                                persona.IndirizzoResidenza.Comune = comuni[0];

                            else
                                persona.IndirizzoResidenza.Localita = row["F_LOCALITA"].ToString();
                        }
                        if(row["F_CAP"] != DBNull.Value)
                            persona.IndirizzoResidenza.Cap = row["F_CAP"].ToString().Trim();
                        if (row["F_VIA"] != DBNull.Value)
                            persona.IndirizzoResidenza.Indirizzo = row["F_VIA"].ToString().Trim();

                        if (row["F_LOCALITA_NASC"] != DBNull.Value && !string.IsNullOrEmpty(row["F_LOCALITA_NASC"].ToString()))
                        {
                            var comuni = _daoFactory.GetComuneDao().GetByDescrizione(row["F_LOCALITA_NASC"].ToString().Trim());
                            if (comuni.Count == 1)
                                persona.ComuneNascita = comuni[0];
                        }
                        if (row["F_DT_NASC"] != DBNull.Value && (DateTime)row["F_DT_NASC"] > new DateTime(1800, 1, 1) && (DateTime)row["F_DT_NASC"] < new DateTime(2050, 12, 31))
                            persona.DataNascita = (DateTime)row["F_DT_NASC"];

                        // ---------
                        // Contatti
                        // ---------
                        persona.Contatti.Clear();
                        if (row["F_TEL"] != DBNull.Value && !string.IsNullOrEmpty((string)row["F_TEL"]))
                        {
                            var contatto = new Telefono(row["F_TEL"].ToString(), true, persona) {CodiceImportazione = row["F_COD"].ToString().Trim()};
                            persona.Contatti.Add(contatto);
                        }

                        if (row["F_TELEFONINO"] != DBNull.Value && !string.IsNullOrEmpty((string)row["F_TELEFONINO"]))
                        {
                            var contatto = new Cellulare(row["F_TELEFONINO"].ToString(), true, persona) {CodiceImportazione = row["F_COD"].ToString().Trim()};
                            persona.Contatti.Add(contatto);
                        }

                        if (row["F_EMAIL"] != DBNull.Value && !string.IsNullOrEmpty((string)row["F_EMAIL"]))
                        {
                            var contatto = new Email(row["F_EMAIL"].ToString(), true, persona) {CodiceImportazione = row["F_COD"].ToString().Trim()};
                            persona.Contatti.Add(contatto);
                        }

                        if (row["F_FAX"] != DBNull.Value && !string.IsNullOrEmpty((string)row["F_FAX"]))
                        {
                            var contatto = new Fax(row["F_FAX"].ToString(), true, persona) {CodiceImportazione = row["F_COD"].ToString().Trim()};
                            persona.Contatti.Add(contatto);
                        }

                        persona.CodiceImportazione = row["F_COD"].ToString().Trim();

                        // ===========================
                        // Fornitore
                        // ===========================
                        if(fornitore == null)
                            fornitore = new Fornitore(persona, idAzienda);

                        if (row["F_ALQ_RIT_ACC"] != DBNull.Value)
                            fornitore.AliquotaRitenutaAcconto = Convert.ToDecimal((float)row["F_ALQ_RIT_ACC"]) / 100m;
                        if (row["F_ALQ_IVA"] != DBNull.Value)
                            fornitore.AliquotaIva = row["F_ALQ_IVA"].ToString().Trim();
                        if (row["F_ALQ_CASSAP"] != DBNull.Value)
                            fornitore.AliquotaCassaProfessionisti = Convert.ToDecimal((float)row["F_ALQ_CASSAP"]) / 100m;
                        if (row["F_MAG_CASP_IVA"] != DBNull.Value && row["F_MAG_CASP_IVA"].ToString() == "B")
                            fornitore.IsRitenutaCalcolataImponibile = true;

                        if (row["F_TRIBUTO"] != DBNull.Value && !string.IsNullOrEmpty(row["F_TRIBUTO"].ToString().Trim()))
                            fornitore.CodiceTributo = row["F_TRIBUTO"].ToString().Trim();

                        fornitore.CodiceImportazione = row["F_COD"].ToString().Trim();
                        fornitore.Qualita = new ValutazioneQualita();

                        if (row["F_TIPO_PAG"] != DBNull.Value && row["F_TIPO_PAG"].ToString() == "BON")
                            fornitore.ModalitaPagamento = _daoFactory.GetModalitaPagamentoDao().GetById(4, false);

                        if (row["F_TIPO_FORN"] != DBNull.Value)
                            fornitore.Tipo = _daoFactory.GetTipoFornitoreDao().GetByCodice(row["F_TIPO_FORN"].ToString());

                        //-----------------------------
                        // Banche
                        //-----------------------------
                        if (row["F_IBAN_COMPLETO"] != DBNull.Value || (row["F_ABI"] != DBNull.Value && row["F_CAB"] != DBNull.Value))
                        {
                            if (row["F_IBAN_COMPLETO"] != DBNull.Value && !string.IsNullOrEmpty(row["F_IBAN_COMPLETO"].ToString()))
                            {
                                var coor = new CoordinateBancarie();
                                if (coor.CheckIBAN(row["F_IBAN_COMPLETO"].ToString().Trim().Replace(" ", "")))
                                {
                                    persona.Iban = row["F_IBAN_COMPLETO"].ToString().Trim().Replace(" ", "");
                                    coor.SetIBAN(persona.Iban);
                                    persona.Abi = coor.Abi;
                                    persona.Cab = coor.Cab;
                                    persona.ContoCorrente = coor.ContoCorrente;
                                    persona.Cin = coor.Cin;
                                }
                            }
                            else
                            {
                                var coor = new CoordinateBancarie
                                {
                                    Abi = row["F_ABI"].ToString().Trim().PadLeft(5, '0'),
                                    Cab = row["F_CAB"].ToString().Trim().PadLeft(5, '0'),
                                    ContoCorrente = row["F_NR_CC"].ToString().Trim().PadLeft(12, '0')
                                };
                                persona.Iban = coor.CalcolaIBAN();
                            }
                        }

                        _daoFactory.GetFornitoreDao().SaveOrUpdate(fornitore);
                    }
                    catch (Exception ex)
                    {
                        
                        _log.Error("Errore inaspettato l'importazione di un fornitore da YStabili: " + Library.Utility.GetMethodDescription() + " (Fornitore) - idFornitore:" + row["F_COD"] + " - nome:" + row["F_RAG_SOC"] + " - cognome:" + row["F_TITOLARE"], ex);
                        throw;
                    }
                }
            }
            catch (OleDbException ex)
            {
                message = ex.Message;
                
                _log.Error("Errore inaspettato nell'importazione dei fornitori da YStabili: " + Library.Utility.GetMethodDescription() + " - message: " + message, ex);
            }
            catch (Exception ex)
            {
                message = ex.Message;
                
                _log.Error("Errore inaspettato nell'importazione dei fornitori da YStabili: " + Library.Utility.GetMethodDescription() + " - message: " + message, ex);
            }

            return message;
        }
        public string LoadFornitori(string key, int idAzienda, string password)
        {
            string message = string.Empty;

            try
            {
                var databasePath = saveDatabase(key);
                var conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; User Id=; Jet OLEDB:Database Password="******"; Data Source=" + databasePath);

                var ds = new DataSet();

                var fornitoriAdapter = new OleDbDataAdapter("SELECT * FROM TabFornitori " +
                "INNER JOIN TabCodComune ON TabCodComune.id = TabFornitori.idComune " +
                "ORDER BY TabFornitori.Cognome, TabFornitori.Nome", conn);
                fornitoriAdapter.Fill(ds, "Fornitori");
                ds.Tables["Fornitori"].PrimaryKey = new[] { ds.Tables["Fornitori"].Columns["TabFornitori.id"] };

                var bancheAdapter = new OleDbDataAdapter("SELECT TabBanche_Fornitori.*, TabBanche.Abi, TabBanche.Cab " +
                    "FROM TabBanche INNER JOIN TabBanche_Fornitori ON TabBanche.id = TabBanche_Fornitori.idBanca " +
                    "WHERE TabBanche.Attivo = True AND TabBanche_Fornitori.Attivo=True " +
                    "ORDER BY TabBanche_Fornitori.Predefinito", conn);
                bancheAdapter.Fill(ds, "Banche");
                ds.Tables["Banche"].PrimaryKey = new[] { ds.Tables["Fornitori"].Columns["id"] };

                // Relazioni
                ds.Relations.Add(new DataRelation("Fornitori_Banche", ds.Tables["Fornitori"].Columns["TabFornitori.id"], ds.Tables["Banche"].Columns["idFornitore"]));

                foreach (DataRow row in ds.Tables["Fornitori"].Rows)
                {
                    try
                    {
                        // ===========================
                        // Persona
                        // ===========================
                        var tipoPersona = Sfera.Enums.TipoPersonaEnum.Giuridica;
                        if((bool)row["Persona"])
                            tipoPersona = Sfera.Enums.TipoPersonaEnum.Fisica;
                        var persona = new Persona(tipoPersona, row["TabFornitori.Nome"].ToString().Trim(), row["Cognome"].ToString().Trim(), idAzienda, false);
                        if (tipoPersona == Sfera.Enums.TipoPersonaEnum.Giuridica)
                        {
                            persona.RagioneSociale = row["Cognome"].ToString().Trim();
                            if (string.IsNullOrEmpty(row["TabFornitori.Nome"].ToString().Trim()))
                                persona.Cognome = null;
                        }
                        if (persona.Nome != null && persona.Nome.Length > 50)
                            persona.Nome = persona.Nome.Substring(0, 50);
                        if (persona.Cognome != null && persona.Cognome.Length > 50)
                            persona.Cognome = persona.Cognome.Substring(0, 50);
                        if (persona.RagioneSociale != null && persona.RagioneSociale.Length > 100)
                            persona.RagioneSociale = persona.RagioneSociale.Substring(0, 100);

                        persona.Sesso = Sfera.Enums.SessoEnum.Femmina;
                        if (!(bool)row["Maschio"])
                            persona.Sesso = Sfera.Enums.SessoEnum.Maschio;

                        if (row["CF"] != DBNull.Value && !string.IsNullOrEmpty(row["CF"].ToString().Trim()))
                            persona.CodiceFiscale = row["CF"].ToString().Trim();
                        if (row["PIVA"] != DBNull.Value && !string.IsNullOrEmpty(row["PIVA"].ToString().Trim()))
                            persona.PartitaIva = row["PIVA"].ToString().Trim();
                        if (row["Note"] != DBNull.Value && !string.IsNullOrEmpty(row["Note"].ToString().Trim()))
                            persona.Note = row["Note"].ToString().Trim();

                        if (row["idComuneNasc"] != DBNull.Value && !string.IsNullOrEmpty(row["idComuneNasc"].ToString().Trim()))
                            persona.ComuneNascita = getCodiceComuneById((int)row["idComuneNasc"], conn);
                        if (row["DataNasc"] != DBNull.Value)
                            persona.DataNascita = (DateTime)row["DataNasc"];

                        persona.IndirizzoResidenza = getIndirizzo(row);
                        persona.Recapito = getIndirizzoFiscale(row, conn);

                        // ---------
                        // Contatti
                        // ---------
                        if (row["Tel1"] != DBNull.Value && !string.IsNullOrEmpty((string)row["Tel1"]))
                        {
                            var contatto = new Telefono(row["Tel1"].ToString(), true, persona) {CodiceImportazione = row["TabFornitori.id"].ToString().Trim()};
                            persona.Contatti.Add(contatto);
                        }

                        if (row["Tel2"] != DBNull.Value && !string.IsNullOrEmpty((string)row["Tel2"]))
                        {
                            var contatto = new Telefono(row["Tel2"].ToString(), false, persona) {CodiceImportazione = row["TabFornitori.id"].ToString().Trim()};
                            persona.Contatti.Add(contatto);
                        }

                        if (row["Cell"] != DBNull.Value && !string.IsNullOrEmpty((string)row["Cell"]))
                        {
                            var contatto = new Cellulare(row["Cell"].ToString(), true, persona) {CodiceImportazione = row["TabFornitori.id"].ToString().Trim()};
                            persona.Contatti.Add(contatto);
                        }

                        if (row["Email"] != DBNull.Value && !string.IsNullOrEmpty((string)row["Email"]))
                        {
                            var contatto = new Email(row["Email"].ToString(), true, persona) {CodiceImportazione = row["TabFornitori.id"].ToString().Trim()};
                            persona.Contatti.Add(contatto);
                        }

                        if (row["Fax"] != DBNull.Value && !string.IsNullOrEmpty((string)row["Fax"]))
                        {
                            var contatto = new Fax(row["Fax"].ToString(), true, persona) {CodiceImportazione = row["TabFornitori.id"].ToString().Trim()};
                            persona.Contatti.Add(contatto);
                        }

                        persona.CodiceImportazione = row["TabFornitori.id"].ToString().Trim();

                        // ===========================
                        // Fornitore
                        // ===========================
                        var fornitore = new Fornitore(persona, idAzienda);

                        if (row["PercRitAcconto"] != DBNull.Value)
                            fornitore.AliquotaRitenutaAcconto = Convert.ToDecimal((float)row["PercRitAcconto"])/100m;
                        if (row["PercIVA"] != DBNull.Value)
                            fornitore.AliquotaIva = row["PercIVA"].ToString().Trim();
                        if (row["PercRitPrev"] != DBNull.Value)
                            fornitore.AliquotaCassaProfessionisti = Convert.ToDecimal((float)row["PercRitPrev"]) / 100m;
                        if (row["RitAccSuRitPrev"] != DBNull.Value)
                         fornitore.IsRitenutaCalcolataImponibile = (bool)row["RitAccSuRitPrev"];

                        if (row["InElencoFornitori"] != DBNull.Value)
                            fornitore.ElencoFornitori = (bool)row["InElencoFornitori"];
                        if (row["CodiceTributoF24"] != DBNull.Value && !string.IsNullOrEmpty(row["CodiceTributoF24"].ToString().Trim()))
                            fornitore.CodiceTributo = row["CodiceTributoF24"].ToString().Trim();

                        fornitore.CodiceImportazione = row["TabFornitori.id"].ToString().Trim();
                        fornitore.Qualita = new ValutazioneQualita();

                        //-----------------------------
                        // Banche
                        //-----------------------------
                        if (row.GetChildRows("Fornitori_Banche").Count() > 0)
                        {
                            DataRow rowBanca = row.GetChildRows("Fornitori_Banche")[0];

                            if (rowBanca["IBAN"] != DBNull.Value && !string.IsNullOrEmpty(rowBanca["IBAN"].ToString()))
                            {
                                var coor = new CoordinateBancarie();
                                if (coor.CheckIBAN(rowBanca["IBAN"].ToString().Trim().Replace(" ", "")))
                                {
                                    persona.Iban = rowBanca["IBAN"].ToString().Trim().Replace(" ", "");
                                    coor.SetIBAN(persona.Iban);
                                    persona.Abi = coor.Abi;
                                    persona.Cab = coor.Cab;
                                    persona.ContoCorrente = coor.ContoCorrente;
                                    persona.Cin = coor.Cin;
                                }
                            }
                            else if (rowBanca["Abi"] != DBNull.Value && !string.IsNullOrEmpty(rowBanca["Abi"].ToString()) && rowBanca["Cab"] != DBNull.Value && !string.IsNullOrEmpty(rowBanca["Cab"].ToString()) && rowBanca["CC"] != DBNull.Value && !string.IsNullOrEmpty(rowBanca["CC"].ToString()))
                            {
                                var coor = new CoordinateBancarie
                                {
                                    Abi = rowBanca["Abi"].ToString().Trim().PadLeft(5, '0'),
                                    Cab = rowBanca["Cab"].ToString().Trim().PadLeft(5, '0'),
                                    ContoCorrente = rowBanca["CC"].ToString().Trim().PadLeft(12, '0')
                                };
                                persona.Iban = coor.CalcolaIBAN();
                            }
                        }

                        _daoFactory.GetFornitoreDao().SaveOrUpdate(fornitore);
                    }
                    catch (Exception ex)
                    {
                        
                        _log.Error("Errore inaspettato l'importazione di un fornitore da GeCo: " + Library.Utility.GetMethodDescription() + " (Fornitore) - idFornitore:" + row["TabFornitori.id"] + " - nome:" + row["TabFornitori.Nome"] + " - cognome:" + row["Cognome"], ex);
                        throw;
                    }
                }
            }
            catch (OleDbException ex)
            {
                message = ex.Message;
                
                _log.Error("Errore inaspettato nell'importazione dei fornitori da GeCo: " + Library.Utility.GetMethodDescription() + " - message: " + message, ex);
            }
            catch (Exception ex)
            {
                message = ex.Message;
                
                _log.Error("Errore inaspettato nell'importazione dei fornitori da GeCo: " + Library.Utility.GetMethodDescription() + " - message: " + message, ex);
            }

            if (!string.IsNullOrEmpty(message))
            {
                _persistenceContext.RollbackAndCloseSession(Security.Login.Instance.CurrentLogin().LoginName);
                _persistenceContext.BeginTransaction(Security.Login.Instance.CurrentLogin().LoginName, IsolationLevel.ReadUncommitted);
            }

            return message;
        }
        private Persona getPersona(int idPersona, Azienda azienda, DataRow row, IList<NameValueDTO<int, string>> listaPersone, OleDbConnection conn)
        {
            try
            {
                Persona persona;
                //string hql = "FROM Persona P WHERE P.CodiceImportazione = :codice";
                //IList<Persona> lista = _daoFactory.GetPersonaDao().GetByQuery(hql, new QueryParam[] { new QueryParam("codice", idPersona.ToString()) });
                var personaDto = (from item in listaPersone
                                                        where item.Name == idPersona.ToString()
                                                        select item).FirstOrDefault();
                if (personaDto != null)
                {
                    persona = _daoFactory.GetPersonaDao().GetById(personaDto.Value, false);
                    persona.Contatti.Clear();
                }
                else
                {
                    persona = new Persona(Sfera.Enums.TipoPersonaEnum.Fisica, row["TabPersone.Nome"].ToString(), row["Cognome"].ToString(), azienda.ID, false)
                    {
                        Note = row["TabPersone.Note"].ToString(),
                        Titolo = row["Titolo"].ToString(),
                        CodiceFiscale = row["CodFisc"].ToString(),
                        CodiceImportazione = row["TabPersone.id"].ToString().Trim()
                    };
                    _daoFactory.GetPersonaDao().SaveOrUpdate(persona);

                    listaPersone.Add(new NameValueDTO<int,string>(persona.ID, persona.CodiceImportazione));

                    // Indirizzi
                    var ds = new DataSet();
                    var indirizziAdapter = new OleDbDataAdapter("SELECT DISTINCT TabIndirizzi.Nome, TabIndirizzi.Indirizzo, TabIndirizzi.NumeroCivico, TabIndirizzi.Località, TabIndirizzi.CAP, TabIndirizzi.idComune, TabIndirizzi.Note, TabCodComune.Nome " +
                        "FROM TabCodComune INNER JOIN (TabIndirizzi INNER JOIN TabIndirizzi_Persone ON TabIndirizzi.id = TabIndirizzi_Persone.idIndirizzo) ON TabCodComune.id = TabIndirizzi.idComune " +
                        "WHERE TabIndirizzi_Persone.idPers = " + idPersona.ToString() + " " +
                        "ORDER BY TabIndirizzi.Indirizzo", conn);
                    indirizziAdapter.Fill(ds, "Indirizzi");

                    persona.IndirizzoResidenza = getTipoIndirizzo(ds.Tables["Indirizzi"], "RESIDENZA");
                    persona.Recapito = getTipoIndirizzo(ds.Tables["Indirizzi"], "RECAPITO");

                    if (persona.IndirizzoResidenza == null && ds.Tables["Indirizzi"].Rows.Count > 0)
                    {
                        persona.IndirizzoResidenza = getIndirizzo(ds.Tables["Indirizzi"].Rows[0]);
                        if (persona.Recapito == null && ds.Tables["Indirizzi"].Rows.Count > 1)
                            persona.Recapito = getIndirizzo(ds.Tables["Indirizzi"].Rows[1]);
                    }
                    else if (persona.Recapito == null && ds.Tables["Indirizzi"].Rows.Count > 0)
                    {
                        foreach (DataRow rowRec in ds.Tables["Indirizzi"].Rows)
                        {
                            if (rowRec["TabIndirizzi.Nome"].ToString().Trim() != "RESIDENZA")
                            {
                                persona.Recapito = getIndirizzo(rowRec);
                                break;
                            }
                        }
                    }
                }

                if (persona.Nome != null && persona.Nome.Length > 50)
                    persona.Nome = persona.Nome.Substring(0, 50);
                if (persona.Cognome != null && persona.Cognome.Length > 50)
                    persona.Cognome = persona.Cognome.Substring(0, 50);
                if (persona.RagioneSociale != null && persona.RagioneSociale.Length > 100)
                    persona.RagioneSociale = persona.RagioneSociale.Substring(0, 100);

                // -----------------------
                // Contatti
                // -----------------------
                var dsContatti = new DataSet();
                var contattiAdapter = new OleDbDataAdapter("SELECT TabIndirizzi_Persone.id, TabIndirizzi_Persone.Tel1, TabIndirizzi_Persone.Tel2, TabIndirizzi_Persone.Cell, TabIndirizzi_Persone.EMail, TabIndirizzi_Persone.Fax, TabIndirizzi_Persone.Predefinito, TabIndirizzi_Persone.Proprietario " +
                    "FROM TabIndirizzi_Persone " +
                    "WHERE (Tel1 is not null OR Tel2 is not null OR Cell is not null OR Email is not null OR Fax is not null) AND TabIndirizzi_Persone.idPers = " + idPersona.ToString(), conn);
                contattiAdapter.Fill(dsContatti, "Contatti");

                foreach (DataRow rowContatto in dsContatti.Tables["Contatti"].Rows)
                {
                    if (rowContatto["Tel1"] != DBNull.Value && !string.IsNullOrEmpty((string)rowContatto["Tel1"]))
                    {
                        var contatto = new Telefono(rowContatto["Tel1"].ToString(), true, persona) {CodiceImportazione = rowContatto["id"].ToString().Trim()};
                        _daoFactory.GetContattoDao().SaveOrUpdate(contatto);
                        persona.Contatti.Add(contatto);
                    }

                    if (rowContatto["Tel2"] != DBNull.Value && !string.IsNullOrEmpty((string)rowContatto["Tel2"]))
                    {
                        var contatto = new Telefono(rowContatto["Tel2"].ToString(), false, persona) {CodiceImportazione = rowContatto["id"].ToString().Trim()};
                        _daoFactory.GetContattoDao().SaveOrUpdate(contatto);
                        persona.Contatti.Add(contatto);
                    }

                    if (rowContatto["Cell"] != DBNull.Value && !string.IsNullOrEmpty((string)rowContatto["Cell"]))
                    {
                        var contatto = new Cellulare(rowContatto["Cell"].ToString(), true, persona) {CodiceImportazione = rowContatto["id"].ToString().Trim()};
                        _daoFactory.GetContattoDao().SaveOrUpdate(contatto);
                        persona.Contatti.Add(contatto);
                    }

                    if (rowContatto["Email"] != DBNull.Value && !string.IsNullOrEmpty((string)rowContatto["Email"]))
                    {
                        var contatto = new Email(rowContatto["Email"].ToString(), true, persona) {CodiceImportazione = rowContatto["id"].ToString().Trim()};
                        _daoFactory.GetContattoDao().SaveOrUpdate(contatto);
                        persona.Contatti.Add(contatto);
                    }

                    if (rowContatto["Fax"] != DBNull.Value && !string.IsNullOrEmpty((string)rowContatto["Fax"]))
                    {
                        var contatto = new Fax(rowContatto["Fax"].ToString(), true, persona) {CodiceImportazione = rowContatto["id"].ToString().Trim()};
                        _daoFactory.GetContattoDao().SaveOrUpdate(contatto);
                        persona.Contatti.Add(contatto);
                    }
                }

                return persona;
            }
            catch (Exception ex)
            {
                
                _log.Error("Errore inaspettato nell'importazione di un condominio da GeCo: " + Library.Utility.GetMethodDescription() + " (Persona) - persona:" + idPersona, ex);
                throw;
            }
        }
Exemple #5
0
        private Contatto insert(ContattoDTO contattoDto)
        {
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
            Contatto cont;

            try
            {
                //Istanzia il contatto in base al tipo di contatto
                switch (contattoDto.TipoContatto.ToUpper())
                {
                    case "EMAIL":
                        cont = new Email(contattoDto.Valore, contattoDto.Predefinito, _persona);
                        break;
                    case "TELEFONO":
                        cont = new Telefono(contattoDto.Valore, contattoDto.Predefinito, _persona);
                        break;
                    case "FAX":
                        cont = new Fax(contattoDto.Valore, contattoDto.Predefinito, _persona);
                        break;
                    case "CELLULARE":
                    case "SMS":
                        cont = new Cellulare(contattoDto.Valore, contattoDto.Predefinito, _persona);
                        break;
                    case "EMAILCERT":
                        cont = new EmailCertificata(contattoDto.Valore, contattoDto.Predefinito, _persona);
                        break;
                    case "WWW":
                        cont = new SitoInternet(contattoDto.Valore, contattoDto.Predefinito, _persona);
                        break;
                    case "MANUALE":
                        cont = null;
                        break;
                    default:
                        cont = new Email(contattoDto.Valore, contattoDto.Predefinito, _persona);
                        break;
                }

                if (cont != null)
                {
                    cont.Descrizione = contattoDto.Descrizione;

                    if (contattoDto.SelectColumn)
                        cont.Predefinito = true;

                    daoFactory.GetContattoDao().SaveOrUpdate(cont);
                }
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nell'inserimento del contatto - {0} - id:{1}", ex, Utility.GetMethodDescription(), contattoDto.ID);
                throw;
            }

            return cont;
        }
Exemple #6
0
        private Contatto update(ContattoDTO contattoDto, Contatto cont, bool onlyValore)
        {
            Contatto result = null;
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);

            try
            {
                cont = daoFactory.GetContattoDao().Find(contattoDto.ID, false);

                if (cont != null)
                {
                    if (!onlyValore)
                    {
                        //Istanzia il contatto in base al tipo di contatto
                        Contatto newContatto = null;
                        switch (contattoDto.TipoContatto.ToUpper())
                        {
                            case "EMAIL":
                                if (!(cont is Email))
                                    newContatto = new Email(contattoDto.Valore, contattoDto.Predefinito, _persona);
                                break;
                            case "EMAILCERT":
                                if (!(cont is EmailCertificata))
                                    newContatto = new EmailCertificata(contattoDto.Valore, contattoDto.Predefinito, _persona);
                                break;
                            case "WWW":
                                if (!(cont is EmailCertificata))
                                    newContatto = new SitoInternet(contattoDto.Valore, contattoDto.Predefinito, _persona);
                                break;
                            case "TELEFONO":
                                if (!(cont is Telefono))
                                    newContatto = new Telefono(contattoDto.Valore, contattoDto.Predefinito, _persona);
                                break;
                            case "FAX":
                                if (!(cont is Fax))
                                    newContatto = new Fax(contattoDto.Valore, contattoDto.Predefinito, _persona);
                                break;
                            case "CELLULARE":
                                if (!(cont is Cellulare))
                                    newContatto = new Cellulare(contattoDto.Valore, contattoDto.Predefinito, _persona);
                                break;
                        }

                        if (newContatto != null)
                        {
                            newContatto.Descrizione = contattoDto.Descrizione;
                            newContatto.Valore = contattoDto.Valore;

                            daoFactory.GetContattoDao().SaveOrUpdate(newContatto);
                            daoFactory.GetContattoDao().Delete(cont);
                        }
                        else
                        {
                            cont.Descrizione = contattoDto.Descrizione;
                            cont.Valore = contattoDto.Valore;
                            cont.Predefinito = contattoDto.Predefinito;

                            newContatto = cont;
                        }

                        if (contattoDto.SelectColumn)
                            newContatto.Predefinito = true;

                        result = newContatto;
                    }
                    else
                    {
                        cont.Valore = contattoDto.Valore;
                        result = cont;
                    }    
                }

            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel salvataggio del contatto - {0} - id:{1}", ex, Utility.GetMethodDescription(), contattoDto.ID);
                throw;
            }

            return result;
        }