diff --git a/common/ASC.Core.Common/Configuration/AmiPublicDnsSyncService.cs b/common/ASC.Core.Common/Configuration/AmiPublicDnsSyncService.cs index 2908742fec..619ce348f3 100644 --- a/common/ASC.Core.Common/Configuration/AmiPublicDnsSyncService.cs +++ b/common/ASC.Core.Common/Configuration/AmiPublicDnsSyncService.cs @@ -52,8 +52,8 @@ namespace ASC.Core.Configuration public static void Synchronize() { using var scope = ServiceProvider.CreateScope(); - var tenantManager = scope.ServiceProvider.GetService(); - var coreBaseSettings = scope.ServiceProvider.GetService(); + var scopeClass = scope.ServiceProvider.GetService(); + (var tenantManager, var coreBaseSettings) = scopeClass; if (coreBaseSettings.Standalone) { var tenants = tenantManager.GetTenants(false).Where(t => MappedDomainNotSettedByUser(t.MappedDomain)); @@ -95,4 +95,22 @@ namespace ASC.Core.Configuration return null; } } + + public class AmiPublicDnsSyncServiceScope + { + private TenantManager TenantManager { get; } + private CoreBaseSettings CoreBaseSettings { get; } + + public AmiPublicDnsSyncServiceScope(TenantManager tenantManager, CoreBaseSettings coreBaseSettings) + { + TenantManager = tenantManager; + CoreBaseSettings = coreBaseSettings; + } + + public void Deconstruct(out TenantManager tenantManager, out CoreBaseSettings coreBaseSettings) + { + tenantManager = TenantManager; + coreBaseSettings = CoreBaseSettings; + } + } } diff --git a/common/ASC.Core.Common/Notify/EmailSenderSink.cs b/common/ASC.Core.Common/Notify/EmailSenderSink.cs index c921e5aa33..6ec92a57d3 100644 --- a/common/ASC.Core.Common/Notify/EmailSenderSink.cs +++ b/common/ASC.Core.Common/Notify/EmailSenderSink.cs @@ -28,6 +28,7 @@ using System; using System.Collections.Generic; using System.Linq; +using ASC.Common; using ASC.Common.Logging; using ASC.Common.Utils; using ASC.Core.Notify.Senders; @@ -95,15 +96,16 @@ namespace ASC.Core.Notify }; using var scope = ServiceProvider.CreateScope(); - var tenantManager = scope.ServiceProvider.GetService(); - var configuration = scope.ServiceProvider.GetService(); + + var scopeClass = scope.ServiceProvider.GetService(); + (var tenantManager, var coreConfiguration, var options) = scopeClass; var tenant = tenantManager.GetCurrentTenant(false); m.Tenant = tenant == null ? Tenant.DEFAULT_TENANT : tenant.TenantId; - var from = MailAddressUtils.Create(configuration.SmtpSettings.SenderAddress, configuration.SmtpSettings.SenderDisplayName); + var from = MailAddressUtils.Create(coreConfiguration.SmtpSettings.SenderAddress, coreConfiguration.SmtpSettings.SenderDisplayName); var fromTag = message.Arguments.FirstOrDefault(x => x.Tag.Equals("MessageFrom")); - if ((configuration.SmtpSettings.IsDefaultSettings || string.IsNullOrEmpty(configuration.SmtpSettings.SenderDisplayName)) && + if ((coreConfiguration.SmtpSettings.IsDefaultSettings || string.IsNullOrEmpty(coreConfiguration.SmtpSettings.SenderDisplayName)) && fromTag != null && fromTag.Value != null) { try @@ -149,4 +151,34 @@ namespace ASC.Core.Notify return m; } } + + public class EmailSenderSinkScope + { + private TenantManager TenantManager { get; } + private CoreConfiguration CoreConfiguration { get; } + private IOptionsMonitor Options { get; } + + public EmailSenderSinkScope(TenantManager tenantManager, CoreConfiguration coreConfiguration, IOptionsMonitor options) + { + TenantManager = tenantManager; + CoreConfiguration = coreConfiguration; + Options = options; + } + + public void Deconstruct(out TenantManager tenantManager, out CoreConfiguration coreConfiguration, out IOptionsMonitor optionsMonitor) + { + tenantManager = TenantManager; + coreConfiguration = CoreConfiguration; + optionsMonitor = Options; + } + } + + public static class EmailSenderSinkExtension + { + public static DIHelper AddEmailSenderSinkService(this DIHelper services) + { + services.TryAddScoped(); + return services; + } + } } \ No newline at end of file diff --git a/common/ASC.Core.Common/Notify/JabberSenderSink.cs b/common/ASC.Core.Common/Notify/JabberSenderSink.cs index 4735cf86db..80804e5a68 100644 --- a/common/ASC.Core.Common/Notify/JabberSenderSink.cs +++ b/common/ASC.Core.Common/Notify/JabberSenderSink.cs @@ -26,6 +26,7 @@ using System; +using ASC.Common; using ASC.Core.Notify.Senders; using ASC.Core.Tenants; using ASC.Notify.Messages; @@ -54,8 +55,8 @@ namespace ASC.Core.Notify try { using var scope = ServiceProvider.CreateScope(); - var userManager = scope.ServiceProvider.GetService(); - var tenantManager = scope.ServiceProvider.GetService(); + var scopeClass = scope.ServiceProvider.GetService(); + (var userManager, var tenantManager) = scopeClass; var result = SendResult.OK; var username = userManager.GetUsers(new Guid(message.Recipient.ID)).UserName; if (string.IsNullOrEmpty(username)) @@ -87,4 +88,31 @@ namespace ASC.Core.Notify } } } + + public class JabberSenderSinkScope + { + private UserManager UserManager { get; } + private TenantManager TenantManager { get; } + + public JabberSenderSinkScope(UserManager userManager, TenantManager tenantManager) + { + TenantManager = tenantManager; + UserManager = userManager; + } + + public void Deconstruct(out UserManager userManager, out TenantManager tenantManager) + { + userManager = UserManager; + tenantManager = TenantManager; + } + } + + public static class JabberSenderSinkExtension + { + public static DIHelper AddJabberSenderSinkService(this DIHelper services) + { + services.TryAddScoped(); + return services; + } + } } diff --git a/common/ASC.Core.Common/Tests/TopSubscriptionProviderTest.cs b/common/ASC.Core.Common/Tests/TopSubscriptionProviderTest.cs index da4565a688..e84efd0e80 100644 --- a/common/ASC.Core.Common/Tests/TopSubscriptionProviderTest.cs +++ b/common/ASC.Core.Common/Tests/TopSubscriptionProviderTest.cs @@ -60,10 +60,8 @@ namespace ASC.Core.Common.Tests public void CreateProviders() { using var scope = serviceProvider.CreateScope(); - var tenantManager = scope.ServiceProvider.GetService(); - var subscriptionManager = scope.ServiceProvider.GetService(); - tenantManager.SetCurrentTenant(tenant); - + var scopeClass = scope.ServiceProvider.GetService(); + (var tenantManager, var subscriptionManager, var recipientProviderImpl) = scopeClass; tenant = new Tenants.Tenant(0, "teamlab"); sourceId = "6045b68c-2c2e-42db-9e53-c272e814c4ad"; actionId = "NewCommentForTask"; @@ -72,7 +70,6 @@ namespace ASC.Core.Common.Tests testRec = new DirectRecipient("ff0c4e13-1831-43c2-91ce-7b7beb56179b", null); //Oliver Khan testRec2 = new DirectRecipient("0017794f-aeb7-49a5-8817-9e870e02bd3f", null); //Якутова Юлия - recProvider = scope.ServiceProvider.GetService(); var directSubProvider = new DirectSubscriptionProvider(sourceId, subscriptionManager, recProvider); subProvider = new TopSubscriptionProvider(recProvider, directSubProvider); } @@ -146,5 +143,26 @@ namespace ASC.Core.Common.Tests } } } + + public class TopSubscriptionProviderTestScope + { + private TenantManager TenantManager { get; } + private SubscriptionManager SubscriptionManager { get; } + private RecipientProviderImpl RecipientProviderImpl { get; } + + public TopSubscriptionProviderTestScope(TenantManager tenantManager, SubscriptionManager subscriptionManager, RecipientProviderImpl recipientProviderImpl) + { + TenantManager = tenantManager; + SubscriptionManager = subscriptionManager; + RecipientProviderImpl = recipientProviderImpl; + } + + public void Deconstruct(out TenantManager tenantManager, out SubscriptionManager subscriptionManager, out RecipientProviderImpl recipientProviderImpl) + { + tenantManager = TenantManager; + subscriptionManager = SubscriptionManager; + recipientProviderImpl = RecipientProviderImpl; + } + } } #endif \ No newline at end of file diff --git a/common/ASC.Core.Common/Tests/UserManagerTest.cs b/common/ASC.Core.Common/Tests/UserManagerTest.cs index 9e2633ec74..919124afff 100644 --- a/common/ASC.Core.Common/Tests/UserManagerTest.cs +++ b/common/ASC.Core.Common/Tests/UserManagerTest.cs @@ -85,8 +85,8 @@ namespace ASC.Core.Common.Tests public void DepartmentManagers() { using var scope = ServiceProvider.CreateScope(); - var userManager = scope.ServiceProvider.GetService(); - var tenantManager = scope.ServiceProvider.GetService(); + var scopeClass = scope.ServiceProvider.GetService(); + (var userManager, var tenantManager) = scopeClass; var tenant = tenantManager.SetCurrentTenant(1024); var deps = userManager.GetDepartments(); @@ -114,8 +114,8 @@ namespace ASC.Core.Common.Tests public void UserGroupsPerformanceTest() { using var scope = ServiceProvider.CreateScope(); - var userManager = scope.ServiceProvider.GetService(); - var tenantManager = scope.ServiceProvider.GetService(); + var scopeClass = scope.ServiceProvider.GetService(); + (var userManager, var tenantManager) = scopeClass; var tenant = tenantManager.SetCurrentTenant(0); foreach (var u in userManager.GetUsers()) @@ -149,5 +149,23 @@ namespace ASC.Core.Common.Tests stopwatch.Stop(); } } + + public class UserManagerTestScope + { + private UserManager UserManager { get; } + private TenantManager TenantManager { get; } + + public UserManagerTestScope(UserManager userManager, TenantManager tenantManager) + { + UserManager = userManager; + TenantManager = tenantManager; + } + + public void Deconstruct(out UserManager userManager, out TenantManager tenantManager) + { + userManager = UserManager; + tenantManager = TenantManager; + } + } } #endif