Esempio n. 1
0
        public List <long> Save(CoreEmailDto emailQueueDto)
        {
            using (var dbContext = MailerContext)
            {
                var savedEmailIds = new List <long>();
                using (var trans = new TransactionScope())
                {
                    var emailMessage = new EmailMessage
                    {
                        FromAddress     = emailQueueDto.From.EmailAddress,
                        FromPerson      = emailQueueDto.From.DisplayName,
                        SubjectTemplate = emailQueueDto.SubjectTemplate,
                        BodyTemplate    = emailQueueDto.BodyTemplate,
                        Host            = emailQueueDto.Host,
                        Port            = emailQueueDto.Port
                    };

                    dbContext.EmailMessages.Add(emailMessage);
                    dbContext.SaveChanges();

                    var newEmailMessageId = emailMessage.EmailMessageId;
                    foreach (var receiverMail in emailQueueDto.To)
                    {
                        var emailQueue = new EmailQueue
                        {
                            EmailMessageId         = newEmailMessageId,
                            EmailStatus            = (byte)EmailQueueStatus.Unprocessed,
                            EmailType              = emailQueueDto.EmailType,
                            TriesLeft              = emailQueueDto.TriesLeft,
                            AvailableToSendFromUtc = DateTime.UtcNow,
                            CreatedOn              = DateTime.UtcNow,
                            CreatedBy              = "System", // TODO change that
                            ToEmailAddress         = receiverMail.EmailAddress,
                            ToPerson = receiverMail.DisplayName
                        };

                        var replacements = new List <EmailReplacement>();
                        foreach (var replacementDto in emailQueue.EmailReplacements)
                        {
                            var replacement = new EmailReplacement
                            {
                                Token = replacementDto.Token,
                                Value = replacementDto.Value
                            };
                            replacements.Add(replacement);
                        }
                        replacements.ForEach(x => emailQueue.EmailReplacements.Add(x));

                        dbContext.EmailQueues.Add(emailQueue);
                        dbContext.SaveChanges();

                        savedEmailIds.Add(emailQueue.EmailQueueId);
                    }

                    trans.Complete();
                }

                return(savedEmailIds);
            }
        }
Esempio n. 2
0
 public ClientMailerSendStatus Save(CoreEmailDto emailQueueDto)
 {
     try
     {
         var id = _emailQueueRepository.Save(emailQueueDto);
         return(new ClientMailerSendStatus(StatusMailerSend.Ok, id));
     }
     catch (Exception e)
     {
         LogHelper.Error(e);
         return(new ClientMailerSendStatus(StatusMailerSend.Error, e.Message));
     }
 }
Esempio n. 3
0
 public ClientMailerSendStatus Send(CoreEmailDto clientMailerSendDto)
 {
     return(_emailQueueService.Save(clientMailerSendDto));
 }