internal static MailDTO PairToProtocol(MailDTO mailDTO, ProtocolDTO protocolDTO) { var mailbox = (MailboxDTO)mailDTO.Mailbox; if (mailbox.IsPEC()) { FacadeFactory.Instance.PECMailFacade.PairToProtocol(mailDTO, protocolDTO); return(mailDTO); } else if (mailbox.IsPOL()) { //Non eseguo alcuna attività in quanto l'associazione viene già fatta nel metodo di invio POL return(mailDTO); } else if (mailbox.IsMessage()) { MessageEmail savedMessage = FacadeFactory.Instance.MessageEmailFacade.GetById(int.Parse(mailDTO.Id)); DSWMessage currentMessage = savedMessage.Message; Protocol protocol = FacadeFactory.Instance.ProtocolFacade.GetById(protocolDTO.UniqueId.Value); ProtocolMessage newProtocolMessage = new ProtocolMessage(ref protocol, ref currentMessage); FacadeFactory.Instance.ProtocolMessageFacade.Save(ref newProtocolMessage); return(mailDTO); } var message = string.Format("Mailbox.TypeName \"{0}\" non gestito.", mailDTO.Mailbox.TypeName); throw new NotImplementedException(message); }
private void OnSent(DSWMessage message) { if (ErrorCounter.ContainsKey(message.Id)) { ErrorCounter.Remove(message.Id); } message.Status = DSWMessage.MessageStatusEnum.Sent; Facade.MessageFacade.Update(ref message); Facade.MessageLogFacade.InsertLog(message, "Messaggio spedito", MessageLog.MessageLogType.Sent); }
private void OnError(DSWMessage message, Exception ex) { if (ErrorCounter.ContainsKey(message.Id)) { ErrorCounter[message.Id]++; if (ErrorCounter[message.Id] >= Parameters.MaxErrorCount) { // Imposto il messaggio a errore message.Status = DSWMessage.MessageStatusEnum.Error; Facade.MessageFacade.Update(ref message); // Salvo il Log e segnalo il problema FileLogger.Error(Name, string.Format("Errore in fase spedizione messaggio [{0}].", message.Id), ex); Facade.MessageLogFacade.InsertLog(message, string.Format("Errore Spedizione: {0}", ex.Message), MessageLog.MessageLogType.Error); StringBuilder s = new StringBuilder(); s.AppendFormat("Messaggio [{0}] disattivato per errore in fase spedizione: {1}. Collegarsi per verificare e riattivare il messaggio.", message.Id, ex.Message); foreach (MessageEmail m in message.Emails) { s.AppendFormat("{0}{0}Riferimento Mail Inviata{0} Data: {1}{0} Oggetto: {2}{0} ", Environment.NewLine, DateTime.Now, m.Subject); foreach (MessageContactEmail contact in m.GetRecipients()) { s.AppendFormat("Destinatari: {0}", contact.Email); } } MessageEventArgs args = new MessageEventArgs(s.ToString()); if (this.Parameters.NotifySender) { args.Recipients.Add(message.GetSender().Email); } this.SendMessage(args); } } else { ErrorCounter.Add(message.Id, 1); } FileLogger.Error(Name, string.Format("Error n. {0} in fase spedizione messaggio [{1}].", ErrorCounter[message.Id], message.Id), ex); }