// TODO Write Unit Tests public EmailTemplateContentModel GetEmailTemplate(EmailTemplatePlaceholdersGeneratorRequestModel data) { try { var dictionary = GetEmailTemplatePlaceholderDictionary(data); if (data.EmailTemplateType == EmailTemplateType.Office365TransitionReport) { dictionary = GetTransitionEmailTemplatePlaceholderDictionary(data, dictionary); } var requestData = new EmailTemplatePlaceholdersGeneratorModel { EmailTemplateType = data.EmailTemplateType, PlacehoderList = dictionary }; var template = _emailTemplateService.GetEmailTemplate(requestData); return(template); } catch (Exception ex) { this.Log().Error("Error occured on GetEmailTemplate!", ex); throw; } }
public async Task Consume(ConsumeContext <ISendEmailCommand> context) { var sendEmailCommand = context.Message; var message = new EmailMessageModel(); if (sendEmailCommand.Attachment) { var attach = await _emailMessageService.SendProductDetailsAsEmail(sendEmailCommand.CompanyId, sendEmailCommand.CatalogId); var messageModel = new EmailMessageModel { To = sendEmailCommand.To, Subject = sendEmailCommand.Subject, Body = sendEmailCommand.Body, attachment = attach, }; message = messageModel; } else { var emailData = new EmailTemplatePlaceholdersGeneratorRequestModel { EmailTemplateType = sendEmailCommand.EmailTemplateType, UserName = sendEmailCommand.UserName, CompanyId = sendEmailCommand.CompanyId, Password = sendEmailCommand.Password, TempResetLink = sendEmailCommand.TempResetLink, Domain = sendEmailCommand.Domain, TxtRecord = sendEmailCommand.TxtRecord, Report = sendEmailCommand.Report, CustomSecurePanelId = sendEmailCommand.CustomSecureCompanyId, }; var template = _emailMessageService.GetEmailTemplate(emailData); var MessageModel = new EmailMessageModel { To = sendEmailCommand.To, Subject = template.Subject, Body = template.Body, EmailMediaType = EmailMediaType.Html, BCC = sendEmailCommand.BCC }; message = MessageModel; } // Required fields: EmailTemplateType and UserName or ComapnyId var sendEmailService = Settings.IoC.GetContainer().Resolve <ISendEmailService>(); this.Log().Info($"Sending email {sendEmailCommand.EmailTemplateType.ToString()} to {sendEmailCommand.To}"); sendEmailService.SendEmail(message); foreach (var recipient in sendEmailCommand.Recipients) { message.To = recipient; sendEmailService.SendEmail(message); } await Task.FromResult(context.Message); }
// TODO Write Unit Tests private Dictionary <string, string> GetEmailTemplatePlaceholderDictionary(EmailTemplatePlaceholdersGeneratorRequestModel data) { try { var user = data.UserName != null?_userService.GetUser(data.UserName) : null; var companyId = user?.CompanyId ?? data.CompanyId; var CustomSecurePanel = data.CustomSecurePanelId != 0 ? _customSecureControlPanelService.GetCustomSecurePanel(data.CustomSecurePanelId) : null; var company = _companyService.GetCompany(companyId); if (company == null) { throw new Exception($"No Comapny with id {companyId}"); } var parentCompanyId = company.ParentId ?? throw new Exception($"Comapny {company.Name} has no Parent Company Id"); var parentCompany = _companyService.GetCompany(parentCompanyId); var companySupportSiteUrl = company.SupportSiteUrl == "" ? parentCompany.SupportSiteUrl : company.SupportSiteUrl; if (parentCompany == null) { throw new Exception($"No Parent Comapny with id {parentCompanyId}"); } var dictionary = new Dictionary <string, string> { { EmailTemplatePlaceholdersConstants.UserDisplayName, user?.DisplayName ?? "" }, { EmailTemplatePlaceholdersConstants.UserLogin, user?.Email ?? "" }, { EmailTemplatePlaceholdersConstants.UserPasswordTempLink, data.TempResetLink }, { EmailTemplatePlaceholdersConstants.Password, data.Password }, { EmailTemplatePlaceholdersConstants.ARecordIp, _notificationServiceSettings.ARecordIp }, { EmailTemplatePlaceholdersConstants.CompanyName, company.Name ?? "" }, { EmailTemplatePlaceholdersConstants.CompanyPrimaryDomain, company.Domains.FirstOrDefault(d => d.IsPrimary)?.Name ?? "" }, { EmailTemplatePlaceholdersConstants.CompanyControlPanelUrl, company.ControlPanelSiteUrl ?? "" }, { EmailTemplatePlaceholdersConstants.CompanySupportUrl, companySupportSiteUrl ?? "" }, { EmailTemplatePlaceholdersConstants.CompanyContactPhone, company.PhoneNumber ?? "" }, { EmailTemplatePlaceholdersConstants.ParentCompanyName, parentCompany.Name ?? "" }, { EmailTemplatePlaceholdersConstants.ParentCompanyWebSite, parentCompany.Website ?? "" }, { EmailTemplatePlaceholdersConstants.ParentCompanyControlPanelUrl, parentCompany.ControlPanelSiteUrl ?? "" }, { EmailTemplatePlaceholdersConstants.ParentCompanySupportUrl, parentCompany.SupportSiteUrl ?? "" }, { EmailTemplatePlaceholdersConstants.ParentCompanyContactPhone, parentCompany.PhoneNumber ?? "" }, { EmailTemplatePlaceholdersConstants.ParentCompanyLogo, _configurationManager.GetByKey("ImageServerLogoPath") + "/CompanyLogo/" + parentCompany.LogoUrl }, { EmailTemplatePlaceholdersConstants.Domain, data.Domain }, { EmailTemplatePlaceholdersConstants.TxtRecord, data.TxtRecord }, { EmailTemplatePlaceholdersConstants.ControlPanelAddressStreet, CustomSecurePanel.CompanyAddressStreet ?? "" }, { EmailTemplatePlaceholdersConstants.ControlPanelAddressCity, CustomSecurePanel.CompanyAddressCity ?? "" }, { EmailTemplatePlaceholdersConstants.ControlPanelAddressState, CustomSecurePanel.CompanyAddressState ?? "" }, { EmailTemplatePlaceholdersConstants.ControlPanelAddressZip, CustomSecurePanel.CompanyAddressZipCode ?? "" }, { EmailTemplatePlaceholdersConstants.ControlPanelCompanyId, Convert.ToString(data.CompanyId) ?? "" }, { EmailTemplatePlaceholdersConstants.ControlPanelContactPhone, CustomSecurePanel.ContactPhone ?? "" }, { EmailTemplatePlaceholdersConstants.ControlPanelContactName, CustomSecurePanel.ContactPerson ?? "" }, { EmailTemplatePlaceholdersConstants.CustomSecureControlPanelURL, CustomSecurePanel.CustomSecureControlPanelURL ?? "" }, }; return(dictionary); } catch (Exception ex) { this.Log().Error("Error occured on GetEmailTemplatePlaceholderDictionary!", ex); throw; } }
private Dictionary <string, string> GetTransitionEmailTemplatePlaceholderDictionary(EmailTemplatePlaceholdersGeneratorRequestModel data, Dictionary <string, string> dictionary) { try { dictionary.Add(EmailTemplatePlaceholdersConstants.TransitionDeletedUsersCount, data.Report.DeletedUsersSucceed.Count.ToString()); dictionary.Add(EmailTemplatePlaceholdersConstants.TransitionAdminUsersCount, data.Report.AdminUsersSucceed.Count.ToString()); dictionary.Add(EmailTemplatePlaceholdersConstants.TransitionLicensesUsersCount, data.Report.LicenseUsersSucceed.Count.ToString()); var discussLicensesUsersTemp = ""; string discussLicensesUsers; foreach (var user in data.Report.KeepLicensesUsers) { discussLicensesUsersTemp += "<li>" + user + "</li>"; } if (data.Report.KeepLicensesUsers.Count > 0) { discussLicensesUsers = "<ul>" + discussLicensesUsersTemp + "</ul>"; } else { discussLicensesUsers = "<ul><li>No users for discussing licenses!</li></ul>"; } dictionary.Add(EmailTemplatePlaceholdersConstants.TransitionDiscussLicensesUsers, discussLicensesUsers); var deleteUsersFailed = ""; foreach (var user in data.Report.DeletedUsersFailed) { deleteUsersFailed += "<li>" + user + "</li>"; } var adminUsersFailed = ""; foreach (var user in data.Report.AdminUsersSucceed) { adminUsersFailed += "<li>" + user + "</li>"; } var licensesUsersFailed = ""; foreach (var user in data.Report.LicenseUsersSucceed) { licensesUsersFailed += "<li>" + user + "</li>"; } var failedUsers = "<ul>"; if (data.Report.DeletedUsersFailed.Count > 0) { failedUsers += "<li>Delete users failed:<ul>" + deleteUsersFailed + "</ul></li>"; } if (data.Report.AdminUsersSucceed.Count > 0) { failedUsers += "<li>Admin users failed:<ul>" + adminUsersFailed + "</ul></li>"; } if (data.Report.LicenseUsersSucceed.Count > 0) { failedUsers += "<li>Licenses users failed:<ul>" + licensesUsersFailed + "</ul></li>"; } failedUsers = "</ul>"; dictionary.Add(EmailTemplatePlaceholdersConstants.TransitionFailedUsers, failedUsers); return(dictionary); } catch (Exception ex) { this.Log().Error("Error occured on GetTransitionEmailTemplatePlaceholderDictionary!", ex); throw; } }