diff --git a/src/Meezi.API/Services/PlanLimitChecker.cs b/src/Meezi.API/Services/PlanLimitChecker.cs index 041506e..afd2011 100644 --- a/src/Meezi.API/Services/PlanLimitChecker.cs +++ b/src/Meezi.API/Services/PlanLimitChecker.cs @@ -99,6 +99,21 @@ public class PlanLimitChecker : IPlanLimitChecker return (false, "PLAN_LIMIT_REACHED", "Branch limit reached for your plan. Please upgrade."); } + var tablesPath = $"/api/cafes/{cafeId}/tables"; + if (path.StartsWith(tablesPath, StringComparison.OrdinalIgnoreCase) && + (path.Equals(tablesPath, StringComparison.OrdinalIgnoreCase) || + path.Equals($"{tablesPath}/", StringComparison.OrdinalIgnoreCase))) + { + var limitsTables = await _platformCatalog.GetLimitsAsync(tier, cancellationToken); + var maxTables = limitsTables.MaxTables; + if (maxTables != int.MaxValue) + { + var tableCount = await _db.Tables.CountAsync(t => t.CafeId == cafeId, cancellationToken); + if (tableCount >= maxTables) + return (false, "PLAN_LIMIT_REACHED", "Table limit reached for your plan. Please upgrade."); + } + } + var smsCampaignPath = $"/api/cafes/{cafeId}/sms/campaign"; if (path.Equals(smsCampaignPath, StringComparison.OrdinalIgnoreCase) || path.Equals($"{smsCampaignPath}/", StringComparison.OrdinalIgnoreCase))