/// <summary> /// Creates the email content for deals email /// </summary> /// <param name="dealsEmailCargo">Deals Email cargo</param> /// <returns>EmailContent for deals email</returns> private EmailContent PrepareEmail(DealsEmailCargo dealsEmailCargo) { EmailData emailData = _emailContentCreator.GetContent(dealsEmailCargo); bool isTest = (dealsEmailCargo.Hints != null) && dealsEmailCargo.Hints.IsTest; EmailContent emailContent = new EmailContent { From = isTest ? this._emailFromAddressTestAccount : this._emailFromAddress, FromDisplay = this._emailFromDisplay, Subject = emailData.Subject, HtmlBody = emailData.HtmlBody, TextBody = emailData.TextBody, Category = dealsEmailCargo.Campaign }; if (!dealsEmailCargo.Hints.IsTestEmail) { // Saving the email data in the history table UserEmailEntity emailToSend = new UserEmailEntity(dealsEmailCargo.UserId, dealsEmailCargo.LocationId, DateTime.UtcNow, EmailType.WeeklyDeal); emailToSend.SetSerializedPayload(new UserEmailPayload { DealIds = emailData.DealIds }); this._userHistoryStorage.SaveUserEmailEntity(emailToSend); } return(emailContent); }
/// <summary> /// Handles the Remainder email job /// </summary> /// <param name="emailCargo">RemainderEmail cargo</param> public void Handle(EmailCargo emailCargo) { PromotionalEmailCargo remainderEmailCargo = emailCargo as PromotionalEmailCargo; if (remainderEmailCargo != null) { var emailHistoryEntities = this._userHistoryStorage.GetUserEmailEntities(remainderEmailCargo.UserId, _mailHistoryLookback).ToList(); if (this.IsSendTimeWindowValid(emailHistoryEntities.FirstOrDefault(elem => string.Compare(elem.EmailType, EmailType.CompleteSignup.ToString(), StringComparison.CurrentCultureIgnoreCase) == 0), remainderEmailCargo)) { EmailData emailData = _emailContentCreator.GetContent(remainderEmailCargo); bool isTest = (remainderEmailCargo.Hints != null) && remainderEmailCargo.Hints.IsTest; EmailContent emailContent = new EmailContent { From = isTest ? this._emailFromAddressTestAccount : this._emailFromAddress, FromDisplay = this._emailFromDisplay, Subject = emailData.Subject, HtmlBody = emailData.HtmlBody, TextBody = emailData.TextBody, Category = remainderEmailCargo.Campaign }; SendEmailRequest request = new SendEmailRequest { Content = emailContent, ToList = new List <string> { remainderEmailCargo.EmailAddress }, IsTest = isTest }; // Send the email this._userServicesClient.SendEmail(remainderEmailCargo.Id, request, null); PromotionalEmailType remainderType; if (Enum.TryParse(remainderEmailCargo.PromotionalEmailType, true, out remainderType)) { // Saving the email data in the history table UserEmailEntity emailToSend = new UserEmailEntity(remainderEmailCargo.UserId, string.Empty, DateTime.UtcNow, EmailType.CompleteSignup); this._userHistoryStorage.SaveUserEmailEntity(emailToSend); } } } }
/// <summary> /// Creates the email content for deals email /// </summary> /// <param name="campaignEmailCargo">Deals Email cargo</param> /// <returns>EmailContent for deals email</returns> private EmailContent PrepareEmail(CampaignEmailCargo campaignEmailCargo) { EmailContent emailContent = null; EmailData emailData = _emailContentCreator.GetContent(campaignEmailCargo); if (emailData != null) { bool isTest = (campaignEmailCargo.Hints != null) && campaignEmailCargo.Hints.IsTest; emailContent = new EmailContent { From = isTest ? this._emailFromAddressTestAccount : this._emailFromAddress, FromDisplay = this._emailFromDisplay, Subject = emailData.Subject, HtmlBody = emailData.HtmlBody, TextBody = emailData.TextBody, Category = campaignEmailCargo.Campaign }; } return(emailContent); }
/// <summary> /// Handles the Merchant Email job /// </summary> /// <param name="emailCargo">Merchant Email cargo</param> public void Handle(EmailCargo emailCargo) { MerchantReportEmailCargo merchantReportEmailCargo = emailCargo as MerchantReportEmailCargo; if (merchantReportEmailCargo != null) { EmailData emailData = _emailContentCreator.GetContent(merchantReportEmailCargo); if (emailData != null) { bool isTest = (merchantReportEmailCargo.Hints != null) && merchantReportEmailCargo.Hints.IsTest; EmailContent emailContent = new EmailContent { From = isTest ? this._emailFromAddressTestAccount : this._merchantEmailFromAddress, FromDisplay = this._emailFromDisplay, Subject = emailData.Subject, HtmlBody = emailData.HtmlBody, TextBody = emailData.TextBody, Category = merchantReportEmailCargo.Campaign }; SendEmailRequest request = new SendEmailRequest { Content = emailContent, ToList = new List <string> { merchantReportEmailCargo.EmailAddress }, IsTest = isTest }; // Send the email Log.Verbose("Sending email for the email job : {0}", emailCargo.ToString()); this._userServicesClient.SendEmail(merchantReportEmailCargo.Id, request, null); } JobFetcher.CompleteJob(merchantReportEmailCargo.Id); } else { Log.Error("Invalid handler for the email job : {0}", emailCargo.ToString()); } }