public QuotaWrapper(Tenant tenant, CoreBaseSettings coreBaseSettings, CoreConfiguration configuration, TenantExtra tenantExtra, TenantStatisticsProvider tenantStatisticsProvider, AuthContext authContext, SettingsManager settingsManager, WebItemManager webItemManager) { TenantExtra = tenantExtra; TenantStatisticsProvider = tenantStatisticsProvider; WebItemManager = webItemManager; var quota = TenantExtra.GetTenantQuota(); var quotaRows = TenantStatisticsProvider.GetQuotaRows(tenant.TenantId).ToList(); StorageSize = (ulong)Math.Max(0, quota.MaxTotalSize); UsedSize = (ulong)Math.Max(0, quotaRows.Sum(r => r.Counter)); MaxUsersCount = TenantExtra.GetTenantQuota().ActiveUsers; UsersCount = coreBaseSettings.Personal ? 1 : TenantStatisticsProvider.GetUsersCount(); StorageUsage = quotaRows .Select(x => new QuotaUsage { Path = x.Path.TrimStart('/').TrimEnd('/'), Size = x.Counter, }) .ToList(); if (coreBaseSettings.Personal && SetupInfo.IsVisibleSettings("PersonalMaxSpace")) { UserStorageSize = configuration.PersonalMaxSpace(settingsManager); var webItem = WebItemManager[WebItemManager.DocumentsProductID]; if (webItem.Context.SpaceUsageStatManager is IUserSpaceUsage spaceUsageManager) { UserUsedSize = spaceUsageManager.GetUserSpaceUsage(authContext.CurrentAccount.ID); } } MaxFileSize = Math.Min(AvailableSize, (ulong)quota.MaxFileSize); }
public static QuotaWrapper GetCurrent() { var quota = TenantExtra.GetTenantQuota(); var quotaRows = TenantStatisticsProvider.GetQuotaRows(TenantProvider.CurrentTenantID).ToList(); var result = new QuotaWrapper { StorageSize = (ulong)Math.Max(0, quota.MaxTotalSize), UsedSize = (ulong)Math.Max(0, quotaRows.Sum(r => r.Counter)), MaxUsersCount = TenantExtra.GetTenantQuota().ActiveUsers, UsersCount = CoreContext.Configuration.Personal ? 1 : TenantStatisticsProvider.GetUsersCount(), StorageUsage = quotaRows .Select(x => new QuotaUsage { Path = x.Path.TrimStart('/').TrimEnd('/'), Size = x.Counter, }) .ToList() }; if (CoreContext.Configuration.Personal && SetupInfo.IsVisibleSettings("PersonalMaxSpace")) { result.UserStorageSize = CoreContext.Configuration.PersonalMaxSpace; var webItem = WebItemManager.Instance[WebItemManager.DocumentsProductID]; var spaceUsageManager = webItem.Context.SpaceUsageStatManager as IUserSpaceUsage; if (spaceUsageManager != null) { result.UserUsedSize = spaceUsageManager.GetUserSpaceUsage(SecurityContext.CurrentAccount.ID); } } result.MaxFileSize = Math.Min(result.AvailableSize, (ulong)quota.MaxFileSize); return(result); }