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); }
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); }
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); }
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); } }