Set Pro to GHS 100/mo and add sidebar Go Pro UI like Accounting.
Deploy Ladill Frontdesk / deploy (push) Successful in 33s

Adds a dedicated Pro page with wallet upgrade, gradient Upgrade to Pro
button in the sidebar footer, and view composer for plan status.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-06-28 02:12:49 +00:00
co-authored by Cursor
parent 33b6070207
commit cc3d4e9a63
11 changed files with 297 additions and 57 deletions
@@ -5,8 +5,7 @@ namespace App\Http\Controllers\Frontdesk;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Frontdesk\Concerns\ScopesToAccount;
use App\Services\Billing\BillingClient;
use App\Services\Frontdesk\PlanService;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
@@ -39,44 +38,4 @@ class WalletController extends Controller
'formatted' => $currency.' '.number_format($minor / 100, 2),
]);
}
public function upgrade(Request $request, PlanService $plans, BillingClient $billing): RedirectResponse
{
$this->authorizeAbility($request, 'settings.manage');
$organization = $this->organization($request);
if ($plans->isPro($organization)) {
return back()->with('success', 'Your organization is already on Frontdesk Pro.');
}
$priceMinor = $plans->proPriceMinor();
$ownerRef = $organization->owner_ref;
try {
if (! $billing->canAfford($ownerRef, $priceMinor)) {
return back()->with('error', 'Insufficient wallet balance. Top up your Ladill wallet to upgrade to Pro.');
}
$charged = $billing->debit(
$ownerRef,
$priceMinor,
'frontdesk_pro',
'frontdesk-pro-'.$organization->id.'-'.now()->format('Y-m'),
'Ladill Frontdesk Pro — monthly subscription',
);
} catch (\Throwable) {
return back()->with('error', 'Could not process upgrade. Please try again.');
}
if (! $charged) {
return back()->with('error', 'Insufficient wallet balance. Top up your Ladill wallet to upgrade to Pro.');
}
$settings = $organization->settings ?? [];
$settings['plan'] = 'pro';
$settings['plan_expires_at'] = now()->addMonth()->toIso8601String();
$organization->update(['settings' => $settings]);
return back()->with('success', 'Upgraded to Frontdesk Pro for one month.');
}
}