diff --git a/public/index.php b/public/index.php index ae49e19..bdb9000 100644 --- a/public/index.php +++ b/public/index.php @@ -42,6 +42,9 @@ $router->map("GET", "/tactic/[i:id]/edit", fn(int $id) => $editorController->ope $teamController = new \App\Controller\TeamController(new \App\Model\TeamModel(new \App\Gateway\TeamGateway($con)),$twig); $router->map("GET","/team/new", fn()=>$teamController->displaySubmitTeam()); $router->map("POST","/team/new", fn()=>$teamController->SubmitTeam($_POST)); +$router->map("GET","/team/list", fn()=>$teamController->displayListTeamByName()); +$router->map("POST","/team/list", fn()=>$teamController->ListTeamByName($_POST)); +/*todo $router->map("GET","/team/[i:id]", fn()=>$teamController->displayTeam);*/ $match = $router->match(); diff --git a/sql/setup-tables.sql b/sql/setup-tables.sql index 989f241..437649c 100644 --- a/sql/setup-tables.sql +++ b/sql/setup-tables.sql @@ -5,7 +5,7 @@ DROP TABLE IF EXISTS TacticInfo; CREATE TABLE FormEntries(name varchar, description varchar); CREATE TABLE Team( - id numeric PRIMARY KEY AUTOINCREMENT, + id integer PRIMARY KEY AUTOINCREMENT, name varchar, picture varchar, mainColor numeric, @@ -19,7 +19,7 @@ CREATE TABLE Participate( ); CREATE TABLE Member( - id numeric PRIMARY KEY AUTOINCREMENT, + id integer PRIMARY KEY AUTOINCREMENT, email varchar, ); diff --git a/src/Controller/TeamController.php b/src/Controller/TeamController.php index de98d09..8702b3e 100644 --- a/src/Controller/TeamController.php +++ b/src/Controller/TeamController.php @@ -29,7 +29,7 @@ class TeamController /* verif si les camp sont assignés, sinon erreur 400*/ public function displaySubmitTeam() { try { - $this->twig->display("insertTeam.html.twig", []); + $this->twig->display("insert_team.html.twig", []); } catch (LoaderError | RuntimeError | SyntaxError $e) { echo " twig error : $e"; } @@ -51,17 +51,33 @@ class TeamController /* verif si les camp sont assignés, sinon erreur 400*/ $badFields[] = $e->getFieldName(); } } - return ViewHttpResponse::twig('insertTeam.html.twig',['bad_fields'=> $badFields]); + return ViewHttpResponse::twig('insert_team.html.twig',['bad_fields'=> $badFields]); } $this->model->createTeam($request['name'], $request['picture'], intval($request['mainColor']), intval($request['secondColor'])); - return ViewHttpResponse::twig('sample_form.html.twig',[]); + return ViewHttpResponse::twig('sample_form.html.twig',[]); /*todo appeler une vue qui display la team au lieu de ça*/ } + public function displayListTeamByName(){ + try { + $this->twig->display("list_team_by_name.html.twig", []); + } catch (LoaderError | RuntimeError | SyntaxError $e) { + echo " twig error : $e"; + } + } public function listTeamByName(array $request): HttpResponse { $errors = []; - - $results = $this->model->listByName($request['name'], $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)){ + /*todo appelle de la bonne vue qui va afficher un message qui dit que bah ca retourne rien, proposer de refaire une recherche*/ + } + return ViewHttpResponse::twig('display_teams.html.twig',['teams' => $results]); } } diff --git a/src/Model/TeamModel.php b/src/Model/TeamModel.php index 4bcd27e..02eef70 100644 --- a/src/Model/TeamModel.php +++ b/src/Model/TeamModel.php @@ -34,20 +34,13 @@ class TeamModel /* throw des exceptions(ex validation des champs, filtre etc) po } - public function listByName(string $name,array &$errors):array { + public function listByName(string $name):array { $teams=[]; - if(Validation::hasHTMLInjection($name)){ - $errors = self::ERROR_INVALID_SEARCH; - } $results = $this->gateway->listByName($name); - if(empty($results)){ - $errors = self::ERROR_NO_DATA_FOUND; - } - foreach ($results as $row){ $teams[] = new Team($row['name'],$row['picture'],$row['mainColor'],$row['secondColor']); } - return $results; + return $teams; } } \ No newline at end of file diff --git a/src/Views/insertTeam.html.twig b/src/Views/insert_team.html.twig similarity index 100% rename from src/Views/insertTeam.html.twig rename to src/Views/insert_team.html.twig diff --git a/src/Views/list_team_by_name.html.twig b/src/Views/list_team_by_name.html.twig new file mode 100644 index 0000000..7e0cbb3 --- /dev/null +++ b/src/Views/list_team_by_name.html.twig @@ -0,0 +1,77 @@ + + +
+ +