itemsCollection = $itemsCollection; } /** * @param Request $request * @param string $locale * @return JsonResponse */ public function search(Request $request, string $locale = 'en'): JsonResponse { $status = Response::HTTP_NO_CONTENT; $result = $this->itemsCollection->findItem($request->input('query'), $locale); $response = []; if ($result->isNotEmpty()) { $status = Response::HTTP_OK; $response = [ 'items' => $result->toArray(), ]; } return response()->json($response, $status); } /** * @param string $id * @param string $locale * @return JsonResponse */ public function getItem(string $id, string $locale = 'en'): JsonResponse { try { return response()->json($this->itemsCollection->getItemById($id, $locale)); } catch (Throwable $exception) { Log::error($exception->getMessage()); Log::error($exception->getTraceAsString()); return response()->json([ 'error' => 'Item not found.', ], Response::HTTP_NOT_FOUND); } } /** * @return JsonResponse */ public function getLocales(): JsonResponse { try { return response()->json($this->itemsCollection->getLocales()); } catch (Throwable $exception) { Log::error($exception->getMessage()); Log::error($exception->getTraceAsString()); return response()->json([ 'error' => 'No locale not found.', ], Response::HTTP_NOT_FOUND); } } /** * @param string $id * @return JsonResponse */ public function refreshAllCache(): JsonResponse { try { return response()->json($this->itemsCollection->refreshAllCache()); } catch (Throwable $exception) { Log::error($exception->getMessage()); Log::error($exception->getTraceAsString()); } } }