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

62 lines
1.9 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-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
{
2020-10-19 15:53:15 +00:00
[Scope]
2020-05-20 15:14:44 +00:00
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-12-28 13:22:08 +00:00
var size = TenantManager.FindTenantQuotaRows(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-05-20 15:14:44 +00:00
}