/** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { if ($body = \Request::input('body')) { $result = Word::with('position', 'translations')->where('body', $body)->orderBy('position_id', 'DESC')->get(); $exercises = \Auth::user()->exercises; $words = []; foreach ($result as $key => $item) { $words[$key]['id'] = $item->getId(); $words[$key]['body'] = $item->body; $words[$key]['ts'] = $item->ts; $words[$key]['position'] = $item->position ? $item->position->body : null; $words[$key]['used'] = $exercises->contains('word_id', $item->id); $words[$key]['translations'] = []; foreach ($item->translations as $_key => $translation) { $words[$key]['translations'][$_key]['id'] = $translation->getId(); $words[$key]['translations'][$_key]['body'] = $translation->body; } } if (count($words) > 0) { $response = response()->json($words); } else { $response = response()->json(['errors' => ['The word hasn\'t found.']], 404); } } else { if ($autocomplete = \Request::input('autocomplete')) { $words = Word::select('body')->where('body', 'LIKE', "{$autocomplete}%")->groupBy('body')->take(\Request::header('Limit') ?: 5)->get(); if (count($words) > 0) { $response = response()->json($words); } else { $response = response()->json(['errors' => ['The matched words haven\'t found.']], 404); } } else { $result = Word::with('position')->paginate(\Request::header('Limit') ?: 10); $headers['Current-Page'] = $result->currentPage(); $headers['Last-Page'] = $result->lastPage(); $words = []; foreach ($result as $key => $item) { $words[$key]['id'] = $item->getId(); $words[$key]['body'] = $item->body; $words[$key]['ts'] = $item->ts; $words[$key]['position'] = $item->position ? $item->position->body : null; } if (count($words) > 0) { $response = response()->json($words, 200, $headers); } else { $response = response()->json(['errors' => ['there aren\'t any words.']], 404); } } } return $response; }