DocSpace-buildtools/common/services/ASC.Data.Backup/Core/BackupHelper.cs

79 lines
2.4 KiB
C#
Raw Normal View History

2020-06-15 08:19:40 +00:00
using System;
using System.Linq;
using ASC.Common;
using ASC.Core;
2020-05-20 15:14:44 +00:00
using ASC.Core.Tenants;
2020-06-15 08:19:40 +00:00
using ASC.Web.Studio.UserControls.Statistics;
2020-05-20 15:14:44 +00:00
namespace ASC.Data.Backup
{
public class BackupHelper
{
public const long AvailableZipSize = 10 * 1024 * 1024 * 1024L;
2020-06-15 08:19:40 +00:00
private readonly Guid mailStorageTag = new Guid("666ceac1-4532-4f8c-9cba-8f510eca2fd1");
private TenantManager TenantManager { get; set; }
private CoreBaseSettings CoreBaseSettings { get; set; }
private TenantStatisticsProvider TenantStatisticsProvider { get; set; }
2020-05-20 15:14:44 +00:00
public BackupHelper(TenantManager tenantManager, CoreBaseSettings coreBaseSettings, TenantStatisticsProvider tenantStatisticsProvider)
{
2020-06-15 08:19:40 +00:00
TenantManager = tenantManager;
CoreBaseSettings = coreBaseSettings;
TenantStatisticsProvider = tenantStatisticsProvider;
}
2020-05-20 15:14:44 +00:00
public BackupAvailableSize GetAvailableSize(int tenantId)
{
2020-06-15 08:19:40 +00:00
if (CoreBaseSettings.Standalone)
2020-05-20 15:14:44 +00:00
return BackupAvailableSize.Available;
2020-06-15 08:19:40 +00:00
var size = TenantManager.FindTenantQuotaRows(new TenantQuotaRowQuery(tenantId))
2020-05-20 15:14:44 +00:00
.Where(r => !string.IsNullOrEmpty(r.Tag) && new Guid(r.Tag) != Guid.Empty && !new Guid(r.Tag).Equals(mailStorageTag))
.Sum(r => r.Counter);
if (size > AvailableZipSize)
{
return BackupAvailableSize.NotAvailable;
}
2020-06-15 08:19:40 +00:00
size = TenantStatisticsProvider.GetUsedSize(tenantId);
2020-05-20 15:14:44 +00:00
if (size > AvailableZipSize)
{
return BackupAvailableSize.WithoutMail;
}
return BackupAvailableSize.Available;
}
public bool ExceedsMaxAvailableSize(int tenantId)
{
return GetAvailableSize(tenantId) != BackupAvailableSize.Available;
}
}
public enum BackupAvailableSize
{
Available,
WithoutMail,
NotAvailable,
2020-06-15 08:19:40 +00:00
}
public static class BackupHelperExtension
{
public static DIHelper AddBackupHelperService(this DIHelper services)
{
2020-07-17 10:52:28 +00:00
if (services.TryAddScoped<BackupHelper>())
{
return services
.AddTenantManagerService()
.AddCoreBaseSettingsService()
.AddTenantStatisticsProviderService();
}
return services;
}
}
2020-05-20 15:14:44 +00:00
}