Browse Source

Merge branch 'release/4.x' of github.com:Squidex/squidex

pull/593/head
Sebastian 5 years ago
parent
commit
4c1dcfd282
  1. 4
      backend/src/Squidex.Domain.Apps.Entities/Apps/AppDomainObject.cs
  2. 4
      backend/src/Squidex.Domain.Apps.Entities/Apps/Guards/GuardAppContributors.cs
  3. 2
      backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/ConfigAppLimitsPlan.cs
  4. 7
      backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/ConfigAppPlansProvider.cs
  5. 6
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/Plans/ConfigAppLimitsProviderTests.cs

4
backend/src/Squidex.Domain.Apps.Entities/Apps/AppDomainObject.cs

@ -318,9 +318,9 @@ namespace Squidex.Domain.Apps.Entities.Apps
} }
} }
private IAppLimitsPlan? GetPlan() private IAppLimitsPlan GetPlan()
{ {
return appPlansProvider.GetPlan(Snapshot.Plan?.PlanId); return appPlansProvider.GetPlanForApp(Snapshot).Plan;
} }
public void Create(CreateApp command) public void Create(CreateApp command)

4
backend/src/Squidex.Domain.Apps.Entities/Apps/Guards/GuardAppContributors.cs

@ -20,7 +20,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Guards
{ {
public static class GuardAppContributors public static class GuardAppContributors
{ {
public static Task CanAssign(AppContributors contributors, Roles roles, AssignContributor command, IUserResolver users, IAppLimitsPlan? plan) public static Task CanAssign(AppContributors contributors, Roles roles, AssignContributor command, IUserResolver users, IAppLimitsPlan plan)
{ {
Guard.NotNull(command, nameof(command)); Guard.NotNull(command, nameof(command));
@ -53,7 +53,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Guards
if (!contributors.TryGetValue(command.ContributorId, out _)) if (!contributors.TryGetValue(command.ContributorId, out _))
{ {
if (plan != null && plan.MaxContributors > 0 && contributors.Count >= plan.MaxContributors) if (plan.MaxContributors > 0 && contributors.Count >= plan.MaxContributors)
{ {
e(T.Get("apps.contributors.maxReached")); e(T.Get("apps.contributors.maxReached"));
} }

2
backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/ConfigAppLimitsPlan.cs

@ -33,6 +33,8 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans
public int MaxContributors { get; set; } public int MaxContributors { get; set; }
public bool IsFree { get; set; }
public ConfigAppLimitsPlan Clone() public ConfigAppLimitsPlan Clone()
{ {
return (ConfigAppLimitsPlan)MemberwiseClone(); return (ConfigAppLimitsPlan)MemberwiseClone();

7
backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/ConfigAppPlansProvider.cs

@ -26,6 +26,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans
private readonly Dictionary<string, ConfigAppLimitsPlan> plansById = new Dictionary<string, ConfigAppLimitsPlan>(StringComparer.OrdinalIgnoreCase); private readonly Dictionary<string, ConfigAppLimitsPlan> plansById = new Dictionary<string, ConfigAppLimitsPlan>(StringComparer.OrdinalIgnoreCase);
private readonly List<ConfigAppLimitsPlan> plansList = new List<ConfigAppLimitsPlan>(); private readonly List<ConfigAppLimitsPlan> plansList = new List<ConfigAppLimitsPlan>();
private readonly ConfigAppLimitsPlan freePlan;
public ConfigAppPlansProvider(IEnumerable<ConfigAppLimitsPlan> config) public ConfigAppPlansProvider(IEnumerable<ConfigAppLimitsPlan> config)
{ {
@ -41,6 +42,8 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans
plansById[plan.YearlyId] = plan; plansById[plan.YearlyId] = plan;
} }
} }
freePlan = plansList.FirstOrDefault(x => x.IsFree) ?? Infinite;
} }
public IEnumerable<IAppLimitsPlan> GetAvailablePlans() public IEnumerable<IAppLimitsPlan> GetAvailablePlans()
@ -60,7 +63,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans
public IAppLimitsPlan GetFreePlan() public IAppLimitsPlan GetFreePlan()
{ {
return GetPlanCore(plansList.FirstOrDefault(x => string.IsNullOrWhiteSpace(x.Costs))?.Id); return freePlan;
} }
public IAppLimitsPlan? GetPlanUpgradeForApp(IAppEntity app) public IAppLimitsPlan? GetPlanUpgradeForApp(IAppEntity app)
@ -103,7 +106,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans
private ConfigAppLimitsPlan GetPlanCore(string? planId) private ConfigAppLimitsPlan GetPlanCore(string? planId)
{ {
return plansById.GetOrDefault(planId ?? string.Empty) ?? plansById.Values.FirstOrDefault() ?? Infinite; return plansById.GetOrDefault(planId ?? string.Empty) ?? freePlan;
} }
} }
} }

6
backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/Plans/ConfigAppLimitsProviderTests.cs

@ -33,7 +33,8 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans
MaxApiCalls = 50000, MaxApiCalls = 50000,
MaxAssetSize = 1024 * 1024 * 10, MaxAssetSize = 1024 * 1024 * 10,
MaxContributors = 2, MaxContributors = 2,
BlockingApiCalls = 50000 BlockingApiCalls = 50000,
IsFree = true
}; };
private static readonly ConfigAppLimitsPlan BasicPlan = new ConfigAppLimitsPlan private static readonly ConfigAppLimitsPlan BasicPlan = new ConfigAppLimitsPlan
@ -45,7 +46,8 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans
MaxContributors = 5, MaxContributors = 5,
YearlyCosts = "100€", YearlyCosts = "100€",
YearlyId = "basic_yearly", YearlyId = "basic_yearly",
BlockingApiCalls = 150000 BlockingApiCalls = 150000,
IsFree = false
}; };
private static readonly ConfigAppLimitsPlan[] Plans = { BasicPlan, FreePlan }; private static readonly ConfigAppLimitsPlan[] Plans = { BasicPlan, FreePlan };

Loading…
Cancel
Save