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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }