*/ public function share(Request $request): array { return [ ...parent::share($request), 'auth' => [ 'user' => $request->user()?->load(['contractor', 'employeeProfile', 'customerProfile']), 'roles' => $request->user()?->getRoleNames() ?? [], 'permissions' => $request->user()?->getAllPermissions()->pluck('name') ?? [], ], 'flash' => [ 'success' => $request->session()->get('success'), 'error' => $request->session()->get('error'), ], 'sidebarBadges' => fn () => $request->user() ? (function () use ($request) { $user = $request->user(); // Drafts belong to their creator. Submitted requests are // relevant only when the current user is an assigned approver. $ownDraftRequisitions = MaterialRequisition::where('status', 'draft') ->where('requested_by', $user->id) ->count(); $assignedRequisitionApprovals = ApprovalChain::where('status', 'pending') ->where('type', 'material_requisition') ->whereHas('steps', function ($query) use ($user) { $query->where('approver_id', $user->id) ->where('status', 'pending'); }) ->count(); $ownDraftPurchaseOrders = PurchaseOrder::where('status', 'draft') ->where('requested_by', $user->id) ->count(); $assignedApprovals = ApprovalChain::where('status', 'pending') ->whereHas('steps', function ($query) use ($user) { $query->where('approver_id', $user->id) ->where('status', 'pending'); }) ->count(); return [ 'pending_requisitions' => $ownDraftRequisitions + $assignedRequisitionApprovals, 'pending_purchase_orders' => $ownDraftPurchaseOrders, 'pending_approvals' => $assignedApprovals, ]; })() : null, 'projectOptions' => fn () => $request->user() ? Project::where('current_wizard_step', '>=', 7) ->whereHas('bidPackages') ->with('parentProject:id,ulid,name,code') ->get(['id', 'ulid', 'name', 'code', 'project_type', 'parent_project_id', 'status']) : [], ]; } }