feat: implement FeaturedVariant and CatalogController for managing featured variants and catalog display

This commit is contained in:
2026-07-14 14:55:48 -03:00
parent 299a462283
commit c2efec8906
17 changed files with 200 additions and 61 deletions

View File

@@ -32,7 +32,7 @@ class FeaturedGroupController extends Controller
public function show(string $tenant, FeaturedGroup $featuredGroup): FeaturedGroupResource
{
abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
return new FeaturedGroupResource($featuredGroup->load('featuredProducts'));
return new FeaturedGroupResource($featuredGroup->load('featuredVariants'));
}
public function update(UpdateFeaturedGroupRequest $request, string $tenant, FeaturedGroup $featuredGroup): FeaturedGroupResource

View File

@@ -1,42 +0,0 @@
<?php
namespace App\Domains\Product\Controllers;
use App\Domains\Product\Models\FeaturedGroup;
use App\Domains\Product\Models\FeaturedProduct;
use App\Domains\Product\Requests\StoreFeaturedProductRequest;
use App\Domains\Product\Requests\UpdateFeaturedProductRequest;
use App\Domains\Product\Resources\FeaturedProductResource;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
use Illuminate\Routing\Controller;
use Illuminate\Http\JsonResponse;
class FeaturedProductController extends Controller
{
public function index(string $tenant, FeaturedGroup $featuredGroup): AnonymousResourceCollection
{
abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
return FeaturedProductResource::collection($featuredGroup->featuredProducts);
}
public function store(StoreFeaturedProductRequest $request, string $tenant, FeaturedGroup $featuredGroup): FeaturedProductResource
{
abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
$product = $featuredGroup->featuredProducts()->create($request->validated());
return new FeaturedProductResource($product);
}
public function update(UpdateFeaturedProductRequest $request, string $tenant, FeaturedGroup $featuredGroup, FeaturedProduct $featuredProduct): FeaturedProductResource
{
abort_if($featuredGroup->tenant_codigo !== $tenant || $featuredProduct->featured_group_id !== $featuredGroup->id, 404);
$featuredProduct->update($request->validated());
return new FeaturedProductResource($featuredProduct);
}
public function destroy(string $tenant, FeaturedGroup $featuredGroup, FeaturedProduct $featuredProduct): JsonResponse
{
abort_if($featuredGroup->tenant_codigo !== $tenant || $featuredProduct->featured_group_id !== $featuredGroup->id, 404);
$featuredProduct->delete();
return response()->json(null, 204);
}
}

View File

@@ -0,0 +1,42 @@
<?php
namespace App\Domains\Product\Controllers;
use App\Domains\Product\Models\FeaturedGroup;
use App\Domains\Product\Models\FeaturedVariant;
use App\Domains\Product\Requests\StoreFeaturedVariantRequest;
use App\Domains\Product\Requests\UpdateFeaturedVariantRequest;
use App\Domains\Product\Resources\FeaturedVariantResource;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
use Illuminate\Routing\Controller;
use Illuminate\Http\JsonResponse;
class FeaturedVariantController extends Controller
{
public function index(string $tenant, FeaturedGroup $featuredGroup): AnonymousResourceCollection
{
abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
return FeaturedVariantResource::collection($featuredGroup->featuredVariants);
}
public function store(StoreFeaturedVariantRequest $request, string $tenant, FeaturedGroup $featuredGroup): FeaturedVariantResource
{
abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
$variant = $featuredGroup->featuredVariants()->create($request->validated());
return new FeaturedVariantResource($variant);
}
public function update(UpdateFeaturedVariantRequest $request, string $tenant, FeaturedGroup $featuredGroup, FeaturedVariant $featuredVariant): FeaturedVariantResource
{
abort_if($featuredGroup->tenant_codigo !== $tenant || $featuredVariant->featured_group_id !== $featuredGroup->id, 404);
$featuredVariant->update($request->validated());
return new FeaturedVariantResource($featuredVariant);
}
public function destroy(string $tenant, FeaturedGroup $featuredGroup, FeaturedVariant $featuredVariant): JsonResponse
{
abort_if($featuredGroup->tenant_codigo !== $tenant || $featuredVariant->featured_group_id !== $featuredGroup->id, 404);
$featuredVariant->delete();
return response()->json(null, 204);
}
}