86 lines
2.8 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Http\Requests\StoreStockMoveRequest;
use App\Http\Resources\StockMoveResource;
use App\Repositories\StockMoveRepositoryInterface;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
class StockMoveController extends Controller
{
public function __construct(
private readonly StockMoveRepositoryInterface $stockMoveRepository
) {
}
/**
* Display a listing of stock moves.
*/
public function index(Request $request): JsonResponse
{
try {
$moves = $this->stockMoveRepository->all();
return response()->json([
'data' => StockMoveResource::collection($moves),
'status' => 'success'
]);
} catch (\Exception $e) {
Log::error('Error fetching stock moves: ' . $e->getMessage());
return response()->json([
'message' => 'Une erreur est survenue lors de la récupération des mouvements de stock.',
'error' => config('app.debug') ? $e->getMessage() : null,
], 500);
}
}
/**
* Store a newly created stock move.
*/
public function store(StoreStockMoveRequest $request): JsonResponse
{
try {
$move = $this->stockMoveRepository->create($request->validated());
return response()->json([
'data' => new StockMoveResource($move),
'message' => 'Mouvement de stock enregistré avec succès.',
'status' => 'success'
], 201);
} catch (\Exception $e) {
Log::error('Error creating stock move: ' . $e->getMessage());
return response()->json([
'message' => 'Une erreur est survenue lors de l\'enregistrement du mouvement de stock.',
'error' => config('app.debug') ? $e->getMessage() : null,
], 500);
}
}
/**
* Display the specified stock move.
*/
public function show(string $id): JsonResponse
{
try {
$move = $this->stockMoveRepository->find((int) $id);
if (!$move) {
return response()->json(['message' => 'Mouvement de stock non trouvé.'], 404);
}
return response()->json([
'data' => new StockMoveResource($move),
'status' => 'success'
]);
} catch (\Exception $e) {
Log::error('Error fetching stock move: ' . $e->getMessage());
return response()->json([
'message' => 'Une erreur est survenue lors de la récupération du mouvement de stock.',
'error' => config('app.debug') ? $e->getMessage() : null,
], 500);
}
}
}