purchaseOrderRepository->all(); return PurchaseOrderResource::collection($purchaseOrders); } catch (\Exception $e) { Log::error('Error fetching purchase orders: ' . $e->getMessage(), [ 'exception' => $e, 'trace' => $e->getTraceAsString(), ]); return response()->json([ 'message' => 'Une erreur est survenue lors de la récupération des commandes fournisseurs.', 'error' => config('app.debug') ? $e->getMessage() : null, ], 500); } } /** * Store a newly created purchase order. */ public function store(StorePurchaseOrderRequest $request): PurchaseOrderResource|JsonResponse { try { $purchaseOrder = $this->purchaseOrderRepository->create($request->validated()); return new PurchaseOrderResource($purchaseOrder); } catch (\Exception $e) { Log::error('Error creating purchase order: ' . $e->getMessage(), [ 'exception' => $e, 'trace' => $e->getTraceAsString(), 'data' => $request->validated(), ]); return response()->json([ 'message' => 'Une erreur est survenue lors de la création de la commande fournisseur.', 'error' => config('app.debug') ? $e->getMessage() : null, ], 500); } } /** * Display the specified purchase order. */ public function show(string $id): PurchaseOrderResource|JsonResponse { try { $purchaseOrder = $this->purchaseOrderRepository->find($id); if (!$purchaseOrder) { return response()->json([ 'message' => 'Commande fournisseur non trouvée.', ], 404); } return new PurchaseOrderResource($purchaseOrder); } catch (\Exception $e) { Log::error('Error fetching purchase order: ' . $e->getMessage(), [ 'exception' => $e, 'trace' => $e->getTraceAsString(), 'purchase_order_id' => $id, ]); return response()->json([ 'message' => 'Une erreur est survenue lors de la récupération de la commande fournisseur.', 'error' => config('app.debug') ? $e->getMessage() : null, ], 500); } } /** * Update the specified purchase order. */ public function update(UpdatePurchaseOrderRequest $request, string $id): PurchaseOrderResource|JsonResponse { try { $updated = $this->purchaseOrderRepository->update($id, $request->validated()); if (!$updated) { return response()->json([ 'message' => 'Commande fournisseur non trouvée ou échec de la mise à jour.', ], 404); } $purchaseOrder = $this->purchaseOrderRepository->find($id); return new PurchaseOrderResource($purchaseOrder); } catch (\Exception $e) { Log::error('Error updating purchase order: ' . $e->getMessage(), [ 'exception' => $e, 'trace' => $e->getTraceAsString(), 'purchase_order_id' => $id, 'data' => $request->validated(), ]); return response()->json([ 'message' => 'Une erreur est survenue lors de la mise à jour de la commande fournisseur.', 'error' => config('app.debug') ? $e->getMessage() : null, ], 500); } } /** * Remove the specified purchase order. */ public function destroy(string $id): JsonResponse { try { $deleted = $this->purchaseOrderRepository->delete($id); if (!$deleted) { return response()->json([ 'message' => 'Commande fournisseur non trouvée ou échec de la suppression.', ], 404); } return response()->json([ 'message' => 'Commande fournisseur supprimée avec succès.', ], 200); } catch (\Exception $e) { Log::error('Error deleting purchase order: ' . $e->getMessage(), [ 'exception' => $e, 'trace' => $e->getTraceAsString(), 'purchase_order_id' => $id, ]); return response()->json([ 'message' => 'Une erreur est survenue lors de la suppression de la commande fournisseur.', 'error' => config('app.debug') ? $e->getMessage() : null, ], 500); } } }