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()
{
using var scope = ServiceProvider.CreateScope();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>();
var coreBaseSettings = scope.ServiceProvider.GetService<CoreBaseSettings>();
var scopeClass = scope.ServiceProvider.GetService<AmiPublicDnsSyncServiceScope>();
(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;
}
}
}

View File

@ -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<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);
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<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 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<UserManager>();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>();
var scopeClass = scope.ServiceProvider.GetService<JabberSenderSinkScope>();
(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<JabberSenderSinkScope>();
return services;
}
}
}

View File

@ -60,10 +60,8 @@ namespace ASC.Core.Common.Tests
public void CreateProviders()
{
using var scope = serviceProvider.CreateScope();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>();
var subscriptionManager = scope.ServiceProvider.GetService<SubscriptionManager>();
tenantManager.SetCurrentTenant(tenant);
var scopeClass = scope.ServiceProvider.GetService<TopSubscriptionProviderTestScope>();
(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<RecipientProviderImpl>();
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

View File

@ -85,8 +85,8 @@ namespace ASC.Core.Common.Tests
public void DepartmentManagers()
{
using var scope = ServiceProvider.CreateScope();
var userManager = scope.ServiceProvider.GetService<UserManager>();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>();
var scopeClass = scope.ServiceProvider.GetService<UserManagerTestScope>();
(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<UserManager>();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>();
var scopeClass = scope.ServiceProvider.GetService<UserManagerTestScope>();
(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