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); } }
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)); } }
public ClientMailerSendStatus Send(CoreEmailDto clientMailerSendDto) { return(_emailQueueService.Save(clientMailerSendDto)); }