tenant_codigo !== $tenant, 404); return GroupItemResource::collection($featuredGroup->groupItems); } public function store(StoreGroupItemRequest $request, string $tenant, FeaturedGroup $featuredGroup): GroupItemResource { abort_if($featuredGroup->tenant_codigo !== $tenant, 404); $groupableType = $request->mappedGroupableType(); $groupable = $groupableType::query()->findOrFail($request->integer('groupable_id')); abort_if( ($groupable instanceof ProductVariant && $groupable->product()->where('tenant_codigo', $tenant)->doesntExist()) || ($groupable instanceof Bundle && $groupable->tenant_codigo !== $tenant), 404 ); $groupItem = $featuredGroup->groupItems()->create([ 'groupable_type' => $groupableType, 'groupable_id' => $groupable->getKey(), 'order' => $request->validated('order'), ]); return new GroupItemResource($groupItem); } public function update(UpdateGroupItemRequest $request, string $tenant, FeaturedGroup $featuredGroup, GroupItem $groupItem): GroupItemResource { abort_if($featuredGroup->tenant_codigo !== $tenant || $groupItem->featured_group_id !== $featuredGroup->id, 404); $groupItem->update($request->validated()); return new GroupItemResource($groupItem); } public function destroy(string $tenant, FeaturedGroup $featuredGroup, GroupItem $groupItem): JsonResponse { abort_if($featuredGroup->tenant_codigo !== $tenant || $groupItem->featured_group_id !== $featuredGroup->id, 404); $groupItem->delete(); return response()->json(null, 204); } }