public StoricoMessaggio StoricizzaMessaggio(Persona persona, Condominio condominio, RisultatoInvioMessaggio risultatoInvioMessaggio, MotivoMessaggio motivoMessaggio, string oggetto, string testo, IList<string> destinatari, string mittente, string emailRapportino, IList<DocumentInfo> allegati, TipoMessaggio tipoMessaggio) { try { StoricoMessaggio messaggio = null; if (motivoMessaggio != MotivoMessaggio.ScadenzaContratto) { if (persona != null) { var indirizzi = string.Empty; foreach (var destinatario in destinatari) { if (!string.IsNullOrEmpty(indirizzi)) indirizzi += "¥"; indirizzi += destinatario; } if (oggetto.Length > 512) oggetto = oggetto.Substring(0, 512); if (mittente.Length > 50) mittente = mittente.Substring(0, 50); messaggio = new StoricoMessaggio(persona, tipoMessaggio, motivoMessaggio, oggetto, indirizzi, mittente, risultatoInvioMessaggio.CodiceInvio, risultatoInvioMessaggio.CodiceMessaggio, risultatoInvioMessaggio.InvioRiuscito, DateTime.Now) { Testo = testo, Condominio = condominio }; // TODO: Possibile sviluppo futuro // ========================================================================================= // Le email si suppongono sempre ricevute al momento dell'invio. // Per poter gestire uno stato 'InAttesa' occorre avere una gestione automatica delle // conferme di ricezione attualmente non presente // ========================================================================================= if (tipoMessaggio == TipoMessaggio.Email) messaggio.Stato = StatoMessaggio.InAttesa; _daoFactory.GetStoricoMessaggioDao().SaveOrUpdate(messaggio); // ---------------------------------- // Allegati // ---------------------------------- if (allegati != null) { foreach (var documentInfo in allegati) { var storicoMessaggioAllegato = new StoricoMessaggioAllegato(messaggio, documentInfo.FileId, documentInfo.FileName, documentInfo.FileExtension); _daoFactory.GetStoricoMessaggioAllegatoDao().SaveOrUpdate(storicoMessaggioAllegato); } } } } return messaggio; } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la storicizzazione del messaggio - {0} - oggetto: {1} - indirizzi: {2} - tipo: {3}", ex, Utility.GetMethodDescription(), oggetto, destinatari.Aggregate(string.Empty, (current, destinatario) => current + (destinatario + "; ")), tipoMessaggio.ToString()); throw; } }
public bool SetConfermaRicezioneNotifica(string codiceInvio, string messageBody) { try { var result = false; _documentService.SetDaoFactory(_daoFactory); _log.DebugFormat("Richiesta conferma di invio messaggio - {0} - codiceInvio:{1}", Utility.GetMethodDescription(), codiceInvio); var messaggi = _daoFactory.GetStoricoMessaggioDao().GetByCodiceInvio(codiceInvio); if (!messaggi.Any()) messaggi = _daoFactory.GetStoricoMessaggioDao().GetByCodiceMessaggio(codiceInvio); foreach (var messaggio in messaggi) { var azienda = _daoFactory.GetAziendaDao().Find(messaggio.Persona.AziendaID.GetValueOrDefault(), false); if (azienda != null) { _log.DebugFormat("Salvataggio documento di conferma invio messaggio - {0} - codiceInvio:{1} - messageBody:{2}", Utility.GetMethodDescription(), codiceInvio, messageBody); var documentoMessage = _documentService.SaveDocument(Conversione.ToByteArray(messageBody), $"Rapportino per {codiceInvio}.eml", ".eml", null, azienda.ID); if (documentoMessage.Documento != null) { result = true; var checksum = documentoMessage.Documento.Checksum; var nomeFile = $"Rapportino per {codiceInvio}.eml"; var doc = new Documento(checksum, nomeFile, ".eml", "RapportinoFax", false, azienda) { Descrizione = $"Rapportino per {codiceInvio} del: {DateTime.Today:d}" }; _daoFactory.GetDocumentoDao().SaveOrUpdate(doc); var rapportino = new StoricoMessaggioAllegato(messaggio, checksum, nomeFile, ".eml") { DataInserimento = DateTime.Now, UtenteInserimento = "quartz" }; _daoFactory.GetStoricoMessaggioAllegatoDao().SaveOrUpdate(rapportino); messaggio.RapportinoRicevuto = true; messaggio.DataRicezione = DateTime.Now; _daoFactory.GetAttivitaMessaggioDao().CommitChanges(); } } } return result; } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la conferma di ricezione di un rapportino di invio messaggio - {0} - codiceInvio:{1}", ex, Utility.GetMethodDescription(), codiceInvio); throw; } }
private DocumentoDTO setDto(StoricoMessaggioAllegato allegato) { return new DocumentoDTO { Descrizione = allegato.NomeFile, FileName = allegato.NomeFile, FileExtension = allegato.EstensioneFile, Checksum = allegato.CheckSumAllegato, DataCreazione = allegato.DataInserimento.GetValueOrDefault() }; }