コード例 #1
0
        private async Task NotifyAd(Shared.Functional.AdModel ad, string eventType, EmailTemplateEnum emailTemplate, NotificationTypeEnum notificationType, string callbackUrl)
        {
            _logger.LogInformation($"notify user {ad.OwnerId} for ad {ad.Id}");

            await _eventTrackingService.Create(ad.OwnerId, "Ad", eventType);

            var notification = new Notification
            {
                Id                = Guid.NewGuid(),
                CreatedDate       = DateTime.Now,
                CssClass          = "advalidate",
                ImageUrl          = "alert-advalidate",
                MessageTitle      = eventType,
                NotificationIcon  = "alert-advalidate",
                NotificationType  = notificationType.GetName(),
                NotificationUrl   = callbackUrl,
                UserId            = ad.OwnerId,
                DisplayMax        = 1,
                IsDisplayOnlyOnce = true
            };

            await _notificationService.Create(notification);

            await SendEmailTemplate(ad, emailTemplate, callbackUrl);
        }
コード例 #2
0
        private async Task SendEmailTemplate(Shared.Functional.AdModel ad, EmailTemplateEnum emailType, string callbackUrl)
        {
            _logger.LogInformation($"send email {emailType} to user {ad.OwnerId}");

            var frontWebSite   = _configuration["Service:FrontOffice:Url"];
            var logoUrl        = $"{frontWebSite.TrimEnd('/')}/assets/img/logo_full.png";
            var unSubscribeUrl = $"{frontWebSite.TrimEnd('/')}/Account/UnSubscribe";

            var parameters = new Dictionary <string, string>()
            {
                { "title", ad.Title },
                { "frontWebSite", frontWebSite },
                { "logoUrl", logoUrl },
                { "unSubscribeUrl", unSubscribeUrl },
                { "callbackUrl", callbackUrl }
            };

            if (emailType == EmailTemplateEnum.AdEndPublished)
            {
                parameters.Add("EndPublishingDate", ad.EndDisplayTime.Value.ToLongDateString());
                parameters.Add("ViewCount", ad.ViewCount.ToString());
            }

            var message = GenerateHtmlTemplate(_serviceProvider, _env.WebRootPath, emailType, parameters);
            var user    = await _userManager.FindByIdAsync(ad.OwnerId);

            await _emailSender.SendEmailAsync(user.Email, ad.Title, message);
        }
コード例 #3
0
        public static string ReadSubject(EmailTemplateEnum mailType)
        {
            switch (mailType)
            {
            case EmailTemplateEnum.UserRegistrationConfirmedEmail:
                return(Resources.UserRegistrationConfirmedSubject);

            case EmailTemplateEnum.UserRegistrationCreatedEmail:
                return(Resources.UserRegistrationCreatedSubject);
            }

            return(null);
        }
コード例 #4
0
        public static byte[] ReadAttachment(EmailTemplateEnum mailType)
        {
            switch (mailType)
            {
            case EmailTemplateEnum.UserRegistrationConfirmedEmail:
                return(null);

            case EmailTemplateEnum.UserRegistrationCreatedEmail:
                return(null);
            }

            return(null);
        }
コード例 #5
0
        private async Task SendEmailTemplate(ApplicationUser user, EmailTemplateEnum emailTemplate, string emailSubject)
        {
            var longUrl = $"{_configuration["Service:FrontOffice:Url"].TrimEnd('/')}/subscription-pack";

            var frontWebSite = _configuration["Service:FrontOffice:Url"];
            var logoUrl      = $"{_configuration["Service:FrontOffice:Url"]}/assets/img/logo_full.png";
            var login        = $"{user.DisplayName}";

            var parameters = new Dictionary <string, string>()
            {
                { "login", login },
                { "frontWebSite", frontWebSite },
                { "logoUrl", logoUrl },
                { "callbackUrl", longUrl }
            };

            var message = GenerateHtmlTemplate(_serviceProvider, _env.WebRootPath, emailTemplate, parameters);
            await _emailSenderService.SendEmailAsync(user.Email, emailSubject, message);
        }
コード例 #6
0
        public Task SendEmailAsync(string email, EmailTemplateEnum mailType, Dictionary <string, string> paramsDict)
        {
            if (!_disabled)
            {
                email = _isDev ? _devEmail : email;
                var message    = EmailTemplateHelper.ReadTemplate(mailType);
                var subject    = EmailTemplateHelper.ReadSubject(mailType);
                var attachment = EmailTemplateHelper.ReadAttachment(mailType);
                foreach (var param in paramsDict)
                {
                    message = message.Replace("{{" + param.Key + "}}", param.Value);
                    subject = subject.Replace("{{" + param.Key + "}}", param.Value);
                }
                //todo Remove this crutch
                if (_isDev)
                {
                    message = message.Replace("http://localhost:8080/img/vshopelogosmall.png",
                                              "https://freshopdev.azurewebsites.net/img/vshopelogosmall.png");
                }
                return(Execute(_config["Sendgrid:Key"], subject, message, email, attachment));
            }

            return(Task.CompletedTask);
        }
コード例 #7
0
 private async Task SendForgetPasswordEmail(EmailTemplateEnum emailTemplate, Dictionary <string, string> parameters)
 {
     var message = GenerateHtmlTemplate(_serviceProvider, _env.WebRootPath, emailTemplate, parameters);
     await _emailSender.SendEmailAsync(Input.Email, "Reset Password", message);
 }
コード例 #8
0
        private static string LoadTemplate(IServiceProvider serviceProvider, string rootPath, EmailTemplateEnum emailTemplate)
        {
            var reader           = ActivatorUtilities.GetServiceOrCreateInstance <ITemplateFileReader>(serviceProvider);
            var templateFilePath = reader.GetFileName(rootPath, emailTemplate.GetName(), CultureInfo.CurrentCulture.TwoLetterISOLanguageName.ToLower());

            if (string.IsNullOrEmpty(templateFilePath))
            {
                return(string.Empty);
            }

            return(reader.ReadFile(templateFilePath));
        }
コード例 #9
0
        public static string GenerateHtmlTemplate(IServiceProvider serviceProvider, string rootPath, EmailTemplateEnum emailTemplate, Dictionary <string, string> keyValuePairs)
        {
            var htmlBody = LoadTemplate(serviceProvider, rootPath, emailTemplate);

            foreach (var keyValue in keyValuePairs)
            {
                htmlBody = htmlBody.Replace($"[{keyValue.Key}]", keyValue.Value, StringComparison.OrdinalIgnoreCase);
            }

            return(htmlBody);
        }
コード例 #10
0
 public static string GetName(this EmailTemplateEnum emailTemplateEnum)
 {
     return(Enum.GetName(typeof(EmailTemplateEnum), emailTemplateEnum));
 }
コード例 #11
0
 private async Task SendEmailConfirmation(string newMail, EmailTemplateEnum templatePattern, Dictionary <string, string> parameters)
 {
     var message = GenerateHtmlTemplate(_serviceProvider, _env.WebRootPath, templatePattern, parameters);
     await _emailSender.SendEmailAsync(newMail, "Confirm your email", message);
 }
コード例 #12
0
 private async Task SendRegisterEmail(EmailTemplateEnum emailTemplate, Dictionary <string, string> parameters)
 {
     var message = GenerateHtmlTemplate(_serviceProvider, _env.WebRootPath, emailTemplate, parameters);
     await _emailSender.SendEmailAsync(Input.Email, "Confirm your email", message);
 }