scope: fix

This commit is contained in:
SuhorukovAnton 2020-08-31 12:01:23 +03:00
parent 90f1c4fa3d
commit 32f570784b
5 changed files with 131 additions and 17 deletions

View File

@ -52,8 +52,8 @@ namespace ASC.Core.Configuration
public static void Synchronize() public static void Synchronize()
{ {
using var scope = ServiceProvider.CreateScope(); using var scope = ServiceProvider.CreateScope();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>(); var scopeClass = scope.ServiceProvider.GetService<AmiPublicDnsSyncServiceScope>();
var coreBaseSettings = scope.ServiceProvider.GetService<CoreBaseSettings>(); (var tenantManager, var coreBaseSettings) = scopeClass;
if (coreBaseSettings.Standalone) if (coreBaseSettings.Standalone)
{ {
var tenants = tenantManager.GetTenants(false).Where(t => MappedDomainNotSettedByUser(t.MappedDomain)); var tenants = tenantManager.GetTenants(false).Where(t => MappedDomainNotSettedByUser(t.MappedDomain));
@ -95,4 +95,22 @@ namespace ASC.Core.Configuration
return null; 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;
}
}
} }

View File

@ -28,6 +28,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using ASC.Common;
using ASC.Common.Logging; using ASC.Common.Logging;
using ASC.Common.Utils; using ASC.Common.Utils;
using ASC.Core.Notify.Senders; using ASC.Core.Notify.Senders;
@ -95,15 +96,16 @@ namespace ASC.Core.Notify
}; };
using var scope = ServiceProvider.CreateScope(); using var scope = ServiceProvider.CreateScope();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>();
var configuration = scope.ServiceProvider.GetService<CoreConfiguration>(); var scopeClass = scope.ServiceProvider.GetService<EmailSenderSinkScope>();
(var tenantManager, var coreConfiguration, var options) = scopeClass;
var tenant = tenantManager.GetCurrentTenant(false); var tenant = tenantManager.GetCurrentTenant(false);
m.Tenant = tenant == null ? Tenant.DEFAULT_TENANT : tenant.TenantId; 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")); 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) fromTag != null && fromTag.Value != null)
{ {
try try
@ -149,4 +151,34 @@ namespace ASC.Core.Notify
return m; return m;
} }
} }
public class EmailSenderSinkScope
{
private TenantManager TenantManager { get; }
private CoreConfiguration CoreConfiguration { get; }
private IOptionsMonitor<ILog> Options { get; }
public EmailSenderSinkScope(TenantManager tenantManager, CoreConfiguration coreConfiguration, IOptionsMonitor<ILog> options)
{
TenantManager = tenantManager;
CoreConfiguration = coreConfiguration;
Options = options;
}
public void Deconstruct(out TenantManager tenantManager, out CoreConfiguration coreConfiguration, out IOptionsMonitor<ILog> optionsMonitor)
{
tenantManager = TenantManager;
coreConfiguration = CoreConfiguration;
optionsMonitor = Options;
}
}
public static class EmailSenderSinkExtension
{
public static DIHelper AddEmailSenderSinkService(this DIHelper services)
{
services.TryAddScoped<EmailSenderSinkScope>();
return services;
}
}
} }

View File

@ -26,6 +26,7 @@
using System; using System;
using ASC.Common;
using ASC.Core.Notify.Senders; using ASC.Core.Notify.Senders;
using ASC.Core.Tenants; using ASC.Core.Tenants;
using ASC.Notify.Messages; using ASC.Notify.Messages;
@ -54,8 +55,8 @@ namespace ASC.Core.Notify
try try
{ {
using var scope = ServiceProvider.CreateScope(); using var scope = ServiceProvider.CreateScope();
var userManager = scope.ServiceProvider.GetService<UserManager>(); var scopeClass = scope.ServiceProvider.GetService<JabberSenderSinkScope>();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>(); (var userManager, var tenantManager) = scopeClass;
var result = SendResult.OK; var result = SendResult.OK;
var username = userManager.GetUsers(new Guid(message.Recipient.ID)).UserName; var username = userManager.GetUsers(new Guid(message.Recipient.ID)).UserName;
if (string.IsNullOrEmpty(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<JabberSenderSinkScope>();
return services;
}
}
} }

View File

@ -60,10 +60,8 @@ namespace ASC.Core.Common.Tests
public void CreateProviders() public void CreateProviders()
{ {
using var scope = serviceProvider.CreateScope(); using var scope = serviceProvider.CreateScope();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>(); var scopeClass = scope.ServiceProvider.GetService<TopSubscriptionProviderTestScope>();
var subscriptionManager = scope.ServiceProvider.GetService<SubscriptionManager>(); (var tenantManager, var subscriptionManager, var recipientProviderImpl) = scopeClass;
tenantManager.SetCurrentTenant(tenant);
tenant = new Tenants.Tenant(0, "teamlab"); tenant = new Tenants.Tenant(0, "teamlab");
sourceId = "6045b68c-2c2e-42db-9e53-c272e814c4ad"; sourceId = "6045b68c-2c2e-42db-9e53-c272e814c4ad";
actionId = "NewCommentForTask"; actionId = "NewCommentForTask";
@ -72,7 +70,6 @@ namespace ASC.Core.Common.Tests
testRec = new DirectRecipient("ff0c4e13-1831-43c2-91ce-7b7beb56179b", null); //Oliver Khan testRec = new DirectRecipient("ff0c4e13-1831-43c2-91ce-7b7beb56179b", null); //Oliver Khan
testRec2 = new DirectRecipient("0017794f-aeb7-49a5-8817-9e870e02bd3f", null); //Якутова Юлия testRec2 = new DirectRecipient("0017794f-aeb7-49a5-8817-9e870e02bd3f", null); //Якутова Юлия
recProvider = scope.ServiceProvider.GetService<RecipientProviderImpl>();
var directSubProvider = new DirectSubscriptionProvider(sourceId, subscriptionManager, recProvider); var directSubProvider = new DirectSubscriptionProvider(sourceId, subscriptionManager, recProvider);
subProvider = new TopSubscriptionProvider(recProvider, directSubProvider); 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 #endif

View File

@ -85,8 +85,8 @@ namespace ASC.Core.Common.Tests
public void DepartmentManagers() public void DepartmentManagers()
{ {
using var scope = ServiceProvider.CreateScope(); using var scope = ServiceProvider.CreateScope();
var userManager = scope.ServiceProvider.GetService<UserManager>(); var scopeClass = scope.ServiceProvider.GetService<UserManagerTestScope>();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>(); (var userManager, var tenantManager) = scopeClass;
var tenant = tenantManager.SetCurrentTenant(1024); var tenant = tenantManager.SetCurrentTenant(1024);
var deps = userManager.GetDepartments(); var deps = userManager.GetDepartments();
@ -114,8 +114,8 @@ namespace ASC.Core.Common.Tests
public void UserGroupsPerformanceTest() public void UserGroupsPerformanceTest()
{ {
using var scope = ServiceProvider.CreateScope(); using var scope = ServiceProvider.CreateScope();
var userManager = scope.ServiceProvider.GetService<UserManager>(); var scopeClass = scope.ServiceProvider.GetService<UserManagerTestScope>();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>(); (var userManager, var tenantManager) = scopeClass;
var tenant = tenantManager.SetCurrentTenant(0); var tenant = tenantManager.SetCurrentTenant(0);
foreach (var u in userManager.GetUsers()) foreach (var u in userManager.GetUsers())
@ -149,5 +149,23 @@ namespace ASC.Core.Common.Tests
stopwatch.Stop(); 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 #endif