Exemplo n.º 1
1
 private ParametriAggiuntiviCompilazioneLettera(TipoModelloLetteraEnum tipoLettera = TipoModelloLetteraEnum.Messaggistica, string bodyFormat = "PLAIN", List<TipoMessaggio> tipiMessaggioConsentiti = null, TipoMessaggio tipoMessaggioPredefinito = TipoMessaggio.Manuale)
 {
     TipoLettera = tipoLettera;
     BodyFormat = bodyFormat;
     TipiMessaggioConsentiti = tipiMessaggioConsentiti;
     TipoMessaggioPredefinito = tipoMessaggioPredefinito;
 }
        /// <summary>
        /// Create a XElement MessageDetail for SOAP FaultException (SdmxFaultError)
        /// </summary>
        /// <returns>XElement with exception description </returns>
        public XElement ToElement()
        {
            XElement el = new XElement("MessageDetail");

            if (this.TipoMessaggio == typeMessageEnum.InternalError)
            {
                el.Add(new XElement("ErrorType", TipoMessaggio.ToString()));
                el.Add(new XElement("Message", string.Join(": ", this.ThisException.Message.Split(new string[2] {
                    "\r", "\n"
                }, StringSplitOptions.RemoveEmptyEntries))));
            }
            else
            {
                Org.Sdmxsource.Sdmx.Api.Exception.SdmxException ex = ((Org.Sdmxsource.Sdmx.Api.Exception.SdmxException) this.ThisException);
                el.Add(new XElement("ErrorType", ex.ErrorType));
                //el.Add(new XElement("Code", ex.Code.Code));
                el.Add(new XElement("Message", string.Join(": ", ex.Message.Split(new string[2] {
                    "\r", "\n"
                }, StringSplitOptions.RemoveEmptyEntries))));
                if (ex != null && ex.InnerException != null)
                {
                    el.Add(new XElement("InternalMessage", string.Join(": ", ((Org.Sdmxsource.Sdmx.Api.Exception.SdmxException)(ex.InnerException)).FullMessage.Split(new string[2] {
                        "\r", "\n"
                    }, StringSplitOptions.RemoveEmptyEntries))));
                }
            }
            //ex.MessageError.FullMessage.Substring(0,ex.MessageError.FullMessage.IndexOf("\n"))
            return(el);
        }
Exemplo n.º 3
0
        public InvioMessaggioUI(TipoMessaggio? defaultTipoMessaggio, string contattoMittente, ParametriStampaUnione parametriLettera)
        {
            InitializeComponent();

            _defaultTipoMessaggio = defaultTipoMessaggio;
            _contattoMittente = contattoMittente;
            _parametriLettera = parametriLettera;
            txtMessaggio.LoadDocumento(parametriLettera.IdCondominio, Conversione.ToStream(_parametriLettera.Body), "HTML");

            inizializza();
        }
Exemplo n.º 4
0
        public DialogResult OpenDialogFormInvioMessaggio(TipoMessaggio? tipoMessaggio, List<int> destinatari, ModelloLetteraDTO modelloLettera, string contattoMittente, ParametriStampaUnione parametriLettera)
        {

            DialogResult result;
            using (var form = new InvioMessaggioUI(tipoMessaggio, contattoMittente, parametriLettera))
            {
                if (destinatari != null && destinatari.Count > 0)
                    form.LoadPersone(destinatari);
                if (modelloLettera != null)
                    form.LoadModello(modelloLettera);

                if (!string.IsNullOrEmpty(_customText))
                    form.ShowInserisciTestoCustom(_customText);
                if (!string.IsNullOrEmpty(_userInfoText))
                    form.ShowInserisciUserInfo(_userInfoText);

                result = form.ShowDialog();
                if (result != DialogResult.Cancel)
                {
                    _contattiSelected = form.GetContattiSelected();
                    _contattoDaContattare = form.GetContattoDaContattare();
                    _personaDaContattare = form.GetPersonaDaContattare();
                    _modelloLettera = form.GetModelloLettera();
                    _emailRapportino = form.GetEmailRapportino();
                    _testoMessaggio = form.GetTestoMessaggio();
                    _oggettoMessaggio = form.GetOggettoMessaggio();
                    _invioVeloce = form.GetInvioVeloce();
                    _messageType = form.GetMessageType();
                    _colore = form.GetColore();
                    _apriFile = form.GetApriFile();
                    _aggregazione = form.GetAggregazioneDocumenti();
                    _formatoDocumento = form.GetFormatoDocumento();
                    _accodaMessaggio = form.GetAccodaMessaggio();
                    _numeraPagine = form.GetNumeraPagine();
                    _fronteRetro = form.GetFronteRetro();
                    _primaPaginaMittente = form.GetPrimaPaginaMittente();
                    _mittente = form.GetMittente();
                    _tipoMessaggio = form.GetTipoMessaggio();
                    _documenti = form.GetDocumenti();
                    _documentiNew = form.GetDocumentiNew();
                    _parametriInvioLettera = new ParametriInvioLettera { Tipo = form.GetMessageType() };
                    _aggiornaContatti = form.GetAggiornaContatti();                     
                }
                
                form.CloseForm();
            }

            Application.DoEvents();
            return result;
        }
Exemplo n.º 5
0
        /// <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);
        }
        /// <summary>
        /// Create a XElement MessageDetail for SOAP MessageFault (In case of Exception during create FaultException of SdmxFaultError)
        /// </summary>
        /// <param name="Fromex">SdmxException</param>
        /// <returns>XElement with exception description</returns>
        public object ToDetail(SdmxException Fromex)
        {
            XElement el = new XElement("Error");

            el.SetAttributeValue("Type", TipoMessaggio.ToString());
            el.Add(new XElement("Message", Fromex.MessageText));

            if (this.TipoMessaggio == typeMessageEnum.InternalError)
            {
                if (!IsEmptyDetail)
                {
                    el.Add(new XElement("MessageDetail", string.Join(": ", this.ThisException.Message.Split(new string[2] {
                        "\r", "\n"
                    }, StringSplitOptions.RemoveEmptyEntries))));
                }
            }
            else
            {
                Org.Sdmxsource.Sdmx.Api.Exception.SdmxException ex = ((Org.Sdmxsource.Sdmx.Api.Exception.SdmxException) this.ThisException);
                el.Add(new XElement("ErrorType", ex.ErrorType));
                if (ex.Code != null)
                {
                    el.Add(new XElement("Code", ex.Code.Code));
                }
                el.Add(new XElement("MessageDetail", string.Join(": ", ex.Message.Split(new string[2] {
                    "\r", "\n"
                }, StringSplitOptions.RemoveEmptyEntries))));
                if (ex.InnerException is Org.Sdmxsource.Sdmx.Api.Exception.SdmxException)
                {
                    el.Add(new XElement("InternalMessage", string.Join(": ", ((Org.Sdmxsource.Sdmx.Api.Exception.SdmxException)(ex.InnerException)).FullMessage.Split(new string[2] {
                        "\r", "\n"
                    }, StringSplitOptions.RemoveEmptyEntries))));
                }
                else if (ex.InnerException != null)
                {
                    el.Add(new XElement("InternalMessage", string.Join(": ", ex.InnerException.ToString().Split(new string[2] {
                        "\r", "\n"
                    }, StringSplitOptions.RemoveEmptyEntries))));
                }
            }
            el.Add(new XElement("Source", Fromex.ProcSource));

            //ex.MessageError.FullMessage.Substring(0,ex.MessageError.FullMessage.IndexOf("\n"))
            return(el);
        }
Exemplo n.º 7
0
 public RisultatoInvioMessaggioAllegati InvioMessaggioPersonalizzato(MotivoMessaggio motivoMessaggio, IList<PersonaMessaggioDTO> persone, string mittente, string emailRapportino, IList<int> allegati, IList<DocumentInfo> allegatiNuovi, TipoMessaggio tipo, int? idModello, ParametriStampaUnione parametri, ParametriInvioLettera parametriInvioLettera, bool aggiornaContatti, int? idCondominio, UserInfo userinfo)
 {
     var windsorRep = new WindsorConfigRepository();
     try
     {
         windsorRep.BeginTransaction(userinfo);
         var rep = new MessaggioRepository(userinfo, windsorRep);
         var item = rep.InvioMessaggioPersonalizzatoPersone(motivoMessaggio, persone, mittente, emailRapportino, allegati, allegatiNuovi, tipo, idModello, parametri, parametriInvioLettera, aggiornaContatti, idCondominio, userinfo.Azienda);
         windsorRep.Commit();
         return item;
     }
     catch (Exception ex)
     {
         
         _log.Error("Errore durante l'invio del messaggio - " + Utility.GetMethodDescription() + " - idAzienda:" + userinfo.Azienda, ex);
         windsorRep.Rollback();
         throw;
     }
 }
Exemplo n.º 8
0
        public StoricoMessaggio StoricizzaMessaggio(Persona persona, Condominio condominio, RisultatoInvioMessaggio risultatoInvioMessaggio, MotivoMessaggio motivoMessaggio, string oggetto, string testo, IList<string> destinatari, string mittente, string emailRapportino, IList<DocumentInfo> allegati, TipoMessaggio tipoMessaggio)
        {
            try
            {
                StoricoMessaggio messaggio = null;
                if (motivoMessaggio != MotivoMessaggio.ScadenzaContratto)
                {
                    if (persona != null)
                    {
                        var indirizzi = string.Empty;
                        foreach (var destinatario in destinatari)
                        {
                            if (!string.IsNullOrEmpty(indirizzi))
                                indirizzi += "¥";
                            indirizzi += destinatario;
                        }

                        if (oggetto.Length > 512)
                            oggetto = oggetto.Substring(0, 512);

                        if (mittente.Length > 50)
                            mittente = mittente.Substring(0, 50);

                        messaggio = new StoricoMessaggio(persona, tipoMessaggio, motivoMessaggio, oggetto, indirizzi, mittente, risultatoInvioMessaggio.CodiceInvio, risultatoInvioMessaggio.CodiceMessaggio, risultatoInvioMessaggio.InvioRiuscito, DateTime.Now) { Testo = testo, Condominio = condominio };
                        
                        // TODO: Possibile sviluppo futuro
                        // =========================================================================================
                        //  Le email si suppongono sempre ricevute al momento dell'invio.
                        //  Per poter gestire uno stato 'InAttesa' occorre avere una gestione automatica delle 
                        //  conferme di ricezione attualmente non presente
                        // =========================================================================================
                        if (tipoMessaggio == TipoMessaggio.Email)
                            messaggio.Stato = StatoMessaggio.InAttesa;

                        _daoFactory.GetStoricoMessaggioDao().SaveOrUpdate(messaggio);

                        // ----------------------------------
                        // Allegati
                        // ----------------------------------
                        if (allegati != null)
                        {
                            foreach (var documentInfo in allegati)
                            {
                                var storicoMessaggioAllegato = new StoricoMessaggioAllegato(messaggio, documentInfo.FileId, documentInfo.FileName, documentInfo.FileExtension);
                                _daoFactory.GetStoricoMessaggioAllegatoDao().SaveOrUpdate(storicoMessaggioAllegato);
                            }
                        }
                    }
                }

                return messaggio;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato durante la storicizzazione del messaggio - {0}  - oggetto: {1} - indirizzi: {2} - tipo: {3}", ex, Utility.GetMethodDescription(), oggetto, destinatari.Aggregate(string.Empty, (current, destinatario) => current + (destinatario + "; ")), tipoMessaggio.ToString());
                throw;
            }
        }
Exemplo n.º 9
0
 public IList<ContattoDTO> GetContattiPersonaByTipo(int idPersona, TipoMessaggio tipoMessaggio, UserInfo userinfo)
 {
     var windsorRep = new WindsorConfigRepository();
     try
     {
         windsorRep.BeginTransaction(userinfo);
         var repo = new ContattoRepository(null, userinfo, windsorRep);
         var item = repo.GetByPersonaTipo(idPersona, tipoMessaggio);
         windsorRep.Commit();
         return item;
     }
     catch (Exception ex)
     {
         _log.ErrorFormat("Errore la lettura dei contatti di una Persona - {0} - idPersona:{1} - tipoMessaggio:{2} - azienda:{3}", ex, Utility.GetMethodDescription(), idPersona, tipoMessaggio, userinfo.Azienda);
         windsorRep.Rollback();
         throw;
     }
 }
Exemplo n.º 10
0
        public DialogResult OpenDialogFormTestoMessaggioPersone(IList<PersonaContattoDTO> personeSelezionate, string contattoMittente, ParametriStampaUnione parametriLettera, string nomeFile, DocumentoFilter filterDocumenti, bool sceltaModello)
        {
            DialogResult result;
            using (var form = new TestoMessaggioPersoneUI(personeSelezionate, contattoMittente, parametriLettera, sceltaModello, _manageDocumentService, _modelloLetteraService))
            {
                result = form.ShowDialog();

                _modelloLettera = form.GetModelloLettera();
                _emailRapportino = form.GetEmailRapportino();
                _testoMessaggio = form.GetTestoMessaggio();
                _oggettoMessaggio = form.GetOggetto();
                _invioVeloce = form.GetInvioVeloce();
                _messageType = form.GetMessageType();
                _colore = form.GetColore();
                _apriFile = form.GetApriFile();
                _aggregazione = form.GetAggregazioneDocumenti();
                _formatoDocumento = form.GetFormatoDocumento();
                _accodaMessaggio = form.GetAccodaMessaggio();
                _numeraPagine = form.GetNumeraPagine();
                _fronteRetro = form.GetFronteRetro();
                _primaPaginaMittente = form.GetPrimaPaginaMittente();
                _mittente = form.GetMittente();
                _tipoMessaggio = form.GetTipoMessaggio();
                _documenti = form.GetDocumenti();
                _documentiNew = form.GetDocumentiNew();
                _personeSelezionate = form.GetPersoneSelezionate();
                _parametriInvioLettera = new ParametriInvioLettera { Tipo = form.GetMessageType() };
                _aggiornaContatti = false;

            }
            Application.DoEvents();
            return result;
        }
Exemplo n.º 11
0
        public RisultatoInvioMessaggioAllegati InvioMessaggioPersone(MotivoMessaggio motivoMessaggio, string oggetto, string messaggio, IList<PersonaMessaggioDTO> persone, Dictionary<int, BindingList<ContattoDTO>> contatti, string mittente, string emailRapportino, IList<DocumentoMessaggioDTO> allegati, IList<DocumentInfo> allegatiNuovi, TipoMessaggio tipo, int? idModello, ParametriStampaUnione parametri, ParametriInvioLettera parametriInvioLettera, bool aggiornaContatti, int? idCondominio, UserInfo userinfo)
		{
            var retryCount = 5;
            var success = false;
            var windsorRep = new WindsorConfigRepository();
            var item = new RisultatoInvioMessaggioAllegati();
            while (retryCount >= 0 && !success)
            {
                try
                {
                    windsorRep.BeginTransaction(userinfo);
                    var rep = new MessaggioRepository(userinfo, windsorRep);
                    item = rep.InvioMessaggioPersone(motivoMessaggio, oggetto, messaggio, persone, contatti, mittente, emailRapportino, allegati, allegatiNuovi, tipo, idModello, parametri, parametriInvioLettera, aggiornaContatti, idCondominio, userinfo.Azienda);
                    
                    if (parametriInvioLettera.Aggregazione == AggregazioneDocumentiEnum.DocumentoUnico)
                    {
                        item.Allegati = null;
                        item.RisultatoInvio = new List<RisultatoInvioMessaggio> {new RisultatoInvioMessaggio(null, null, true, "Il documento è stato correttamente generato", new DocumentInfo())};
                    }
                    
                    windsorRep.Commit();
                    success = true;
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Errore durante l'invio del messaggio - TENTATIVO:{0} - {1} - oggetto:{2} - motivo:{3} - azienda:{4}", ex, (6 - retryCount), Utility.GetMethodDescription(), oggetto, motivoMessaggio, userinfo.Azienda);

                    windsorRep.Rollback();
                    if (!isRetryException(ex))
                        throw;

                    // Add delay here if you wish. 
                    System.Threading.Thread.Sleep(1000 * (6 - retryCount));
                    retryCount--;
                    _log.InfoFormat("Invio del messaggio - INIZIO TENTATIVO:{0} - {1} - oggetto:{2} - motivo:{3} - azienda:{3}", ex, (6 - retryCount), Utility.GetMethodDescription(), oggetto, motivoMessaggio, userinfo.Azienda);
                }
            }

            if (!success)
                windsorRep.Rollback();

            return item;
		}
Exemplo n.º 12
0
 public void SetTipoMessaggio(TipoMessaggio newTipoMessaggio)
 {
     tipoMessaggio.Text = newTipoMessaggio.ToString();
 }
Exemplo n.º 13
0
 public void SetTipoMessaggio(TipoMessaggio newTipoMessaggio)
 {
     if(_control != null)
         _control.SetTipoMessaggio(newTipoMessaggio);
 }
Exemplo n.º 14
0
        public IList<RisultatoInvioMessaggio> InvioMessaggioPersonalizzato(CondominioDTO condominio, MotivoMessaggio motivoMessaggio, IList<PersonaMessaggioDTO> persone, string mittente, string emailRapportino, IList<DocumentoDTO> allegati, IList<DocumentInfo> allegatiNuovi, TipoMessaggio tipo, ModelloLetteraDTO modello, ParametriStampaUnione parametri, ParametriInvioLettera parametriInvioLettera, bool aggiornaContatti)
        {
            try
            {
                // -----------------------------------------------
                //  Documenti Allegati
                // -----------------------------------------------
                var idDocumenti = new List<int>();
                if (allegati != null)
                    idDocumenti.AddRange(allegati.Where(item => item != null).Select(documento => documento.ID));

                int? idCondominio = null;
                if (condominio != null)
                    idCondominio = condominio.ID;

                int? idModelloLettera = null;
                if (modello != null)
                    idModelloLettera = modello.Id;

                var result = GetServiceClient().InvioMessaggioPersonalizzato(motivoMessaggio, new List<PersonaMessaggioDTO>(persone), mittente, emailRapportino, idDocumenti, new List<DocumentInfo>(allegatiNuovi), tipo, idModelloLettera, parametri, parametriInvioLettera, aggiornaContatti, idCondominio, GetUserInfo());
                CloseService();

                if (result.MessaggioGenerato.Body != null)
                    _manageDocumentService.Open(result.MessaggioGenerato, parametri.Oggetto, true, MergeFieldType.Default);

                return result.RisultatoInvio;

            }
            catch (Exception ex)
            {
                var idCondominio = "<NULL>";
                if (condominio != null)
                    idCondominio = condominio.ID.ToString();

                var idModelloLettera = "<NULL>";
                if (modello != null)
                    idModelloLettera = modello.Id.ToString();

                _log.FatalFormat("Errore nell'invio del messaggio - {0} - mittente:{1} - condominio:{2} - modello:{3}", ex, Utility.GetMethodDescription(), mittente, idCondominio, idModelloLettera);
                throw;
            }
        }
Exemplo n.º 15
0
        public IList<RisultatoInvioMessaggio> InvioMessaggio(CondominioDTO condominio, MotivoMessaggio motivoMessaggio, string oggetto, string messaggio, IList<PersonaContattoDTO> persone, Dictionary<int, List<ContattoDTO>> contatti, string mittente, string emailRapportino, IList<DocumentoDTO> allegati, IList<DocumentInfo> allegatiNuovi, TipoMessaggio tipo, ModelloLetteraDTO modello, ParametriStampaUnione parametri, ParametriInvioLettera parametriInvioLettera, bool aggiornaContatti)
        {
            // -----------------------------------------------
            //  Destinatari
            // -----------------------------------------------
            var personeMessaggio = persone.Select(persona => new PersonaMessaggioDTO {ID = persona.ID, TipoIndirizzo = persona.Indirizzo.RecapitoResidenza, IdUnitaImmobiliare = persona.IdUnitaImmobiliare}).ToList();

            // -----------------------------------------------
            //  Documenti Allegati
            // -----------------------------------------------
            var idDocumenti = new List<DocumentoMessaggioDTO>();
            if (allegati != null)
            {
                idDocumenti.AddRange(allegati.Select(documento => new DocumentoMessaggioDTO {Id = documento.ID, IdSpesa = documento.IdSpesa}));
            }

            int? idModelloLettera = null;
            if (modello != null)
                idModelloLettera = modello.Id;

            int? idCondominio = null;
            if (condominio != null)
                idCondominio = condominio.ID;

            var result = new RisultatoInvioMessaggioAllegati();
            try
            {
                result = GetServiceClient().InvioMessaggioPersone(motivoMessaggio, oggetto, messaggio, personeMessaggio, contatti, mittente, emailRapportino, idDocumenti, new List<DocumentInfo>(allegatiNuovi), tipo, idModelloLettera, parametri, parametriInvioLettera, aggiornaContatti, idCondominio, GetUserInfo());
            }
            catch (OutOfMemoryException ex)
            {
                _log.WarnFormat("Errore nell'invio del messaggio a persone - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
                return new List<RisultatoInvioMessaggio> { new RisultatoInvioMessaggio { InvioRiuscito = false, MessaggioInvio = $"La memoria non è sufficiente per l'invio del messaggio.{Environment.NewLine}Per eseguire l'invio del messaggio da questa postazione occorre aumentare la ram disponibile" } };
            }
            catch (CommunicationException ex)
            {
                _log.WarnFormat("Errore nell'invio del messaggio a persone - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
                return new List<RisultatoInvioMessaggio> { new RisultatoInvioMessaggio { InvioRiuscito = false, MessaggioInvio = $"La memoria non è sufficiente per l'invio del messaggio.{Environment.NewLine}Per eseguire l'invio del messaggio da questa postazione occorre aumentare la ram disponibile" } };
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nell'invio del messaggio a persone - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
                throw;
            }
            finally
            {
                CloseService();
            }

            if (result.MessaggioGenerato.Body != null)
                _manageDocumentService.Open(result.MessaggioGenerato, oggetto, true, MergeFieldType.Default, _aziendaService.GetAperturaDocumentoMessaggistica());

            return result.RisultatoInvio;
        }
Exemplo n.º 16
0
        public IList<ContattoDTO> GetByPersonaTipo(int idPersona, TipoMessaggio tipoMessaggio)
        {
            try
            {
                var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
                var persona = daoFactory.GetPersonaDao().GetById(idPersona, false);

                IList<Contatto> contatti = new List<Contatto>();
                switch (tipoMessaggio)
                {
                    case TipoMessaggio.Email:
                        contatti = persona.Contatti.Where(item => item is Email || item is EmailCertificata).ToList();
                        break;

                    case TipoMessaggio.Sms:
                        contatti = persona.Contatti.Where(item => item is Cellulare).ToList();
                        break;

                    case TipoMessaggio.Fax:
                        contatti = persona.Contatti.Where(item => item is Fax).ToList();
                        break;

                    case TipoMessaggio.Lettera:
                        break;
                }

                var listaDto = new List<ContattoDTO>(contatti.Count);
                listaDto.AddRange(contatti.Select(setContattiDto));

                return listaDto;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore la lettura dei contatti di una Persona per tipo messaggio - {0} - idPersona:{1} - tipo:{2}", ex, Utility.GetMethodDescription(), idPersona, tipoMessaggio);
                throw;
            }
        }
Exemplo n.º 17
0
        public string ControlloRapportinoNotifica(TipoMessaggio tipo, UserInfo userinfo)
        {
            string message = string.Empty;
            var windsorRep = new WindsorConfigRepository();

            try
            {
                windsorRep.BeginTransaction(userinfo);

                IPraticaService service = null;
                switch (tipo)
                {
                    case TipoMessaggio.Fax:
                        service = windsorRep.GetContainer(userinfo.Azienda).Resolve<IPraticaService>("praticaservice.faxmessage");
                        break;
                    case TipoMessaggio.Email:
                        service = windsorRep.GetContainer(userinfo.Azienda).Resolve<IPraticaService>("praticaservice.emailmessage");
                        break;
                    case TipoMessaggio.Sms:
                        service = windsorRep.GetContainer(userinfo.Azienda).Resolve<IPraticaService>("praticaservice.smsmessage");
                        break;
                }

                if (service != null) 
                    message = service.ControlloRapportinoNotifica();
                windsorRep.Commit();

                return message;
            }
            catch (Exception ex)
            {
                
                _log.Error("Errore nel controllo del rapportino di invio del messaggio - " + Utility.GetMethodDescription() + " - tipo:" + tipo.ToString() + " - azienda:" + userinfo.Azienda, ex);
                windsorRep.Rollback();
                throw;
            }
        }
Exemplo n.º 18
0
        public RisultatoInvioMessaggioAllegati NotificaAIncaricato(int idAttivita, MotivoMessaggio motivoMessaggio, IList<PersonaMessaggioDTO> persone, string oggettoMessaggio, string testoMessaggio, string mittente, string emailRapportino, IList<DocumentoMessaggioDTO> allegati, IList<DocumentInfo> allegatiNuovi, TipoMessaggio tipo, int? idModello, ParametriStampaUnione parametri, ParametriInvioLettera parametriInvioLettera, bool aggiornaContatti, int? idCondominio, UserInfo userinfo)
		{
			var windsorRep = new WindsorConfigRepository();
			try
			{
				windsorRep.BeginTransaction(userinfo);
                var repo = new AttivitaRepository(userinfo, windsorRep);
                var item = repo.NotificaAIncaricato(idAttivita, motivoMessaggio, persone, oggettoMessaggio, testoMessaggio, mittente, emailRapportino, allegati, allegatiNuovi, tipo, idModello, parametri, parametriInvioLettera, aggiornaContatti, idCondominio);
			    windsorRep.Commit();
                return item;
			}
			catch (Exception ex)
			{
                _log.Error("Errore nell'invio della lettera - " + Utility.GetMethodDescription() + " - idAttivita:" + idAttivita + " - persone:" + persone.Aggregate(string.Empty, (current, persona) => current + (persona.ID + ", ")), ex);
				windsorRep.Rollback();
				throw;
			}
		}
        public IdentificazioneMittente GetIdentificazioneMittente(int idAzienda, TipoMessaggio tipo, TipoIndirizzo tipoIndirizzo)
        {
            try
            {
                var result = new IdentificazioneMittente(string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty);
                var impostazioni = _daoFactory.GetImpostazioniAziendaDao().GetByAzienda(idAzienda);

                if (impostazioni != null)
                {
                    Persona amministratore = null;
                    if(impostazioni.Azienda.Amministratore != null)
                        amministratore = impostazioni.Azienda.Amministratore.PersonaRiferimento;

                    var indirizzo = impostazioni.Azienda.IndirizzoSede;
                    var via = string.Empty;
                    var cap = string.Empty;
                    var comune = string.Empty;
                    var provincia = string.Empty;
                    if(indirizzo != null)
                    {
                        via = indirizzo.DisplayNameArray[0];
                        cap = indirizzo.Cap;
                        
                        if(indirizzo.Comune != null)
                        {
                            comune = indirizzo.Comune.Descrizione;
                            provincia = indirizzo.Comune.ProvinciaAppartenenza.Codice;
                        }
                    }

                    var nomeAmministratore = string.Empty;
                    var cognomeAmministratore = string.Empty;
                    if (amministratore != null)
                    {
                        nomeAmministratore = amministratore.Nome;
                        cognomeAmministratore = amministratore.Cognome;
                    }

                    switch (tipo)
                    {
                        case TipoMessaggio.Fax:
                            var rapportino = "*****@*****.**";
                            if (!string.IsNullOrEmpty(impostazioni.EmailRapportiniInvio))
                                rapportino += "," + impostazioni.EmailRapportiniInvio;
                            result = new IdentificazioneMittente(impostazioni.Azienda.Descrizione, impostazioni.NomeFaxHeader, cognomeAmministratore, impostazioni.NumeroFaxHeader, rapportino, via, cap, comune, provincia, "ITALIA");
                            break;
                        case TipoMessaggio.Sms:
                            result = new IdentificazioneMittente(impostazioni.Azienda.Descrizione, impostazioni.NomeSmsHeader, cognomeAmministratore, impostazioni.NomeSmsHeader, impostazioni.EmailRapportiniInvio, via, cap, comune, provincia, "ITALIA");
                            break;
                        case TipoMessaggio.Email:
                            result = new IdentificazioneMittente(impostazioni.Azienda.Descrizione, impostazioni.MittenteEmailAzienda, cognomeAmministratore, impostazioni.MittenteEmailAzienda, impostazioni.EmailRapportiniInvio, via, cap, comune, provincia, "ITALIA");
                            break;
                        case TipoMessaggio.Lettera:
                            result = new IdentificazioneMittente(impostazioni.Azienda.Descrizione, nomeAmministratore, cognomeAmministratore, string.Empty, impostazioni.EmailRapportiniInvio, via, cap, comune, provincia, "ITALIA");
                            break;
                    }
                }

                return result;

            }
            catch (Exception ex)
            {
                _log.FatalFormat("Errore inaspettato durante la lettura dei dati di identificazione del mittente - {0} - tipoMessaggio:{1} - tipoIndirizzo:{2} - azienda:{3}", ex, Library.Utility.GetMethodDescription(), tipo, tipoIndirizzo, idAzienda);
                throw;
            }
        }
Exemplo n.º 20
0
        public IList<RisultatoInvioMessaggio> NotificaAIncaricato(int idCondominio, AttivitaDTO attivita, IList<NameValueDTOOfintstring> contatti, string emailRapportino, string mittente, string oggettoMessaggio, string testoMessaggio, IList<DocumentoDTO> documenti, IList<DocumentInfo> allegatiNuovi, int? idModello, ParametriStampaUnione parametriCompilazioneLettera, ParametriInvioLettera parametriInvioLettera, TipoMessaggio tipo, bool aggiornaContatti)
        {
            // -----------------------------------------------
            //  Documenti Allegati
            // -----------------------------------------------
            var idDocumenti = new List<DocumentoMessaggioDTO>();
            if (documenti != null)
            {
                idDocumenti.AddRange(documenti.Select(documento => new DocumentoMessaggioDTO {Id = documento.ID, IdSpesa = documento.IdSpesa}));
            }

            // -----------------------------------------------
            //  Destinatari
            // -----------------------------------------------
            var persone = new List<PersonaMessaggioDTO>();
            var contattiPersona = contatti.GroupBy(item => item.Value);
            foreach (var item in contattiPersona)
            {
                var persona = new PersonaMessaggioDTO();
                var listaContatti = new List<ContattoDTO>();
                foreach (var valoreContatto in item)
                {
                    var contatto = new ContattoDTO
                    {
                        Valore = valoreContatto.Name,
                        TipoContatto = tipo.ToString(),
                        SelectColumn = true
                    };
                    listaContatti.Add(contatto);
                }

                persona.ID = item.Key;
                persona.Contatti = listaContatti;
                persona.OggettoMessaggio = oggettoMessaggio;
                persona.TestoMessaggio = testoMessaggio;
                persona.NomeMessaggio = $"MessaggioAttivita_{DateTime.Now.ToString("dd-mm-yyyy")}";

                if (tipo == TipoMessaggio.Lettera)
                    persona.TipoIndirizzo = item.Any(contatto => contatto.Name == "Residenza")
                                                ? TipoIndirizzo.Residenza
                                                : TipoIndirizzo.Recapito;

                persone.Add(persona);
            }

            var idAttivita = 0;
            if (attivita != null)
            {
                idAttivita = attivita.ID;
                parametriCompilazioneLettera.Descrizione = attivita.Note;
            }

            var result = GetServiceClient().NotificaAIncaricato(idAttivita, MotivoMessaggio.NotificaAttivita, persone, oggettoMessaggio, testoMessaggio, mittente, emailRapportino, idDocumenti, new List<DocumentInfo>(allegatiNuovi), tipo, idModello, parametriCompilazioneLettera, parametriInvioLettera, aggiornaContatti, idCondominio, GetUserInfo());
            CloseService();
            
            // Apro eventuali documenti
            if (parametriInvioLettera.Aggregazione == AggregazioneDocumentiEnum.DocumentoUnico)
                _manageDocumentService.Open(result.MessaggioGenerato, null, true, MergeFieldType.Default);
            else
            {
                foreach (var risultatoInvioMessaggio in result.RisultatoInvio)
                {
                    if (risultatoInvioMessaggio.Messaggio.Body != null)
                        _manageDocumentService.Open(risultatoInvioMessaggio.Messaggio, null, true, MergeFieldType.Default);
                }
            }

            return result.RisultatoInvio;
        }
Exemplo n.º 21
0
        private AllegatiElaborati? elaboraAllegato(DocumentInfo allegato, Persona persona, ParametriStampaUnione parametri, TipoMessaggio tipo, IConverter converter, int azienda)
        {
            AllegatiElaborati? result = null;
            byte[] body;
            
            if(persona != null)
                parametri.IdPersona = persona.ID;
    
            byte[] bodyAllegato = getBodyAllegato(allegato, parametri, azienda);
            var fileExtension = allegato.FileExtension;
            string fileName;
            try
            {
                if (tipo != TipoMessaggio.Manuale && (string.IsNullOrEmpty(allegato.FileExtension) || allegato.FileExtension != ".pdf"))
                {
                    body = converter.ConvertToPdf(allegato).ToArray();
                    fileExtension = ".pdf";
                }
                else
                    body = bodyAllegato;

                fileName = allegato.FileName;
                var index = fileName.LastIndexOf(".");
                if (index > 0)
                    fileName = fileName.Substring(0, index);
            }
            catch (Exception)
            {
                body = bodyAllegato;
                fileExtension = allegato.FileExtension;
                fileName = allegato.FileName;
                var index = fileName.LastIndexOf(".");
                if (index > 0)
                    fileName = fileName.Substring(0, index);
            }

            var documentMessage = getDocumentService().SaveDocument(bodyAllegato, allegato.FileName, allegato.FileExtension, null, _info.Azienda);
            if (documentMessage.Documento != null)
            {
                var documentoDto = documentMessage.Documento;
                allegato.FileId = documentoDto.Checksum;

                var documento = new DocumentInfo { Body = body, FileId = documentoDto.Checksum, FileName = fileName, FileExtension = fileExtension };
                result = new AllegatiElaborati(documento, allegato);
            }

            return result;
        }
Exemplo n.º 22
0
 public List<InfoSpedizioneMessaggioDTO> GetInfoMessaggio(IList<StoricoMessaggioDTO> messaggi, TipoMessaggio tipoMessaggio)
 {
     var idMessaggi = messaggi.Select(storicoMessaggioDTO => storicoMessaggioDTO.ID).ToList();
     var result = GetServiceClient().GetInfoMessaggio(idMessaggi, tipoMessaggio, GetUserInfo());
     CloseService();
     return result;
 }
Exemplo n.º 23
0
 public MessaggioFilter(int codiceAzienda, int? codiceCondominio, string nominativo, string indirizzo, string gruppi, TipoNominativo? tipo, DateTime? dataRiferimento, int? tipoFornitore, TipoMessaggio? tipoMessaggio, List<MotivoMessaggio> motivoMessaggio)
 {
     CodiceCondominio = codiceCondominio;
     CodiceAzienda = codiceAzienda;
     Nominativo = nominativo;
     Indirizzo = indirizzo;
     Tipo = tipo;
     DataRiferimento = dataRiferimento;
     Gruppi = gruppi;
     TipoFornitore = tipoFornitore;
     TipoMessaggio = tipoMessaggio;
     MotivoMessaggio = motivoMessaggio;
 }
Exemplo n.º 24
0
        public DialogResult OpenDialogFormInvioMessaggio(TipoMessaggio? tipoMessaggio, PersonaDTO destinatario, ModelloLetteraDTO modelloLettera, string contattoMittente, ParametriStampaUnione parametriLettera)
        {
            var destinatari = new List<PersonaDTO>();
            if(destinatario != null)
                destinatari.Add(destinatario);

            return OpenDialogFormInvioMessaggio(tipoMessaggio, destinatari, modelloLettera, contattoMittente, parametriLettera);
            //DialogResult result;
            //using (var form = new InvioMessaggioUI(tipoMessaggio, contattoMittente, parametriLettera))
            //{
            //    if (destinatario != null)
            //        form.LoadPersone(new List<int> { destinatario.ID });
            //    if (modelloLettera != null)
            //        form.LoadModello(modelloLettera);

            //    if (!string.IsNullOrEmpty(_customText))
            //        form.ShowInserisciTestoCustom(_customText);
            //    if (!string.IsNullOrEmpty(_userInfoText))
            //        form.ShowInserisciUserInfo(_userInfoText);

            //    result = form.ShowDialog();

            //    _contattiSelected = form.GetContattiSelected();
            //     _contattoDaContattare = form.GetContattoDaContattare();
            //    _personaDaContattare = form.GetPersonaDaContattare();
            //    _modelloLettera = form.GetModelloLettera();
            //    _emailRapportino = form.GetEmailRapportino();
            //    _testoMessaggio = form.GetTestoMessaggio();
            //    _oggettoMessaggio = form.GetOggettoMessaggio();
            //    _invioVeloce = form.GetInvioVeloce();
            //    _messageType = form.GetMessageType();
            //    _colore = form.GetColore();
            //    _apriFile = form.GetApriFile();
            //    _pdfUnico = form.GetPdfUnico();
            //    _accodaMessaggio = form.GetAccodaMessaggio();
            //    _numeraPagine = form.GetNumeraPagine();
            //    _fronteRetro = form.GetFronteRetro();
            //    _primaPaginaMittente = form.GetPrimaPaginaMittente();
            //    _mittente = form.GetMittente();
            //    _tipoMessaggio = form.GetTipoMessaggio();
            //    _documenti = form.GetDocumenti();
            //    _documentiNew = form.GetDocumentiNew();
            //    _parametriInvioLettera = new ParametriInvioLettera();
            //    _aggiornaContatti = form.GetAggiornaContatti(); 

            //    form.CloseForm();
            //}

            //Application.DoEvents();
            //return result;
        }
Exemplo n.º 25
0
        public RisultatoInvioMessaggioAllegati NotificaAIncaricato(int idAttivita, MotivoMessaggio motivoMessaggio, IList<PersonaMessaggioDTO> persone, string oggettoMessaggio, string testoMessaggio, string mittente, string emailRapportino, IList<DocumentoMessaggioDTO> allegati, IList<DocumentInfo> allegatiNuovi, TipoMessaggio tipo, int? idModello, ParametriStampaUnione parametri, ParametriInvioLettera parametriInvioLettera, bool aggiornaContatti, int? idCondominio)
        {
            try
            {
                // Invio i messaggi
                var messaggioRepository = new MessaggioRepository(_info, _windsorRepository);
                var contatti = persone.ToDictionary(personaMessaggioDTO => personaMessaggioDTO.ID, personaMessaggioDTO => new BindingList<ContattoDTO>(personaMessaggioDTO.Contatti));
                var risultatoInvio = messaggioRepository.InvioMessaggioPersone(motivoMessaggio, oggettoMessaggio, testoMessaggio, persone, contatti, mittente, emailRapportino, allegati, allegatiNuovi, tipo, idModello, parametri, parametriInvioLettera, aggiornaContatti, idCondominio, _info.Azienda);

                // Associo i messaggi avviati con l'attività
                var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
                var attivita = daoFactory.GetAttivitaDao().Find(idAttivita, false);
                if (attivita != null)
                {
                    foreach (var risultatoInvioMessaggio in risultatoInvio.RisultatoInvio)
                    {
                        if (risultatoInvioMessaggio.InvioRiuscito && risultatoInvioMessaggio.IdMessaggio > 0)
                        {
                            var attivitaMessaggio = new AttivitaMessaggio(attivita, daoFactory.GetStoricoMessaggioDao().GetById(risultatoInvioMessaggio.IdMessaggio, false));
                            daoFactory.GetAttivitaMessaggioDao().SaveOrUpdate(attivitaMessaggio);
                        }
                    }

                    // Salvo tutti i documenti legandoli alla attività
                    foreach (var documentInfo in risultatoInvio.Allegati)
                    {
                        var documento = new Documento(documentInfo.FileId, documentInfo.FileName, documentInfo.FileExtension, "Attivita", false, daoFactory.GetAziendaDao().GetById(attivita.PraticaRiferimento.AziendaID.GetValueOrDefault(), false))
                        {
                            Descrizione = documentInfo.BodyText,
                            AttivitaRiferimento = attivita
                        };
                        daoFactory.GetDocumentoDao().SaveOrUpdate(documento);
                    }

                    // Documenti generati dall'invio manuale del messaggio
                    foreach (var itemResult in risultatoInvio.RisultatoInvio)
                    {
                        if (itemResult.Messaggio.Body != null)
                        {
                            var documentoLettera = new Documento(itemResult.Messaggio.FileId, itemResult.Messaggio.FileName, itemResult.Messaggio.FileExtension, "Attivita", false, daoFactory.GetAziendaDao().GetById(attivita.PraticaRiferimento.AziendaID.GetValueOrDefault(), false))
                            {
                                Descrizione = itemResult.Messaggio.BodyText,
                                AttivitaRiferimento = attivita
                            };
                            daoFactory.GetDocumentoDao().SaveOrUpdate(documentoLettera);
                        }
                    }
                }

                return risultatoInvio;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore durante l'invio del messaggio - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), _info.Azienda);
                throw;
            }
        }
Exemplo n.º 26
0
        public RisultatoInvioMessaggioAllegati InvioMessaggioPersonalizzatoPersone(MotivoMessaggio motivoMessaggio, IList<PersonaMessaggioDTO> persone, string mittente, string emailRapportino, IList<int> documentiAllegati, IList<DocumentInfo> allegatiNuovi, TipoMessaggio tipo, int? idModello, ParametriStampaUnione parametri, ParametriInvioLettera parametriInvioLettera, bool aggiornaContatti, int? idCondominio, int azienda)
        {
            try
            {
                var result = new List<RisultatoInvioMessaggio>();
                var messaggioInviato = new DocumentInfo();
                if (persone.Count > 0)
                {
                    IMessageService service = null;
                    
                    var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);

                    Condominio condominio = null;
                    if (idCondominio > 0)
                        condominio = daoFactory.GetCondominioDao().Find(idCondominio.GetValueOrDefault(), false);

                    switch (tipo)
                    {
                        case TipoMessaggio.Fax:
                            service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.fax");
                            break;
                        case TipoMessaggio.Email:
                            service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.email");
                            break;
                        case TipoMessaggio.Sms:
                            service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.sms");
                            break;
                        case TipoMessaggio.Lettera:
                            service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.lettera");
                            break;
                        case TipoMessaggio.Manuale:
                            service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.manuale");
                            break;
                    }

                    // Recupero l'eventuale modello di lettera (solo per Fax, Email o Lettera tradizionale)
                    ModelloLettera modello = null;
                    if (idModello != null)
                        modello = daoFactory.GetModelloLetteraDao().GetById(idModello.Value, false);

                    var personaService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IPersonaService>();
                    var modelloLetteraService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IModelloLetteraService>();

                    // =========================================================================================
                    // Allegati
                    // =========================================================================================
                    var allegatiMessaggio = new List<DocumentInfo>();
                    var documentoRepository = new DocumentoRepository(_info, _windsorRepository);
                    foreach (var idDocumento in documentiAllegati)
                    {
                        var documento = daoFactory.GetDocumentoDao().Find(idDocumento, false);
                        if (documento != null)
                        {
                            var tipoDocumento = TipoDocumentoArchiviazione.Contratto;
                            if (documento.SpesaRiferimento != null)
                                tipoDocumento = TipoDocumentoArchiviazione.FatturaPassiva;
                            var docInfo = documentoRepository.GetDocumentInfo(idDocumento, tipoDocumento);

                            // Se è un file word lo conveerto in PDF
                            if (tipo != TipoMessaggio.Manuale && (docInfo.FileExtension == ".doc" || docInfo.FileExtension == ".docx"))
                            {
                                var doc = new Document(new MemoryStream(docInfo.Body));
                                var pdfStream = new MemoryStream();
                                doc.Save(pdfStream, SaveFormat.Pdf);
                                docInfo.Body = pdfStream.ToArray();
                                docInfo.FileExtension = ".pdf";
                            }

                        	allegatiMessaggio.Add(docInfo);
						}

                    }

                    // =========================================================================================
                    // Allegati Nuovi
                    // =========================================================================================
                    var allegatiNuoviAry = allegatiNuovi.ToArray();
                    for (var i = 0; i < allegatiNuoviAry.Length; i++)
                    {
                        var documentMessage = getDocumentService().SaveDocument(allegatiNuovi[i].Body, allegatiNuoviAry[i].FileName, allegatiNuoviAry[i].FileExtension, null, _info.Azienda);
                        if (documentMessage.Documento != null)
                        {
                            var checksum = documentMessage.Documento.Checksum;
                            allegatiNuoviAry[i].FileId = checksum;

                            byte[] body = null;
                            var fileExtension = string.Empty;
                            var fileName = string.Empty;

                            if (tipo != TipoMessaggio.Manuale && (allegatiNuoviAry[i].FileExtension == ".doc" || allegatiNuoviAry[i].FileExtension == ".docx" || allegatiNuoviAry[i].FileExtension == ".rtf"))
                            {
                                try
                                {
                                    var doc = new Document(new MemoryStream(allegatiNuovi[i].Body));
                                    var pdfStream = new MemoryStream();
                                    doc.Save(pdfStream, SaveFormat.Pdf);
                                    body = pdfStream.ToArray();
                                    fileExtension = ".pdf";

                                    fileName = allegatiNuoviAry[i].FileName;
                                }
                                catch (Exception ex)
                                {
                                    _log.WarnFormat("Errore nella conversione del file in pdf - {0} - fileName:{1} - fileExtension:{2} - fileId:{3}", ex, Utility.GetMethodDescription(), allegatiNuoviAry[i].FileName, allegatiNuoviAry[i].FileExtension, allegatiNuoviAry[i].FileId);
                                }
                            }

                            // Se la conversione non è stata eseguita o è fallita prendo il file originale
                            if (body == null)
                            {
                                body = allegatiNuovi[i].Body;
                                fileExtension = allegatiNuovi[i].FileExtension;
                                fileName = allegatiNuovi[i].FileName;
                            }

                            var index = fileName.LastIndexOf(".");
                            if (index > -1)
                                fileName = fileName.Substring(0, index);

                            var documento = new DocumentInfo { Body = body, FileId = checksum, FileName = fileName, FileExtension = fileExtension };
                            allegatiMessaggio.Insert(0, documento);
                        }

                    }

                    // =========================================================================================
                    // Per ogni persona invio il messaggio
                    // =========================================================================================
                    foreach (var personaMessaggio in persone)
                    {
                        var allegatiInvio = allegatiMessaggio.ToList();
                        var persona = daoFactory.GetPersonaDao().Find(personaMessaggio.ID, false);
                        if (persona != null)
                        {
                            parametri.IdPersonaAttiva = persona.ID;
                            parametri.Importo = personaMessaggio.Importo;
                            if(idCondominio != null)
                                parametri.IdCondominio = idCondominio.Value;

                            var contattiCollection = new ContattoCollection(persona.Contatti);
                            var contattoFax = contattiCollection.GetFirstContatto<Fax>();
                            if (contattoFax != null)
                                parametri.FaxDestinatario = contattoFax.Valore;

                            var messaggioPrincipale = personaMessaggio.TestoMessaggio;
                            parametri.Body = messaggioPrincipale;
                            switch (tipo)
                            {
                                case TipoMessaggio.Fax:
                                case TipoMessaggio.Lettera:
                                case TipoMessaggio.Email:
                                case TipoMessaggio.Manuale:

                                    // ----------------------------------------------------------------
                                    //  Modello RTF stampa unione
                                    // ----------------------------------------------------------------
                                    if(modello != null)
                                    {
                                        var documentoStampaUnione = modelloLetteraService.GetLetteraCompilata(idModello.GetValueOrDefault(), parametri);

                                        // Salvo il documento nel file system
                                        var documentMessage = getDocumentService().SaveDocument(documentoStampaUnione.Body, documentoStampaUnione.FileName + documentoStampaUnione.FileExtension, documentoStampaUnione.FileExtension, null, _info.Azienda);
                                        if (documentMessage.Documento != null)
                                        {
                                            var checksumModello = documentMessage.Documento.Checksum;
                                            documentoStampaUnione.FileId = checksumModello;
                                            allegatiInvio.Insert(0, documentoStampaUnione);
                                        }
                                    }

                                    // ----------------------------------------------------------------
                                    //  Documento principale (es. lettera di sollecito, subentro ecc...)
                                    // ----------------------------------------------------------------
                                    if (personaMessaggio.DocumentoMessaggio != null)
                                    {
                                        // Salvo il documento nel file system
                                        var documentMessage = getDocumentService().SaveDocument(personaMessaggio.DocumentoMessaggio, personaMessaggio.NomeMessaggio + ".pdf", ".pdf", null, _info.Azienda);
                                        if (documentMessage.Documento != null)
                                        {
                                            var checksumFax = documentMessage.Documento.Checksum;
                                            allegatiInvio.Insert(0, new DocumentInfo(personaMessaggio.DocumentoMessaggio, checksumFax, personaMessaggio.NomeMessaggio, ".pdf") { Length = personaMessaggio.DocumentoMessaggio.Length });
                                        }
                                    }
                                    break;
                            }

                            var destinatari = personaService.GetContattiSelezionatiByTipo(persone.Where(item => item.ID == persona.ID).ToList(), tipo);

                            if (service != null)
                                result.AddRange(service.InvioMessaggio(azienda, personaMessaggio, condominio, parametri.IdUnitaImmobiliare, parametri.IdFornitore, parametri.IdResponsabile, parametri.IdIncaricatoAttivita, motivoMessaggio, personaMessaggio.OggettoMessaggio, messaggioPrincipale, destinatari, mittente, emailRapportino, allegatiInvio, parametriInvioLettera));
                        }
                    }

                    if (parametriInvioLettera.AccodaMessaggio || parametriInvioLettera.ApriFileGenerato)
                    {
                        var zipFile = service.FinalizzaMessaggio(parametri.Oggetto, parametriInvioLettera.AccodaMessaggio, azienda);
                        if (parametriInvioLettera.ApriFileGenerato)
                            messaggioInviato = zipFile;
                    }
                }
                else
                    result.Add(new RisultatoInvioMessaggio(string.Empty, null, false, "Non è presente nessun destinatario", new DocumentInfo()));

                // ========================================
                // Aggiorno i contatti
                // ========================================
                if (aggiornaContatti)
                {
                    var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
                    foreach (var personaMessaggio in persone)
                    {
                        var persona = daoFactory.GetPersonaDao().Find(personaMessaggio.ID, false);
                        if (persona != null)
                        {
                            var contattoRepository = new ContattoRepository(persona, _info, _windsorRepository);
                            foreach (var contattoDTO in personaMessaggio.Contatti)
                            {
                                contattoDTO.Stato = "U";
                                contattoRepository.ManageDomainEntity(contattoDTO, true);
                            }
                        }
                    }
                }

                return new RisultatoInvioMessaggioAllegati(result, null, messaggioInviato);
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore durante l'invio del messaggio - {0} - idAzienda:{1}", ex, Utility.GetMethodDescription(), azienda);
                throw;
            }
        }
Exemplo n.º 27
0
 public IList<InfoSpedizioneMessaggioDTO> GetInfoMessaggio(IList<int> messaggi, TipoMessaggio tipo, UserInfo userinfo)
 {
     var windsorRep = new WindsorConfigRepository();
     try
     {
         windsorRep.BeginTransaction(userinfo);
         var rep = new MessaggioRepository(userinfo, windsorRep);
         var item = rep.GetInfoMessaggio(messaggi, tipo, userinfo.Azienda);
         windsorRep.Commit();
         return item;
     }
     catch (Exception ex)
     {
         
         _log.ErrorFormat("Errore insaspettato durante la lettura delle informazioni di invio dei messaggi - {0} - messaggi:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), messaggi.Aggregate(string.Empty, (current, id) => current + (id + ", ")), userinfo.Azienda);
         windsorRep.Rollback();
         throw;
     }
 }
Exemplo n.º 28
0
        public IList<string> GetContattiSelezionatiByTipo(IList<PersonaMessaggioDTO> persone, TipoMessaggio tipo)
        {
            try
            {
                var destinatari = new List<string>();
                if (persone != null)
                {
                    foreach (var personaMessaggio in persone)
                    {
                        try
                        {
                            var id = personaMessaggio.ID;
                            var contattiSelezionati = personaMessaggio.Contatti;
                            if (tipo != TipoMessaggio.Lettera && tipo != TipoMessaggio.Manuale && contattiSelezionati.Count > 0)
                            {
                                var contatti = contattiSelezionati.Where(item => item.SelectColumn && getTipoMessaggio(item.TipoContatto) == tipo).Select(contattoDTO => contattoDTO.Valore);
                                destinatari.AddRange(contatti.Where(contatto => !string.IsNullOrEmpty(contatto)));
                            }
                            else
                            {
                                var persona = _daoFactory.GetPersonaDao().Find(id, false);
                                if (persona?.Contatti != null)
                                {
                                    switch (tipo)
                                    {
                                        case TipoMessaggio.Fax:
                                            var contatti = persona.Contatti.Where(item => item.Tipo == TipoContattoEnum.Fax && item.Predefinito);
                                            foreach (var contatto in contatti)
                                                destinatari.Add(contatto.Valore);
                                            break;

                                        case TipoMessaggio.Sms:
                                            contatti = persona.Contatti.Where(item => item.Tipo == TipoContattoEnum.Cellulare && item.Predefinito);
                                            foreach (var contatto in contatti)
                                                destinatari.Add(contatto.Valore);
                                            break;

                                        case TipoMessaggio.Email:
                                            contatti = persona.Contatti.Where(item => (item.Tipo == TipoContattoEnum.Email || item.Tipo == TipoContattoEnum.EmailCertificata) && item.Predefinito);
                                            foreach (var contatto in contatti)
                                                destinatari.Add(contatto.Valore);
                                            break;

                                        case TipoMessaggio.Manuale:
                                            destinatari.Add(personaMessaggio.TipoIndirizzo.ToString());
                                            break;

                                        case TipoMessaggio.Lettera:
                                            var indirizzo = persona.IndirizzoResidenza;
                                            if (personaMessaggio.TipoIndirizzo == TipoIndirizzo.Recapito && persona.Recapito != null)
                                                indirizzo = persona.Recapito;

                                            var ragioneSociale = string.Empty;
                                            var nome = string.Empty;
                                            var cognome = string.Empty;
                                            if (!string.IsNullOrEmpty(persona.RagioneSociale))
                                                ragioneSociale = persona.RagioneSociale;
                                            if (!string.IsNullOrEmpty(persona.Nome))
                                                nome = persona.Nome;
                                            if (!string.IsNullOrEmpty(persona.Cognome))
                                                cognome = persona.Cognome;

                                            var indirizzoPersona = string.Empty;
                                            var civicoPersona = string.Empty;
                                            var comunePersona = string.Empty;
                                            var provinciaPersona = string.Empty;
                                            var capPersona = string.Empty;
                                            if (indirizzo != null)
                                            {
                                                indirizzoPersona = indirizzo.Indirizzo;
                                                civicoPersona = indirizzo.Civico;
                                                capPersona = indirizzo.Cap;
                                                if (indirizzo.Comune != null)
                                                {
                                                    comunePersona = indirizzo.Comune.Descrizione;
                                                    if(indirizzo.Comune.ProvinciaAppartenenza != null)
                                                        provinciaPersona = indirizzo.Comune.ProvinciaAppartenenza.Codice;
                                                }
                                            }

                                            var destinatario = $"{ragioneSociale}¥{nome}¥{cognome}¥{indirizzoPersona} {civicoPersona}¥{comunePersona}¥{provinciaPersona}¥{capPersona}¥{"ITALIA"}";
                                            destinatari.Add(destinatario);
                                            break;
                                    }

                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            _log.ErrorFormat("Errore inaspettato durante la lettura dei contatti destinatari - SINGOLA PERSONA - {0} - idPersona:{1} - tipo:{2}", ex, Library.Utility.GetMethodDescription(), personaMessaggio.ID, tipo);
                            throw;
                        }
                    }
                }

                return destinatari;
            }
            catch(Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato durante la lettura dei contatti destinatari - {0} - tipo:{1}", ex, Library.Utility.GetMethodDescription(), tipo);
                throw;
            }
        }
Exemplo n.º 29
0
        public IList<InfoSpedizioneMessaggioDTO> GetInfoMessaggio(IList<int> messaggi, TipoMessaggio tipo, int azienda)
        {
            try
            {
                IMessageService service = null;
                switch (tipo)
                {
                    case TipoMessaggio.Fax:
                        service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.fax");
                        break;
                    case TipoMessaggio.Email:
                        service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.email");
                        break;
                    case TipoMessaggio.Sms:
                        service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.sms");
                        break;
                    case TipoMessaggio.Lettera:
                        service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.lettera");
                        break;
                }

                return service != null ? service.GetInfoMessaggio(azienda, messaggi) : new List<InfoSpedizioneMessaggioDTO>();
            }
            catch (Exception ex)
            {
                
                _log.Error(string.Format("Errore insaspettato durante la lettura delle informazioni di invio dei messaggi - {0} - messaggi:{1} - azienda:{2}", Utility.GetMethodDescription(), messaggi.Aggregate(string.Empty, (current, id) => current + (id + ", ")), azienda), ex);
                throw;
            }
        }
Exemplo n.º 30
0
        public RisultatoInvioMessaggioAllegati InvioMessaggioPersone(MotivoMessaggio motivoMessaggio, string oggetto, string messaggio, IList<PersonaMessaggioDTO> persone, Dictionary<int, BindingList<ContattoDTO>> contatti, string mittente, string emailRapportino, IList<DocumentoMessaggioDTO> allegati, IList<DocumentInfo> allegatiNuovi, TipoMessaggio tipo, int? idModello, ParametriStampaUnione parametri, ParametriInvioLettera parametriInvioLettera, bool aggiornaContatti, int? idCondominio, int azienda)
        {
            try
            {
                var result = new List<RisultatoInvioMessaggio>();
                var allegatiResult = new List<DocumentInfo>();
                var messaggioInviato = new DocumentInfo();
                if (persone.Count > 0)
                {
                    var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
                    var archiviazioneService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IArchiviazioneOtticaService>();
                    var converter = _windsorRepository.GetContainer(_info.Azienda).Resolve<IConverter>();

                    Condominio condominio = null;
                    if (idCondominio > 0)
                        condominio = daoFactory.GetCondominioDao().Find(idCondominio.GetValueOrDefault(), false);

                    IMessageService service = null;

                    switch (tipo)
                    {
                        case TipoMessaggio.Fax:
                            service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.fax");
                            break;
                        case TipoMessaggio.Email:
                            service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.email");
                            break;
                        case TipoMessaggio.Sms:
                            service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.sms");
                            break;
                        case TipoMessaggio.Lettera:
                            service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.lettera");
                            break;
                        case TipoMessaggio.Manuale:
                            service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.manuale");
                            break;
                    }

                    var personaService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IPersonaService>();

                    ModelloLettera modello = null;
                    if (idModello != null)
                        modello = daoFactory.GetModelloLetteraDao().GetById(idModello.Value, false);

                    // =========================================================================================
                    // Allegati
                    // =========================================================================================
                    var allegatiMessaggio = new List<DocumentInfo>(allegati.Count() + 1);
                    var documentoRepository = new DocumentoRepository(_info, _windsorRepository);
                    foreach (var idDocumento in allegati)
                    {
                        Documento documento = null;
                        if(idDocumento.Id != null)
                            documento = daoFactory.GetDocumentoDao().Find(idDocumento.Id.Value, false);
                        if (documento != null)
                        {
                            var tipoDocumento = TipoDocumentoArchiviazione.Contratto;
                            if (documento.SpesaRiferimento != null)
                                tipoDocumento = TipoDocumentoArchiviazione.FatturaPassiva;
                            var docInfo = documentoRepository.GetDocumentInfo(idDocumento.Id.Value, tipoDocumento);

                            if (docInfo.Body != null)
                            {
                                allegatiMessaggio.Add(docInfo);
                                allegatiResult.Add(docInfo);
                            }
                            else
                                _log.ErrorFormat("Tentativo di allegare documento vuoto - {0} - documento:{1}", Utility.GetMethodDescription(), documento.ID);
                        }
                        else if(documento == null && idDocumento.IdSpesa != null)
                        {
                            var spesa = daoFactory.GetSpesaDao().Find(idDocumento.IdSpesa.Value, false);
                            var identificativoArchiviazione = archiviazioneService.GetIdentificativoArchiviazione(spesa, false);
                            var docInfo = documentoRepository.GetDocumentBody(identificativoArchiviazione, TipoDocumentoArchiviazione.FatturaPassiva);
                            if (docInfo.Body != null)
                                allegatiMessaggio.Add(docInfo);
                            else
                                _log.ErrorFormat("Tentativo di allegare documento vuoto - {0} - spesa:{1}", Utility.GetMethodDescription(), idDocumento.IdSpesa);
                        }
                    }

                    // =========================================================================================
                    // Allegati Nuovi
                    // =========================================================================================
                    var allegatiNuoviAry = allegatiNuovi.ToArray();
                    for (var i = 0; i < allegatiNuoviAry.Length; i++)
                    {
                        if (string.IsNullOrEmpty(allegatiNuoviAry[i].BodyText))
                        {
                            var allegatiElaborati = elaboraAllegato(allegatiNuoviAry[i], null, parametri, tipo, converter, azienda);
                            if (allegatiElaborati != null)
                            {
                                allegatiMessaggio.Add(allegatiElaborati.Value.AllegatoDaInviare);
                                allegatiResult.Add(allegatiElaborati.Value.AllegatoResult);
                            }
                        }
                    }

                    // =========================================================================================
                    //  Non è presente nessuna stampa unione
                    // =========================================================================================
                    if ((modello == null || !modello.StampaUnione) && !isStampaUnione(oggetto, messaggio))
                    {
                        if (modello != null && (tipo == TipoMessaggio.Fax || tipo == TipoMessaggio.Lettera || tipo == TipoMessaggio.Manuale || tipo == TipoMessaggio.Email))
                        {
                            var modelloLetteraService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IModelloLetteraService>();
                            var documento = modelloLetteraService.GetLettera(idModello.Value);
                            documento.FileName = "Documento Allegato";

                            if (tipo != TipoMessaggio.Manuale)
                            {
                                var doc = new Document(new MemoryStream(documento.Body));
                                var pdfStream = new MemoryStream();
                                doc.Save(pdfStream, SaveFormat.Pdf);
                                documento.Body = pdfStream.ToArray();
                                documento.FileExtension = ".pdf";
                            }

                            allegatiMessaggio.Insert(0, documento);
                            allegatiResult.Add(documento);
                        }

                        IList<PersonaMessaggioDTO> personeMessaggio = new List<PersonaMessaggioDTO>();
                        foreach (var personaMessaggio in persone)
                        {
                            IList<ContattoDTO> contattiPersona = new List<ContattoDTO>();
                            if (contatti.ContainsKey(personaMessaggio.ID))
                                contattiPersona = contatti[personaMessaggio.ID];
                            personaMessaggio.Contatti = contattiPersona;
                            personeMessaggio.Add(personaMessaggio);
                        }
                        var destinatari = personaService.GetContattiSelezionatiByTipo(personeMessaggio, tipo);
                        if (destinatari.Count > 0)
                        {
                            if (service != null)
                            {
                                var risultatoInvio = service.InvioMessaggio(azienda, null, null, parametri.IdUnitaImmobiliare, parametri.IdFornitore, parametri.IdResponsabile, parametri.IdIncaricatoAttivita, motivoMessaggio, oggetto, messaggio, destinatari, mittente, emailRapportino, allegatiMessaggio, parametriInvioLettera).ToArray();
   
                                // In questo caso lo storico deve essere creato ora per ogni persona
                                foreach (var personaMessaggio in persone)
                                {
                                    var persona = daoFactory.GetPersonaDao().Find(personaMessaggio.ID, false);
                                    if (persona != null)
                                    {
                                        var storicoMessaggio = getMessaggisticaService().StoricizzaMessaggio(persona, condominio, risultatoInvio[0], motivoMessaggio, oggetto, messaggio, destinatari, mittente, emailRapportino, allegatiMessaggio, tipo);
                                        if (storicoMessaggio != null)
                                        {
                                            for (var i = 0; i < risultatoInvio.Length; i++)
                                                risultatoInvio[i].IdMessaggio = storicoMessaggio.ID;
                                        }
                                    }
                                }

                                if (parametriInvioLettera.AccodaMessaggio || parametriInvioLettera.ApriFileGenerato)
                                {
                                    var zipFile = service.FinalizzaMessaggio(oggetto, parametriInvioLettera.AccodaMessaggio, azienda);
                                    if (parametriInvioLettera.ApriFileGenerato)
                                        messaggioInviato = zipFile;
                                }

                                result.AddRange(risultatoInvio);
                            }
                        }
                        else
                            result.Add(new RisultatoInvioMessaggio(string.Empty, null, false, "Non è presente nessun destinatario", new DocumentInfo()));
                    }

                    // =========================================================================================
                    //  E' presente stampa unione con modello oppure direttamente nel testo
                    // =========================================================================================
                    else
                    {
                        Delivery delivery = null;
                        foreach (var personaMessaggio in persone)
                        {
                            var allegatiInvio = allegatiMessaggio.ToList();

                            var persona = daoFactory.GetPersonaDao().Find(personaMessaggio.ID, false);

                            if (persona != null)
                            {

                                var modelloLetteraService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IModelloLetteraService>();
                                parametri.IdPersonaAttiva = personaMessaggio.ID;
                                parametri.Importo = personaMessaggio.Importo;
                                parametri.IdUnitaImmobiliare = personaMessaggio.IdUnitaImmobiliare;
                                if (idCondominio != null)
                                    parametri.IdCondominio = idCondominio.Value;
                                
                                var faxDestinatario = string.Empty;
                                if (tipo == TipoMessaggio.Fax && contatti.ContainsKey(persona.ID) && contatti[persona.ID].Count > 0)
                                    faxDestinatario = contatti[persona.ID].FirstOrDefault().Valore;
                                if (string.IsNullOrEmpty(faxDestinatario))
                                {
                                    var contattiCollection = new ContattoCollection(persona.Contatti);
                                    var contattoFax = contattiCollection.GetFirstContatto<Fax>();
                                    if (contattoFax != null)
                                        faxDestinatario = contattoFax.Valore;
                                }
                                parametri.FaxDestinatario = faxDestinatario;

                                // Se è definita una persona da contattare nella stampa unione deve essere usata quest'ultima
                                var idPersonaStampaUnione = persona.ID;
                                if (parametri.IdPersonaRichiedente != null)
                                    idPersonaStampaUnione = parametri.IdPersonaRichiedente.GetValueOrDefault();
                                var parametriStampaUnione = new ParametriStampaUnione(idPersonaStampaUnione, parametri.IdUnitaImmobiliare, parametri.IdResponsabile, parametri.IdIncaricatoAttivita, parametri.IdFornitore, idCondominio, null, personaMessaggio.TipoIndirizzo, personaMessaggio.Importo, null, null, null, parametri.TelefonoDaContattare, null, null, null, null, null, parametri.IdPersonaRichiedente, null, null, parametri.Descrizione, null, null, null, null, null, null) { IdAssemblea = parametri.IdAssemblea };
                                var messaggioPrincipale = getMessaggisticaService().ApplicaStampaUnione(messaggio, parametriStampaUnione, _info.Azienda);
                                var oggettoPrincipale = getMessaggisticaService().ApplicaStampaUnione(oggetto, parametriStampaUnione, _info.Azienda);

                                parametri.Oggetto = oggettoPrincipale;
                                parametri.TipoIndirizzo = personaMessaggio.TipoIndirizzo;

                                // ------------------------------------------------------------------------
                                //allegatiInvio
                                //devo processare gli allegati nuovi che hanno bodytext non nullo
                                //questi doc possono avere tag di stampa unione per persona
                                // =========================================================================================
                                // Allegati Nuovi
                                // =========================================================================================
                                allegatiNuoviAry = allegatiNuovi.ToArray();
                                for (var i = 0; i < allegatiNuoviAry.Length; i++)
                                {
                                    if (!string.IsNullOrEmpty(allegatiNuoviAry[i].BodyText))
                                    {
                                        var allegatiElaborati = elaboraAllegato(allegatiNuoviAry[i], persona, parametri, tipo, converter, azienda);
                                        if (allegatiElaborati != null)
                                        {
                                            allegatiInvio.Insert(0, allegatiElaborati.Value.AllegatoDaInviare);
                                            allegatiResult.Add(allegatiElaborati.Value.AllegatoResult);
                                        }
                                    }
                                }
                                // ------------------------------------------------------------------------


                                // ------------------------------------------------------------------------
                                //  Modello allegato presente
                                // ------------------------------------------------------------------------
                                if (idModello != null)
                                {
                                    var documentoStampaUnione = modelloLetteraService.GetLetteraCompilata(idModello.Value, parametri);

                                    switch (tipo)
                                    {
                                        case TipoMessaggio.Fax:
                                        case TipoMessaggio.Lettera:
                                        case TipoMessaggio.Email:
                                        case TipoMessaggio.Manuale:

                                            // Se l'invio è manuale con generazione creazione un unico file PDF non deve essere creato un nuovo documento con il modello selezionato
                                            var checkSumDocumento = string.Empty;
                                            if(tipo != TipoMessaggio.Manuale || parametriInvioLettera.Aggregazione == AggregazioneDocumentiEnum.DocumentiSeparati)
                                            {
                                                var documentMessage = getDocumentService().SaveDocument(documentoStampaUnione.Body, documentoStampaUnione.FileName, ".rtf", null, _info.Azienda);
                                                if(documentMessage.Documento != null)
                                                    checkSumDocumento = documentMessage.Documento.Checksum;
                                            }
                                            else if (documentoStampaUnione.Body != null)
                                                checkSumDocumento = Utility.GetFileChecksum(documentoStampaUnione.Body);

                                            if (!string.IsNullOrEmpty(checkSumDocumento))
                                            {
                                                var body = documentoStampaUnione.Body;
                                                var fileExtension = documentoStampaUnione.FileExtension;
                                                if (tipo != TipoMessaggio.Manuale)
                                                {
                                                    var doc = new Document(new MemoryStream(documentoStampaUnione.Body));
                                                    var pdfStream = new MemoryStream();
                                                    doc.Save(pdfStream, SaveFormat.Pdf);
                                                    body = pdfStream.ToArray();
                                                    fileExtension = ".pdf";
                                                }
                                                var documento = new DocumentInfo { Body = body, FileId = checkSumDocumento, FileName = checkSumDocumento, FileExtension = fileExtension };
                                                allegatiInvio.Insert(0, documento);

                                                if (tipo != TipoMessaggio.Manuale || !parametriInvioLettera.ApriFileGenerato)
                                                    allegatiResult.Add(documento);
                                            }

                                            break;
                                    }
                                }

                                IList<ContattoDTO> contattiPersona = new List<ContattoDTO>();
                                if (contatti.ContainsKey(personaMessaggio.ID))
                                    contattiPersona = contatti[personaMessaggio.ID];
                                var personeMessaggio = new List<PersonaMessaggioDTO>(1) { new PersonaMessaggioDTO { ID = personaMessaggio.ID, Contatti = contattiPersona,  } };
                                var destinatari = personaService.GetContattiSelezionatiByTipo(personeMessaggio, tipo);

                                if (service != null)
                                {
                                    int? idDelivery = null;
                                    if (delivery != null)
                                        idDelivery = delivery.Id;

                                    var resultMessage = service.InvioMessaggio(azienda, new PersonaMessaggioDTO {ID = persona.ID, IdDelivery = idDelivery}, condominio, parametri.IdUnitaImmobiliare, parametri.IdFornitore, parametri.IdResponsabile, parametri.IdIncaricatoAttivita, motivoMessaggio, oggettoPrincipale, messaggioPrincipale, destinatari, mittente, emailRapportino, allegatiInvio, parametriInvioLettera);

                                    if (resultMessage.Count > 0)
                                    {
                                        delivery = daoFactory.GetDeliveryPoDao().Find(resultMessage[0].IdDelivery, false);
                                        result.AddRange(resultMessage);
                                    }
                                                                        
                                }
                            }
                        }

                        if (parametriInvioLettera.AccodaMessaggio || parametriInvioLettera.ApriFileGenerato)
                        {
                            var zipFile = service.FinalizzaMessaggio(oggetto, parametriInvioLettera.AccodaMessaggio, azienda);
                            if (parametriInvioLettera.ApriFileGenerato)
                                messaggioInviato = zipFile;
                        }
                    }
                }
                else
                    result.Add(new RisultatoInvioMessaggio(string.Empty, null, false, "Non è presente nessun destinatario", new DocumentInfo()));

                // ========================================
                // Aggiorno i contatti
                // ========================================
                if(aggiornaContatti)
                {
                    var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
                    foreach (var kvp in contatti)
                    {
                        var persona = daoFactory.GetPersonaDao().Find(kvp.Key, false);
                        if(persona != null)
                        {
                            var contattoRepository = new ContattoRepository(persona, _info, _windsorRepository);
                            foreach (var contattoDTO in kvp.Value)
                            {
                                var contatto = persona.Contatti.FirstOrDefault(item => item.Valore == contattoDTO.Valore);
                                if (contatto != null)
                                    contattoDTO.ID = contatto.ID;

                                contattoDTO.Stato = "U";
                                contattoRepository.ManageDomainEntity(contattoDTO, true);
                            }
                        }
                    }
                }

                return new RisultatoInvioMessaggioAllegati(result, allegatiResult, messaggioInviato);
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore durante l'invio del messaggio - {0} - idAzienda:{1} - oggetto:{2}", ex, Utility.GetMethodDescription(), azienda, oggetto);
                throw;
            }
        }
Exemplo n.º 31
0
        public void SelectContatto(TipoMessaggio tipo)
        {
            foreach (var row in lista.Rows)
            {
                if(row.Cells.Exists("SelectColumn"))
                    row.Cells["SelectColumn"].Value = false;
            }

            foreach (var row in lista.Rows)
            {
                if (row.ListObject is ContattoDTO && row.Cells.Exists("SelectColumn"))
                {
                    var contatto = (ContattoDTO)row.ListObject;
                    if (tipo == getTipoContatto(contatto))
                    {
                        row.Cells["SelectColumn"].Value = true;
                        return;
                    }
                }
            }
        }