示例#1
0
        // 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);
        }
示例#3
0
        // 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;
            }
        }
示例#4
0
        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;
            }
        }