ekart/backend/app/Http/Controllers/ProductController.php
2026-03-25 17:17:35 +05:30

42 lines
1.2 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Data\Product\ProductDTO;
use App\Http\Requests\CreateProductRequest;
use App\Http\Resources\Product\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'])
->withExists('favoritedBy')
->firstOrFail();
return new ProductResource(ProductDTO::fromModel($product));
}
public function update(Request $request, Product $product) {}
public function destroy(Product $product) {}
}