示例#1
0
        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);
        }