Quota: used field

This commit is contained in:
pavelbannov 2022-09-06 23:30:19 +03:00
parent 2c758355bc
commit ddeb4157ad
8 changed files with 86 additions and 10 deletions

View File

@ -124,6 +124,12 @@ public abstract class BaseStartup
services.AddScoped<ITenantQuotaFeatureStatistic<ActiveUsersFeature>, ActiveUsersStatistic>();
services.AddScoped<ActiveUsersStatistic>();
services.AddScoped<ITenantQuotaFeatureChecker, MaxTotalSizeChecker>();
services.AddScoped<MaxTotalSizeChecker>();
services.AddScoped<ITenantQuotaFeatureStatistic<MaxTotalSizeFeature>, MaxTotalSizeStatistic>();
services.AddScoped<MaxTotalSizeStatistic>();
DIHelper.TryAdd(typeof(IWebhookPublisher), typeof(WebhookPublisher));

View File

@ -36,15 +36,16 @@ public class ActiveUsersFeature : TenantQuotaFeatureCount
public class ActiveUsersChecker : ITenantQuotaFeatureChecker
{
private readonly UserManager _userManager;
private readonly ITenantQuotaFeatureStatistic<ActiveUsersFeature> _tenantQuotaFeatureStatistic;
public ActiveUsersChecker(UserManager userManager)
public ActiveUsersChecker(ITenantQuotaFeatureStatistic<ActiveUsersFeature> tenantQuotaFeatureStatistic)
{
_userManager = userManager;
_tenantQuotaFeatureStatistic = tenantQuotaFeatureStatistic;
}
public bool Check(TenantQuota quota)
{
return _userManager.GetUsersByGroup(Users.Constants.GroupUser.ID).Length >= quota.ActiveUsers;
return quota.ActiveUsers <= (int)_tenantQuotaFeatureStatistic.GetValue();
}
public string Exception(TenantQuota quota)

View File

@ -33,3 +33,42 @@ public class MaxTotalSizeFeature : TenantQuotaFeatureLength
{
}
}
public class MaxTotalSizeChecker : ITenantQuotaFeatureChecker
{
private readonly ITenantQuotaFeatureStatistic<MaxTotalSizeFeature> _tenantQuotaFeatureStatistic;
public MaxTotalSizeChecker(ITenantQuotaFeatureStatistic<MaxTotalSizeFeature> tenantQuotaFeatureStatistic)
{
_tenantQuotaFeatureStatistic = tenantQuotaFeatureStatistic;
}
public bool Check(TenantQuota quota)
{
return quota.MaxTotalSize <= (long)_tenantQuotaFeatureStatistic.GetValue();
}
public string Exception(TenantQuota quota)
{
return "The used storage size should not exceed " + quota.MaxTotalSize;
}
}
public class MaxTotalSizeStatistic : ITenantQuotaFeatureStatistic<MaxTotalSizeFeature>
{
private readonly TenantManager _tenantManager;
public MaxTotalSizeStatistic(TenantManager tenantManager)
{
_tenantManager = tenantManager;
}
public object GetValue()
{
var tenant = _tenantManager.GetCurrentTenant().Id;
return _tenantManager.FindTenantQuotaRows(tenant)
.Where(r => !string.IsNullOrEmpty(r.Tag) && new Guid(r.Tag) != Guid.Empty)
.Sum(r => r.Counter);
}
}

View File

@ -314,10 +314,6 @@ public class TenantQuota : IMapFrom<DbQuota>
}
}
//if (MaxTotalSize != long.MaxValue
// && false) throw new Exception("The used storage size should not exceed " + MaxTotalSize);
//if (ActiveUsers != int.MaxValue
// && false) throw new Exception("The number of active users should not exceed " + ActiveUsers);
//if (CountAdmin != int.MaxValue
// && false) throw new Exception("The number of managers should not exceed " + CountAdmin);
//if (CountRoom != int.MaxValue

View File

@ -43,7 +43,7 @@ public class QuotaFeatureDto : IEquatable<QuotaFeatureDto>
public string Id { get; set; }
public string Title { get; set; }
public string Image { get; set; }
public object Used { get; set; }
public FeatureUsedDto Used { get; set; }
public FeaturePriceDto Price { get; set; }
public bool Equals(QuotaFeatureDto other)
@ -69,6 +69,12 @@ public class FeaturePriceDto
public FeaturePriceRangeDto Range { get; set; }
}
public class FeatureUsedDto
{
public object Value { get; set; }
public string Title { get; set; }
}
public class FeaturePriceRangeDto
{
public object Value { get; set; }

View File

@ -147,7 +147,11 @@ public class QuotaHelper
if (statisticProvider != null)
{
result.Used = statisticProvider.GetValue();
result.Used = new FeatureUsedDto
{
Value = statisticProvider.GetValue(),
Title = Resource.ResourceManager.GetString($"TariffsFeature_used_{feature.Name}")
};
}
yield return result;

View File

@ -2211,6 +2211,24 @@ namespace ASC.Web.Core.PublicResources {
}
}
/// <summary>
/// Looks up a localized string similar to Storage space used:.
/// </summary>
public static string TariffsFeature_used_total_size {
get {
return ResourceManager.GetString("TariffsFeature_used_total_size", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Managers added:.
/// </summary>
public static string TariffsFeature_used_users {
get {
return ResourceManager.GetString("TariffsFeature_used_users", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Unlimited number of users.
/// </summary>

View File

@ -855,4 +855,10 @@
<data name="Tariffs_admin" xml:space="preserve">
<value>Business plan</value>
</data>
<data name="TariffsFeature_used_total_size" xml:space="preserve">
<value>Storage space used:</value>
</data>
<data name="TariffsFeature_used_users" xml:space="preserve">
<value>Managers added:</value>
</data>
</root>