*/ public function assignmentsFor(User $user): EloquentCollection { $ktmPosition = Position::query()->where('code', 'KTM')->first(); if ($ktmPosition === null) { return new EloquentCollection; } return StaffAssignment::query() ->with(['pusatMengundi', 'saluranMengundi', 'teamMembers.application', 'teamMembers.position']) ->where('user_id', $user->id) ->where('position_id', $ktmPosition->id) ->where('status', 'active') ->whereNotNull('saluran_mengundi_id') ->get(); } /** * @return Collection */ public function assignmentIdsFor(User $user): Collection { return $this->assignmentsFor($user) ->pluck('id') ->map(fn (mixed $id): int => (int) $id) ->values(); } public function ownsAssignment(User $user, StaffAssignment $assignment): bool { return $this->assignmentIdsFor($user)->contains((int) $assignment->id); } public function canAccessApplication(User $user, Application $application): bool { return $application->selected_ktm_assignment_id !== null && $this->assignmentIdsFor($user)->contains((int) $application->selected_ktm_assignment_id); } }