39 lines
1.1 KiB
PHP
39 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Data\ProductDTO;
|
|
use App\Http\Requests\CreateProductRequest;
|
|
use App\Http\Resources\ProductResource;
|
|
use App\Models\Product;
|
|
use App\Queries\GetProductsQuery;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class ProductController extends Controller
|
|
{
|
|
public function index(GetProductsQuery $getProductsQuery)
|
|
{
|
|
$products = $getProductsQuery->get(Auth::user());
|
|
$paginatedDtos = $products->through(fn ($product) => ProductDTO::fromModel($product));
|
|
|
|
return ProductResource::collection($paginatedDtos);
|
|
}
|
|
|
|
public function store(CreateProductRequest $request)
|
|
{
|
|
return Product::create($request->validated());
|
|
}
|
|
|
|
public function show(string $slug)
|
|
{
|
|
$product = Product::where('slug', $slug)->with(['category:id,name,slug', 'images:id,path,product_id'])->firstOrFail();
|
|
|
|
return new ProductResource(ProductDTO::fromModel($product));
|
|
}
|
|
|
|
public function update(Request $request, Product $product) {}
|
|
|
|
public function destroy(Product $product) {}
|
|
}
|