Tighten Pro alert caps and move custom badges to Enterprise.
Deploy Ladill Frontdesk / deploy (push) Has been cancelled

Pro includes 5,000 email and 5,000 SMS host alerts per month with hard
monthly caps; Enterprise is unlimited. Custom badge templates are
Enterprise-only, and plan benefit copy matches the new limits.
This commit is contained in:
isaacclad
2026-07-16 08:37:06 +00:00
parent 4ce45f4989
commit b6f229ab9a
12 changed files with 298 additions and 29 deletions
@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Frontdesk;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Frontdesk\Concerns\RequiresPlanFeature;
use App\Http\Controllers\Frontdesk\Concerns\ScopesToAccount;
use App\Models\Visit;
use App\Services\Frontdesk\BadgeRenderService;
@@ -14,11 +15,24 @@ use Illuminate\View\View;
class BadgeController extends Controller
{
use RequiresPlanFeature;
use ScopesToAccount;
private const FEATURE = 'custom_badge_templates';
public function editTemplate(Request $request): View
{
$this->authorizeAbility($request, 'settings.view');
if ($upgrade = $this->proFeatureUpgradeView(
$request,
self::FEATURE,
'Custom badge templates',
'Custom badge layouts and branding are included with Frontdesk Enterprise.',
)) {
return $upgrade;
}
$organization = $this->organization($request);
$canManage = app(FrontdeskPermissions::class)->isAdmin($this->member($request));
@@ -41,6 +55,15 @@ class BadgeController extends Controller
public function updateTemplate(Request $request): RedirectResponse
{
$this->authorizeAbility($request, 'settings.manage');
if ($deny = $this->denyWithoutFeature(
$request,
self::FEATURE,
'Custom badge templates require Frontdesk Enterprise.',
)) {
return $deny;
}
$organization = $this->organization($request);
$validated = $request->validate([
@@ -32,6 +32,7 @@ class SettingsController extends Controller
$monthlyUsage = $usage->forOrganization($organization);
$plan = $plans->plan($organization);
$freeEmailAllowance = $plans->freeEmailsPerMonth($organization);
$freeSmsAllowance = $plans->freeSmsPerMonth($organization);
$member = $this->member($request);
$permissions = app(FrontdeskPermissions::class);
@@ -56,6 +57,7 @@ class SettingsController extends Controller
'proPriceMinor' => $plans->proPricePerBranchMinor(),
'monthlyUsage' => $monthlyUsage,
'freeEmailAllowance' => $freeEmailAllowance,
'freeSmsAllowance' => $freeSmsAllowance,
'emailCostFormatted' => $pricing->formatMinor($pricing->emailCostMinor()),
'smsCostFormatted' => $pricing->formatMinor(
$pricing->smsCostMinor('Sample SMS message for pricing display.'),