pdv.backend/app/Http/Controllers/App/SaleController.php

60 lines
1.5 KiB
PHP

<?php
namespace App\Http\Controllers\App;
use App\Http\Controllers\Controller;
use App\Http\Requests\App\SaleStoreRequest;
use App\Services\SaleService;
use App\Models\Sale;
use Notsoweb\ApiResponse\Enums\ApiResponse;
class SaleController extends Controller
{
public function __construct(
protected SaleService $saleService
) {}
public function index()
{
$sales = Sale::with(['details.inventory', 'user'])
->orderBy('created_at', 'desc')
->paginate(config('app.pagination'));
return ApiResponse::OK->response([
'sales' => $sales,
]);
}
public function show( Sale $sale)
{
return ApiResponse::OK->response([
'model' => $sale->load(['details.inventory', 'user'])
]);
}
public function store(SaleStoreRequest $request)
{
$sale = $this->saleService->createSale($request->validated());
return ApiResponse::CREATED->response([
'model' => $sale,
]);
}
public function cancel(Sale $sale)
{
try {
$cancelledSale = $this->saleService->cancelSale($sale);
return ApiResponse::OK->response([
'model' => $cancelledSale,
'message' => 'Venta cancelada exitosamente. Stock restaurado.'
]);
} catch (\Exception $e) {
return ApiResponse::BAD_REQUEST->response([
'message' => $e->getMessage()
]);
}
}
}