CoreCommon: ActiveUsers as feature value

This commit is contained in:
Sergey Linnik 2022-07-11 13:08:31 +03:00
parent 74460213a8
commit 891f9bf0f1
2 changed files with 29 additions and 12 deletions

View File

@ -32,7 +32,6 @@ public class DbQuota : BaseEntity, IMapFrom<TenantQuota>
public string Name { get; set; }
public string Description { get; set; }
public long MaxFileSize { get; set; }
public int ActiveUsers { get; set; }
public string Features { get; set; }
public decimal Price { get; set; }
public string ProductId { get; set; }
@ -63,8 +62,7 @@ public static class DbQuotaExtension
Name = "default",
Description = null,
MaxFileSize = 102400,
ActiveUsers = 10000,
Features = "domain,audit,ldap,sso,whitelabel,update,support,restore,total_size:10995116277760",
Features = "domain,audit,ldap,sso,whitelabel,update,support,restore,total_size:10995116277760,users:10000",
Price = decimal.Parse("0,00"),
ProductId = "0",
Visible = false
@ -87,10 +85,6 @@ public static class DbQuotaExtension
.HasColumnName("tenant")
.ValueGeneratedNever();
entity.Property(e => e.ActiveUsers)
.HasColumnName("active_users")
.HasDefaultValueSql("'0'");
entity.Property(e => e.ProductId)
.HasColumnName("product_id")
.HasColumnType("varchar(128)")
@ -141,8 +135,6 @@ public static class DbQuotaExtension
.HasColumnName("tenant")
.ValueGeneratedNever();
entity.Property(e => e.ActiveUsers).HasColumnName("active_users");
entity.Property(e => e.ProductId)
.HasColumnName("product_id")
.HasMaxLength(128)

View File

@ -68,7 +68,34 @@ public class TenantQuota : ICloneable, IMapFrom<DbQuota>
}
}
public int ActiveUsers { get; set; }
public int ActiveUsers
{
get
{
var features = (Features ?? string.Empty).Split(' ', ',', ';').ToList();
var users = features.FirstOrDefault(f => f.StartsWith("users:"));
int activeUsers;
if (users == null || !int.TryParse(users.Replace("users:", ""), out activeUsers))
{
activeUsers = 0;
}
return activeUsers;
}
set
{
var features = (Features ?? string.Empty).Split(' ', ',', ';').ToList();
var activeUsers = features.FirstOrDefault(f => f.StartsWith("users:"));
features.Remove(activeUsers);
if (value > 0)
{
features.Add("users:" + value);
}
Features = string.Join(",", features.ToArray());
}
}
public string Features { get; set; }
public decimal Price { get; set; }
public string ProductId { get; set; }
@ -287,8 +314,6 @@ public class TenantQuota : ICloneable, IMapFrom<DbQuota>
public void Mapping(Profile profile)
{
profile.CreateMap<DbQuota, TenantQuota>()
.ForMember(dest => dest.ActiveUsers, opt =>
opt.MapFrom(src => src.ActiveUsers != 0 ? src.ActiveUsers : int.MaxValue))
.ForMember(dest => dest.MaxFileSize, opt => opt.MapFrom(src => ByteConverter.GetInBytes(src.MaxFileSize)));
}
}