model = $model; } public function displayCreateTeam(SessionHandle $session): HttpResponse { return ViewHttpResponse::twig("insert_team.html.twig", []); } public function displayAddMember(SessionHandle $session): HttpResponse { return ViewHttpResponse::twig("add_member.html.twig", []); } public function displayDeleteMember(SessionHandle $session): HttpResponse { return ViewHttpResponse::twig("delete_member.html.twig", []); } /** * @param array $request * @param SessionHandle $session * @return HttpResponse */ public function submitTeam(array $request, SessionHandle $session): HttpResponse { $failures = []; $request = HttpRequest::from($request, $failures, [ "name" => [Validators::lenBetween(1, 32), Validators::nameWithSpaces()], "mainColor" => [Validators::regex('/#(?:[0-9a-fA-F]{6})/')], "secondColor" => [Validators::regex('/#(?:[0-9a-fA-F]{6})/')], "picture" => [Validators::isURL()], ]); if (!empty($failures)) { $badFields = []; foreach ($failures as $e) { if ($e instanceof FieldValidationFail) { $badFields[] = $e->getFieldName(); } } return ViewHttpResponse::twig('insert_team.html.twig', ['bad_fields' => $badFields]); } return $this->displayTeam($this->model->createTeam($request['name'], $request['picture'], $request['mainColor'], $request['secondColor']), $session); } public function displayListTeamByName(SessionHandle $session): HttpResponse { return ViewHttpResponse::twig("list_team_by_name.html.twig", []); } /** * @param array $request * @return HttpResponse */ public function listTeamByName(array $request, SessionHandle $session): HttpResponse { $errors = []; $request = HttpRequest::from($request, $errors, [ "name" => [Validators::lenBetween(1, 32), Validators::nameWithSpaces()], ]); if (!empty($errors) && $errors[0] instanceof FieldValidationFail) { $badField = $errors[0]->getFieldName(); return ViewHttpResponse::twig('list_team_by_name.html.twig', ['bad_field' => $badField]); } $results = $this->model->listByName($request['name']); if (empty($results)) { return ViewHttpResponse::twig('display_teams.html.twig', []); } return ViewHttpResponse::twig('display_teams.html.twig', ['teams' => $results]); } public function displayTeam(int $id, SessionHandle $session): HttpResponse { $result = $this->model->displayTeam($id); return ViewHttpResponse::twig('display_team.html.twig', ['team' => $result]); } /** * @param array $request * @param SessionHandle $session * @return HttpResponse */ public function addMember(array $request, SessionHandle $session): HttpResponse { $errors = []; $request = HttpRequest::from($request, $errors, [ "team" => [Validators::isInteger()], "mail" => [Validators::regex("/^\\S+@\\S+\\.\\S+$/"), Validators::lenBetween(5, 256)], ]); return $this->displayTeam($this->model->addMember($request['mail'], intval($request['team']), $request['role']), $session); } /** * @param array $request * @param SessionHandle $session * @return HttpResponse */ public function deleteMember(array $request, SessionHandle $session): HttpResponse { $errors = []; $request = HttpRequest::from($request, $errors, [ "team" => [Validators::isInteger()], "mail" => [Validators::regex("/^\\S+@\\S+\\.\\S+$/"), Validators::lenBetween(5, 256)], ]); return $this->displayTeam($this->model->deleteMember($request['mail'], intval($request['team'])), $session); } }