priceListRepository->all()->sortBy('name')->values(); return PriceListResource::collection($priceLists); } catch (\Exception $e) { Log::error('Error fetching price lists: ' . $e->getMessage(), [ 'exception' => $e, ]); return response()->json([ 'message' => 'Une erreur est survenue lors de la récupération des listes de prix.', 'error' => config('app.debug') ? $e->getMessage() : null, ], 500); } } /** * Store a newly created price list. */ public function store(StorePriceListRequest $request): PriceListResource|JsonResponse { try { $priceList = $this->priceListRepository->create($request->validated()); return new PriceListResource($priceList); } catch (\Exception $e) { Log::error('Error creating price list: ' . $e->getMessage(), [ 'exception' => $e, 'data' => $request->validated(), ]); return response()->json([ 'message' => 'Une erreur est survenue lors de la création de la liste de prix.', 'error' => config('app.debug') ? $e->getMessage() : null, ], 500); } } /** * Display the specified price list. */ public function show(string $id): PriceListResource|JsonResponse { try { $priceList = $this->priceListRepository->find($id); if (! $priceList) { return response()->json([ 'message' => 'Liste de prix non trouvée.', ], 404); } return new PriceListResource($priceList); } catch (\Exception $e) { Log::error('Error fetching price list: ' . $e->getMessage(), [ 'exception' => $e, 'price_list_id' => $id, ]); return response()->json([ 'message' => 'Une erreur est survenue lors de la récupération de la liste de prix.', 'error' => config('app.debug') ? $e->getMessage() : null, ], 500); } } /** * Update the specified price list. */ public function update(UpdatePriceListRequest $request, string $id): PriceListResource|JsonResponse { try { $updated = $this->priceListRepository->update($id, $request->validated()); if (! $updated) { return response()->json([ 'message' => 'Liste de prix non trouvée ou échec de la mise à jour.', ], 404); } $priceList = $this->priceListRepository->find($id); return new PriceListResource($priceList); } catch (\Exception $e) { Log::error('Error updating price list: ' . $e->getMessage(), [ 'exception' => $e, 'price_list_id' => $id, 'data' => $request->validated(), ]); return response()->json([ 'message' => 'Une erreur est survenue lors de la mise à jour de la liste de prix.', 'error' => config('app.debug') ? $e->getMessage() : null, ], 500); } } /** * Remove the specified price list. */ public function destroy(string $id): JsonResponse { try { $deleted = $this->priceListRepository->delete($id); if (! $deleted) { return response()->json([ 'message' => 'Liste de prix non trouvée ou échec de la suppression.', ], 404); } return response()->json([ 'message' => 'Liste de prix supprimée avec succès.', ]); } catch (\Exception $e) { Log::error('Error deleting price list: ' . $e->getMessage(), [ 'exception' => $e, 'price_list_id' => $id, ]); return response()->json([ 'message' => 'Une erreur est survenue lors de la suppression de la liste de prix.', 'error' => config('app.debug') ? $e->getMessage() : null, ], 500); } } }