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