Deploy Ladill Queue / deploy (push) Successful in 50s
Match Frontdesk: settings cards and nested routes, Pro-gated access, and legacy /admin redirects to /settings/branches and /settings/team.
54 lines
1.4 KiB
PHP
54 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Qms\Concerns;
|
|
|
|
use App\Services\Qms\PlanService;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\View\View;
|
|
|
|
trait RequiresPlanFeature
|
|
{
|
|
/**
|
|
* For page views: return an upgrade screen when the org lacks the feature.
|
|
*/
|
|
protected function proFeatureUpgradeView(
|
|
Request $request,
|
|
string $feature,
|
|
string $title,
|
|
string $description,
|
|
): ?View {
|
|
$organization = $this->organization($request);
|
|
$plans = app(PlanService::class);
|
|
|
|
if ($plans->hasFeature($organization, $feature)) {
|
|
return null;
|
|
}
|
|
|
|
return view('qms.settings.pro-feature', [
|
|
'organization' => $organization,
|
|
'title' => $title,
|
|
'description' => $description,
|
|
'proPriceMinor' => $plans->proPricePerBranchMinor(),
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* For mutations: redirect free-plan orgs to the plans page.
|
|
*/
|
|
protected function denyWithoutFeature(
|
|
Request $request,
|
|
string $feature,
|
|
string $message,
|
|
): ?RedirectResponse {
|
|
$organization = $this->organization($request);
|
|
if (app(PlanService::class)->hasFeature($organization, $feature)) {
|
|
return null;
|
|
}
|
|
|
|
return redirect()
|
|
->route('qms.pro.index')
|
|
->with('error', $message);
|
|
}
|
|
}
|