Skip to content

Commit b610e21

Browse files
notiifcation optimization
1 parent fed1e1a commit b610e21

File tree

9 files changed

+53
-12
lines changed

9 files changed

+53
-12
lines changed

src/LagoVista.AspNetCore.Identity/Services/SendGridEmailService.cs

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@ namespace LagoVista.AspNetCore.Identity.Services
2525
{
2626
public class SendGridEmailService : IEmailSender
2727
{
28-
ILagoVistaAspNetCoreIdentityProviderSettings _settings;
29-
IAppConfig _appConfig;
30-
IAdminLogger _adminLogger;
28+
private readonly ILagoVistaAspNetCoreIdentityProviderSettings _settings;
29+
private readonly IBackgroundServiceTaskQueue _taskQueue;
30+
private readonly IAppConfig _appConfig;
31+
private readonly IAdminLogger _adminLogger;
3132

3233
public List<string> GetRequiredImportFields()
3334
{
@@ -44,11 +45,12 @@ public List<string> GetRequiredImportFields()
4445
}
4546

4647

47-
public SendGridEmailService(ILagoVistaAspNetCoreIdentityProviderSettings settings, IAppConfig appConfig, IAdminLogger adminLogger)
48+
public SendGridEmailService(ILagoVistaAspNetCoreIdentityProviderSettings settings, IBackgroundServiceTaskQueue taskQueue, IAppConfig appConfig, IAdminLogger adminLogger)
4849
{
4950
_settings = settings;
5051
_appConfig = appConfig;
5152
_adminLogger = adminLogger;
53+
_taskQueue = taskQueue;
5254
}
5355

5456
public class SendGridSender
@@ -615,6 +617,16 @@ public async Task<InvokeResult> AddContactToListAsync(string listId, string cont
615617
return InvokeResult.Success;
616618
}
617619

620+
public async Task<InvokeResult> SendInBackgroundAsync(string email, string subject, string body, EntityHeader org, EntityHeader user)
621+
{
622+
await _taskQueue.QueueBackgroundWorkItemAsync(async (cncl) =>
623+
{
624+
await SendAsync(email, subject, body, org, user);
625+
});
626+
627+
return InvokeResult.Success;
628+
}
629+
618630
public async Task<InvokeResult> SendAsync(string email, string subject, string body, EntityHeader org, EntityHeader user)
619631
{
620632
//IT IS POSSIBLE THAT ORG IS NULL HERE, IF THAT"S THE CASE WE NEED TO FALLBACK TO A MASTER ORG, this will be the case when the user does
@@ -1223,6 +1235,16 @@ public async Task<InvokeResult<string>> SendEmailSendListNowAsync(string singleS
12231235
}
12241236
}
12251237

1238+
public async Task<InvokeResult> SendInBackgroundAsync(Email email, EntityHeader org, EntityHeader user)
1239+
{
1240+
await _taskQueue.QueueBackgroundWorkItemAsync(async (token) =>
1241+
{
1242+
await SendAsync(email, org, user);
1243+
});
1244+
1245+
return InvokeResult.Success;
1246+
}
1247+
12261248
public async Task<InvokeResult<string>> SendAsync(Email email, EntityHeader org, EntityHeader user)
12271249
{
12281250
var msg = new SendGridMessage();

src/LagoVista.AspNetCore.Identity/Services/TwilioSMSSender.cs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using LagoVista.Core.Validation;
1+
using LagoVista.Core.Interfaces;
2+
using LagoVista.Core.Models;
3+
using LagoVista.Core.Validation;
24
using LagoVista.IoT.Logging.Loggers;
35
using LagoVista.UserAdmin.Interfaces.Managers;
46
using System;
@@ -14,13 +16,27 @@ public class TwilioSMSSender : ISmsSender
1416
{
1517
ILagoVistaAspNetCoreIdentityProviderSettings _settings;
1618
IAdminLogger _adminLogger;
19+
private readonly IBackgroundServiceTaskQueue _taskQueue;
1720

18-
public TwilioSMSSender(ILagoVistaAspNetCoreIdentityProviderSettings settings, IAdminLogger adminLogger)
21+
22+
public TwilioSMSSender(ILagoVistaAspNetCoreIdentityProviderSettings settings, IBackgroundServiceTaskQueue taskQueue, IAdminLogger adminLogger)
1923
{
2024
_settings = settings;
2125
_adminLogger = adminLogger;
26+
_taskQueue = taskQueue;
2227
}
2328

29+
public async Task<InvokeResult> SendInBackgroundAsync(string number, string contents)
30+
{
31+
await _taskQueue.QueueBackgroundWorkItemAsync(async (token) =>
32+
{
33+
await SendAsync(number, contents);
34+
});
35+
36+
return InvokeResult.Success;
37+
}
38+
39+
2440
public async Task<InvokeResult> SendAsync(string number, string contents)
2541
{
2642
try

src/LagoVista.UserAdmin/Interfaces/Managers/IEmailSender.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ public interface IEmailSender
1313
{
1414
Task<InvokeResult<string>> SendAsync(Email email, EntityHeader org, EntityHeader user);
1515

16+
Task<InvokeResult> SendInBackgroundAsync(Email email, EntityHeader org, EntityHeader user);
17+
1618
Task<InvokeResult> SendAsync(string email, string subject, string message, EntityHeader org, EntityHeader user);
19+
Task<InvokeResult> SendInBackgroundAsync(string email, string subject, string body, EntityHeader org, EntityHeader user);
1720
Task<InvokeResult<string>> RegisterContactAsync(Contact contact, Company company, EntityHeader org, EntityHeader user);
1821
Task<InvokeResult<string>> RegisterContactAsync(Contact contact, EntityHeader org, EntityHeader user);
1922
Task<InvokeResult<string>> CreateEmailListAsync(string listName, string customField, string id, EntityHeader org, EntityHeader user);

src/LagoVista.UserAdmin/Interfaces/Managers/ISmsSender.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ namespace LagoVista.UserAdmin.Interfaces.Managers
66
public interface ISmsSender
77
{
88
Task<InvokeResult> SendAsync(string number, string message);
9+
Task<InvokeResult> SendInBackgroundAsync(string number, string contents);
910
}
1011
}

tests/LagoVista.UserAdmin.Tests/EmailIntegrationTests/ContactImportTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class ContactImportTests
2626
[TestInitialize]
2727
public void Init()
2828
{
29-
_emailSenderService = new SendGridEmailService(new IdentitySettings(), new Moq.Mock<IAppConfig>().Object, new Moq.Mock<IAdminLogger>().Object);
29+
_emailSenderService = new SendGridEmailService(new IdentitySettings(), new Moq.Mock<IBackgroundServiceTaskQueue>().Object, new Moq.Mock<IAppConfig>().Object, new Moq.Mock<IAdminLogger>().Object);
3030
_orgManager.Setup(ogn => ogn.GetOrgNameSpaceAsync(It.Is<string>(o => o == _org.Id))).ReturnsAsync(_org.Key);
3131
}
3232

tests/LagoVista.UserAdmin.Tests/EmailIntegrationTests/ContactIntegration.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class ContactIntegration
2323
[TestInitialize]
2424
public void Init()
2525
{
26-
_emailSenderService = new SendGridEmailService(new IdentitySettings(), new Moq.Mock<IAppConfig>().Object, new Moq.Mock<IAdminLogger>().Object);
26+
_emailSenderService = new SendGridEmailService(new IdentitySettings(), new Moq.Mock<IBackgroundServiceTaskQueue>().Object, new Moq.Mock<IAppConfig>().Object, new Moq.Mock<IAdminLogger>().Object);
2727
}
2828

2929

tests/LagoVista.UserAdmin.Tests/EmailIntegrationTests/EmailAPI.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class EmailAPI
2626
[TestInitialize]
2727
public void Init()
2828
{
29-
_emailSenderService = new SendGridEmailService(new IdentitySettings(), new Moq.Mock<IAppConfig>().Object, new Moq.Mock<IAdminLogger>().Object);
29+
_emailSenderService = new SendGridEmailService(new IdentitySettings(), new Moq.Mock<IBackgroundServiceTaskQueue>().Object, new Moq.Mock<IAppConfig>().Object, new Moq.Mock<IAdminLogger>().Object);
3030
}
3131

3232

tests/LagoVista.UserAdmin.Tests/EmailIntegrationTests/EmailDesignTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class EmailDesignTests
2828
[TestInitialize]
2929
public void Init()
3030
{
31-
_emailSenderService = new SendGridEmailService(new IdentitySettings(), new Moq.Mock<IAppConfig>().Object, new Moq.Mock<IAdminLogger>().Object);
31+
_emailSenderService = new SendGridEmailService(new IdentitySettings(), new Moq.Mock<IBackgroundServiceTaskQueue>().Object, new Moq.Mock<IAppConfig>().Object, new Moq.Mock<IAdminLogger>().Object);
3232
}
3333

3434
[TestMethod]

tests/LagoVista.UserAdmin.Tests/EmailIntegrationTests/EmailListSending.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,9 @@ public class EmailListSending
2727
[TestInitialize]
2828
public void Init()
2929
{
30-
_emailSenderService = new SendGridEmailService(new IdentitySettings(), new Moq.Mock<IAppConfig>().Object, new Moq.Mock<IAdminLogger>().Object);
30+
_emailSenderService = new SendGridEmailService(new IdentitySettings(), new Moq.Mock<IBackgroundServiceTaskQueue>().Object, new Moq.Mock<IAppConfig>().Object, new Moq.Mock<IAdminLogger>().Object);
3131
}
3232

33-
3433
[TestMethod]
3534
public async Task CreateAndSendToListAsync()
3635
{

0 commit comments

Comments
 (0)