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