/** * Get a listing of the term. * * @Get("/") * @Response(200, body={{"id": 1, "name": "Fall", "year": "2015"}, * {"id": 2, "name": "Fall", "year": "2015"}}) * @return Response */ public function index(Request $request) { $this->validate($request, ['date' => 'date']); $queryParameters = array_filter($request->only(['date', 'name'])); $terms = Term::query(); if (array_key_exists('date', $queryParameters)) { $timezone = new \DateTimeZone('America/New_York'); $date = (new \DateTime('now', $timezone))->format('Y-m-d'); $terms->where('start_date', '<=', $date)->where('end_date', '>=', $date); } if (array_key_exists('name', $queryParameters)) { $terms = $terms->get()->filter(function ($term) use($queryParameters) { return strpos($term->name, $queryParameters['name']) !== false; }); } else { $terms = $terms->get(); } return response()->json($terms); }