52 lines
1.9 KiB
PHP
52 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace App\Domains\Product\Controllers;
|
|
|
|
use App\Domains\Product\Models\FeaturedGroup;
|
|
use App\Domains\Product\Requests\StoreFeaturedGroupRequest;
|
|
use App\Domains\Product\Requests\UpdateFeaturedGroupRequest;
|
|
use App\Domains\Product\Resources\FeaturedGroupResource;
|
|
use App\Domains\Product\Services\FeaturedGroupService;
|
|
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
|
|
use Illuminate\Routing\Controller;
|
|
use Illuminate\Http\JsonResponse;
|
|
|
|
class FeaturedGroupController extends Controller
|
|
{
|
|
public function __construct(
|
|
private readonly FeaturedGroupService $featuredGroupService
|
|
) {}
|
|
|
|
public function index(string $tenant): AnonymousResourceCollection
|
|
{
|
|
$groups = FeaturedGroup::where('tenant_codigo', $tenant)->get();
|
|
return FeaturedGroupResource::collection($groups);
|
|
}
|
|
|
|
public function store(StoreFeaturedGroupRequest $request, string $tenant): FeaturedGroupResource
|
|
{
|
|
$group = $this->featuredGroupService->createGroup($tenant, $request->validated());
|
|
return new FeaturedGroupResource($group);
|
|
}
|
|
|
|
public function show(string $tenant, FeaturedGroup $featuredGroup): FeaturedGroupResource
|
|
{
|
|
abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
|
|
return new FeaturedGroupResource($featuredGroup->load('featuredVariants'));
|
|
}
|
|
|
|
public function update(UpdateFeaturedGroupRequest $request, string $tenant, FeaturedGroup $featuredGroup): FeaturedGroupResource
|
|
{
|
|
abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
|
|
$group = $this->featuredGroupService->updateGroup($featuredGroup, $request->validated());
|
|
return new FeaturedGroupResource($group);
|
|
}
|
|
|
|
public function destroy(string $tenant, FeaturedGroup $featuredGroup): JsonResponse
|
|
{
|
|
abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
|
|
$this->featuredGroupService->deleteGroup($featuredGroup);
|
|
return response()->json(null, 204);
|
|
}
|
|
}
|