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

View File

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

View File

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

View File

@@ -15,7 +15,7 @@ class FeaturedGroupResource extends JsonResource
'group_name' => $this->group_name,
'product_layout' => $this->product_layout,
'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\Resources\Json\JsonResource;
class FeaturedVariantResource extends JsonResource
class GroupItemResource extends JsonResource
{
public function toArray(Request $request): array
{

View File

@@ -1,13 +1,13 @@
<?php
use App\Domains\Catalog\Controllers\AttributeController;
use App\Domains\Catalog\Controllers\BrandController;
use App\Domains\Catalog\Controllers\CatalogController;
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\FeaturedVariantController;
use App\Domains\Catalog\Controllers\GroupItemController;
use App\Domains\Catalog\Controllers\ProductController;
use App\Domains\Catalog\Controllers\ProductVariantController;
use Illuminate\Support\Facades\Route;
Route::prefix('tenants/{tenant:codigo}')->group(function (): void {
@@ -22,10 +22,10 @@ Route::prefix('tenants/{tenant:codigo}')->group(function (): void {
'variants' => 'productVariant',
]);
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'])
->parameters([
'featured-groups' => 'featuredGroup',
'variants' => 'featuredVariant',
'items' => 'groupItem',
]);
});