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); }
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(); }
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; }
/// <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); }
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; } }
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; } }
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; } }
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; }
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; }
public void SetTipoMessaggio(TipoMessaggio newTipoMessaggio) { tipoMessaggio.Text = newTipoMessaggio.ToString(); }
public void SetTipoMessaggio(TipoMessaggio newTipoMessaggio) { if(_control != null) _control.SetTipoMessaggio(newTipoMessaggio); }
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; } }
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; }
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; } }
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; } }
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; } }
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; }
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; }
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; }
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; }
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; }
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; } }
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; } }
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; } }
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; } }
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; } }
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; } }
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; } } } }