Files
ladill-care/app/Http/Controllers/Care/DashboardController.php
T
isaaccladandCursor 50f515cf6a
Deploy Ladill Care / deploy (push) Successful in 33s
Hide finance and admin KPIs from roles that lack them.
Doctors no longer see revenue, open bills, or org admin cards on the Care dashboard.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-14 22:32:41 +00:00

83 lines
2.9 KiB
PHP

<?php
namespace App\Http\Controllers\Care;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Care\Concerns\ScopesToAccount;
use App\Models\Branch;
use App\Models\Member;
use App\Services\Care\CarePermissions;
use App\Services\Care\OrganizationResolver;
use App\Services\Care\ReportService;
use Illuminate\Http\Request;
use Illuminate\View\View;
class DashboardController extends Controller
{
use ScopesToAccount;
public function __construct(
protected ReportService $reports,
protected CarePermissions $permissions,
) {}
public function index(Request $request): View
{
$this->authorizeAbility($request, 'dashboard.view');
$organization = $this->organization($request);
$owner = $this->ownerRef($request);
$member = $this->member($request);
$canBranches = $this->permissions->can($member, 'admin.branches.view');
$canMembers = $this->permissions->can($member, 'admin.members.view');
$canDepartments = $this->permissions->can($member, 'admin.departments.view');
$canBills = $this->permissions->can($member, 'bills.view');
$canFinance = $this->permissions->can($member, 'reports.finance.view');
$branchQuery = Branch::owned($owner)->where('organization_id', $organization->id);
$this->scopeToBranch($request, $branchQuery);
$stats = [
'branches' => $canBranches ? (clone $branchQuery)->where('is_active', true)->count() : 0,
'team_members' => $canMembers
? Member::owned($owner)->where('organization_id', $organization->id)->count()
: 0,
'departments' => $canDepartments
? $organization->branches()
->when(app(OrganizationResolver::class)->branchScope($member), function ($q, $branchId) {
$q->where('id', $branchId);
})
->withCount('departments')
->get()
->sum('departments_count')
: 0,
];
$branches = $canBranches
? (clone $branchQuery)->withCount('departments')->orderBy('name')->get()
: collect();
$branchScope = app(OrganizationResolver::class)->branchScope($member);
$operational = $this->reports->dashboardStats(
$owner,
$organization->id,
$branchScope,
includeBilling: $canBills || $canFinance,
);
return view('care.dashboard', [
'organization' => $organization,
'member' => $member,
'permissions' => $this->permissions,
'stats' => $stats,
'branches' => $branches,
'operational' => $operational,
'canBranches' => $canBranches,
'canMembers' => $canMembers,
'canDepartments' => $canDepartments,
'canBills' => $canBills,
'canFinance' => $canFinance,
]);
}
}