示例#1
0
        public static void AddFromResource(this SendGridMessage message, CultureInfo culture)
        {
            CultureInfo.DefaultThreadCurrentCulture = culture;
            var mailAddress = new MailAddress(ResourceWrapper.GetString("email_from"));

            message.From = new EmailAddress(mailAddress.Address, mailAddress.DisplayName);
        }
示例#2
0
        public async Task SmsUnreadAsync_IndiaFirstMessage_ResourceOk()
        {
            var result = new List <UnreadMessageDto>()
            {
                new UnreadMessageDto()
                {
                    UserId            = 1,
                    Version           = BitConverter.GetBytes(1L),
                    ChatMessagesCount = 1,
                    // FirstMessageStudentName = "Ram",
                    PhoneNumber = "+972523556456",
                    Email       = "*****@*****.**",
                    CultureInfo = new CultureInfo("en"),
                    Country     = "In"
                                  // CourseName = "Ram"
                }
            };

            _queryBusStub.Setup(s => s.QueryAsync(It.IsAny <UserUnreadMessageQuery>(), default)).ReturnsAsync(result);

            await SmsUnread.SmsUnreadAsync(null, _mockBlob.Object,
                                           _mockedResultSms, _mockedResultEmail, _queryBusStub.Object, _mockCommandBus.Object, new TestDataProtector(),
                                           _mockUriBuilder.Object, _logger, default);

            var emailExpectedResult = ResourceWrapper.GetString("unread_message_first_message_tutor_email").InjectSingleValue("link", _shortUrlIndia);

            _mockedResultEmail.Result.Single().Contents.First().Value.Should().Contain(emailExpectedResult);
        }
示例#3
0
        public async Task DoOperationAsync(RedeemTransactionMessage msg, IBinder binder, CancellationToken token)
        {
            var query  = new RedeemEmailQuery(msg.TransactionId);
            var result = await _queryBus.QueryAsync(query, token);

            if (result is null)
            {
                return;
            }
            var message = new SendGridMessage();


            message.AddContent("text/html", $"User id: {result.UserId} want to redeem {result.Amount}");

            var culture = new CultureInfo("en");

            if (result.Country.Equals("IN", StringComparison.OrdinalIgnoreCase))
            {
                culture = new CultureInfo("en-IN");
            }
            CultureInfo.CurrentCulture = CultureInfo.DefaultThreadCurrentCulture = culture;
            var emailTo = ResourceWrapper.GetString("email_support");

            message.AddTo(emailTo);
            var emailProvider = await binder.BindAsync <IAsyncCollector <SendGridMessage> >(new SendGridAttribute()
            {
                ApiKey  = "SendgridKey",
                From    = "Spitball <*****@*****.**>",
                Subject = $"Redeem Email {result.UserId}"
            }, token);

            await emailProvider.AddAsync(message, token);
        }
示例#4
0
        public async Task SmsUnreadAsync_FirstMessage_ResourceOk(string culture, string country)
        {
            var result = new List <UnreadMessageDto>()
            {
                new UnreadMessageDto()
                {
                    UserId            = 1,
                    Version           = BitConverter.GetBytes(1L),
                    ChatMessagesCount = 1,
                    PhoneNumber       = "+972523556456",
                    Email             = "*****@*****.**",
                    CultureInfo       = new CultureInfo(culture),
                    Country           = country
                }
            };

            _queryBusStub.Setup(s => s.QueryAsync(It.IsAny <UserUnreadMessageQuery>(), default)).ReturnsAsync(result);

            await SmsUnread.SmsUnreadAsync(null, _mockBlob.Object,
                                           _mockedResultSms, _mockedResultEmail, _queryBusStub.Object, _mockCommandBus.Object, new TestDataProtector(),
                                           _mockUriBuilder.Object, _logger, default);

            var body = _mockedResultSms.Result.Single().Body;

            CultureInfo.CurrentCulture = CultureInfo.CurrentUICulture = new CultureInfo(culture);
            var expectedResult = ResourceWrapper.GetString("unread_message_first_message_tutor").InjectSingleValue("link", _shortUrl);

            body.Should().BeEquivalentTo(expectedResult);
            var emailExpectedResult = ResourceWrapper.GetString("unread_message_first_message_tutor_email").InjectSingleValue("link", _shortUrl);

            _mockedResultEmail.Result.Single().Contents.First().Value.Should().Contain(emailExpectedResult);
        }
        public async Task DoOperationAsync(RequestTutorMessage message2, IBinder binder, CancellationToken token)
        {
            var query  = new RequestTutorEmailQuery(message2.LeadId);
            var result = await _queryBus.QueryAsync(query, token);

            foreach (var obj in result)
            {
                CultureInfo.DefaultThreadCurrentCulture = obj.TutorLanguage.ChangeCultureBaseOnCountry(obj.TutorCountry);
                var body = ResourceWrapper.GetString("unread_message_request_email_body");


                var code           = _dataProtectionService.ProtectData(obj.TutorId.ToString(), DateTimeOffset.UtcNow.AddDays(5));
                var identifierChat = ShortId.Generate(true, false);

                var url         = _urlBuilder.BuildChatEndpoint(code, new { utm_source = "request-tutor-email" });
                var commandChat = new CreateShortUrlCommand(identifierChat, url.PathAndQuery, DateTime.UtcNow.AddDays(5));
                await _commandBus.DispatchAsync(commandChat, token);

                var request = string.Empty;
                //TODO -  whatsapp link
                if (!string.IsNullOrEmpty(obj.Request))
                {
                    request = ResourceWrapper.GetString("unread_message_request_email_body_lead_request")
                              .InjectSingleValue("Request", obj.Request);
                }


                var whatsAppLink = new UriBuilder($"https://wa.me/{obj.StudentPhoneNumber.Replace("+", string.Empty)}")
                                   .AddQuery(new
                {
                    text = ResourceWrapper.GetString("unread_message_request_email_body_whatsapp_text").InjectSingleValue("CourseName", obj.CourseName),
                });

                var identifierWhatsApp = ShortId.Generate(true, false);
                var commandWhatsApp    = new CreateShortUrlCommand(identifierWhatsApp, whatsAppLink.ToString(), DateTime.UtcNow.AddDays(30));
                await _commandBus.DispatchAsync(commandWhatsApp, token);

                var urlShortWhatsApp = _urlBuilder.BuildShortUrlEndpoint(identifierWhatsApp, new
                {
                    eventCategory = "After tutor Submit",
                    eventAction   = "Whatsapp email",
                    eventLabel    = $"Tutor{obj.TutorId}, Student {obj.StudentId}"
                });
                body = body.InjectSingleValue("Request", request);

                body = body.InjectSingleValue("WhatsappLink", urlShortWhatsApp);

                var htmlBodyDirection = CultureInfo.CurrentCulture.TextInfo.IsRightToLeft ? "rtl" : "ltr";
                body = body.Inject(new
                {
                    Request       = request,
                    WhatsappLink  = whatsAppLink.ToString(),
                    UserFirstName = obj.TutorFirstName,
                    link          = _urlBuilder.BuildShortUrlEndpoint(identifierChat /*, obj.TutorCountry*/),
                    obj.StudentName,
                    obj.CourseName,
                    FirstMessageStudentName = obj.StudentName
                });
                var message = new SendGridMessage()
                {
                    Subject = ResourceWrapper.GetString("unread_message_request_email_subject").InjectSingleValue("FirstMessageStudentName", obj.StudentName)
                              .Inject(obj),
                    HtmlContent = $"<html><body dir=\"{htmlBodyDirection}\">{body.Replace(Environment.NewLine, "<br><br>")}</body></html>",
                };
                message.AddFromResource(CultureInfo.DefaultThreadCurrentCulture);
                message.AddTo(obj.TutorEmail);
                var emailProvider =
                    await binder.BindAsync <IAsyncCollector <SendGridMessage> >(new SendGridAttribute()
                {
                    ApiKey = "SendgridKey"
                }, token);

                await emailProvider.AddAsync(message, token);
            }
        }