Exemple #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);
        }
Exemple #2
0
        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);
        }