get(); $view = Twig::fromRequest($request); return $view->render($response, 'test/list.twig', [ 'tests' => $tests, ]); } public function getView(Request $request, Response $response, array $args): Response { $test = Test::where('id', $args['test_id'])->first(); $view = Twig::fromRequest($request); return $view->render($response, 'test/view.twig', [ 'test' => $test, ]); } public function getAdd(Request $request, Response $response): Response { $benchmarks = Benchmark::all(); $components = Component::all(); $view = Twig::fromRequest($request); return $view->render($response, 'test/add.twig', [ 'benchmarks' => $benchmarks, 'components' => $components, ]); } public function postAdd(Request $request, Response $response): Response { $params = (array)$request->getParsedBody(); $test = new Test; $test->title = $params['test_title']; $test->description = $params['test_description']; $test->component_id = $params['test_component']; $test->save(); // attach benchmarks to test foreach ($params['test_benchmarks'] as $b) { $test->benchmarks()->attach($b); } // redirect the user back to the home page $routeContext = RouteContext::fromRequest($request); $routeParser = $routeContext->getRouteParser(); return $response ->withHeader('Location', $routeParser->urlFor('test.list')) ->withStatus(302); } public function getEdit(Request $request, Response $response, array $args): Response { $test = Test::where('id', $args['test_id'])->first(); $benchmarks = Benchmark::all(); $components = Component::all(); $view = Twig::fromRequest($request); return $view->render($response, 'test/edit.twig', [ 'test' => $test, 'benchmarks' => $benchmarks, 'components' => $components, ]); } public function postEdit(Request $request, Response $response, array $args): Response { $params = (array)$request->getParsedBody(); $test = Test::where('id', $args['test_id'])->first(); $test->title = $params['test_title']; $test->description = $params['test_description']; $test->component_id = $params['test_component']; $test->save(); // attach benchmarks to test that aren't already attached foreach ($params['test_benchmarks'] as $b) { if (!$test->isBenchmarkSelected($b)) { $test->benchmarks()->attach($b); } } // remove benchmarks are not in the list foreach ($test->benchmarks as $b) { if (!in_array($b->id, $params['test_benchmarks'])) { $test->benchmarks()->detach($b); } } // redirect the user back to the home page $routeContext = RouteContext::fromRequest($request); $routeParser = $routeContext->getRouteParser(); return $response ->withHeader('Location', $routeParser->urlFor('test.view', [ 'test_id' => $test->id ])) ->withStatus(302); } public function getResults(Request $request, Response $response, array $args): Response { $test = Test::where('id', $args['test_id'])->first(); $view = Twig::fromRequest($request); return $view->render($response, 'test/results.twig', [ 'test' => $test, ]); } }