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, ]); } }