43 lines
1.9 KiB
PHP
43 lines
1.9 KiB
PHP
<?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);
|
|
}
|
|
}
|