diff --git a/app/Domain/UserBenefitsRetriever.php b/app/Domain/UserBenefitsRetriever.php index 45fb8537..933790db 100644 --- a/app/Domain/UserBenefitsRetriever.php +++ b/app/Domain/UserBenefitsRetriever.php @@ -41,6 +41,7 @@ public function getAssignedBenefits(User $user): array "name" => $benefit["name"], "employee" => $assignedBenefit["employee"], "employer" => $assignedBenefit["employer"], + "isUsed" => true, ]; } diff --git a/app/Http/Controllers/BenefitController.php b/app/Http/Controllers/BenefitController.php index a753c48f..20f5be5b 100644 --- a/app/Http/Controllers/BenefitController.php +++ b/app/Http/Controllers/BenefitController.php @@ -8,6 +8,7 @@ use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Inertia\Response; +use Toby\Domain\UserBenefitsRetriever; use Toby\Http\Requests\BenefitRequest; use Toby\Http\Resources\BenefitResource; use Toby\Models\Benefit; @@ -24,8 +25,17 @@ public function index(Request $request): Response ->paginate() ->withQueryString(); + $userBenefitsRetriever = new UserBenefitsRetriever(); + $userBenefits = $userBenefitsRetriever->getAssignedBenefits($request->user()); + $userBenefitIds = collect($userBenefits)->pluck("id")->toArray(); + return inertia("Benefits/Benefits", [ - "benefits" => BenefitResource::collection($benefits), + "benefits" => BenefitResource::collection($benefits->through(fn($benefit) => [ + "id" => $benefit->id, + "name" => $benefit->name, + "companion" => $benefit->companion, + "isUsed" => in_array($benefit->id, $userBenefitIds, true), + ])), ]); } diff --git a/app/Http/Resources/BenefitResource.php b/app/Http/Resources/BenefitResource.php index b0fac6d8..b281826c 100644 --- a/app/Http/Resources/BenefitResource.php +++ b/app/Http/Resources/BenefitResource.php @@ -11,9 +11,10 @@ class BenefitResource extends JsonResource public function toArray($request): array { return [ - "id" => $this->id, - "name" => $this->name, - "companion" => $this->companion, + "id" => $this->resource["id"] ?? $this->id, + "name" => $this->resource["name"] ?? $this->name, + "companion" => $this->resource["companion"] ?? $this->companion, + "isUsed" => $this->resource["isUsed"] ?? false, ]; } } diff --git a/resources/js/Pages/Benefits/Benefits.vue b/resources/js/Pages/Benefits/Benefits.vue index 5970908e..70cfd93e 100644 --- a/resources/js/Pages/Benefits/Benefits.vue +++ b/resources/js/Pages/Benefits/Benefits.vue @@ -1,5 +1,5 @@