public UserControl GetControl(string contattoMittente, ParametriStampaUnione parametriLettera, bool sceltaModello, bool showSceltaModello = true, bool modelloRequiredMail = false) { _control = new TestoMessaggioUC(contattoMittente, parametriLettera, sceltaModello, _manageDocumentService, _modelloLettera, showSceltaModello, modelloRequiredMail); _control.ConfirmCancel -= _control_ConfirmCancel; _control.ConfirmCancel += _control_ConfirmCancel; _control.TipoMessaggioChanged -= _control_TipoMessaggioChanged; _control.TipoMessaggioChanged += _control_TipoMessaggioChanged; return _control; }
public InviaVerbaleUC(AssembleaDTO assemblea, CondominioDTO condominio, EsercizioDTO esercizio, Verbali verbale) { InitializeComponent(); _assemblea = assemblea; _condominio = condominio; _verbale = verbale; // Tipo Assemblea DataSourceHelper.PopulateCombo<string, string>(cboInviaA, Conversione.EnumToList<InviaVerbaleA>()); _mittenteLettera = getAziendaService().GetAzienda().MittenteEmailAzienda; _parametriLettera = new ParametriStampaUnione { IdCondominio = _condominio.ID, IdPersonaRichiedente = null, //occhio...controllare che cosa ci va qua... DataAttiva = DateTime.Now, ContattiDestinatario = "", Identificativo = "", IdAssemblea = _assemblea.ID, Body = "", ParametriAggiuntiviLettera = new ParametriAggiuntiviCompilazioneLettera { BodyFormat = "RTF", TipiMessaggioConsentiti = new List<TipoMessaggio>() {TipoMessaggio.Email, TipoMessaggio.Fax, TipoMessaggio.Lettera, TipoMessaggio.Manuale}, TipoLettera = TipoModelloLetteraEnum.Assemblea } }; _testoMessaggio = getTestoMessaggioUIService().GetControl(_mittenteLettera, _parametriLettera, false, false, true); getTestoMessaggioUIService().SetConfermaCaption("Invia"); getTestoMessaggioUIService().ConfirmCancel += letteraUC_OnConfirmCancel; getTestoMessaggioUIService().TipoMessaggioChanged += letteraUC_OnTipoMessaggioChanged; getTestoMessaggioUIService().SetAmbito(MergeFieldType.Assemblea); splitContainer1.Panel2.Controls.Add(_testoMessaggio); _testoMessaggio.Dock = DockStyle.Fill; var oDoc = new DocumentInfo(); oDoc.FileExtension = "pdf"; oDoc.FileName = "Verbale assemblea"; //var oParametri = new ParametriStampaUnione { IdAssemblea = _assemblea.ID, IdCondominio = _condominio.ID }; string sVerbale=""; switch (_verbale){ case Verbali.PrimaConvocazione: sVerbale = _assemblea.VerbalePrimaConvocazione; //getAssembleaService().MailMerge(_assemblea.VerbalePrimaConvocazione, _parametriLettera); break; case Verbali.SecondaConvocazione: sVerbale = _assemblea.VerbaleSecondaConvocazione; //getAssembleaService().MailMerge(_assemblea.VerbaleSecondaConvocazione, _parametriLettera); break; } oDoc.BodyText = sVerbale; getTestoMessaggioUIService().GetDocumentiNew().Add(oDoc); loadData(); }
public TestoMessaggioUC(string contattoMittente, ParametriStampaUnione parametriLettera, bool sceltaModello, IManageDocumentService manageDocumentService, IModelloLettera modelloLetteraService, bool showSceltaModello=true, bool modelloRequiredMail = false) { InitializeComponent(); _showSceltaModello = showSceltaModello; _sceltaModello = sceltaModello; _modelloRequiredMail = modelloRequiredMail; _manageDocumentService = manageDocumentService; _modelloLetteraService = modelloLetteraService; _contattoMittente = contattoMittente; _parametriLettera = parametriLettera; _idCondominio = parametriLettera.IdCondominio; if(parametriLettera.ParametriAggiuntiviLettera.TipoLettera != TipoModelloLetteraEnum.Undefined) _tipoLettera = parametriLettera.ParametriAggiuntiviLettera.TipoLettera; inizializza(); tipoMessaggio.ValueList = DataSourceHelper.GetValueList<TipoMessaggio>("tipoMessaggio"); if (parametriLettera.ParametriAggiuntiviLettera.TipiMessaggioConsentiti != null) { var oItemToRemove = new List<Infragistics.Win.ValueListItem>(); foreach (var valueItem in tipoMessaggio.ValueList.ValueListItems) { TipoMessaggio iValue; if (Enum.TryParse((string) valueItem.DataValue, true, out iValue)) { if (!parametriLettera.ParametriAggiuntiviLettera.TipiMessaggioConsentiti.Contains(iValue)) { oItemToRemove.Add(valueItem); } } } foreach (var valueItem in oItemToRemove) { tipoMessaggio.ValueList.ValueListItems.Remove(valueItem); } tipoMessaggio.Value = parametriLettera.ParametriAggiuntiviLettera.TipiMessaggioConsentiti.Contains(TipoMessaggio.Manuale) ? TipoMessaggio.Manuale : parametriLettera.ParametriAggiuntiviLettera.TipiMessaggioConsentiti.First(); } else { tipoMessaggio.Value = TipoMessaggio.Manuale; } emailRapportino.Text = _contattoMittente; oggetto.Text = _parametriLettera.Oggetto; modelloLetteraDTOBindingSource.DataSource = _modelloLetteraService.GetModelliLettera(new List<TipoModelloLetteraEnum> { _tipoLettera }); if (_sceltaModello) modelliLettera.SelectedIndex = 0; testoRich.LoadDocumento(_parametriLettera.IdCondominio, Conversione.ToStream(_parametriLettera.Body), parametriLettera.ParametriAggiuntiviLettera.BodyFormat); testoSemplice.LoadData(_parametriLettera.Body, true); }
public DocumentInfo GetLetteraCompilata(int idAzienda, string descrizione, ParametriStampaUnione parametri) { var testoLettera = parametri.Body; var azienda = _daoFactory.GetAziendaDao().GetById(idAzienda,false); if (descrizione == null) { descrizione = parametri.Descrizione; } return pGetLetteraCompilataBase(testoLettera, azienda, descrizione, parametri); }
public DocumentInfo GetLetteraCompilata(int idModello, ParametriStampaUnione parametri) { var modelloLettera = _daoFactory.GetModelloLetteraDao().GetById(idModello, false); var documento = _documentService.GetDocument(modelloLettera.Checksum, modelloLettera.Azienda.ID, TipoDocumentoArchiviazione.Contratto); if(documento.Body == null) return new DocumentInfo(string.Empty, modelloLettera.Checksum, modelloLettera.Descrizione, null); var testoLettera = Conversione.ToString(documento.Body); return pGetLetteraCompilataBase(testoLettera, modelloLettera.Azienda, modelloLettera.Descrizione, parametri); }
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 TestoMessaggioUI(string contattoMittente, ParametriStampaUnione parametriLettera, bool sceltaModello, IManageDocumentService manageDocumentService, IModelloLettera modelloLetteraService) { InitializeComponent(); _messaggioUC = new TestoMessaggioUC(contattoMittente, parametriLettera, sceltaModello, manageDocumentService, modelloLetteraService) { Dock = DockStyle.Fill }; Controls.Add(_messaggioUC); _messaggioUC.ConfirmCancel += _messaggioUC_ConfirmCancel; persistWindowComponent1.UserName = Login.Instance.CurrentLogin().LoginName; }
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; }
public string MailMergeRtfText(string rtfText, ParametriStampaUnione parametriStampaUnione) { try { var result = GetServiceClient().MailMergeRtfText(rtfText, parametriStampaUnione, GetUserInfo()); CloseService(); return result; } catch (OutOfMemoryException) { MessageBox.Show($"La memoria disponibile non è sufficiente per la stampa del logo.{Environment.NewLine}Si consiglia di caricare un logo di dimensioni minori"); return string.Empty; } }
private void btnInvioMessaggioClick(object sender, EventArgs e) { int? idCondominio = null; if (Condominio != null) idCondominio = Condominio.ID; var parameters = new ParametriStampaUnione { Oggetto = OggettoMessaggio, IdCondominio = idCondominio, Applicazione = MotivoMessaggio.ToString(), ParametriAggiuntiviLettera = new ParametriAggiuntiviCompilazioneLettera { TipoLettera = TipoModelloLetteraEnum.Messaggistica } }; if (getInvioMessaggioService().OpenDialogFormTestoMessaggio(null, parameters, null, new DocumentoFilter(), false) == DialogResult.Yes) { Execute("Messaggio", new AutomazioneParameters(null, getInvioMessaggioService().GetOggetto(), getInvioMessaggioService().GetTestoMessaggio())); var risultati = getPersonaService().InvioMessaggioPersonalizzato( Condominio, MotivoMessaggio, PersoneMessaggio, getInvioMessaggioService().GetMittente(), getInvioMessaggioService().GetEmailRapportino(), getInvioMessaggioService().GetDocumenti(), getInvioMessaggioService().GetDocumentiNew(), getInvioMessaggioService().GetTipoMessaggio(), getInvioMessaggioService().GetModelloLettera(), parameters, new ParametriInvioLettera { Asincrono = getInvioMessaggioService().GetInvioVeloce(), Tipo = getInvioMessaggioService().GetMessageType(), Colore = getInvioMessaggioService().GetColore(), FronteRetro = getInvioMessaggioService().GetFronteRetro(), PaginaIniziale = getInvioMessaggioService().GetPrimaPaginaMittente(), AccodaMessaggio = getInvioMessaggioService().GetAccodaMessaggio(), Aggregazione = getInvioMessaggioService().GetAggregazioneDocumenti(), FormatoDocumento = getInvioMessaggioService().GetFormatoDocumento(), ApriFileGenerato = getInvioMessaggioService().GetApriFile(), RinumeraPagine = getInvioMessaggioService().GetNumeraPagine() }, false); var invioRiuscito = true; var messaggioInvio = string.Empty; foreach (var risultato in risultati) { if (!risultato.InvioRiuscito) invioRiuscito = false; messaggioInvio += risultato.MessaggioInvio + Environment.NewLine; } ResultInvioMessaggio(invioRiuscito, messaggioInvio); } }
public TestoMessaggioPersoneUC(IList<PersonaContattoDTO> personeSelezionate, string contattoMittente, ParametriStampaUnione parametriLettera, bool sceltaModello, IManageDocumentService manageDocumentService, IModelloLettera modelloLetteraService) { InitializeComponent(); _testoMessaggioUC = new TestoMessaggioUC(contattoMittente, parametriLettera, sceltaModello, manageDocumentService, modelloLetteraService) { Dock = DockStyle.Fill, AutoScroll = true }; _testoMessaggioUC.ConfirmCancel += testoMessaggio_ConfirmCancel; splitContainer1.Panel2.Controls.Add(_testoMessaggioUC); _listaPersoneUC = new ListaPersoneUC(personeSelezionate) {Dock = DockStyle.Fill, AutoScroll = true}; splitContainer1.Panel1.Controls.Add(_listaPersoneUC); }
public InviaLetteraConvocazioneUC(AssembleaDTO assemblea, CondominioDTO condominio) { InitializeComponent(); _assemblea = assemblea; _condominio = condominio; var mittenteLettera = getAziendaService().GetAzienda().MittenteEmailAzienda; _parametriLettera = new ParametriStampaUnione { IdCondominio = _condominio.ID, IdPersonaRichiedente = null, //occhio...controllare che cosa ci va qua... DataAttiva = DateTime.Now, ContattiDestinatario = string.Empty, Identificativo = string.Empty, IdAssemblea = _assemblea.ID, Body = string.Empty, ParametriAggiuntiviLettera = new ParametriAggiuntiviCompilazioneLettera { BodyFormat = "RTF", TipiMessaggioConsentiti = new List<TipoMessaggio> {TipoMessaggio.Email, TipoMessaggio.Fax, TipoMessaggio.Lettera, TipoMessaggio.Manuale}, TipoLettera = TipoModelloLetteraEnum.Assemblea } }; var testoMessaggio = getTestoMessaggioUIService().GetControl(mittenteLettera, _parametriLettera, false, false, true); getTestoMessaggioUIService().SetConfermaCaption("Invia"); getTestoMessaggioUIService().ConfirmCancel += letteraUC_OnConfirmCancel; getTestoMessaggioUIService().TipoMessaggioChanged += letteraUC_OnTipoMessaggioChanged; getTestoMessaggioUIService().SetAmbito(MergeFieldType.Assemblea); splitContainer1.Panel2.Controls.Add(testoMessaggio); testoMessaggio.Dock = DockStyle.Fill; var oDoc = new DocumentInfo { FileExtension = "pdf", FileName = "Convocazione assemblea", BodyText = _assemblea.LetteraConvocazione }; getTestoMessaggioUIService().GetDocumentiNew().Add(oDoc); loadData(); // Tipo Assemblea DataSourceHelper.PopulateCombo(cboTipoContatto, Conversione.EnumToList<TipoModalitaConvocazione>()); cboTipoContatto_ValueChanged(null,null); }
private DocumentInfo pGetLetteraCompilataBase(string testoLettera, Azienda azienda, string descrizione, ParametriStampaUnione parametri) { var merge = _messaggisticaService.MailMerge(testoLettera, parametri, azienda.ID); if (string.IsNullOrEmpty(descrizione)) descrizione = string.Format("Documento {0:yyyy-dd-M--HH-mm-ss}", DateTime.Now); byte[] bytes = Conversione.ToByteArray(merge); return new DocumentInfo { Body = bytes, FileName = Conversione.ToFileName(descrizione), Length = bytes.Length, BodyText = Conversione.ToString(bytes), FileExtension = ".rtf" }; }
public DocumentInfo GetLetteraCompilata(int idModelloLettera, ParametriStampaUnione parametri) { try { var result = GetServiceClient().GetLetteraCompilata(idModelloLettera, parametri, GetUserInfo()); CloseService(); return result; } catch (OutOfMemoryException ex) { _log.WarnFormat("Errore di memoria - {0} - idModello:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda); MessageBox.Show("Il modello di lettera è troppo grande la memoria disponibile non è sufficiente per eseguire l'operazione"); return new DocumentInfo(); } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato - {0} - idModello:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda); MessageBox.Show($"La funzione non può essere eseguita.{Environment.NewLine}Si prega di riprovare"); return new DocumentInfo(); } }
private void letteraConvocazione_OnApplyModel(object sender, EventArgs e) { var parametri = new ParametriStampaUnione { IdCondominio = _condominio.ID, IdAssemblea = _assemblea.ID }; _letteraConvocazioneUC.LetteraConvocazione = getModelloLetteraService().MailMerge(_letteraConvocazioneUC.LetteraConvocazione, parametri); }
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 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 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 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 string ApplicaStampaUnione(string messaggio, ParametriStampaUnione parametriStampaUnione, int idAzienda) { try { if (!string.IsNullOrEmpty(messaggio)) { messaggio = messaggio.Replace(">>", string.Empty).Replace("<<", "$"); var persona = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdPersona.GetValueOrDefault(), false); if(persona == null && parametriStampaUnione.IdPersonaAttiva > 0) persona = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdPersonaAttiva.GetValueOrDefault(), false); var condominio = _daoFactory.GetCondominioDao().Find(parametriStampaUnione.IdCondominio.GetValueOrDefault(), false); var importo = parametriStampaUnione.Importo; var importoTotale = parametriStampaUnione.ImportoTotale; var tipoIndirizzo = parametriStampaUnione.TipoIndirizzo; DatiBancariCondomini datiBancari = null; if (parametriStampaUnione.IdDatiBancari > 0) { datiBancari = _daoFactory.GetDatiBancariCondominiDao().Find(parametriStampaUnione.IdDatiBancari.GetValueOrDefault(), false); if (condominio == null) condominio = datiBancari.CondominioRiferimento; } else if (condominio != null) datiBancari = condominio.DatiBancariPrincipale; //=============================================== // Azienda //=============================================== var amministratore = string.Empty; var codiceFiscaleAmministratore = string.Empty; var partitaIvaAmministratore = string.Empty; var azienda = _daoFactory.GetAziendaDao().GetById(idAzienda, false); if (azienda.Amministratore != null) { amministratore = azienda.Amministratore.PersonaRiferimento.DisplayName; codiceFiscaleAmministratore = azienda.Amministratore.PersonaRiferimento.CodiceFiscale; partitaIvaAmministratore = azienda.Amministratore.PersonaRiferimento.PartitaIva; } //=============================================== // Fornitore //=============================================== var fornitore = string.Empty; if (parametriStampaUnione.IdFornitore != null) { var forn = _daoFactory.GetFornitoreDao().Find(parametriStampaUnione.IdFornitore.GetValueOrDefault(), false); if (forn != null) { fornitore = forn.DisplayName; } } //=============================================== // Responsabile //=============================================== var responsabile = string.Empty; if (parametriStampaUnione.IdResponsabile != null) { var resp = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdResponsabile.GetValueOrDefault(), false); if (resp != null) { responsabile = resp.DisplayName; } } //=============================================== // Incaricato //=============================================== var incaricato = string.Empty; if (parametriStampaUnione.IdIncaricatoAttivita != null) { var inc = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdIncaricatoAttivita.GetValueOrDefault(), false); if (inc != null) { incaricato = inc.DisplayName; } } //=============================================== // Persona //=============================================== var nome = string.Empty; var cognome = string.Empty; var nominativo = string.Empty; var indirizzo = string.Empty; var cap = string.Empty; var comune = string.Empty; var provincia = string.Empty; var presso = string.Empty; var localita = string.Empty; var localitaCompleta = string.Empty; var ragioneSociale = string.Empty; var username = string.Empty; var password = string.Empty; if (persona != null) { if (!string.IsNullOrEmpty(persona.Nome)) nome = persona.Nome; if (!string.IsNullOrEmpty(persona.Cognome)) cognome = persona.Cognome; if (string.IsNullOrEmpty(cognome) && !string.IsNullOrEmpty(persona.RagioneSociale)) cognome = persona.RagioneSociale; if (!string.IsNullOrEmpty(persona.RagioneSociale)) ragioneSociale = persona.RagioneSociale; if (tipoIndirizzo == TipoIndirizzo.Residenza || persona.Recapito == null) { if (persona.IndirizzoResidenza != null) { cap = persona.IndirizzoResidenza.Cap; presso = persona.IndirizzoResidenza.Presso; indirizzo = persona.IndirizzoResidenza.GetIndirizzoCompleto(); if (persona.IndirizzoResidenza.Comune != null) { localita = persona.IndirizzoResidenza.Comune.Descrizione; comune = persona.IndirizzoResidenza.Comune.Descrizione; provincia = persona.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice; } if (!string.IsNullOrEmpty(persona.IndirizzoResidenza.Localita)) localitaCompleta = $"{persona.IndirizzoResidenza.Localita} - "; localitaCompleta += persona.IndirizzoResidenza.Cap; if (!string.IsNullOrEmpty(persona.IndirizzoResidenza.Localita)) localitaCompleta += " " + persona.IndirizzoResidenza.Localita + " - "; if (persona.IndirizzoResidenza.Comune != null) localitaCompleta += " " + persona.IndirizzoResidenza.Comune.Descrizione + " " + persona.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice; } } else if (persona.Recapito != null) { cap = persona.Recapito.Cap; presso = persona.Recapito.Presso; indirizzo = persona.Recapito.GetIndirizzoCompleto(); if (persona.Recapito.Comune != null) { localita = persona.Recapito.Comune.Descrizione; comune = persona.Recapito.Comune.Descrizione; provincia = persona.Recapito.Comune.ProvinciaAppartenenza.Codice; } if (!string.IsNullOrEmpty(persona.Recapito.Localita)) localitaCompleta = $"{persona.Recapito.Localita} - "; localitaCompleta += persona.Recapito.Cap; if (persona.Recapito.Comune != null) localitaCompleta += " " + persona.Recapito.Comune.Descrizione + " " + persona.Recapito.Comune.ProvinciaAppartenenza.Codice; } if (persona.DatiAutenticazione != null) { username = persona.DatiAutenticazione.Username; password = persona.DatiAutenticazione.Password; } if (!string.IsNullOrEmpty(presso)) presso = $"c/o {presso}"; } // =========================================== // Unità immobiliare // =========================================== var descrizioneUnitaImmobiliare = string.Empty; var pianoUnitaImmobiliare = string.Empty; var progressivoUnitaImmobiliare = string.Empty; var internoUnitaImmobiliare = string.Empty; var indirizzoUnitaImmobiliare = string.Empty; var gruppoStabile = string.Empty; var stabile = string.Empty; var tipoUnitaImmobiliare = string.Empty; if (parametriStampaUnione.IdUnitaImmobiliare == null && parametriStampaUnione.IdPersona != null && parametriStampaUnione.IdCondominio != null) { var soggetto = _daoFactory.GetSoggettoCondominioDao().GetByCondominioPersona(parametriStampaUnione.IdCondominio.Value, parametriStampaUnione.IdPersona.Value).FirstOrDefault(); if (soggetto != null) parametriStampaUnione.IdUnitaImmobiliare = soggetto.UnitaImmobiliare.ID; } if (parametriStampaUnione.IdUnitaImmobiliare != null) { var unitaImmobiliare = _daoFactory.GetUnitaImmobiliareDao().Find(parametriStampaUnione.IdUnitaImmobiliare.GetValueOrDefault(), false); if (unitaImmobiliare != null) { descrizioneUnitaImmobiliare = unitaImmobiliare.Descrizione; pianoUnitaImmobiliare = unitaImmobiliare.Piano; progressivoUnitaImmobiliare = unitaImmobiliare.Ordine.ToString(); internoUnitaImmobiliare = unitaImmobiliare.InternoCompleto; if(unitaImmobiliare.TipoUnitaImmobiliare != null) tipoUnitaImmobiliare = unitaImmobiliare.TipoUnitaImmobiliare.Descrizione; if (unitaImmobiliare.GruppoStabileRiferimento?.Indirizzo != null) indirizzoUnitaImmobiliare = unitaImmobiliare.GruppoStabileRiferimento.Indirizzo.DisplayNameArray.FirstOrDefault(); if (unitaImmobiliare.GruppoStabileRiferimento != null) { gruppoStabile = unitaImmobiliare.GruppoStabileRiferimento.Descrizione; stabile = unitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.Descrizione; } if (persona != null) { var soggettoCondominio = unitaImmobiliare.Soggetti.FirstOrDefault(item => item.Persona != null && item.Persona.ID == persona.ID); if (!string.IsNullOrEmpty(soggettoCondominio?.Descrizione)) nominativo = soggettoCondominio.Descrizione; } } } // =========================================== // Da Contattare // =========================================== var telefonoDaContattare = string.Empty; if (!string.IsNullOrEmpty(parametriStampaUnione.TelefonoDaContattare)) telefonoDaContattare = parametriStampaUnione.TelefonoDaContattare; // =========================================== // Attività // =========================================== var descrizione = string.Empty; var segnalatoreProblema = string.Empty; if (!string.IsNullOrEmpty(parametriStampaUnione.Descrizione)) descrizione = parametriStampaUnione.Descrizione; if (parametriStampaUnione.IdPersonaRichiedente != null) { var personaRichiedente = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdPersonaRichiedente.Value, false); if (personaRichiedente != null) { segnalatoreProblema = personaRichiedente.DisplayName; } } // =========================================== // Condominio // =========================================== var codiceCondominio = string.Empty; var descrizioneCondominio = string.Empty; var codiceFiscaleCondominio = string.Empty; var indirizzoCondominio = string.Empty; var localitaCondominio = string.Empty; var ibanCondominio = string.Empty; var contoCorrente = string.Empty; var cin = string.Empty; var abi = string.Empty; var cab = string.Empty; var banca = string.Empty; var capCondominio = string.Empty; var comuneCondominio = string.Empty; var provinciaCondominio = string.Empty; var foglioCatastale = string.Empty; var mappaleCatastale = string.Empty; var codiceCatastale = string.Empty; var responsabileCondominio = string.Empty; if (datiBancari != null) { contoCorrente = datiBancari.ContoCorrente; cin = datiBancari.Cin; abi = datiBancari.Abi; cab = datiBancari.Cab; ibanCondominio = datiBancari.Iban; var abiCab = _daoFactory.GetAbiCabDao().Find(new AbiCabId(abi, cab), false); banca = abiCab != null ? $"{abiCab.DescrizioneAbi} - {abiCab.DescrizioneCab}" : datiBancari.DisplayName; } if (condominio != null) { codiceCondominio = condominio.Codice; descrizioneCondominio = condominio.Descrizione; foglioCatastale = condominio.FoglioCatastale.ToString(); mappaleCatastale = condominio.MappaleCatastale.ToString(); if(condominio.Responsabile != null) responsabileCondominio = condominio.Responsabile.DisplayName; codiceFiscaleCondominio = condominio.CodiceFiscale; if (condominio.Indirizzo != null) { indirizzoCondominio = condominio.Indirizzo.GetIndirizzoCompleto(); capCondominio = condominio.Indirizzo.Cap; if (condominio.Indirizzo.Comune != null) { comuneCondominio = condominio.Indirizzo.Comune.Descrizione; localitaCondominio = condominio.Indirizzo.Comune.Descrizione; provinciaCondominio = condominio.Indirizzo.Comune.ProvinciaAppartenenza.Codice; codiceCatastale = condominio.Indirizzo.Comune.CodiceCatastale; } } } // =========================================== // Esercizio // =========================================== var esercizio = string.Empty; if (parametriStampaUnione.IdEsercizio != null) { var es = _daoFactory.GetEsercizioDao().Find(parametriStampaUnione.IdEsercizio.GetValueOrDefault(), false); esercizio = es.DisplayName; } // =========================================== // Importi // =========================================== var importoLettere = string.Empty; if (importo != null) importoLettere = Library.BusinessData.CifreLettere.CalcolaLettere(importo.Value); var importoTotaleLettere = string.Empty; if (importoTotale != null) importoTotaleLettere = Library.BusinessData.CifreLettere.CalcolaLettere(importoTotale.Value); // =========================================== // Date // =========================================== var dataIniziale = parametriStampaUnione.DataIniziale; var dataFinale = parametriStampaUnione.DataFinale; var anno = parametriStampaUnione.Anno; if (parametriStampaUnione.Anno != null) { if (dataIniziale == null) dataIniziale = new DateTime(parametriStampaUnione.Anno.GetValueOrDefault(), 1, 1); if (dataFinale == null) dataFinale = new DateTime(parametriStampaUnione.Anno.GetValueOrDefault(), 12, 31); } if (!string.IsNullOrEmpty(messaggio) && messaggio.Contains("$")) { var memoryEngine = NVelocityEngineFactory.CreateNVelocityMemoryEngine(true); System.Collections.IDictionary context = new System.Collections.Hashtable(); context.Add("nome", nome); context.Add("cognome", cognome); context.Add("ragioneSociale", ragioneSociale); context.Add("indirizzo", indirizzo); context.Add("presso", presso); context.Add("localita", localita); context.Add("localita-cap-citta-provincia", localitaCompleta); context.Add("cap", cap); context.Add("comune", comune); context.Add("pr", provincia); context.Add("descrizioneUnita", descrizioneUnitaImmobiliare); context.Add("piano", pianoUnitaImmobiliare); context.Add("interno", internoUnitaImmobiliare); context.Add("ordineUnita", progressivoUnitaImmobiliare); context.Add("tipoUnita", tipoUnitaImmobiliare); context.Add("indirizzoUnita", indirizzoUnitaImmobiliare); context.Add("scala", gruppoStabile); context.Add("stabile", stabile); context.Add("nominativo", nominativo); context.Add("amministratore", amministratore); context.Add("codiceFiscaleAmministratore", codiceFiscaleAmministratore); context.Add("partitaIvaAmministratore", partitaIvaAmministratore); context.Add("telefonoContattare", telefonoDaContattare); context.Add("respCond", responsabileCondominio); context.Add("fornitore", fornitore); context.Add("responsabile", responsabile); context.Add("incaricato", incaricato); context.Add("username", username); context.Add("password", password); context.Add("codiceCondominio", codiceCondominio); context.Add("condominio", descrizioneCondominio); context.Add("esercizio", esercizio); context.Add("iban", ibanCondominio); context.Add("contoCorrente", contoCorrente); context.Add("cin", cin); context.Add("abi", abi); context.Add("cab", cab); context.Add("banca", banca); context.Add("capCondominio", capCondominio); context.Add("comuneCondominio", comuneCondominio); context.Add("provinciaCondominio", provinciaCondominio); context.Add("foglioCatastale", foglioCatastale); context.Add("mappaleCatastale", mappaleCatastale); context.Add("codiceCatastale", codiceCatastale); context.Add("codiceFiscaleCondominio", codiceFiscaleCondominio); context.Add("indirizzoCondominio", indirizzoCondominio); context.Add("localitaCondominio", localitaCondominio); context.Add("descrizioneIntervento", descrizione); context.Add("segnalatoreProblema", segnalatoreProblema); if (importo != null) { context.Add("importo", parametriStampaUnione.Importo.GetValueOrDefault().ToString("#,##0.00")); context.Add("importoLettere", importoLettere); } if (importoTotale != null) { context.Add("importoTotale", importoTotale.GetValueOrDefault().ToString("#,##0.00")); context.Add("importoTotaleLettere", importoTotaleLettere); } context.Add("anno", anno.GetValueOrDefault()); context.Add("dataIniziale", dataIniziale.GetValueOrDefault().ToShortDateString()); context.Add("dataFinale", dataFinale.GetValueOrDefault().ToShortDateString()); context.Add("detrazione", parametriStampaUnione.Detrazione.GetValueOrDefault()); var messaggioStampaUnione = memoryEngine.Process(context, messaggio); return messaggioStampaUnione; } if (!string.IsNullOrEmpty(messaggio) && (messaggio.Contains("<<") || messaggio.Contains("<<"))) { var messaggioStampaUnione = messaggio.Replace(@"<<nome>>", nome). Replace("<<nome>>", nome). Replace("<<cognome>>", cognome). Replace("<<cognome>>", cognome). Replace("<<ragioneSociale>>", ragioneSociale). Replace("<<ragioneSociale>>", ragioneSociale). Replace("<<indirizzo>>", indirizzo). Replace("<<indirizzo>>", indirizzo). Replace("<<presso>>", presso). Replace("<<presso>>", presso). Replace("<<localita>>", localita). Replace("<<localita>>", localita). Replace("<<localita-cap-citta-provincia>>", localitaCompleta). Replace("<<localita-cap-citta-provincia>>", localitaCompleta). Replace("<<descrizioneUnita>>", descrizioneUnitaImmobiliare). Replace("<<descrizioneUnita>>", descrizioneUnitaImmobiliare). Replace("<<piano>>", pianoUnitaImmobiliare). Replace("<<piano>>", pianoUnitaImmobiliare). Replace("<<interno>>", internoUnitaImmobiliare). Replace("<<interno>>", internoUnitaImmobiliare). Replace("<<ordineUnita>>", progressivoUnitaImmobiliare). Replace("<<ordineUnita>>", progressivoUnitaImmobiliare). Replace("<<tipoUnita>>", tipoUnitaImmobiliare). Replace("<<tipoUnita>>", tipoUnitaImmobiliare). Replace("<<indirizzoUnita>>", indirizzoUnitaImmobiliare). Replace("<<indirizzoUnita>>", indirizzoUnitaImmobiliare). Replace("<<scala>>", gruppoStabile). Replace("<<scala>>", gruppoStabile). Replace("<<stabile>>", stabile). Replace("<<stabile>>", stabile). Replace("<<nominativo>>", nominativo). Replace("<<nominativo>>", nominativo). Replace("<<cap>>", cap). Replace("<<cap>>", cap). Replace("<<comune>>", comune). Replace("<<comune>>", comune). Replace("<<pr>>", provincia). Replace("<<pr>>", provincia). Replace("<<amministratore>>", amministratore). Replace("<<amministratore>>", amministratore). Replace("<<codiceFiscaleAmministratore>>", codiceFiscaleAmministratore). Replace("<<codiceFiscaleAmministratore>>", codiceFiscaleAmministratore). Replace("<<partitaIvaAmministratore>>", partitaIvaAmministratore). Replace("<<partitaIvaAmministratore>>", partitaIvaAmministratore). Replace("<<telefonoContattare>>", telefonoDaContattare). Replace("<<telefonoContattare>>", telefonoDaContattare). Replace("<<fornitore>>", fornitore). Replace("<<fornitore>>", fornitore). Replace("<<responsabile>>", responsabile). Replace("<<responsabile>>", responsabile). Replace("<<incaricato>>", responsabile). Replace("<<incaricato>>", responsabile). Replace("<<respCond>>", responsabileCondominio). Replace("<<respCond>>", responsabileCondominio). Replace("<<descrizioneIntervento>>", descrizione). Replace("<<descrizioneIntervento>>", descrizione). Replace("<<segnalatoreProblema>>", segnalatoreProblema). Replace("<<segnalatoreProblema>>", segnalatoreProblema). Replace("<<username>>", username). Replace("<<username>>", username). Replace("<<password>>", password). Replace("<<password>>", password). Replace("<<contoCorrente>>", contoCorrente). Replace("<<contoCorrente>>", contoCorrente). Replace("<<cin>>", cin). Replace("<<cin>>", cin). Replace("<<abi>>", abi). Replace("<<abi>>", abi). Replace("<<cab>>", cab). Replace("<<cab>>", cab). Replace("<<banca>>", banca). Replace("<<banca>>", banca). Replace("<<capCondominio>>", capCondominio). Replace("<<capCondominio>>", capCondominio). Replace("<<comuneCondominio>>", provinciaCondominio). Replace("<<comuneCondominio>>", provinciaCondominio). Replace("<<provinciaCondominio>>", provinciaCondominio). Replace("<<provinciaCondominio>>", provinciaCondominio). Replace("<<foglioCatastale>>", foglioCatastale). Replace("<<foglioCatastale>>", foglioCatastale). Replace("<<mappaleCatastale>>", mappaleCatastale). Replace("<<mappaleCatastale>>", mappaleCatastale). Replace("<<codiceCatastale>>", mappaleCatastale). Replace("<<codiceCatastale>>", codiceCatastale). Replace("<<esercizio>>", esercizio). Replace("<<esercizio>>", esercizio). Replace("<<codiceCondominio>>", codiceCondominio). Replace("<<codiceCondominio>>", codiceCondominio). Replace("<<condominio>>", descrizioneCondominio). Replace("<<condominio>>", descrizioneCondominio). Replace("<<iban>>", ibanCondominio). Replace("<<iban>>", ibanCondominio). Replace("<<codiceFiscaleCondominio>>", codiceFiscaleCondominio). Replace("<<codiceFiscaleCondominio>>", codiceFiscaleCondominio). Replace("<<indirizzoCondominio>>", indirizzoCondominio). Replace("<<indirizzoCondominio>>", indirizzoCondominio). Replace("<<localitaCondominio>>", localitaCondominio). Replace("<<localitaCondominio>>", localitaCondominio). Replace("<<importo>>", parametriStampaUnione.Importo.GetValueOrDefault().ToString("#,##0.00")). Replace("<<importo>>", parametriStampaUnione.Importo.GetValueOrDefault().ToString("#,##0.00")). Replace("<<importoLettere>>", importoLettere). Replace("<<importoLettere>>", importoLettere). Replace("<<importoTotale>>", parametriStampaUnione.ImportoTotale.GetValueOrDefault().ToString("#,##0.00")). Replace("<<importoTotale>>", parametriStampaUnione.ImportoTotale.GetValueOrDefault().ToString("#,##0.00")). Replace("<<importoTotaleLettere>>", importoTotaleLettere). Replace("<<importoTotaleLettere>>", importoTotaleLettere). Replace("<<dataIniziale>>", dataIniziale.GetValueOrDefault().ToShortDateString()). Replace("<<dataIniziale>>", dataIniziale.GetValueOrDefault().ToShortDateString()). Replace("<<dataFinale>>", dataFinale.GetValueOrDefault().ToShortDateString()). Replace("<<dataFinale>>", dataFinale.GetValueOrDefault().ToShortDateString()). Replace("<<anno>>", dataFinale.GetValueOrDefault().ToShortDateString()). Replace("<<anno>>", dataFinale.GetValueOrDefault().ToShortDateString()). Replace("<<detrazione>>", parametriStampaUnione.Detrazione.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)). Replace("<<detrazione>>", parametriStampaUnione.Detrazione.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); return messaggioStampaUnione; } } return messaggio; } catch (Exception ex) { _log.ErrorFormat("Errore nella stampa unione - {0} - messaggio: {1} - idPersona: {2}", ex, Utility.GetMethodDescription(), messaggio, parametriStampaUnione.IdPersona.GetValueOrDefault()); throw; } }
private void btnPreparaLocale_Click(object sender, EventArgs e) { saveFileDialogLocale.FileName = _condominio.DisplayName+"."+saveFileDialogLocale.DefaultExt; if (saveFileDialogLocale.ShowDialog(this) == DialogResult.OK) { if (saveFileDialogLocale.FileName != string.Empty) { var frmPreparaLocale = new PreparaLocale(getModelloLetteraService()); if (frmPreparaLocale.ShowDialog(this)==DialogResult.OK ) { var iConvocazione = (int)frmPreparaLocale.optConvocazione.Value; if (frmPreparaLocale.modelliLettera.Enabled) { try { if (iConvocazione == 0) { _assemblea.VerbalePrimaConvocazione = Conversione.ToString(new MemoryStream((getModelloLetteraService().GetLettera(((ModelloLetteraDTO) frmPreparaLocale.modelliLettera.SelectedItem.ListObject).Id).Body))); var parametri = new ParametriStampaUnione { IdCondominio = _condominio.ID, IdAssemblea = _assemblea.ID }; _assemblea.VerbalePrimaConvocazione = getModelloLetteraService().MailMerge(_assemblea.VerbalePrimaConvocazione, parametri); } else { _assemblea.VerbaleSecondaConvocazione = Conversione.ToString(new MemoryStream((getModelloLetteraService().GetLettera(((ModelloLetteraDTO) frmPreparaLocale.modelliLettera.SelectedItem.ListObject).Id).Body))); var parametri = new ParametriStampaUnione { IdCondominio = _condominio.ID, IdAssemblea = _assemblea.ID }; _assemblea.VerbaleSecondaConvocazione = getModelloLetteraService().MailMerge(_assemblea.VerbaleSecondaConvocazione, parametri); } } catch (Exception ex) { CommonMessages.DisplayWarning("Il modello selezionato presenta un problema o è vuoto. Selezionare un altro modello o modificare il modello selezionato quindi riprovare."); } } var sPassword = frmPreparaLocale.txtPassword.Text; var form =new ExecuteLoadDataObjectAsync<bool>("Creazione del pacchetto dati locale in corso....." + Environment.NewLine +"Si prega di attendere."); Func<bool> saveTolocale = () => toLocale(_assemblea, _condominio, _esercizio, iConvocazione, saveFileDialogLocale.FileName, sPassword); form.LoadData(saveTolocale); form.ShowDialog(); _assemblea.OffLine = true; _assemblea.OffLinePassword = sPassword; ExecuteSave(); loadData(_assemblea); } } } }
public IList<RisultatoInvioMessaggio> InvioMessaggio(int idAzienda, PersonaMessaggioDTO personaMessaggioDTO, Condominio condominio, int? idUnitaImmobiliare, int? idFornitore, int? idResponsabile, int? idIncaricatoAttivita, MotivoMessaggio motivoMessaggio, string oggetto, string testo, IList<string> destinatari, string mittente, string emailRapportino, IList<DocumentInfo> allegati, ParametriInvioLettera parametriInvioLettera) { // ========================================================= // Disabilito l'invio asincrono per problemi di gestione con Sertea // diversi messaggi non sono stati inviati bugid#3823 // ========================================================= parametriInvioLettera.Asincrono = false; var message = string.Empty; var invioRiuscito = false; Persona persona = null; if(personaMessaggioDTO != null) persona = _daoFactory.GetPersonaDao().Find(personaMessaggioDTO.ID, false); _persona = persona; _condominio = condominio; _motivoMessaggio = motivoMessaggio; _oggetto = oggetto; _testo = testo; _destinatari = destinatari; _mittente = mittente; _emailRapportino = emailRapportino; var results = new List<RisultatoInvioMessaggio>(); var result = new eMessageResultSendSMS(); try { var destinatariSend = new List<string>(); if (destinatari.Count > 0 && !destinatari.All(string.IsNullOrEmpty)) { foreach (var item in destinatari) { if (!string.IsNullOrEmpty(item)) { if (!item.Trim().StartsWith("+39")) destinatariSend.Add("+39" + Library.Conversione.ToPhoneNumber(item)); else destinatariSend.Add(Library.Conversione.ToPhoneNumber(item)); } } if (destinatariSend.Any()) { // ===================================== // Applico la stampa unione // ===================================== if (personaMessaggioDTO != null) { int? idCondominio = null; if (condominio != null) idCondominio = condominio.ID; var parametri = new ParametriStampaUnione(persona.ID, idUnitaImmobiliare, idResponsabile, idIncaricatoAttivita, idFornitore, idCondominio, null, personaMessaggioDTO.TipoIndirizzo, personaMessaggioDTO.Importo, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); oggetto = _messagisticaService.ApplicaStampaUnione(oggetto, parametri, idAzienda); testo = _messagisticaService.ApplicaStampaUnione(testo, parametri, idAzienda); } // ===================================== // Invio Messaggio // ===================================== var credenziali = _configurationService.GetLoginInfo(idAzienda); if (credenziali != null && !string.IsNullOrEmpty(credenziali.Value.Utente) && !string.IsNullOrEmpty(credenziali.Value.Password)) { var userService = new it.emessage.users.Users(); var success = false; try { var resultUsers = userService.Login(credenziali.Value.Utente, credenziali.Value.Password, null); success = resultUsers.success; } catch (Exception ex) { _log.WarnFormat("Errore durante il controllo delle credenziali - {0} - username:{1} - password:{2} - azienda:{3}", ex, Library.Utility.GetMethodDescription(), credenziali.Value.Utente, credenziali.Value.Password, idAzienda); } if (success) { var service = new Sms {Timeout = 999999999}; var identificazioneMittente = _configurationService.GetIdentificazioneMittente(idAzienda, TipoMessaggio.Sms, TipoIndirizzo.Recapito); if (!string.IsNullOrEmpty(identificazioneMittente.Email)) emailRapportino += "," + identificazioneMittente.Email; // Mittente if (string.IsNullOrEmpty(mittente)) mittente = identificazioneMittente.Nome; if (!string.IsNullOrEmpty(mittente) && mittente.Length > 11) mittente = mittente.Substring(0, 11); if (ConfigurationManager.AppSettings["IsTest"] != null && bool.Parse(ConfigurationManager.AppSettings["IsTest"])) destinatariSend = new List<string> {"+393382958239"}; var parameters = new List<OptionalParameters> { new OptionalParameters { ParameterName = "NotificationEmail", ParameterValue = emailRapportino }, new OptionalParameters { ParameterName = "DeliveryTime", ParameterValue = DateTime.Now.ToString() } }; // --------------------------------------- // Invio NON Asincrono // --------------------------------------- if (!parametriInvioLettera.Asincrono) { if (motivoMessaggio != MotivoMessaggio.ScadenzaContratto) { try { if (string.IsNullOrEmpty(parametriInvioLettera.Tipo)) parametriInvioLettera.Tipo = "NORMAL"; result = service.Send(credenziali.Value.Utente, credenziali.Value.Password, mittente, destinatariSend.ToArray(), testo, parametriInvioLettera.Tipo, parameters.ToArray()); } catch (Exception ex) { _log.FatalFormat("Errore inaspettato durante l'invio del sms - INVIO DIRETTO - {0} - oggetto:{1} - destinatari:{2} - testo:{3} - azienda:{4} - tipo:{5} - parameters:{6} - mittente:{7} - utente:{8}", ex, Library.Utility.GetMethodDescription(), oggetto, destinatariSend.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), testo, idAzienda, parametriInvioLettera.Tipo, parameters.Aggregate(string.Empty, (current, param) => current + (param + ", ")), mittente, credenziali.Value.Utente); throw; } } _log.InfoFormat("Risultato invio sms:{0} - destinatario:{1} - azienda:{2}", result, destinatariSend.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), idAzienda); if (result != null) { message += result; if (result.success) invioRiuscito = true; } } // --------------------------------------- // Invio Asincrono // --------------------------------------- else { try { service.SendCompleted += serviceSendCompleted; service.SendAsync(credenziali.Value.Utente, credenziali.Value.Password, mittente, destinatariSend.ToArray(), testo, parametriInvioLettera.Tipo, parameters.ToArray()); } catch (Exception ex) { _log.FatalFormat("Errore inaspettato durante l'invio del sms - INVIO ASINCRONO - {0} - oggetto:{1} - destinatari:{2} - testo:{3} - azienda:{4} - tipo:{5} - parameters:{6} - mittente:{7} - utente:{8}", ex, Library.Utility.GetMethodDescription(), oggetto, destinatariSend.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), testo, idAzienda, parametriInvioLettera.Tipo, parameters.Aggregate(string.Empty, (current, param) => current + (param + ", ")), mittente, credenziali.Value.Utente); throw; } // Se invio asincrono suppongo sia andato a buon fine invioRiuscito = true; results.Add(new RisultatoInvioMessaggio("N.D.", "N.D.", true, "Tutti gli sms sono stati accodati per l'invio", new DocumentInfo())); } if (invioRiuscito) { // ===================================== // Controllo rapportino // ===================================== if (parametriInvioLettera.Tipo == "NOTIFICATION") { // Crea un trigger che parte tra 10 minuti e ogni minuto per 30 volte controlla le mail in arrivo. Trigger trigger = new PeriodicTrigger(DateTime.UtcNow.AddSeconds(10), null, TimeSpan.FromMinutes(1), 30); var jobSpec = new JobSpec("Controllo rapportino", "Verifica e salvataggio email contenente rapportino di conferma di invio SMS", "ConfermaRicezioneMessaggio", trigger); _scheduler.CreateJob(jobSpec, CreateJobConflictAction.Replace); _scheduler.Start(); } } } else { _log.WarnFormat("Credenziali non valide - {0} - username:{1} - password:{2} - azienda:{3}", Library.Utility.GetMethodDescription(), credenziali.Value.Utente, credenziali.Value.Password, idAzienda); } } else { _log.FatalFormat("Errore inaspettato durante l'invio del sms. NON sono presenti le credenziali per l'invio del sms - {0} - oggetto:{1} - destinatari:{2} - azienda:{3}", Library.Utility.GetMethodDescription(), oggetto, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), idAzienda); message = "KO - Non sono definite le credenziali per l'invio dei sms"; } } else { _log.WarnFormat("Errore inaspettato durante l'invio del sms. NON è definito nessun destinatario - {0} - oggetto:{1} - destinatari:{2} - azienda:{3}", Library.Utility.GetMethodDescription(), oggetto, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), idAzienda); message = "KO - Non è definito nessun destinatario"; } } else { _log.WarnFormat("Errore inaspettato durante l'invio del sms. NON è definito nessun destinatario - {0} - oggetto:{1} - destinatari:{2} - azienda:{3}", Library.Utility.GetMethodDescription(), oggetto, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), idAzienda); message = "KO - Non è definito nessun destinatario"; } } catch (Exception ex) { invioRiuscito = false; _log.ErrorFormat("Errore inaspettato durante l'invio del sms - {0} - oggetto:{1} - destinatari:{2} - azienda:{3}", ex, Library.Utility.GetMethodDescription(), oggetto, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), idAzienda); message = "KO - Errore inaspettato durante l'invio del sms"; } // =================================================================== // Storicizzazione dei messaggi solo se l'invio non è stato asicrono // =================================================================== if (!parametriInvioLettera.Asincrono && motivoMessaggio != MotivoMessaggio.ScadenzaContratto && invioRiuscito) { results = elaboraResult(result, results); } else { if(!invioRiuscito) results.Add(new RisultatoInvioMessaggio("KO", null, false, message, new DocumentInfo())); } return results; }
public string MailMerge(string rtf, ParametriStampaUnione parametriStampaUnione, int idAzienda) { var condominio = _daoFactory.GetCondominioDao().Find(parametriStampaUnione.IdCondominio.GetValueOrDefault(), false); var tipoIndirizzo = parametriStampaUnione.TipoIndirizzo; var telefonoDaContattare = string.Empty; var segnalatoreProblema = string.Empty; Persona persona = null; if(parametriStampaUnione.IdPersona != null) persona = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdPersona.GetValueOrDefault(), false); if(persona == null) persona = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdPersonaAttiva.GetValueOrDefault(), false); DatiBancariCondomini datiBancari = null; if (parametriStampaUnione.IdDatiBancari > 0) { datiBancari = _daoFactory.GetDatiBancariCondominiDao().Find(parametriStampaUnione.IdDatiBancari.GetValueOrDefault(), false); if (condominio == null) condominio = datiBancari.CondominioRiferimento; } else if (condominio != null) datiBancari = condominio.DatiBancariPrincipale; //=============================================== // Azienda //=============================================== var amministratore = string.Empty; var codiceFiscaleAmministratore = string.Empty; var partitaIvaAmministratore = string.Empty; var azienda = _daoFactory.GetAziendaDao().GetById(idAzienda, false); if (azienda.Amministratore != null) { amministratore = azienda.Amministratore.PersonaRiferimento.DisplayName; codiceFiscaleAmministratore = azienda.Amministratore.PersonaRiferimento.CodiceFiscale; partitaIvaAmministratore = azienda.Amministratore.PersonaRiferimento.PartitaIva; } // =========================================== // Condominio // =========================================== var codiceCondominio = string.Empty; var descrizioneCondominio = string.Empty; var codiceFiscaleCondominio = string.Empty; var indirizzoCondominio = string.Empty; var localitaCondominio = string.Empty; var ibanCondominio = string.Empty; var contoCorrente = string.Empty; var cin = string.Empty; var abi = string.Empty; var cab = string.Empty; var banca = string.Empty; var capCondominio = string.Empty; var comuneCondominio = string.Empty; var provinciaCondominio = string.Empty; var foglioCatastale = string.Empty; var mappaleCatastale = string.Empty; var codiceCatastale = string.Empty; var responsabileCondominio = string.Empty; if (datiBancari != null) { contoCorrente = datiBancari.ContoCorrente; cin = datiBancari.Cin; abi = datiBancari.Abi; cab = datiBancari.Cab; ibanCondominio = datiBancari.Iban; var abiCab = _daoFactory.GetAbiCabDao().Find(new AbiCabId(abi, cab), false); banca = abiCab != null ? $"{abiCab.DescrizioneAbi} - {abiCab.DescrizioneCab}" : datiBancari.DisplayName; } if (condominio != null) { codiceCondominio = condominio.Codice; descrizioneCondominio = condominio.Descrizione; foglioCatastale = condominio.FoglioCatastale.ToString(); mappaleCatastale = condominio.MappaleCatastale.ToString(); codiceFiscaleCondominio = condominio.CodiceFiscale; if (condominio.Indirizzo != null) { indirizzoCondominio = condominio.Indirizzo.GetIndirizzoCompleto(); capCondominio = condominio.Indirizzo.Cap; if (condominio.Indirizzo.Comune != null) { comuneCondominio = condominio.Indirizzo.Comune.Descrizione; localitaCondominio = condominio.Indirizzo.Comune.Descrizione; provinciaCondominio = condominio.Indirizzo.Comune.ProvinciaAppartenenza.Codice; codiceCatastale = condominio.Indirizzo.Comune.CodiceCatastale; } } if (condominio.Responsabile != null) responsabileCondominio = condominio.Responsabile.DisplayName; } // =========================================== // Esercizio // =========================================== var esercizio = string.Empty; var tipoRange = string.Empty; if (parametriStampaUnione.IdEsercizio != null) { tipoRange = "Esercizio"; var es = _daoFactory.GetEsercizioDao().Find(parametriStampaUnione.IdEsercizio.GetValueOrDefault(), false); esercizio = es.DisplayName; } else if (parametriStampaUnione.DataIniziale != null && parametriStampaUnione.DataFinale != null) { tipoRange = $"Data iniziale: {parametriStampaUnione.DataIniziale} - Data finale:{parametriStampaUnione.DataFinale}"; } //=============================================== // Fornitore //=============================================== var fornitore = string.Empty; if (parametriStampaUnione.IdFornitore != null) { var forn = _daoFactory.GetFornitoreDao().Find(parametriStampaUnione.IdFornitore.GetValueOrDefault(), false); if (forn != null) { fornitore = forn.DisplayName; } else _log.WarnFormat("Fornitore NON trovato - {0} - fornitore:{1}", Utility.GetMethodDescription(), parametriStampaUnione.IdFornitore.GetValueOrDefault()); } //=============================================== // Responsabile //=============================================== var responsabile = string.Empty; if (parametriStampaUnione.IdResponsabile != null) { var resp = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdResponsabile.GetValueOrDefault(), false); if (resp != null) { responsabile = resp.DisplayName; } else _log.WarnFormat("Responsabile NON trovato - {0} - responsabile:{1}", Utility.GetMethodDescription(), parametriStampaUnione.IdResponsabile); } //=============================================== // Incaricato //=============================================== var incaricato = string.Empty; if (parametriStampaUnione.IdIncaricatoAttivita != null) { var inc = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdIncaricatoAttivita.GetValueOrDefault(), false); if (inc != null) { incaricato = inc.DisplayName; } else _log.WarnFormat("Incaricato NON trovato - {0} - incaricato:{1}", Utility.GetMethodDescription(), parametriStampaUnione.IdIncaricatoAttivita); } //=============================================== // Persona //=============================================== var titolo = string.Empty; var nominativoCompleto = string.Empty; var nominativo = string.Empty; var nome = string.Empty; var cognome = string.Empty; var indirizzo = string.Empty; var cap = string.Empty; var comune = string.Empty; var provincia = string.Empty; var presso = string.Empty; var localita = string.Empty; var localitaCompleta = string.Empty; var ragioneSociale = string.Empty; var username = string.Empty; var password = string.Empty; var email = string.Empty; if (persona != null) { titolo = Decodifica.Instance.GetElement("TitoloPersona", persona.Titolo).Descrizione; if (!string.IsNullOrEmpty(persona.Nome)) nome = persona.Nome; if (!string.IsNullOrEmpty(persona.Cognome)) cognome = persona.Cognome; if (string.IsNullOrEmpty(cognome) && !string.IsNullOrEmpty(persona.RagioneSociale)) cognome = persona.RagioneSociale; if (!string.IsNullOrEmpty(persona.RagioneSociale)) ragioneSociale = persona.RagioneSociale; if (tipoIndirizzo == TipoIndirizzo.Residenza || persona.Recapito == null) { if (persona.IndirizzoResidenza != null) { cap = persona.IndirizzoResidenza.Cap; presso = persona.IndirizzoResidenza.Presso; indirizzo = persona.IndirizzoResidenza.GetIndirizzoCompleto(); if (persona.IndirizzoResidenza.Comune != null) { localita = persona.IndirizzoResidenza.Comune.Descrizione; comune = persona.IndirizzoResidenza.Comune.Descrizione; provincia = persona.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice; } if (!string.IsNullOrEmpty(persona.IndirizzoResidenza.Localita)) localitaCompleta = $"{persona.IndirizzoResidenza.Localita} - "; localitaCompleta += persona.IndirizzoResidenza.Cap; if (persona.IndirizzoResidenza.Comune != null) localitaCompleta += " " + persona.IndirizzoResidenza.Comune.Descrizione + " " + persona.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice; } } else if (persona.Recapito != null) { cap = persona.Recapito.Cap; presso = persona.Recapito.Presso; indirizzo = persona.Recapito.GetIndirizzoCompleto(); if (persona.Recapito.Comune != null) { localita = persona.Recapito.Comune.Descrizione; comune = persona.Recapito.Comune.Descrizione; provincia = persona.Recapito.Comune.ProvinciaAppartenenza.Codice; } if (!string.IsNullOrEmpty(persona.Recapito.Localita)) localitaCompleta = $"{persona.Recapito.Localita} - "; localitaCompleta += persona.Recapito.Cap; if (persona.Recapito.Comune != null) localitaCompleta += " " + persona.Recapito.Comune.Descrizione + " " + persona.Recapito.Comune.ProvinciaAppartenenza.Codice; } var contatti = new ContattoCollection(persona.Contatti); var emailContattoCertificata = contatti.GetFirstContatto<EmailCertificata>(); if (emailContattoCertificata != null) email = emailContattoCertificata.Valore; else { var emailContatto = contatti.GetFirstContatto<Email>(); if (emailContatto != null) email = emailContatto.Valore; } if (persona.DatiAutenticazione != null) { username = persona.DatiAutenticazione.Username; password = persona.DatiAutenticazione.Password; } nominativo = cognome; if (!string.IsNullOrEmpty(nome) && !string.IsNullOrEmpty(cognome)) nominativo = $"{nome} {cognome}"; if (!string.IsNullOrEmpty(titolo)) nominativo = $"{titolo}{Environment.NewLine}{nominativo}"; nominativoCompleto = nominativo; if (!string.IsNullOrEmpty(presso)) presso = $"c/o {presso}"; if(!string.IsNullOrEmpty(presso)) nominativoCompleto = $"{nominativo}{Environment.NewLine}{presso}"; } // =========================================== // Unità immobiliare // =========================================== var descrizioneUnitaImmobiliare = string.Empty; var pianoUnitaImmobiliare = string.Empty; var progressivoUnitaImmobiliare = string.Empty; var internoUnitaImmobiliare = string.Empty; var tipoUnitaImmobiliare = string.Empty; var indirizzoUnitaImmobiliare = string.Empty; var gruppoStabile = string.Empty; var stabile = string.Empty; if (parametriStampaUnione.IdUnitaImmobiliare == null && parametriStampaUnione.IdPersona != null && parametriStampaUnione.IdCondominio != null) { var soggetto = _daoFactory.GetSoggettoCondominioDao().GetByCondominioPersona(parametriStampaUnione.IdCondominio.Value, parametriStampaUnione.IdPersona.Value).FirstOrDefault(); if (soggetto != null) parametriStampaUnione.IdUnitaImmobiliare = soggetto.UnitaImmobiliare.ID; } if (parametriStampaUnione.IdUnitaImmobiliare != null) { var unitaImmobiliare = _daoFactory.GetUnitaImmobiliareDao().Find(parametriStampaUnione.IdUnitaImmobiliare.GetValueOrDefault(), false); if (unitaImmobiliare != null) { descrizioneUnitaImmobiliare = unitaImmobiliare.Descrizione; pianoUnitaImmobiliare = unitaImmobiliare.Piano; progressivoUnitaImmobiliare = unitaImmobiliare.Ordine.ToString(); internoUnitaImmobiliare = unitaImmobiliare.InternoCompleto; if (unitaImmobiliare.TipoUnitaImmobiliare != null) tipoUnitaImmobiliare = unitaImmobiliare.TipoUnitaImmobiliare.Descrizione; if (unitaImmobiliare.GruppoStabileRiferimento?.Indirizzo != null) indirizzoUnitaImmobiliare = unitaImmobiliare.GruppoStabileRiferimento.Indirizzo.DisplayNameArray.FirstOrDefault(); if (unitaImmobiliare.GruppoStabileRiferimento != null) { gruppoStabile = unitaImmobiliare.GruppoStabileRiferimento.Descrizione; stabile = unitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.Descrizione; } if (persona != null) { var soggettoCondominio = unitaImmobiliare.Soggetti.FirstOrDefault(item => item.Persona.ID == persona.ID); if (!string.IsNullOrEmpty(soggettoCondominio.Descrizione)) nominativo = soggettoCondominio.Descrizione; } } } // =========================================== // Da Contattare // =========================================== if (!string.IsNullOrEmpty(parametriStampaUnione.TelefonoDaContattare)) telefonoDaContattare = parametriStampaUnione.TelefonoDaContattare; if (parametriStampaUnione.IdPersonaRichiedente.GetValueOrDefault() > 0) { var richiedente = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdPersonaRichiedente.GetValueOrDefault(), false); if (richiedente != null) { if (!string.IsNullOrEmpty(richiedente.DisplayName)) segnalatoreProblema = richiedente.DisplayName; else _log.WarnFormat("Persona con display name <NULL> - {0} - idPersona:{1}", Utility.GetMethodDescription(), richiedente.ID); } else _log.WarnFormat("Richiedente NON trovato - {0} - idPersona:{1}", Utility.GetMethodDescription(), parametriStampaUnione.IdPersonaRichiedente.GetValueOrDefault()); } // =========================================== // Testo Lettera (BODY) // =========================================== var body = ApplicaStampaUnione(parametriStampaUnione.Body, parametriStampaUnione, idAzienda); // =========================================== // Importi // =========================================== var importo = string.Empty; var importoTotale = string.Empty; var importoLettere = string.Empty; var importoTotaleLettere = string.Empty; var versamenti = string.Empty; var saldoEsercizioPrecedente = string.Empty; if (parametriStampaUnione.Importo != null) { importo = parametriStampaUnione.Importo.Value.ToString("C"); importoLettere = Library.BusinessData.CifreLettere.CalcolaLettere(parametriStampaUnione.Importo.Value); } if (parametriStampaUnione.ImportoTotale != null) { importoTotale = parametriStampaUnione.ImportoTotale.Value.ToString("C"); importoTotaleLettere = Library.BusinessData.CifreLettere.CalcolaLettere(parametriStampaUnione.ImportoTotale.Value); } if (parametriStampaUnione.Versamenti != null) versamenti = parametriStampaUnione.Versamenti.Value.ToString("C"); if (parametriStampaUnione.SaldoEsercizioPrecedente != null) saldoEsercizioPrecedente = parametriStampaUnione.SaldoEsercizioPrecedente.Value.ToString("C"); // =========================================== // Date // =========================================== var dataIniziale = string.Empty; var dataFinale = string.Empty; var dataAttiva = DateTime.Today.ToShortDateString(); var dataRedazione = DateTime.Today.ToShortDateString(); if (parametriStampaUnione.DataIniziale != null) dataIniziale = parametriStampaUnione.DataIniziale.Value.ToString("d"); if (parametriStampaUnione.DataFinale != null) dataFinale = parametriStampaUnione.DataFinale.Value.ToString("d"); if (parametriStampaUnione.DataAttiva != null) dataAttiva = parametriStampaUnione.DataAttiva.GetValueOrDefault().ToShortDateString(); Document document; try { document = new Document(Conversione.ToStream(rtf)); } catch (Exception ex) { _log.ErrorFormat("Errore nel mail merge del documento - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), azienda); throw; } // campi standard var fieldNames = new[] { "amministratore", "codiceFiscaleAmministratore", "partitaIvaAmministratore", "codiceCondominio", "condominio", "esercizio", "iban", "codiceFiscaleCondominio", "indirizzoCondominio", "localitaCondominio", "comuneCondominio", "contoCorrente", "cin", "abi", "cab", "banca", "capCondominio", "provinciaCondominio", "foglioCatastale", "mappaleCatastale", "codiceCatastale", "tipoReport", "importo", "importoTotale", "versamenti", "saldo", "dataIniziale", "dataFinale", "tipoRange", "dataAttiva", "dataRedazione", "oggetto", "respCond" }; var objectValues = new object[] { amministratore, codiceFiscaleAmministratore, partitaIvaAmministratore, codiceCondominio, descrizioneCondominio, esercizio, ibanCondominio, codiceFiscaleCondominio, indirizzoCondominio, localitaCondominio, comuneCondominio, contoCorrente, cin, abi, cab, banca, capCondominio, provinciaCondominio, foglioCatastale, mappaleCatastale, codiceCatastale, parametriStampaUnione.TipoReport, importo, importoTotale, versamenti, saldoEsercizioPrecedente, dataIniziale, dataFinale, tipoRange, dataAttiva, dataRedazione, parametriStampaUnione.Oggetto, responsabileCondominio }; document.MailMerge.Execute(fieldNames, objectValues); // campi relativi alla persona destinataria // in caso di assemblea eseguo il mail merge solo se la persona è presente altrimenti vengono lasciati inalterati i campi if (parametriStampaUnione.IdAssemblea == null || persona != null) { fieldNames = new[] { "titolo", "nominativoCompleto", "nome", "cognome", "ragioneSociale", "nominativo", "indirizzo", "presso", "localita", "localita-cap-citta-provincia", "cap", "comune", "pr", "email", "username", "password" }; objectValues = new object[] { titolo, nominativoCompleto, nome, cognome, ragioneSociale, nominativo, indirizzo, presso, localita, localitaCompleta, cap, comune, provincia, email, username, password }; document.MailMerge.Execute(fieldNames, objectValues); } // campi relativi alla unità immobiliare fieldNames = new[] { "descrizioneUnita", "piano", "interno", "ordineUnita", "tipoUnita", "indirizzoUnita", "scala", "stabile" }; objectValues = new object[] { descrizioneUnitaImmobiliare, pianoUnitaImmobiliare, internoUnitaImmobiliare, progressivoUnitaImmobiliare, tipoUnitaImmobiliare, indirizzoUnitaImmobiliare, gruppoStabile, stabile }; document.MailMerge.Execute(fieldNames, objectValues); // campi relativi alla gestione pratiche fieldNames = new[] { "telefonoContattare", "segnalatoreProblema", "fornitore", "responsabile", "incaricato", "numeroFaxInvio", "oggettoFax", "mittente", "faxDestinatario", "identificativo" }; objectValues = new object[] { telefonoDaContattare, segnalatoreProblema, fornitore, responsabile, incaricato, parametriStampaUnione.ContattiDestinatario, parametriStampaUnione.Oggetto, azienda.Descrizione, parametriStampaUnione.FaxDestinatario, parametriStampaUnione.Identificativo }; document.MailMerge.Execute(fieldNames, objectValues); // campi relativi ad importi fieldNames = new[] { "importoLettere", "importoTotaleLettere", "detrazione" }; objectValues = new object[] { importoLettere, importoTotaleLettere, parametriStampaUnione.Detrazione.GetValueOrDefault() }; document.MailMerge.Execute(fieldNames, objectValues); // =========================================== // Assemblea // =========================================== var ordinegiorno = string.Empty; if (parametriStampaUnione.IdAssemblea != null) { var assemblea = _daoFactory.GetAssembleaDao() .Find(parametriStampaUnione.IdAssemblea.GetValueOrDefault(), false); if (assemblea != null) { var iIndex = 1; foreach (var puntordinegiorno in assemblea.PuntoOrdineGiorno) { if (!string.IsNullOrEmpty(puntordinegiorno.Descrizione)) { string sText = puntordinegiorno.Descrizione.Trim(); if (sText.StartsWith("{\\rtf")) { if (sText.StartsWith("{\\rtf1")) sText = sText.Substring(6); if (sText.StartsWith("{\\rtf")) sText = sText.Substring(5); sText = sText.Substring(0, sText.Length - 1); //sText = "\\bullet " + sText + " "; sText = iIndex + ". \\tab" + sText + " "; //"\\line "; iIndex += 1; } ordinegiorno += sText; } } //campi che andranno cambiati solo se presente uno specifico parametro di configurazione...ora li compilo d'ufficio... document.MailMerge.Execute(new[] {"tipoAssemblea"}, new object[] {assemblea.Tipo.ToString()}); document.MailMerge.Execute(new[] {"dataPrimaConvocazioneAssemblea"}, new object[] {assemblea.DataPrimaConvocazione.ToString("dd MMMM yyyy")}); document.MailMerge.Execute(new[] {"giornodataPrimaConvocazioneAssemblea"}, new object[] {assemblea.DataPrimaConvocazione.ToString("dd")}); document.MailMerge.Execute(new[] { "nomegiornodataPrimaConvocazioneAssemblea" }, new object[] { assemblea.DataPrimaConvocazione.ToString("dddd")}); document.MailMerge.Execute(new[] {"mesedataPrimaConvocazioneAssemblea"}, new object[] {assemblea.DataPrimaConvocazione.ToString("MMMM")}); document.MailMerge.Execute(new[] {"annodataPrimaConvocazioneAssemblea"}, new object[] {assemblea.DataPrimaConvocazione.ToString("yyyy")}); document.MailMerge.Execute(new[] {"dataSecondaConvocazioneAssemblea"}, new object[] {assemblea.DataSecondaConvocazione.ToString("dd MMMM yyyy")}); document.MailMerge.Execute(new[] {"giornodataSecondaConvocazioneAssemblea"}, new object[] {assemblea.DataSecondaConvocazione.ToString("dd")}); document.MailMerge.Execute(new[] { "nomegiornodataSecondaConvocazioneAssemblea" }, new object[] { assemblea.DataSecondaConvocazione.ToString("dddd") }); document.MailMerge.Execute(new[] {"mesedataSecondaConvocazioneAssemblea"}, new object[] {assemblea.DataSecondaConvocazione.ToString("MMMM")}); document.MailMerge.Execute(new[] {"annodataSecondaConvocazioneAssemblea"}, new object[] {assemblea.DataSecondaConvocazione.ToString("yyyy")}); document.MailMerge.Execute(new[] {"oraPrimaConvocazioneAssemblea"}, new object[] {assemblea.DataPrimaConvocazione.ToString("HH:mm")}); document.MailMerge.Execute(new[] {"oraSecondaConvocazioneAssemblea"}, new object[] {assemblea.DataSecondaConvocazione.ToString("HH:mm")}); document.MailMerge.Execute(new[] {"luogoPrimaConvocazioneAssemblea"}, new object[] {assemblea.LuogoPrimaConvocazione}); document.MailMerge.Execute(new[] {"luogoSecondaConvocazioneAssemblea"}, new object[] {assemblea.LuogoSecondaConvocazione}); //cambio ordinegiorno con un tag temporaneo...vedi sotto... document.MailMerge.Execute(new[] {"ordineGiorno"}, new object[] {"%%%%ORDINEGIORNO%%%%"}); } } else if(!string.IsNullOrEmpty(body)) { // Solo se non siamo nel caso dell'assemblea per evitare di sbiancare i campi NON compilati // testo messaggio fieldNames = new[] { "testo", "testoFax", "descrizioneIntervento" }; objectValues = new object[] { body, body, body }; document.MailMerge.FieldMergingCallback = new HandleMergeField(); document.MailMerge.Execute(fieldNames, objectValues); } // =========================================== var saveOption = SaveOptions.CreateSaveOptions(SaveFormat.Rtf); string result; using (var ms = new MemoryStream()) { document.Save(ms, saveOption); result = Conversione.ToString(ms); } // =========================================== // Assemblea // =========================================== //ordinegiorno viene processato come replace perchè è rtf...da valutare in futuro se ci sono strategie migliori(mailmerge non funziona con valori che includono rtf) if (!string.IsNullOrEmpty(ordinegiorno)) result = result.Replace("%%%%ORDINEGIORNO%%%%", ordinegiorno); return result; }
public string MailMerge(string rtf, ParametriStampaUnione parametriStampaUnione) { return GetServiceClient().MailMerge(rtf, parametriStampaUnione, GetUserInfo()); }
public List<ImportiPersonaDTO> GetImportoRipartizioneDetrazione(CondominioDTO condominio, int anno, int detrazione, IList<SpesaDTO> spese, IList<PersonaContattoDTO> persone, ModelloLetteraTestoDTO modello) { var idSpese = new List<int>(spese.Count); idSpese.AddRange(spese.Select(spesaDTO => spesaDTO.ID)); var idPersone = new List<int>(persone.Count); idPersone.AddRange(persone.Select(personaContattoDTO => personaContattoDTO.ID)); var result = GetServiceClient().GetImportoRipartizioneDetrazione(condominio.ID, anno, detrazione, idSpese, idPersone, GetUserInfo()); CloseService(); // ============================================ // Composizione testo lettera // ============================================ //var azienda = _aziendaService.GetAzienda(); //var amministratore = _referenteService.GetById(azienda.CodiceAmministratore); //var descrizioneAmministratore = "Il sottoscritto"; //if (amministratore.Sesso == "Femmina") // descrizioneAmministratore = "La sottoscritta"; //descrizioneAmministratore += " " + amministratore.NominativoPersona; //var indirizzoCondominio = string.Empty; //var capCondominio = string.Empty; //var comuneCondominio = string.Empty; //var provinciaCondominio = string.Empty; //if (condominio.Indirizzo != null) //{ // indirizzoCondominio = condominio.Indirizzo.Indirizzo + ", " + condominio.Indirizzo.Civico; // capCondominio = condominio.Indirizzo.Cap; // comuneCondominio = condominio.Indirizzo.DescrizioneComune; // provinciaCondominio = condominio.Indirizzo.CodiceProvincia; //} //var partitaIvaAmministratore = amministratore.PartitaIva; //if (string.IsNullOrEmpty(amministratore.PartitaIva)) // partitaIvaAmministratore = azienda.PartitaIva; var importoTotale = result.Sum(item => item.Importo); //var importoTotaleLettere = Gipasoft.Library.BusinessData.CifreLettere.CalcolaLettere(importoTotale); //// ------------------------------------------ //// NVelocity //// ------------------------------------------ //var memoryEngine = NVelocityEngineFactory.CreateNVelocityMemoryEngine(true); //System.Collections.IDictionary context = new System.Collections.Hashtable(); //context.Add("amministratore", descrizioneAmministratore); //context.Add("codiceFiscaleAmministratore", amministratore.CodiceFiscale); //context.Add("partitaIvaAmministratore", partitaIvaAmministratore); //context.Add("condominio", "CONDOMINIO: " + condominio.DisplayName); //context.Add("indirizzoCondominio", indirizzoCondominio); //context.Add("capCondominio", capCondominio); //context.Add("comuneCondominio", comuneCondominio); //context.Add("provinciaCondominio", provinciaCondominio); //context.Add("codiceFiscalCondominio", condominio.CodiceFiscale); //context.Add("dataInizio", "01/01/" + anno); //context.Add("dataFine", "31/12/" + anno); //context.Add("importoSpeseTotali", importoTotale.ToString("#,##0.00")); //context.Add("importoSpeseTotaliLettere", importoTotaleLettere); //context.Add("detrazione", detrazione); //context["importo"] = string.Empty; //context["importoLettere"] = string.Empty; foreach (var importiPersonaDTO in result) { DateTime? dataIniziale = null; DateTime? dataFinale = null; if (anno == 2012) { if (detrazione == 36) { dataIniziale = new DateTime(2012, 1, 1); dataFinale = new DateTime(2012, 6, 25); } else if(detrazione == 50) { dataIniziale = new DateTime(2012, 6, 26); dataFinale = new DateTime(2012, 12, 31); } } var parametriStampaUnione = new ParametriStampaUnione { Importo = importiPersonaDTO.Importo, ImportoTotale = importoTotale, IdCondominio = condominio.ID, Anno = anno, Detrazione = detrazione, DataIniziale = dataIniziale, DataFinale = dataFinale, IdPersona = importiPersonaDTO.ID }; importiPersonaDTO.TestoLettera = GetServiceClient().ApplicaStampaUnione(modello.TestoHtml, parametriStampaUnione, GetUserInfo()); importiPersonaDTO.OggettoLettera = GetServiceClient().ApplicaStampaUnione(modello.Oggetto, parametriStampaUnione, GetUserInfo()); } return result; }
private void btnMessaggioClick(object sender, EventArgs e) { var parameters = new ParametriStampaUnione { ParametriAggiuntiviLettera = new ParametriAggiuntiviCompilazioneLettera { TipoLettera = TipoModelloLetteraEnum.Messaggistica } }; if (sceltaCondominioCombo1.CondominioSelected != null) parameters.IdCondominio = sceltaCondominioCombo1.CondominioSelected.ID; if (getInvioMessaggioService().OpenDialogFormTestoMessaggio(null, parameters, null, new DocumentoFilter(), true) == DialogResult.Yes) { parameters.Oggetto = getInvioMessaggioService().GetOggetto(); parameters.Body = getInvioMessaggioService().GetTestoMessaggio(); var aggiornaContatti = false; if (_contatti.Count > 0) aggiornaContatti = CommonMessages.DisplayConfirm("Vuoi aggiornare i contatti che hai modificato?") == DialogResult.Yes; var risultati = _personaService.InvioMessaggio( sceltaCondominioCombo1.CondominioSelected, MotivoMessaggio.Personale, getInvioMessaggioService().GetOggetto(), getInvioMessaggioService().GetTestoMessaggio(), getPersoneSelezionate(), _contatti, getInvioMessaggioService().GetMittente(), getInvioMessaggioService().GetEmailRapportino(), getInvioMessaggioService().GetDocumenti(), getInvioMessaggioService().GetDocumentiNew(), getInvioMessaggioService().GetTipoMessaggio(), getInvioMessaggioService().GetModelloLettera(), parameters, new ParametriInvioLettera { Tipo = getInvioMessaggioService().GetMessageType(), Asincrono = getInvioMessaggioService().GetInvioVeloce(), Colore = getInvioMessaggioService().GetColore(), FronteRetro = getInvioMessaggioService().GetFronteRetro(), PaginaIniziale = getInvioMessaggioService().GetPrimaPaginaMittente(), AccodaMessaggio = getInvioMessaggioService().GetAccodaMessaggio(), Aggregazione = getInvioMessaggioService().GetAggregazioneDocumenti(), FormatoDocumento = getInvioMessaggioService().GetFormatoDocumento(), ApriFileGenerato = getInvioMessaggioService().GetApriFile(), RinumeraPagine = getInvioMessaggioService().GetNumeraPagine() }, aggiornaContatti); var invioRiuscito = true; var messaggioInvio = string.Empty; foreach (var risultato in risultati) { if (!risultato.InvioRiuscito) invioRiuscito = false; messaggioInvio += risultato.MessaggioInvio + Environment.NewLine; } if (invioRiuscito) { CommonMessages.DisplayComplete(messaggioInvio); if(aggiornaContatti) btnCercaClick(null, EventArgs.Empty); } else CommonMessages.DisplayWarning("Si sono verificati dei problemi durante l'invio del messaggio: " + Environment.NewLine + messaggioInvio); } }
private void btnLetteraClick(object sender, EventArgs e) { try { validationSummaryLettera.Validate(); if (validationSummaryLettera.IsValid) { PersonaDTO personaLettera = null; var fornitore = sceltaFornitoreCombo1.SelectedListaFornitore; if (fornitore != null) personaLettera = getPersonaService().GetById(fornitore.IdPersona); else if (cmbIncaricato.ActiveRow != null) personaLettera = getPersonaService().GetById(((RichiedentePraticaDTO)cmbIncaricato.ActiveRow.ListObject).IdPersona); if (personaLettera != null) { var dialogResultConferma = CommonMessages.DisplayConfirm($"Per compilare correttamente la lettera l'attività deve essere salvata.{Environment.NewLine}Sei sicuro di voler continuare?"); if (dialogResultConferma == DialogResult.Yes) { var attivita = conferma(false); if (attivita.ID > 0) { var note = string.Empty; var dialogResult = CommonMessages.DisplayConfirm("Vuoi inserire nella lettera il testo dell'attività?"); if (dialogResult == DialogResult.Yes) note = Conversione.ToString(txtNote.GetDocumento("HTML")); var numeroFaxIncaricato = string.Empty; var contattiFax = getPersonaService().GetContattiByTipo(personaLettera, "Fax"); if (contattiFax.Count > 0) numeroFaxIncaricato = contattiFax[0].Valore; // Persona da contattare var personaDaContattare = personaContattare.SelectedPersona; int? idPersonaDaContattare = null;if (personaDaContattare != null) idPersonaDaContattare = personaDaContattare.ID; var telefonoDaContattare = string.Empty; if (personaDaContattare != null) { var persona = getPersonaService().GetById(personaDaContattare.ID); var telefonoContatti = getPersonaService().GetContattiByTipo(persona, "Telefono"); if (telefonoContatti.Count > 0) telefonoDaContattare = telefonoContatti[0].Valore; } var parametri = new ParametriStampaUnione { IdCondominio = _condominio.ID, IdPersonaAttiva = personaLettera.ID, IdPersonaRichiedente = idPersonaDaContattare, DataAttiva = cmbDataFinePrevista.DateTime, Body = note, ContattiDestinatario = numeroFaxIncaricato, TipoIndirizzo = TipoIndirizzo.Recapito, TelefonoDaContattare = telefonoDaContattare, Identificativo = attivita.ID.ToString(CultureInfo.InvariantCulture) }; if (sceltaFornitoreCombo1.SelectedListaFornitore != null) parametri.IdFornitore = sceltaFornitoreCombo1.SelectedListaFornitore.ID; if (cmbResponsabile.Value != null) parametri.IdResponsabile = ((ReferenteDTO)cmbResponsabile.ActiveRow.ListObject).PersonaId; if (cmbIncaricato.Value != null) parametri.IdIncaricatoAttivita = ((RichiedentePraticaDTO)cmbIncaricato.ActiveRow.ListObject).IdPersona; _lettereCreata = getModelloLetteraService().GetLetteraCompilata((int)modelliLettera.Value, parametri); if (_lettereCreata.FileName.ToCharArray().Intersect(System.IO.Path.GetInvalidFileNameChars()).Any()) CommonMessages.DisplayWarning($"Il nome di file '{_lettereCreata.FileName}' contiene dei caratteri non validi."); getManageDocumentoService().DocumentSave += dettaglioAttivitaUIDocumentSave; getManageDocumentoService().Open(_lettereCreata, ((ModelloLetteraDTO)modelliLettera.SelectedItem.ListObject).Descrizione, true, MergeFieldType.Default); var documentoDto = getDocumentoService().GetNew(attivita); documentoDto.DataCreazione = DateTime.Now; documentoDto.Descrizione = $"Lettera attività del {DateTime.Now}"; documentoDto.FileName = "Lettera attività.rtf"; documentoDto.FileExtension = ".rtf"; _lettereCreata.FileName = documentoDto.FileName; _lettereCreata.FileExtension = documentoDto.FileExtension; var documentMessages = getDocumentoService().Save(documentoDto, _lettereCreata); if (txtNote.Allegati != null) txtNote.Allegati.Clear(); else txtNote.Allegati = new List<DocumentoDTO>(); if (documentMessages.Documento != null) { txtNote.Allegati.Add(documentMessages.Documento); getPraticaService().SetDocumentoAttivita(attivita, documentMessages.Documento); } else CommonMessages.DisplayWarning($"Si è verificato un errore nel salvataggio del documento.{Environment.NewLine}{documentMessages.Message}"); } } } else CommonMessages.DisplayWarning("Non è definito il destinatario della lettera"); } else validationSummaryLettera.ShowErrorSummary(); } catch (Exception ex) { _log.ErrorFormat("Errore durante l'invio della lettera - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda); CommonMessages.DisplayWarning("Errore inaspettato durante l'invio della lettera."); } }
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; }
public IList<RisultatoInvioMessaggio> InvioMessaggio(int idAzienda, PersonaMessaggioDTO personaMessaggioDTO, Condominio condominio, int? idUnitaImmobiliare, int? idFornitore, int? idResponsabile, int? idIncaricatoAttivita, MotivoMessaggio motivoMessaggio, string oggetto, string testo, IList<string> destinatari, string mittente, string emailRapportino, IList<DocumentInfo> allegati, ParametriInvioLettera parametriInvioLettera) { try { if (destinatari.Count > 0) { var message = string.Empty; var invioRiuscito = false; var allegatiLista = new List<DocumentInfo>(allegati.Count); Persona persona = null; if (personaMessaggioDTO != null) persona = _daoFactory.GetPersonaDao().Find(personaMessaggioDTO.ID, false); var results = new List<RisultatoInvioMessaggio>(); var result = new eMessageResultSendFAX(); try { int? idCondominio = null; if (condominio != null) idCondominio = condominio.ID; var destinatariSend = new List<string>(); foreach (var item in destinatari) { if (!item.Trim().StartsWith("+39")) destinatariSend.Add("+39" + Conversione.ToPhoneNumber(item)); else destinatariSend.Add(Conversione.ToPhoneNumber(item)); } // ===================================== // Creo le pagine del FAX // ===================================== var nomiFiles = new string[allegati.Count]; var contenutoAllegati = new byte[allegati.Count][]; // ------------------------------------- // Allegati // ------------------------------------- var index = 0; foreach (var documento in allegati) { nomiFiles[index] = documento.FileName + documento.FileExtension; contenutoAllegati[index] = documento.Body; allegatiLista.Add(documento); index++; } // ------------------------------------- // Oggetto // ------------------------------------- decimal? importo = null; var tipoIndirizzo = TipoIndirizzo.Recapito; if (personaMessaggioDTO != null) { importo = personaMessaggioDTO.Importo; tipoIndirizzo = personaMessaggioDTO.TipoIndirizzo; } var parametri = new ParametriStampaUnione(persona != null ? (int?)persona.ID : null, idUnitaImmobiliare, idResponsabile, idIncaricatoAttivita, idFornitore, idCondominio, null, tipoIndirizzo, importo, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); oggetto = _messaggisticaService.ApplicaStampaUnione(oggetto, parametri, idAzienda); // ===================================== // Invio Messaggio // ===================================== // ------------------------------------- // Invio // ------------------------------------- var service = new Fax { Timeout = 999999999 }; var userService = new Users(); var credenziali = _configurationService.GetLoginInfo(idAzienda); if (credenziali != null && !string.IsNullOrEmpty(credenziali.Value.Utente) && !string.IsNullOrEmpty(credenziali.Value.Password)) { var success = false; try { var resultUsers = userService.Login(credenziali.Value.Utente, credenziali.Value.Password, null); success = resultUsers.success; } catch (Exception ex) { _log.WarnFormat("Errore durante il controllo delle credenziali - {0} - username:{1} - password:{2}", ex, Utility.GetMethodDescription(), credenziali.Value.Utente, credenziali.Value.Password); } if (success) { var identificazioneMittente = _configurationService.GetIdentificazioneMittente(idAzienda, TipoMessaggio.Fax, TipoIndirizzo.Recapito); // Controllo identificazione mittente if (string.IsNullOrEmpty(identificazioneMittente.Numero)) return new List<RisultatoInvioMessaggio> { new RisultatoInvioMessaggio("KO", null, false, "Il fax non può essere inviato perchè non è presente il numero di fax del mittente" + Environment.NewLine + "Inserire il numero nella anagrafica dello studio e riprovare.", new DocumentInfo()) }; if (!string.IsNullOrEmpty(identificazioneMittente.Email)) { if (!string.IsNullOrEmpty(emailRapportino)) emailRapportino += ","; emailRapportino += identificazioneMittente.Email; } // Mittente if (string.IsNullOrEmpty(mittente)) mittente = identificazioneMittente.Nome; if (ConfigurationManager.AppSettings["IsTest"] != null && bool.Parse(ConfigurationManager.AppSettings["IsTest"])) destinatariSend = new List<string> { "+390513371992" }; var parameters = new List<OptionalParameters> { new OptionalParameters { ParameterName = "NotificationEmail", ParameterValue = emailRapportino }, new OptionalParameters { ParameterName = "DeliveryTime", ParameterValue = DateTime.Now.ToString() }, new OptionalParameters { ParameterName = "HeaderFax", ParameterValue = identificazioneMittente.Numero }, new OptionalParameters { ParameterName = "HeaderName", ParameterValue = mittente } }; if (!parametriInvioLettera.Asincrono) result = service.Send(credenziali.Value.Utente, credenziali.Value.Password, destinatariSend.ToArray(), contenutoAllegati, nomiFiles, parameters.ToArray()); else { service.SendAsync(credenziali.Value.Utente, credenziali.Value.Password, destinatariSend.ToArray(), contenutoAllegati, nomiFiles, parameters.ToArray()); invioRiuscito = true; } message += result; _log.InfoFormat("Risultato invio fax:{0} - destinatario:{1}", result, destinatariSend.Aggregate(string.Empty, (current, dest) => current + (dest + ", "))); if (result.SpeditionResult.All(item => item.success)) invioRiuscito = true; } else { _log.WarnFormat("Credenziali non valide - {0} - username:{1} - password:{2}", Utility.GetMethodDescription(), credenziali.Value.Utente, credenziali.Value.Password); } } else { _log.FatalFormat("Errore inaspettato durante l'invio del fax. NON sono presenti le credenziali per l'invio del fax - {0} - oggetto:{1} - destinatario:{2}", Utility.GetMethodDescription(), oggetto, destinatari[0]); message = "KO - Non sono definite le credenziali per l'invio dei fax"; } } catch (Exception ex) { invioRiuscito = false; _log.FatalFormat("Errore inaspettato durante l'invio del fax - {0} - oggetto:{1} - destinatario:{2}", ex, Utility.GetMethodDescription(), oggetto, destinatari[0]); message = "KO - Errore inaspettato durante l'invio del fax"; } if (motivoMessaggio != MotivoMessaggio.ScadenzaContratto && invioRiuscito) { foreach (var singleResult in result.SpeditionResult) { try { string messaggioInvio; if (singleResult.success) { messaggioInvio = string.Format("Fax accodato per l'invio: {0}", singleResult.jobCode); _log.InfoFormat("Invio FAX RIUSCITO - {0} - messageCode: {1} - messaggio: {2} - jobcode: {3} - destinatario: {4}", Utility.GetMethodDescription(), singleResult.messageCode, singleResult.errorDescription, singleResult.jobCode, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ";"))); } else { messaggioInvio = "Invio della lettera non riuscito:" + Environment.NewLine + singleResult.errorDescription; _log.WarnFormat("Invio FAX FALLITO - {0} - messageCode: {1} - messaggio: {2} - jobcode: {3} - destinatario: {4}", Utility.GetMethodDescription(), singleResult.messageCode, singleResult.errorDescription, singleResult.jobCode, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ";"))); } var resultInvio = new RisultatoInvioMessaggio(singleResult.jobCode, singleResult.messageCode, singleResult.success, messaggioInvio, new DocumentInfo()); var storicoMessaggio = _messaggisticaService.StoricizzaMessaggio(persona, condominio, resultInvio, motivoMessaggio, oggetto, testo, destinatari, mittente, emailRapportino, allegatiLista, TipoMessaggio.Fax); if (storicoMessaggio != null) resultInvio.IdMessaggio = storicoMessaggio.ID; results.Add(resultInvio); } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la storicizzazione del messaggio - {0} - oggetto:{1} - destinatario:{2}", ex, Utility.GetMethodDescription(), oggetto, destinatari[0]); throw; } } } else { if (!invioRiuscito) results.Add(new RisultatoInvioMessaggio("KO", null, false, message, new DocumentInfo())); } return results; } } catch (Exception ex) { var idPersona = "<NULL>"; if (personaMessaggioDTO != null) idPersona = personaMessaggioDTO.ID.ToString(); var idCondominio = "<NULL>"; if (condominio != null) idCondominio = condominio.ID.ToString(); _log.FatalFormat("Errore inaspettato nell'invio del fax - {0} - azienda:{1} - persona:{2} - condominio:{3} - motivoMessaggio:{4} - oggetto:{5} - testo:{6} - destinatari:{7} - mittente:{8} - emailRapportino:{9}", ex, Utility.GetMethodDescription(), idAzienda, idPersona, idCondominio, motivoMessaggio, oggetto, testo, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), mittente, emailRapportino); throw; } return new List<RisultatoInvioMessaggio> { new RisultatoInvioMessaggio(null, null, false, "Non è definito nessun destinatario", new DocumentInfo())}; }
private void btnInviaClick(object sender, EventArgs e) { validationSummaryInvioMessaggio.Validate(); if (validationSummaryInvioMessaggio.IsValid) { conferma(false); if (DialogResult == DialogResult.OK) { PersonaDTO personaFornitore = null; if (sceltaFornitoreCombo1.SelectedListaFornitore != null) personaFornitore = getPersonaService().GetById(sceltaFornitoreCombo1.SelectedListaFornitore.IdPersona); var numeroFaxFornitore = string.Empty;if (personaFornitore != null && getPersonaService().GetContattiByTipo(personaFornitore, "Fax").Count > 0) { var contattiFornitore = getPersonaService().GetContattiByTipo(personaFornitore, "Fax"); if (contattiFornitore.Count > 0) numeroFaxFornitore = contattiFornitore[0].Valore; } var parametri = new ParametriStampaUnione { IdCondominio = _condominio.ID, IdPersonaRichiedente = _pratica.IdPersonaRiferimento, DataAttiva = cmbDataFinePrevista.DateTime, ContattiDestinatario = numeroFaxFornitore, Identificativo = "" }; if (personaFornitore != null) parametri.IdPersonaAttiva = personaFornitore.ID; else if (cmbIncaricato.Value != null) parametri.IdPersonaAttiva = ((RichiedentePraticaDTO)cmbIncaricato.ActiveRow.ListObject).IdPersona; if (cmbResponsabile.Value != null) parametri.IdResponsabile = ((ReferenteDTO)cmbResponsabile.ActiveRow.ListObject).PersonaId; if (cmbIncaricato.Value != null) parametri.IdIncaricatoAttivita = ((RichiedentePraticaDTO)cmbIncaricato.ActiveRow.ListObject).IdPersona; if (sceltaFornitoreCombo1.SelectedListaFornitore != null) parametri.IdFornitore = sceltaFornitoreCombo1.SelectedListaFornitore.ID; var defaultTipoMessaggio = (TipoMessaggio)Enum.Parse(typeof(TipoMessaggio), tipoMessaggio.Text); getInvioMessaggioUIService().ShowInserisciTestoCustom(getTestoMessaggio()); if (getInvioMessaggioUIService().OpenDialogFormInvioMessaggio(defaultTipoMessaggio, personaFornitore, null, ((ReferenteDTO)cmbResponsabile.SelectedRow.ListObject).Email, parametri) == DialogResult.Yes) { parametri.Body = getInvioMessaggioUIService().GetTestoMessaggio(); parametri.Oggetto = getInvioMessaggioUIService().GetOggetto(); parametri.TelefonoDaContattare = getInvioMessaggioUIService().GetContattoDaContattare(); if(NuovaAttivita != null) parametri.Identificativo = NuovaAttivita.ID.ToString(CultureInfo.InvariantCulture); var personaDaContattare = getInvioMessaggioUIService().GetPersonaDaContattare(); if (personaDaContattare != null) parametri.IdPersonaRichiedente = personaDaContattare.ID; int? idModello = null; var modello = getInvioMessaggioUIService().GetModelloLettera(); if (modello != null) idModello = modello.Id; // ----------------------------------------------------------------------------------------------------------------------------------------------- // Se il messaggio è email e è stato scelto un modello il testo della mail NON può essere ciò che l'utente ha scritto nella textarea devexpress // quindi occorre definire, in questo caso un testo di default per la mail: GetTestoEmailAllegato() // ----------------------------------------------------------------------------------------------------------------------------------------------- var tipoMessaggioSelezionato = getInvioMessaggioUIService().GetTipoMessaggio(); var testo = getInvioMessaggioUIService().GetTestoMessaggio(); if (tipoMessaggioSelezionato == TipoMessaggio.Email && idModello != null) testo = getPraticaService().GetTestoEmailAllegato(); // ----------------------------------------------------------------------------------------------------------------------------------------------- var form = new ExecuteLoadDataObjectAsync<IList<RisultatoInvioMessaggio>>("Il messaggio è in corso di invio ....." + Environment.NewLine + "Si prega di attendere."); Func<IList<RisultatoInvioMessaggio>> loadDati = () => getPraticaService().NotificaAIncaricato(_condominio.ID, NuovaAttivita, getInvioMessaggioUIService().GetContattiSelected(), getInvioMessaggioUIService().GetEmailRapportino(), getInvioMessaggioUIService().GetMittente(), getInvioMessaggioUIService().GetOggetto(), testo, getInvioMessaggioUIService().GetDocumenti(), getInvioMessaggioUIService().GetDocumentiNew(), idModello, parametri, getInvioMessaggioUIService().GetParametriInvioLettera(), tipoMessaggioSelezionato, getInvioMessaggioUIService().GetAggiornaContatti()); form.LoadData(loadDati); form.ShowDialog(); var risultatoNotifica = form.DataSourceObject; form.Dispose(); // TODO: Verificare perchè è possibile non avere nessun risultato bugid#3948 var messaggioRisultatoNotifica = new StringBuilder(); foreach (var risultatoInvioMessaggio in risultatoNotifica) { if (!string.IsNullOrEmpty(risultatoInvioMessaggio.MessaggioInvio)) messaggioRisultatoNotifica.AppendLine(risultatoInvioMessaggio.MessaggioInvio); } CommonMessages.DisplayComplete("L'inserimento dell'attività è terminato correttamente." + Environment.NewLine + messaggioRisultatoNotifica); foreach (var risultatoInvioMessaggio in risultatoNotifica) _idMessaggi.Add(risultatoInvioMessaggio.IdMessaggio); Close(); return; } CommonMessages.DisplayComplete("L'inserimento dell'attività è terminato correttamente." + Environment.NewLine + "Non è stato inviato nessun messaggio"); } } else validationSummaryInvioMessaggio.ShowErrorSummary(); }