コード例 #1
0
        public void GetProprietarioPrincipale_LoPresentaSeInternoAlEsercizio()
        {
            var persona = new Persona(TipoPersonaEnum.Fisica, "Secondo", "Proprietario", _azienda.ID, true);
            var proprietario = new Proprietario(_unitaImmobiliare, persona)
            {
                PercentualeRiferimento = 100,
                Principale = true,
                DataInizio = new DateTime(2015, 2, 1)
            };

            var primoProprietario = _unitaImmobiliare.Soggetti.FirstOrDefault();
            if (primoProprietario != null)
                primoProprietario.DataFine = proprietario.DataInizio.GetValueOrDefault().AddDays(-1);

            _unitaImmobiliare.Soggetti.Add(proprietario);

            var firstOrDefault = _unitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.Esercizi.OrderBy(item => item.DataChiusura).FirstOrDefault();
            if (firstOrDefault != null)
            {
                var proprietarioPrincipale = _unitaImmobiliare.GetProprietarioPrincipale(firstOrDefault.DataChiusura.GetValueOrDefault().AddYears(1));
                Assert.IsTrue(proprietarioPrincipale.Persona.Cognome == "Proprietario" && proprietarioPrincipale.Persona.Nome == "Secondo");
                return;
            }

            throw new AssertionException("TEST Fallito");
        }
コード例 #2
0
ファイル: TestHelpers.cs プロジェクト: gipasoft/Sfera
        public static UnitaImmobiliare GetCondominioMonoScalaMonoProprietario()
        {
            var azienda = new Azienda("TEST", "Azienda di Test") { ID = 1 };
            var condominio = new Condominio("Test", 31, 12, 2014, azienda);
            var stabile = new Palazzina(condominio, "Stabile A - TEST");
            var scala = new GruppoStabile(stabile, "Scala A - TEST");
            var tipo = new TipoUnitaImmobiliare("Abitazione");
            var unitaImmobiliare = new UnitaImmobiliare(scala, tipo);

            // Esercizio
            var annoGestionale = new AnnoGestionale(condominio, 2013, 2014);
            var esercizio = new Esercizio(condominio, new DateTime(2014, 1, 1), new DateTime(2014, 12, 31), annoGestionale, GestioneEsercizioEnum.Ordinario);
            condominio.Esercizi.Add(esercizio);

            // Proprietario
            var persona = new Persona(TipoPersonaEnum.Fisica, "Pinco", "Pallo", azienda.ID, true);
            var proprietario = new Proprietario(unitaImmobiliare, persona)
            {
                PercentualeRiferimento = 100,
                Principale = true
            };
            unitaImmobiliare.Soggetti.Add(proprietario);

            return unitaImmobiliare;
        }
コード例 #3
0
 /// <summary>
 /// Crea un Contatto valido
 /// </summary>
 public PersonaDaNonSollecitare(Persona persona, Condominio condominio)
 {
     Condominio = condominio;
     Persona = persona;
     if (Condominio != null)
         Condominio.PersoneDaNonSollecitare.Add(this);
 }
コード例 #4
0
ファイル: ContattoRepository.cs プロジェクト: gipasoft/Sfera
 public ContattoRepository(int idPersona, UserInfo info, WindsorConfigRepository windsorRepository)
 {
     _info = info;
     _windsorRepository = windsorRepository;
     var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
     _persona = daoFactory.GetPersonaDao().GetById(idPersona, false);
 }
コード例 #5
0
ファイル: AgenziaAssicurativa.cs プロジェクト: gipasoft/Sfera
 public AgenziaAssicurativa(Persona persona, Fornitore fornitore, string agenzia, int? aziendaID) : base(persona, aziendaID)
 {
     if (aziendaID != null)
     {
         Fornitore = fornitore;
         _agenzia = agenzia;
     }
 }
コード例 #6
0
ファイル: Contatto.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea un Contatto valido
 /// </summary>
 public Contatto(string valore, bool predefinito, Persona persona)
 {
     Valore = valore;
     Predefinito = predefinito;
     Persona = persona;
     if (Persona != null)
         Persona.Contatti.Add(this);
 }
コード例 #7
0
ファイル: PraticaRichiedente.cs プロジェクト: gipasoft/Sfera
        /// <summary>
        /// Crea un Richiedente di Pratica valido
        /// </summary>
        public PraticaRichiedente(Pratica pratica, Persona richiedente, DateTime? dataRichiesta)
        {
            Pratica = pratica;
            Richiedente = richiedente;
            DataRichiesta = dataRichiesta;

            if (Pratica != null)
                Pratica.Richiedenti.Add(this);
        }
コード例 #8
0
ファイル: Referente.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea uno Referente valido
 /// </summary>
 public Referente(string sigla, Persona persona, Azienda azienda)
 {
     
     if (azienda != null)
     {
         Sigla = sigla;
         PersonaRiferimento = persona;
         Azienda = azienda;
     }
 }
コード例 #9
0
ファイル: Fornitore.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea uno Fornitore valido
 /// </summary>
 public Fornitore(Persona personaRiferimento, int? aziendaID)
 {
     if (aziendaID != null)
     {
         _personaRiferimento = personaRiferimento;
         _aziendaID = aziendaID;
         Qualita = new ValutazioneQualita();
         _stato = StatoFornitore.Attivo;
     }
 }
コード例 #10
0
ファイル: PersonaGruppo.cs プロジェクト: gipasoft/Sfera
        /// <summary>
        /// Crea una relazione valida tra persona e gruppo
        /// </summary>
        public PersonaGruppo(Persona persona, Gruppo gruppo)
        {
            Persona = persona;
            Gruppo = gruppo;

            if (Persona != null)
                Persona.Gruppi.Add(this);
            if (Gruppo != null)
                Gruppo.Persone.Add(this);
        }
コード例 #11
0
        public void SetUp()
        {
            _documentService = MockRepository.GenerateStub<IDocumentService>();
            _fileSystem = MockRepository.GenerateStub<IFileSystem>();

            const string str = "Documento Bolletta di Prova";
            _documentoSpesa = new byte[str.Length * sizeof(char)];
            Buffer.BlockCopy(str.ToCharArray(), 0, _documentoSpesa, 0, _documentoSpesa.Length);

            _fileSystem = MockRepository.GenerateStub<IFileSystem>();
            _fileSystem.Stub(x => x.ReadAllBytes(Arg<string>.Is.Anything)).Return(_documentoSpesa);

            IList<Spesa> listaSpese = new List<Spesa>();
            _utente = new Utente("PP");
            _logTransazione = new LogTransazione(AzioneUtente.TransazioneContabile, _utente, Guid.NewGuid().ToString());

            _azienda = new Azienda("PROV", "Prova") { ID = 1 };
            _condominio1 = new Condominio("Condominio 1", 31, 12, 2014, _azienda) { CodiceFiscale = "91138030373" };
            _annoGestionaleCondominio1 = new AnnoGestionale(_condominio1, 2014, 2014);
            _esercizioCondominio1 = new Esercizio(_condominio1, new DateTime(2014, 1, 1), new DateTime(2014, 12, 31), _annoGestionaleCondominio1, GestioneEsercizioEnum.Ordinario);

            _condominio2 = new Condominio("Condominio 2", 31, 12, 2014, _azienda) { CodiceFiscale = "90036640374" };
            _annoGestionaleCondominio2 = new AnnoGestionale(_condominio2, 2014, 2014);
            _esercizioCondominio2 = new Esercizio(_condominio2, new DateTime(2014, 1, 1), new DateTime(2014, 12, 31), _annoGestionaleCondominio2, GestioneEsercizioEnum.Ordinario);

            _persona = new Persona(TipoPersonaEnum.Fisica, "Mario", "Rossi", _azienda.ID, true);
            _fornitore = new Fornitore(_persona, _azienda.ID);

            _documentiBolletteDTO = buildDocumentoBolletteDTO();
            foreach (var documentoBollettaDTO in _documentiBolletteDTO)
            {
                var esercizio = _esercizioCondominio1;
                if (documentoBollettaDTO.CodiceFiscaleCliente == _condominio2.CodiceFiscale)
                    esercizio = _esercizioCondominio2;

                listaSpese.Add(new Spesa(_fornitore, esercizio, _logTransazione) { ID = documentoBollettaDTO.IdSpesa, NumeroDocumento = documentoBollettaDTO.NumeroDocumento, DataDocumento = documentoBollettaDTO.DataDocumento });
            }

            _daoFactory = MockRepository.GenerateStub<IDaoFactory>();

            _daoFactory.Stub(x => x.GetCondominioDao().GetByCodiceFiscale(_condominio1.CodiceFiscale)).Return(_condominio1);
            _daoFactory.Stub(x => x.GetCondominioDao().GetByCodiceFiscale(_condominio2.CodiceFiscale)).Return(_condominio2);

            _spesaDao = MockRepository.GenerateStub<ISpesaDao>();
            _documentoDao = MockRepository.GenerateStub<IDocumentoDao>();

            _daoFactory.Stub(x => x.GetSpesaDao()).Return(_spesaDao);
            _daoFactory.Stub(x => x.GetDocumentoDao()).Return(_documentoDao);

            foreach (var spesa in listaSpese)
                _spesaDao.Stub(x => x.Find(spesa.ID, false)).Return(spesa);

            _utenzaDocumentoService = MockRepository.GenerateMock<UtenzaDocumentoService>(_daoFactory, _documentService, _fileSystem);
        }
コード例 #12
0
ファイル: Pratica.cs プロジェクト: gipasoft/Sfera
		/// <summary>
        /// Crea una Pratica valido
        /// </summary>
        public Pratica(Condominio stabile, Persona personaRiferimento, TipoPratica tipoPratica, DateTime? dataApertura, int? aziendaID, LogTransazione logTransazione)
        {
            _condominioRiferimento = stabile;
            _personaRiferimento = personaRiferimento;
			_tipoPraticaRiferimento = tipoPratica;
            _aziendaID = aziendaID;
            _dataApertura = dataApertura;
            LogTransazione = logTransazione;
            if (stabile != null)
                stabile.Pratiche.Add(this);
        }
コード例 #13
0
ファイル: Sollecito.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea un sollecito valido.
 /// </summary>
 public Sollecito(Esercizio esercizio, Persona persona, DateTime data, DateTime dataLimiteRate, decimal importoLimite, decimal importoDaVersare, DatiBancariCondomini banca, string oggettoLettera, string testoLettera)
 {
     Esercizio = esercizio;
     Persona = persona;
     Data = data;
     DataLimiteRate = dataLimiteRate;
     ImportoLimite = importoLimite;
     ImportoDaVersare = importoDaVersare;
     OggettoLettera = oggettoLettera;
     TestoLettera = testoLettera;
     Banca = banca;
 }
コード例 #14
0
ファイル: Conduttore.cs プロジェクト: gipasoft/Sfera
        /// <summary>
        /// Crea un Conduttore valido
        /// </summary>
        public Conduttore(UnitaImmobiliare unitaImmobiliare, Persona persona) : base(unitaImmobiliare, persona)
        {
            if (unitaImmobiliare != null)
            {
                unitaImmobiliare.Conduttori.Add(this);
                unitaImmobiliare.Soggetti.Add(this);

                if (unitaImmobiliare.Conduttori.Count == 1)
                {
                    this.PercentualeRiferimento = 100m;
                    this.Principale = true;
                }
            }
        }
コード例 #15
0
ファイル: Proprietario.cs プロジェクト: gipasoft/Sfera
        /// <summary>
        /// Crea un Proprietario valido
        /// </summary>
        public Proprietario(UnitaImmobiliare unitaImmobiliare, Persona persona) : base(unitaImmobiliare, persona)
        {
            if (unitaImmobiliare != null)
            {
                unitaImmobiliare.Proprietari.Add(this);
                unitaImmobiliare.Soggetti.Add(this);

                if (unitaImmobiliare.Proprietari.Count == 1)
                {
                    PercentualeRiferimento = 100m;
                    Principale = true;
                }
            }
        }
コード例 #16
0
ファイル: SoggettoService.cs プロジェクト: gipasoft/Sfera
        public SoggettoCondominio GetSoggettoPrincipale(Persona persona, Esercizio esercizio)
        {
            try
            {
                var soggetti = _daoFactory.GetSoggettoCondominioDao().GetByCondominioPersona(esercizio.CondominioRiferimento.ID, persona.ID).Where(item => item.DataFine == null || item.DataFine > esercizio.DataApertura.GetValueOrDefault()).ToList();
                var soggetto = soggetti.FirstOrDefault(item => item.UnitaImmobiliare.TipoUnitaImmobiliare.ID == 1) ?? soggetti.FirstOrDefault();

                return soggetto;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore durante la lettura del soggetto principale - {0} - persona:{1} - esercizio:{2}", ex, Library.Utility.GetMethodDescription(), persona.ID, esercizio.ID);
                throw;
            }
        }
コード例 #17
0
ファイル: StoricoMessaggio.cs プロジェクト: gipasoft/Sfera
        /// <summary>
        /// Crea uno StoricoMessaggio valido
        /// </summary>
        public StoricoMessaggio(Persona persona, TipoMessaggio tipo, MotivoMessaggio tipoOggetto, string oggetto, string indirizzi, string mittente, string codiceInvio, string codiceMessaggio, bool invioCorretto, DateTime dataInvio)
        {
            Oggetto = oggetto;
            Mittente = mittente;
            CodiceInvio = codiceInvio;
            CodiceMessaggio = codiceMessaggio;
            InvioCorretto = invioCorretto;
            DataInvio = dataInvio;
            Tipo = tipo;
            Indirizzi = indirizzi;
            MotivoMessaggio = tipoOggetto;
            Stato = invioCorretto ? StatoMessaggio.InAttesa : StatoMessaggio.Fallito;

            Persona = persona;
            if (Persona != null)
                Persona.Messaggi.Add(this);
        }
コード例 #18
0
ファイル: PersonaRepository.cs プロジェクト: gipasoft/Sfera
        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;
        }
コード例 #19
0
ファイル: PersonaRepository.cs プロジェクト: gipasoft/Sfera
        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;
        }
コード例 #20
0
ファイル: PersonaRepository.cs プロジェクト: gipasoft/Sfera
        private ContattoRepository getContattoRepository(Persona persona)
        {
            if (_contattoRepository == null)
                _contattoRepository = new ContattoRepository(persona, _info, _windsorRepository);
            else
                _contattoRepository.Persona = persona;

            return _contattoRepository;
        }
コード例 #21
0
ファイル: PersonaRepository.cs プロジェクト: gipasoft/Sfera
        private void setIndirizzo(PersonaContattoDTO dto, Persona persona, TipoIndirizzo? tipoIndirizzo, ImpostazioniAzienda impostazioni)
        {
            try
            {
                // ==================================================================
                // Indirizzo
                // ==================================================================
                if (tipoIndirizzo == null)
                    tipoIndirizzo = impostazioni.TipoIndirizzoComunicazioni;

                dto.Indirizzo = new AddressComunicazioneDTO { RecapitoResidenza = tipoIndirizzo.GetValueOrDefault() };

                if (persona.IndirizzoResidenza != null)
                {
                    dto.Indirizzo.CapResidenza = persona.IndirizzoResidenza.Cap;
                    dto.Indirizzo.LocalitaResidenza = persona.IndirizzoResidenza.Localita;
                    dto.Indirizzo.PressoResidenza = persona.IndirizzoResidenza.Presso;
                    // Località per ora viene stampata com campo singolo
                    //                                personaDto.Indirizzo.ComuneResidenza = soggetto.Persona.IndirizzoResidenza.Localita;
                    if (persona.IndirizzoResidenza.Comune != null)
                    {
                        if (!string.IsNullOrEmpty(dto.Indirizzo.ComuneResidenza))
                            dto.Indirizzo.ComuneResidenza += " - ";
                        dto.Indirizzo.ComuneResidenza += persona.IndirizzoResidenza.Comune.Descrizione + " " + persona.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice;
                    }
                    dto.Indirizzo.ViaCivicoResidenza = persona.IndirizzoResidenza.Indirizzo + " " + persona.IndirizzoResidenza.Civico;
                    //if (!string.IsNullOrEmpty(persona.IndirizzoResidenza.Presso))
                    //    dto.Indirizzo.ViaCivicoResidenza += " - c/o:" + persona.IndirizzoResidenza.Presso;
                }

                if (persona.Recapito != null)
                {
                    dto.Indirizzo.CapRecapito = persona.Recapito.Cap;
                    dto.Indirizzo.LocalitaRecapito = persona.Recapito.Localita;
                    dto.Indirizzo.PressoRecapito = persona.Recapito.Presso;
                    // Località per ora viene stampata com campo singolo
                    //                                personaDto.Indirizzo.ComuneRecapito = soggetto.Persona.Recapito.Localita;
                    if (persona.Recapito.Comune != null)
                    {
                        if (!string.IsNullOrEmpty(dto.Indirizzo.ComuneRecapito))
                            dto.Indirizzo.ComuneRecapito += " - ";
                        dto.Indirizzo.ComuneRecapito += persona.Recapito.Comune.Descrizione + " " + persona.Recapito.Comune.ProvinciaAppartenenza.Codice;
                    }
                    dto.Indirizzo.ViaCivicoRecapito = persona.Recapito.Indirizzo + " " + persona.Recapito.Civico;
                    //if (!string.IsNullOrEmpty(persona.Recapito.Presso))
                    //    dto.Indirizzo.ViaCivicoRecapito += " - c/o:" + persona.Recapito.Presso;
                }
                else
                {
                    dto.Indirizzo.ViaCivicoRecapito = dto.Indirizzo.ViaCivicoResidenza;
                    dto.Indirizzo.CapRecapito = dto.Indirizzo.CapResidenza;
                    dto.Indirizzo.ComuneRecapito = dto.Indirizzo.ComuneResidenza;
                    dto.Indirizzo.PressoRecapito = dto.Indirizzo.PressoResidenza;
                    dto.Indirizzo.LocalitaRecapito = dto.Indirizzo.LocalitaResidenza;
                }

                dto.ViaCivico = dto.Indirizzo.ViaCivicoRecapito;
                dto.Cap = dto.Indirizzo.CapRecapito;
                dto.Comune = dto.Indirizzo.ComuneRecapito;
                dto.Localita = dto.Indirizzo.LocalitaRecapito;
                dto.Presso = dto.Indirizzo.PressoRecapito;
                // ==================================================================

            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nella lettura dell'indirizzo - {0} - id:{1}", ex, Utility.GetMethodDescription(), persona.ID);
                throw;
            }

        }
コード例 #22
0
ファイル: PersonaRepository.cs プロジェクト: gipasoft/Sfera
        public IEnumerable<PersonaContattoDTO> SetContattoDto(Persona item, TipoNominativo? tipoNominativo, DateTime? dataRiferimento, TipoIndirizzo? tipoIndirizzo, ImpostazioniAzienda impostazioniAzienda)
        {
            try
            {
                var listaDto = new List<PersonaContattoDTO>();
                var mainDTO = new PersonaContattoDTO
                {
                    ID = item.ID,
                    Azienda = item.AziendaID.GetValueOrDefault(),
                    Iban = item.Iban,
                    CodiceFiscale = item.CodiceFiscale,
                    Cognome = item.Cognome,
                    DataNascita = item.DataNascita,
                    DisplayName = item.DisplayName,
                    Nome = item.Nome,
                    Note = item.Note,
                    PartitaIva = item.PartitaIva,
                    RagioneSociale = item.RagioneSociale,
                    Sesso = item.Sesso,
                    TipoPersona = item.TipoPersona,
                    Titolo = item.Titolo,
                    IsDeleteAllow = false,
                    Username = item.DatiAutenticazione?.Username,
                    Password = item.DatiAutenticazione?.Password,
                    Barcode = item.GetBarcode(),
                    Version = item.Version
                };

                if (string.IsNullOrEmpty(mainDTO.Cognome) && string.IsNullOrEmpty(mainDTO.Nome))
                    mainDTO.Cognome = mainDTO.RagioneSociale;

                var gruppi = string.Empty;
                foreach (var personaGruppo in item.Gruppi)
                {
                    if (!string.IsNullOrEmpty(gruppi))
                        gruppi += ", ";
                    gruppi += personaGruppo.Gruppo.DescrizioneBreve;
                }
                mainDTO.Gruppi = gruppi;

                if (item.ComuneNascita != null)
                {
                    try
                    {
                        mainDTO.ComuneNascita = item.ComuneNascita.Descrizione;
                    }
                    catch (Exception ex)
                    {
                        _log.WarnFormat("Errore nel caricamento delle persone - COMUNE NASCITA - {0} - id:{1}", ex, Utility.GetMethodDescription(), item.ID);
                    }

                }

                // Indirizzi
                setIndirizzo(mainDTO, item, tipoIndirizzo, impostazioniAzienda);
                //if ((tipoIndirizzo == TipoIndirizzo.Residenza && item.IndirizzoResidenza != null) || (tipoIndirizzo == TipoIndirizzo.Recapito && item.Recapito == null))
                //{
                //    var indirizzo = _locRep.GetAddressByDomainEntity(item.IndirizzoResidenza);
                //    mainDTO.Indirizzo = indirizzo.DisplayName;
                //    mainDTO.Comune = indirizzo.DescrizioneComune + " " + indirizzo.CodiceProvincia;
                //    mainDTO.Localita = indirizzo.Localita;
                //    mainDTO.Cap = indirizzo.Cap;
                //    mainDTO.Presso = indirizzo.Presso;
                //}
                //else if (item.Recapito != null)
                //{
                //    var recapito = _locRep.GetAddressByDomainEntity(item.Recapito);
                //    mainDTO.Recapito = recapito.DisplayName;
                //    mainDTO.Indirizzo = recapito.DisplayName;
                //    mainDTO.Comune = recapito.DescrizioneComune + " " + recapito.CodiceProvincia;
                //    mainDTO.Localita = recapito.Localita;
                //    mainDTO.Cap = recapito.Cap;
                //    mainDTO.Presso = recapito.Presso;
                //}

                // Contatti
                var contatti = new ContattoCollection(item.Contatti);
                var tel = contatti.GetFirstContatto<Telefono>();
                if (tel != null)
                {
                    mainDTO.Telefono = tel.Valore;
                    if(!string.IsNullOrEmpty(tel.Descrizione))
                        mainDTO.Telefono += " (" + tel.Descrizione + ")";
                }
                
                var cell = contatti.GetFirstContatto<Cellulare>();
                if (cell != null)
                {
                    mainDTO.Cellulare = cell.Valore;
                    if (!string.IsNullOrEmpty(cell.Descrizione))
                        mainDTO.Cellulare += " (" + cell.Descrizione + ")";
                }
                
                var mail = contatti.GetFirstContatto<Email>();
                if (mail != null)
                {
                    mainDTO.Email = mail.Valore;
                    if (!string.IsNullOrEmpty(mail.Descrizione))
                        mainDTO.Email += " (" + mail.Descrizione + ")";
                }

                var mailCertificata = contatti.GetFirstContatto<EmailCertificata>();
                if (mailCertificata != null)
                {
                    mainDTO.EmailCertificata = mailCertificata.Valore;
                    if (!string.IsNullOrEmpty(mailCertificata.Descrizione))
                        mainDTO.EmailCertificata += " (" + mailCertificata.Descrizione + ")";
                }
                
                var fax = contatti.GetFirstContatto<Fax>();
                if (fax != null)
                {
                    mainDTO.Fax = fax.Valore;
                    if (!string.IsNullOrEmpty(fax.Descrizione))
                        mainDTO.Fax += " (" + fax.Descrizione + ")";
                }

                // Dati condominio
                if (item.SoggettiCondominio.Count > 0)
                {
                    SoggettoCondominio soggetto = null;
                    if(item.SoggettiCondominio.Count(soggettoItem => soggettoItem.DataFine == null) == 1)
                        soggetto = item.SoggettiCondominio.Where(soggettoItem => soggettoItem.DataFine == null).OrderBy(pers => pers.Tipo).FirstOrDefault();
                    if(soggetto == null)
                        soggetto = item.SoggettiCondominio.OrderBy(soggettoItem => soggettoItem.Tipo).ThenByDescending(soggettoItem => soggettoItem.DataFine).ThenByDescending(soggettoItem => soggettoItem.DataInizio).ThenBy(soggettoItem => soggettoItem.UnitaImmobiliare.Ordine.GetValueOrDefault()).FirstOrDefault();
                    if(soggetto != null)
                    {
                        if (soggetto.UnitaImmobiliare != null)
                        {
                            if (tipoNominativo.GetValueOrDefault() != TipoNominativo.CondominoAttivo || dataRiferimento == null || soggetto.DataFine == null || soggetto.DataFine.GetValueOrDefault() > dataRiferimento.GetValueOrDefault())
                            {
                                var dto = mainDTO.Clone() as PersonaContattoDTO;
                                if (dto != null)
                                {
                                    dto.IdUnitaImmobiliare = soggetto.UnitaImmobiliare.ID;
                                    dto.IdSoggetto = soggetto.ID;
                                    dto.DescrizioneUnitaImmobiliare = soggetto.UnitaImmobiliare.Descrizione;
                                    dto.OrdineUnitaImmobiliare = soggetto.UnitaImmobiliare.Ordine.GetValueOrDefault();
                                    dto.Interno = soggetto.UnitaImmobiliare.InternoCompleto;
                                    dto.TipoCondomino = soggetto.Tipo.ToString();
                                    dto.TipoSoggetto = TipoNominativo.Condomino;
                                    dto.DescrizioneSoggetto = soggetto.DescrizioneAggiuntiva;
                                    dto.IsResidente = soggetto.IsResidente;
                                    dto.IsConsigliere = soggetto.Consigliere;
                                    dto.SoggettoAccorpamento = soggetto.GetDescrizioneAccorpamento();
                                    dto.ModalitaConvocazione = soggetto.ModalitaConvocazione;
                                    dto.FoglioCatastale = soggetto.UnitaImmobiliare.FoglioCatastale;
                                    dto.Mappale = soggetto.UnitaImmobiliare.Mappale;
                                    dto.Subalterno = soggetto.UnitaImmobiliare.Subalterno;

                                    if(soggetto.FrazionePossesso != null)
                                        dto.Possesso = soggetto.FrazionePossesso.ToString();

                                    if (soggetto.UnitaImmobiliare.GruppoStabileRiferimento != null)
                                    {
                                        dto.IdGruppoStabile = soggetto.UnitaImmobiliare.GruppoStabileRiferimento.ID;
                                        dto.DescrizioneGruppoStabile = soggetto.UnitaImmobiliare.GruppoStabileRiferimento.Descrizione;
                                        dto.IdStabile = soggetto.UnitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.ID;
                                        dto.DescrizioneStabile = soggetto.UnitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.Descrizione;
                                        dto.IdCondominio = soggetto.UnitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.ID;
                                        dto.DescrizioneCondominio = soggetto.UnitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.DisplayName;
                                    }

                                    listaDto.Add(dto);
                                }
                            }
                        }
                        else
                        {
                            _log.WarnFormat("Attenzione presente soggetto condominio senza unità immobiliare - {0} - soggetto:{1} - persona:{2}", Utility.GetMethodDescription(), soggetto.ID, item.ID);
                        }
                    }
                }

                // Dati Fornitore
                if (item.Fornitori.Count > 0)
                {
                    foreach (var fornitore in item.Fornitori)
                    {
                        var dto = mainDTO.Clone() as PersonaContattoDTO;
                        if (dto != null)
                        {
                            dto.IdFornitore = fornitore.ID;
                            dto.TipoFornitore = fornitore.Tipo?.Descrizione;
                            dto.TipoSoggetto = TipoNominativo.Fornitore;
                            listaDto.Add(dto);
                        }
                    }
                }

                // Dati Referente
                if (item.Referenti.Count > 0)
                {
                    foreach (var dto in item.Referenti.Select(referente => mainDTO.Clone()).OfType<PersonaContattoDTO>())
                    {
                        dto.TipoSoggetto = TipoNominativo.Referente;
                        listaDto.Add(dto);
                    }
                }

                if (listaDto.Count == 0 && tipoNominativo.GetValueOrDefault() != TipoNominativo.CondominoAttivo)
                {
                    if (item.Attivita.Count == 0)
                        mainDTO.IsDeleteAllow = true;
                    mainDTO.TipoSoggetto = TipoNominativo.Contatto;
                    listaDto.Add(mainDTO);
                }

                return listaDto;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel caricamento delle persone - {0} - id:{1}", ex, Utility.GetMethodDescription(), item.ID);
                throw;
            }
        }
コード例 #23
0
ファイル: PersonaRepository.cs プロジェクト: gipasoft/Sfera
        private PersonaDTO setDto(Persona item)
        {
            if(item != null)
            {
                var dto = new PersonaDTO
                {
                    ID = item.ID,
                    Abi = item.Abi,
                    Cab = item.Cab,
                    Cin = item.Cin,
                    Iban = item.Iban,
                    CodiceFiscale = item.CodiceFiscale,
                    Cognome = item.Cognome,
                    ContoCorrente = item.ContoCorrente,
                    DataNascita = item.DataNascita,
                    DisplayName = item.DisplayName,
                    Nome = item.Nome,
                    Note = item.Note,
                    PartitaIva = item.PartitaIva,
                    RagioneSociale = item.RagioneSociale,
                    Sesso = item.Sesso,
                    TipoPersona = item.TipoPersona,
                    Titolo = item.Titolo,
                    IndirizzoResidenza = item.IndirizzoResidenza != null ? _locRep.GetAddressByDomainEntity(item.IndirizzoResidenza) : new AddressDTO(),
                    Domicilio = item.Domicilio != null ? _locRep.GetAddressByDomainEntity(item.Domicilio) : new AddressDTO(),
                    Recapito = item.Recapito != null ? _locRep.GetAddressByDomainEntity(item.Recapito) : new AddressDTO(),
                    Username = item.DatiAutenticazione?.Username,
                    Password = item.DatiAutenticazione?.Password,
                    Version = item.Version
                };

                if (!string.IsNullOrEmpty(item.IndirizzoResidenza?.Presso))
                    dto.DisplayName = $"{dto.DisplayName}{Environment.NewLine}c/o {item.IndirizzoResidenza.Presso}";
                else if (!string.IsNullOrEmpty(item.Domicilio?.Presso))
                    dto.DisplayName = $"{dto.DisplayName}{Environment.NewLine}c/o {item.Domicilio.Presso}";

                if (item.ComuneNascita != null)
                    dto.ComuneNascita = _locRep.GetComuneByDomainEntity(item.ComuneNascita);
                if (item.AziendaID != null)
                    dto.Azienda = item.AziendaID.Value;

                var contatti = new ContattoDTO[item.Contatti.Count];
                var index = 0;
                foreach (var contatto in item.Contatti)
                {
                    contatti[index] = getContattoRepository(item).GetByDomainEntity(contatto);
                    index++;
                }
                dto.Contatti = contatti;

                foreach (var personaGruppo in item.Gruppi)
                    dto.Gruppi.Add(personaGruppo.Gruppo.ID);

                return dto;
            }

            return new PersonaDTO();
        }
コード例 #24
0
ファイル: PersonaRepository.cs プロジェクト: gipasoft/Sfera
 public PersonaDTO GetByDomainEntity(Persona persona)
 {
     try
     {
         return setDto(persona);
     }
     catch (Exception ex)
     {
         _log.ErrorFormat("Errore nel caricamento delle persone - {0} - id:{1}", ex, Utility.GetMethodDescription(), persona.ID);
         throw;
     }
 }
コード例 #25
0
        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;
        }
コード例 #26
0
        private IList<SoggettoCondominio> setSoggettiUnita(UnitaImmobiliare unita, ICollection<DataRow> condomini)
        { 
            try
            {
                var soggetti = new List<SoggettoCondominio>(condomini.Count);
                foreach (var row in condomini)
                {
                    // Persona
                    // ---------
                    var nomePersona = row["C_NOME"].ToString();
                    Persona persona = null;
                    if(!string.IsNullOrEmpty(nomePersona) && _personeCondominio.ContainsKey(nomePersona))
                        persona = _personeCondominio[nomePersona];
                    if (persona == null)
                    {
                        var tipoPersona = row["C_TIT_ONOR"].ToString() == "1" ? TipoPersonaEnum.Giuridica : TipoPersonaEnum.Fisica;

                        persona = new Persona(tipoPersona, string.Empty, nomePersona, unita.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.Azienda.ID, false)
                        {
                            IndirizzoResidenza = new Address
                                                    {
                                                        Indirizzo = row["C_VIA"].ToString(),
                                                        Cap = row["C_CAP"].ToString()
                                                    },
                            CodiceImportazione = row["C_COD_STA"] + "&" + row["C_COD_UNITA"] + "&" + row["C_COD_COND"]
                        };

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

                        if (row["C_NOTE"] != DBNull.Value && !string.IsNullOrEmpty(row["C_NOTE"].ToString()))
                            persona.Note = row["C_NOTE"].ToString();

                        if (row["C_PRESSO"] != DBNull.Value && !string.IsNullOrEmpty(row["C_PRESSO"].ToString()))
                            persona.IndirizzoResidenza.Presso = row["C_PRESSO"].ToString();

                        if (row["C_TEL"] != DBNull.Value && !string.IsNullOrEmpty(row["C_TEL"].ToString()))
                            persona.Contatti.Add(new Telefono(row["C_TEL"].ToString(), true, persona));
                        if (row["C_TEL2"] != DBNull.Value && !string.IsNullOrEmpty(row["C_TEL"].ToString()))
                            persona.Contatti.Add(new Telefono(row["C_TEL2"].ToString(), false, persona));
                        if (row["C_EMAIL"] != DBNull.Value && !string.IsNullOrEmpty(row["C_EMAIL"].ToString()))
                            persona.Contatti.Add(new Email(row["C_EMAIL"].ToString(), true, persona));
                        if (row["C_EMAIL_CERT"] != DBNull.Value && !string.IsNullOrEmpty(row["C_EMAIL_CERT"].ToString()))
                            persona.Contatti.Add(new EmailCertificata(row["C_EMAIL_CERT"].ToString(), false, persona));
                        if (row["C_CELLULARE"] != DBNull.Value && !string.IsNullOrEmpty(row["C_CELLULARE"].ToString()))
                            persona.Contatti.Add(new Cellulare(row["C_CELLULARE"].ToString(), true, persona));

                        _daoFactory.GetPersonaDao().SaveOrUpdate(persona);
                        _personeCondominio.Add(nomePersona, persona);
                    }

                    // Soggetto Condominio
                    SoggettoCondominio soggetto;
                    if (isConduttore(row))
                    {
                        soggetto = new Conduttore(unita, persona) {PercentualeRiferimento = 100, Principale = true};
                        if (unita.Descrizione == "$proprietario1")
                            unita.Descrizione += " - $conduttore1";
                    }
                    else
                    {
                        soggetto = new Proprietario(unita, persona);
                        if (row["C_TIPO_COND"].ToString() == "CONS")
                            soggetto.Consigliere = true;

                        if (row["C_PERC_POSS"].ToString() == "100")
                        {
                            soggetto.PercentualeRiferimento = 100;
                            soggetto.Principale = true;
                        }
                    }
                    soggetti.Add(soggetto);
                    _daoFactory.GetSoggettoCondominioDao().SaveOrUpdate(soggetto);
                }

                return soggetti;
            }
            catch (Exception ex)
            {
                
                _log.Error("Errore inaspettato nell'importazione di un condominio da YStabili - " + Library.Utility.GetMethodDescription(), ex);

                throw;
            }
        }
コード例 #27
0
        private IList<SoggettoCondominio> setSoggettiUnita(UnitaImmobiliare unita, DataRow rowUnita, DataRow[] condomini, Dictionary<int, SoggettoCondominio> loadedSoggetti)
        { 
            try
            {
                var soggetti = new List<SoggettoCondominio>(condomini.Length);

                foreach (var row in condomini)
                {
                    // Persona
                    // ---------
                    string cognomePersona = row["NOME"].ToString().Trim();
                    if (!string.IsNullOrEmpty(cognomePersona))
                    {
                        Persona persona = null;
                        if (!string.IsNullOrEmpty(cognomePersona) && _personeCondominio.ContainsKey(cognomePersona))
                            persona = _personeCondominio[cognomePersona];
                        if (persona == null)
                        {
                            persona = new Persona(Sfera.Enums.TipoPersonaEnum.Fisica, string.Empty, cognomePersona, unita.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.Azienda.ID, false)
                                          {
                                              IndirizzoResidenza = new Address {Indirizzo = row["VIA"].ToString(), Cap = row["CAP"].ToString()}
                                          };

                            if (row["CODFISC"] != DBNull.Value && !string.IsNullOrEmpty(row["CODFISC"].ToString()))
                                persona.CodiceFiscale = row["CODFISC"].ToString();
                            if (row["PIVA"] != DBNull.Value && !string.IsNullOrEmpty(row["PIVA"].ToString()))
                                persona.PartitaIva = row["PIVA"].ToString();
                            if (row["TITOLO"] != DBNull.Value && !string.IsNullOrEmpty(row["TITOLO"].ToString()))
                                persona.Titolo = row["TITOLO"].ToString();

                            persona.CodiceImportazione = row["CODITTA"] + "&" + row["CODSTAB"] + "&" + row["ESERCIZIO"] + "&" + row["CODPOS"];

                            if (row["LOC"] != DBNull.Value && !string.IsNullOrEmpty(row["LOC"].ToString()))
                            {
                                IList<Comune> comuni = _daoFactory.GetComuneDao().GetByDescrizione(row["LOC"].ToString().Trim());
                                if (comuni.Count == 1)
                                    persona.IndirizzoResidenza.Comune = comuni[0];
                                else
                                {
                                    DataRow row1 = row;
                                    var comuniDescr = comuni.Where(item => item.Descrizione.Trim().ToUpper() == row1["LOC"].ToString().Trim().ToUpper()).ToList();
                                    int count = comuniDescr.Count();
                                    if (count == 1)
                                        persona.IndirizzoResidenza.Comune = comuniDescr.SingleOrDefault();
                                }

                                if (persona.IndirizzoResidenza.Comune == null)
                                    persona.IndirizzoResidenza.Localita = row["LOC"].ToString();
                            }

                            if (row["TEL1"] != DBNull.Value && !string.IsNullOrEmpty(row["TEL1"].ToString().Trim()))
                                persona.Contatti.Add(new Telefono(row["TEL1"].ToString(), true, persona));
                            if (row["TEL2"] != DBNull.Value && !string.IsNullOrEmpty(row["TEL2"].ToString().Trim()))
                                persona.Contatti.Add(new Telefono(row["TEL2"].ToString(), false, persona));
                            if (row["E-MAIL"] != DBNull.Value && !string.IsNullOrEmpty(row["E-MAIL"].ToString().Trim()))
                                persona.Contatti.Add(new Email(row["E-MAIL"].ToString(), true, persona));

                            _daoFactory.GetPersonaDao().SaveOrUpdate(persona);
                            _personeCondominio.Add(cognomePersona, persona);
                        }

                        // Soggetto Condominio
                        SoggettoCondominio soggetto;
                        if (isConduttore(row))
                        {
                            soggetto = new Conduttore(unita, persona) {PercentualeRiferimento = 100, Principale = true};
                            if (unita.Descrizione == "$proprietario1")
                                unita.Descrizione += " - $conduttore1";

                        }
                        else
                            soggetto = new Proprietario(unita, persona);

                        soggetti.Add(soggetto);

                        int progressivoSoggetto = Convert.ToInt32(rowUnita["CODPOS"]);
                        if (progressivoSoggetto == Convert.ToInt32(rowUnita["RAGRUP1"]))
                        {
                            if (!loadedSoggetti.ContainsKey(progressivoSoggetto))
                                loadedSoggetti.Add(progressivoSoggetto, soggetto);
                        }
                        else if (loadedSoggetti.ContainsKey(progressivoSoggetto))
                            soggetto.SoggettoPrincipale = loadedSoggetti[progressivoSoggetto];

                        _daoFactory.GetSoggettoCondominioDao().SaveOrUpdate(soggetto);
                    }
                }
                
                if (unita.Proprietari.Count == 0)
                {
                    var codRagrup = Convert.ToInt32(rowUnita["RAGRUP1"]);
                    if (codRagrup < 8100 && loadedSoggetti.ContainsKey(codRagrup))
                    {
                        var personaProp = loadedSoggetti[codRagrup].Persona;
                        var prop = new Proprietario(unita, personaProp) {PercentualeRiferimento = 1, Principale = true};
                        _daoFactory.GetSoggettoCondominioDao().SaveOrUpdate(prop);
                    }
                }

                return soggetti;
            }
            catch (Exception ex)
            {
                
                _log.Error("Errore inaspettato nell'importazione di un condominio da CONDOR: " + Library.Utility.GetMethodDescription(), ex);

                throw;
            }
        }
コード例 #28
0
ファイル: PersonaRepository.cs プロジェクト: gipasoft/Sfera
 public PersonaDTO GetNew(TipoPersonaEnum tipo, int idAzienda)
 { 
     try
     {
         var persona = new Persona(tipo, null, null, idAzienda, true);
         return setDto(persona);
     }
     catch (Exception ex)
     {
         _log.ErrorFormat("Errore nella creazione di una nuova Persona - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), idAzienda);
         throw;
     }
 }
コード例 #29
0
ファイル: SollecitiService.cs プロジェクト: gipasoft/Sfera
        private string getNominativoPresso(Persona persona, SoggettoCondominio soggetto, Address indirizzo)
        {
            try
            {
                var nominativo = persona.DisplayName;
                try
                {
                    if (!string.IsNullOrEmpty(soggetto?.Descrizione))
                        nominativo = soggetto.Descrizione;
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Errore nell'individuazione del nominativo completo di presso - DESCRIZIONE - {0} - persona:{1} - soggetto:{2}", ex, Utility.GetMethodDescription(), persona.ID.ToString(), soggetto?.ID.ToString() ?? "<NULL>");
                }

                if (!string.IsNullOrEmpty(indirizzo?.Presso))
                    nominativo += $"{Environment.NewLine}c/o {indirizzo.Presso}";

                return nominativo;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nell'individuazione del nominativo completo di presso - {0} - persona:{1} - soggetto:{2}", ex, Utility.GetMethodDescription(), persona?.ID.ToString() ?? "<NULL>", soggetto?.ID.ToString() ?? "<NULL>");                
                return string.Empty;
            }
        }
コード例 #30
0
ファイル: SmsMessageService.cs プロジェクト: gipasoft/Sfera
        public IList<RisultatoInvioMessaggio> InvioMessaggio(int idAzienda, PersonaMessaggioDTO personaMessaggioDTO, Condominio condominio, int? idUnitaImmobiliare, int? idFornitore, int? idResponsabile, int? idIncaricatoAttivita, MotivoMessaggio motivoMessaggio, string oggetto, string testo, IList<string> destinatari, string mittente, string emailRapportino, IList<DocumentInfo> allegati, ParametriInvioLettera parametriInvioLettera)
        {
            // =========================================================
            //  Disabilito l'invio asincrono per problemi di gestione con Sertea
            //  diversi messaggi non sono stati inviati bugid#3823
            // =========================================================
            parametriInvioLettera.Asincrono = false;

            var message = string.Empty;
            var invioRiuscito = false;
            Persona persona = null;
            if(personaMessaggioDTO != null)
                persona = _daoFactory.GetPersonaDao().Find(personaMessaggioDTO.ID, false);

            _persona = persona;
            _condominio = condominio;
            _motivoMessaggio = motivoMessaggio;
            _oggetto = oggetto;
            _testo = testo;
            _destinatari = destinatari;
            _mittente = mittente;
            _emailRapportino = emailRapportino;

            var results = new List<RisultatoInvioMessaggio>();
            var result = new eMessageResultSendSMS();
            try
            {
                var destinatariSend = new List<string>();
                if (destinatari.Count > 0 && !destinatari.All(string.IsNullOrEmpty))
                {
                    foreach (var item in destinatari)
                    {
                        if (!string.IsNullOrEmpty(item))
                        {
                            if (!item.Trim().StartsWith("+39"))
                                destinatariSend.Add("+39" + Library.Conversione.ToPhoneNumber(item));
                            else
                                destinatariSend.Add(Library.Conversione.ToPhoneNumber(item));
                        }
                    }

                    if (destinatariSend.Any())
                    {
                        // =====================================
                        // Applico la stampa unione
                        // =====================================
                        if (personaMessaggioDTO != null)
                        {
                            int? idCondominio = null;
                            if (condominio != null)
                                idCondominio = condominio.ID;

                            var parametri = new ParametriStampaUnione(persona.ID, idUnitaImmobiliare, idResponsabile, idIncaricatoAttivita, idFornitore, idCondominio, null, personaMessaggioDTO.TipoIndirizzo, personaMessaggioDTO.Importo, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
                            oggetto = _messagisticaService.ApplicaStampaUnione(oggetto, parametri, idAzienda);
                            testo = _messagisticaService.ApplicaStampaUnione(testo, parametri, idAzienda);
                        }

                        // =====================================
                        // Invio Messaggio
                        // =====================================
                        var credenziali = _configurationService.GetLoginInfo(idAzienda);

                        if (credenziali != null && !string.IsNullOrEmpty(credenziali.Value.Utente) && !string.IsNullOrEmpty(credenziali.Value.Password))
                        {
                            var userService = new it.emessage.users.Users();
                            var success = false;
                            try
                            {
                                var resultUsers = userService.Login(credenziali.Value.Utente, credenziali.Value.Password, null);
                                success = resultUsers.success;
                            }
                            catch (Exception ex)
                            {
                                _log.WarnFormat("Errore durante il controllo delle credenziali - {0} - username:{1} - password:{2} - azienda:{3}", ex, Library.Utility.GetMethodDescription(), credenziali.Value.Utente, credenziali.Value.Password, idAzienda);
                            }

                            if (success)
                            {
                                var service = new Sms {Timeout = 999999999};
                                var identificazioneMittente = _configurationService.GetIdentificazioneMittente(idAzienda, TipoMessaggio.Sms, TipoIndirizzo.Recapito);
                                if (!string.IsNullOrEmpty(identificazioneMittente.Email))
                                    emailRapportino += "," + identificazioneMittente.Email;

                                // Mittente
                                if (string.IsNullOrEmpty(mittente))
                                    mittente = identificazioneMittente.Nome;
                                if (!string.IsNullOrEmpty(mittente) && mittente.Length > 11)
                                    mittente = mittente.Substring(0, 11);

                                if (ConfigurationManager.AppSettings["IsTest"] != null && bool.Parse(ConfigurationManager.AppSettings["IsTest"]))
                                    destinatariSend = new List<string> {"+393382958239"};

                                var parameters = new List<OptionalParameters>
                                {
                                    new OptionalParameters
                                    {
                                        ParameterName = "NotificationEmail",
                                        ParameterValue = emailRapportino
                                    },
                                    new OptionalParameters
                                    {
                                        ParameterName = "DeliveryTime",
                                        ParameterValue = DateTime.Now.ToString()
                                    }
                                };

                                // ---------------------------------------
                                //  Invio NON Asincrono
                                // ---------------------------------------
                                if (!parametriInvioLettera.Asincrono)
                                {
                                    if (motivoMessaggio != MotivoMessaggio.ScadenzaContratto)
                                    {
                                        try
                                        {
                                            if (string.IsNullOrEmpty(parametriInvioLettera.Tipo))
                                                parametriInvioLettera.Tipo = "NORMAL";
                                            result = service.Send(credenziali.Value.Utente, credenziali.Value.Password, mittente, destinatariSend.ToArray(), testo, parametriInvioLettera.Tipo, parameters.ToArray());
                                        }
                                        catch (Exception ex)
                                        {
                                            _log.FatalFormat("Errore inaspettato durante l'invio del sms - INVIO DIRETTO - {0} - oggetto:{1} - destinatari:{2} - testo:{3} - azienda:{4} - tipo:{5} - parameters:{6} - mittente:{7} - utente:{8}", ex, Library.Utility.GetMethodDescription(), oggetto, destinatariSend.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), testo, idAzienda, parametriInvioLettera.Tipo, parameters.Aggregate(string.Empty, (current, param) => current + (param + ", ")), mittente, credenziali.Value.Utente);
                                            throw;
                                        }
                                    }

                                    _log.InfoFormat("Risultato invio sms:{0} - destinatario:{1} - azienda:{2}", result, destinatariSend.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), idAzienda);

                                    if (result != null)
                                    {
                                        message += result;
                                        if (result.success)
                                            invioRiuscito = true;
                                    }
                                }

                                // ---------------------------------------
                                //  Invio Asincrono
                                // ---------------------------------------
                                else
                                {
                                    try
                                    {
                                        service.SendCompleted += serviceSendCompleted;
                                        service.SendAsync(credenziali.Value.Utente, credenziali.Value.Password, mittente, destinatariSend.ToArray(), testo, parametriInvioLettera.Tipo, parameters.ToArray());
                                    }
                                    catch (Exception ex)
                                    {
                                        _log.FatalFormat("Errore inaspettato durante l'invio del sms - INVIO ASINCRONO - {0} - oggetto:{1} - destinatari:{2} - testo:{3} - azienda:{4} - tipo:{5} - parameters:{6} - mittente:{7} - utente:{8}", ex, Library.Utility.GetMethodDescription(), oggetto, destinatariSend.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), testo, idAzienda, parametriInvioLettera.Tipo, parameters.Aggregate(string.Empty, (current, param) => current + (param + ", ")), mittente, credenziali.Value.Utente);
                                        throw;
                                    }

                                    // Se invio asincrono suppongo sia andato a buon fine
                                    invioRiuscito = true;
                                    results.Add(new RisultatoInvioMessaggio("N.D.", "N.D.", true, "Tutti gli sms sono stati accodati per l'invio", new DocumentInfo()));
                                }

                                if (invioRiuscito)
                                {
                                    // =====================================
                                    // Controllo rapportino
                                    // =====================================
                                    if (parametriInvioLettera.Tipo == "NOTIFICATION")
                                    {
                                        // Crea un trigger che parte tra 10 minuti e ogni minuto per 30 volte controlla le mail in arrivo.
                                        Trigger trigger = new PeriodicTrigger(DateTime.UtcNow.AddSeconds(10), null, TimeSpan.FromMinutes(1), 30);

                                        var jobSpec = new JobSpec("Controllo rapportino", "Verifica e salvataggio email contenente rapportino di conferma di invio SMS", "ConfermaRicezioneMessaggio", trigger);
                                        _scheduler.CreateJob(jobSpec, CreateJobConflictAction.Replace);

                                        _scheduler.Start();
                                    }
                                }
                            }
                            else
                            {
                                _log.WarnFormat("Credenziali non valide - {0} - username:{1} - password:{2} - azienda:{3}", Library.Utility.GetMethodDescription(), credenziali.Value.Utente, credenziali.Value.Password, idAzienda);
                            }
                        }
                        else
                        {
                            _log.FatalFormat("Errore inaspettato durante l'invio del sms. NON sono presenti le credenziali per l'invio del sms - {0} - oggetto:{1} - destinatari:{2} - azienda:{3}", Library.Utility.GetMethodDescription(), oggetto, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), idAzienda);
                            message = "KO - Non sono definite le credenziali per l'invio dei sms";
                        }
                    }
                    else
                    {
                        _log.WarnFormat("Errore inaspettato durante l'invio del sms. NON è definito nessun destinatario - {0} - oggetto:{1} - destinatari:{2} - azienda:{3}", Library.Utility.GetMethodDescription(), oggetto, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), idAzienda);
                        message = "KO - Non è definito nessun destinatario";
                    }

                }
                else
                {
                    _log.WarnFormat("Errore inaspettato durante l'invio del sms. NON è definito nessun destinatario - {0} - oggetto:{1} - destinatari:{2} - azienda:{3}", Library.Utility.GetMethodDescription(), oggetto, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), idAzienda);
                    message = "KO - Non è definito nessun destinatario";
                }
            }
            catch (Exception ex)
            {
                invioRiuscito = false;
                _log.ErrorFormat("Errore inaspettato durante l'invio del sms - {0} - oggetto:{1} - destinatari:{2} - azienda:{3}", ex, Library.Utility.GetMethodDescription(), oggetto, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), idAzienda);
                message = "KO - Errore inaspettato durante l'invio del sms";
            }

            // ===================================================================
            //  Storicizzazione dei messaggi solo se l'invio non è stato asicrono
            // ===================================================================
            if (!parametriInvioLettera.Asincrono && motivoMessaggio != MotivoMessaggio.ScadenzaContratto && invioRiuscito)
            {
                results = elaboraResult(result, results);
            }
            else
            {
                if(!invioRiuscito)
                    results.Add(new RisultatoInvioMessaggio("KO", null, false, message, new DocumentInfo()));
            }

            return results;
        }