/** * @api {get} /tasks Search Tasks * @apiGroup Tasks * @apiDescription Find tasks. * * @param Request $request * * @return \Illuminate\Http\Response */ public function index(Request $request) { $this->validate($request, ['cost' => 'integer|between:1,5', 'time' => 'integer|between:1,5']); $tasks = Task::query(); if ($cost = $request->input('cost')) { $tasks->where('cost', '<=', $cost); } if ($time = $request->input('time')) { $tasks->where('cost', '<=', $time); } $tasks->orderByRaw("RAND()"); $tasks->take('1'); $task = $tasks->first(); if ($task) { $taskArray = $task->toArray(); $taskArray['sticker'] = $task->getSticker(); } else { throw new NotFoundHttpException("No tasks matching those criteria were found."); } return $this->response(['task' => $taskArray]); }
protected function getSearchableList() { return Task::query(); }