feat: refactor featured variants to group items, including new controller and resource implementations

This commit is contained in:
2026-07-17 14:42:53 -03:00
parent cb0fb2899c
commit b8eb71896c
6 changed files with 24 additions and 24 deletions

View File

@@ -6,23 +6,23 @@ use App\Domains\Bundle\Models\Bundle;
use App\Domains\Catalog\Models\FeaturedGroup; use App\Domains\Catalog\Models\FeaturedGroup;
use App\Domains\Catalog\Models\GroupItem; use App\Domains\Catalog\Models\GroupItem;
use App\Domains\Catalog\Models\ProductVariant; use App\Domains\Catalog\Models\ProductVariant;
use App\Domains\Catalog\Requests\StoreFeaturedVariantRequest; use App\Domains\Catalog\Requests\StoreGroupItemRequest;
use App\Domains\Catalog\Requests\UpdateFeaturedVariantRequest; use App\Domains\Catalog\Requests\UpdateGroupItemRequest;
use App\Domains\Catalog\Resources\FeaturedVariantResource; use App\Domains\Catalog\Resources\GroupItemResource;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection; use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
use Illuminate\Routing\Controller; use Illuminate\Routing\Controller;
class FeaturedVariantController extends Controller class GroupItemController extends Controller
{ {
public function index(string $tenant, FeaturedGroup $featuredGroup): AnonymousResourceCollection public function index(string $tenant, FeaturedGroup $featuredGroup): AnonymousResourceCollection
{ {
abort_if($featuredGroup->tenant_codigo !== $tenant, 404); abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
return FeaturedVariantResource::collection($featuredGroup->groupItems); return GroupItemResource::collection($featuredGroup->groupItems);
} }
public function store(StoreFeaturedVariantRequest $request, string $tenant, FeaturedGroup $featuredGroup): FeaturedVariantResource public function store(StoreGroupItemRequest $request, string $tenant, FeaturedGroup $featuredGroup): GroupItemResource
{ {
abort_if($featuredGroup->tenant_codigo !== $tenant, 404); abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
@@ -41,21 +41,21 @@ class FeaturedVariantController extends Controller
'order' => $request->validated('order'), 'order' => $request->validated('order'),
]); ]);
return new FeaturedVariantResource($groupItem); return new GroupItemResource($groupItem);
} }
public function update(UpdateFeaturedVariantRequest $request, string $tenant, FeaturedGroup $featuredGroup, GroupItem $featuredVariant): FeaturedVariantResource public function update(UpdateGroupItemRequest $request, string $tenant, FeaturedGroup $featuredGroup, GroupItem $groupItem): GroupItemResource
{ {
abort_if($featuredGroup->tenant_codigo !== $tenant || $featuredVariant->featured_group_id !== $featuredGroup->id, 404); abort_if($featuredGroup->tenant_codigo !== $tenant || $groupItem->featured_group_id !== $featuredGroup->id, 404);
$featuredVariant->update($request->validated()); $groupItem->update($request->validated());
return new FeaturedVariantResource($featuredVariant); return new GroupItemResource($groupItem);
} }
public function destroy(string $tenant, FeaturedGroup $featuredGroup, GroupItem $featuredVariant): JsonResponse public function destroy(string $tenant, FeaturedGroup $featuredGroup, GroupItem $groupItem): JsonResponse
{ {
abort_if($featuredGroup->tenant_codigo !== $tenant || $featuredVariant->featured_group_id !== $featuredGroup->id, 404); abort_if($featuredGroup->tenant_codigo !== $tenant || $groupItem->featured_group_id !== $featuredGroup->id, 404);
$featuredVariant->delete(); $groupItem->delete();
return response()->json(null, 204); return response()->json(null, 204);
} }

View File

@@ -7,7 +7,7 @@ use App\Domains\Catalog\Models\ProductVariant;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
class StoreFeaturedVariantRequest extends FormRequest class StoreGroupItemRequest extends FormRequest
{ {
public function authorize(): bool public function authorize(): bool
{ {

View File

@@ -4,7 +4,7 @@ namespace App\Domains\Catalog\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class UpdateFeaturedVariantRequest extends FormRequest class UpdateGroupItemRequest extends FormRequest
{ {
public function authorize(): bool public function authorize(): bool
{ {

View File

@@ -15,7 +15,7 @@ class FeaturedGroupResource extends JsonResource
'group_name' => $this->group_name, 'group_name' => $this->group_name,
'product_layout' => $this->product_layout, 'product_layout' => $this->product_layout,
'group_order' => $this->group_order, 'group_order' => $this->group_order,
'featured_variants' => FeaturedVariantResource::collection($this->whenLoaded('groupItems')), 'group_items' => GroupItemResource::collection($this->whenLoaded('groupItems')),
]; ];
} }
} }

View File

@@ -7,7 +7,7 @@ use App\Domains\Catalog\Models\ProductVariant;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class FeaturedVariantResource extends JsonResource class GroupItemResource extends JsonResource
{ {
public function toArray(Request $request): array public function toArray(Request $request): array
{ {

View File

@@ -1,13 +1,13 @@
<?php <?php
use App\Domains\Catalog\Controllers\AttributeController;
use App\Domains\Catalog\Controllers\BrandController; use App\Domains\Catalog\Controllers\BrandController;
use App\Domains\Catalog\Controllers\CatalogController; use App\Domains\Catalog\Controllers\CatalogController;
use App\Domains\Catalog\Controllers\CategoryController; use App\Domains\Catalog\Controllers\CategoryController;
use App\Domains\Catalog\Controllers\ProductController;
use App\Domains\Catalog\Controllers\AttributeController;
use App\Domains\Catalog\Controllers\ProductVariantController;
use App\Domains\Catalog\Controllers\FeaturedGroupController; use App\Domains\Catalog\Controllers\FeaturedGroupController;
use App\Domains\Catalog\Controllers\FeaturedVariantController; use App\Domains\Catalog\Controllers\GroupItemController;
use App\Domains\Catalog\Controllers\ProductController;
use App\Domains\Catalog\Controllers\ProductVariantController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::prefix('tenants/{tenant:codigo}')->group(function (): void { Route::prefix('tenants/{tenant:codigo}')->group(function (): void {
@@ -22,10 +22,10 @@ Route::prefix('tenants/{tenant:codigo}')->group(function (): void {
'variants' => 'productVariant', 'variants' => 'productVariant',
]); ]);
Route::apiResource('featured-groups', FeaturedGroupController::class); Route::apiResource('featured-groups', FeaturedGroupController::class);
Route::apiResource('featured-groups.variants', FeaturedVariantController::class) Route::apiResource('featured-groups.items', GroupItemController::class)
->only(['index', 'store', 'update', 'destroy']) ->only(['index', 'store', 'update', 'destroy'])
->parameters([ ->parameters([
'featured-groups' => 'featuredGroup', 'featured-groups' => 'featuredGroup',
'variants' => 'featuredVariant', 'items' => 'groupItem',
]); ]);
}); });