WIP just a few little adjusments and progress
continuous-integration/drone/push Build is passing Details

pull/16/head
Maël DAIM 1 year ago
parent a283c4b126
commit 0859467e3f

@ -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); $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("GET","/team/new", fn()=>$teamController->displaySubmitTeam());
$router->map("POST","/team/new", fn()=>$teamController->SubmitTeam($_POST)); $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(); $match = $router->match();

@ -5,7 +5,7 @@ DROP TABLE IF EXISTS TacticInfo;
CREATE TABLE FormEntries(name varchar, description varchar); CREATE TABLE FormEntries(name varchar, description varchar);
CREATE TABLE Team( CREATE TABLE Team(
id numeric PRIMARY KEY AUTOINCREMENT, id integer PRIMARY KEY AUTOINCREMENT,
name varchar, name varchar,
picture varchar, picture varchar,
mainColor numeric, mainColor numeric,
@ -19,7 +19,7 @@ CREATE TABLE Participate(
); );
CREATE TABLE Member( CREATE TABLE Member(
id numeric PRIMARY KEY AUTOINCREMENT, id integer PRIMARY KEY AUTOINCREMENT,
email varchar, email varchar,
); );

@ -29,7 +29,7 @@ class TeamController /* verif si les camp sont assignés, sinon erreur 400*/
public function displaySubmitTeam() { public function displaySubmitTeam() {
try { try {
$this->twig->display("insertTeam.html.twig", []); $this->twig->display("insert_team.html.twig", []);
} catch (LoaderError | RuntimeError | SyntaxError $e) { } catch (LoaderError | RuntimeError | SyntaxError $e) {
echo " twig error : $e"; echo " twig error : $e";
} }
@ -51,17 +51,33 @@ class TeamController /* verif si les camp sont assignés, sinon erreur 400*/
$badFields[] = $e->getFieldName(); $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'])); $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 { public function listTeamByName(array $request): HttpResponse {
$errors = []; $errors = [];
$request = HttpRequest::from($request, $errors, [
$results = $this->model->listByName($request['name'], $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]);
} }
} }

@ -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=[]; $teams=[];
if(Validation::hasHTMLInjection($name)){
$errors = self::ERROR_INVALID_SEARCH;
}
$results = $this->gateway->listByName($name); $results = $this->gateway->listByName($name);
if(empty($results)){
$errors = self::ERROR_NO_DATA_FOUND;
}
foreach ($results as $row){ foreach ($results as $row){
$teams[] = new Team($row['name'],$row['picture'],$row['mainColor'],$row['secondColor']); $teams[] = new Team($row['name'],$row['picture'],$row['mainColor'],$row['secondColor']);
} }
return $results; return $teams;
} }
} }

@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Insertion view</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f1f1f1;
}
.container {
max-width: 400px;
margin: 0 auto;
padding: 20px;
background-color: #fff;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
h2 {
text-align: center;
}
.form-group {
margin-bottom: 20px;
}
label {
display: block;
margin-bottom: 5px;
}
{% for item in bad_fields %}
#{{ item }}{
border-color: red;
}
{% endfor %}
input[type="text"], input[type="password"] {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
}
input[type="submit"] {
background-color: #007bff;
color: #fff;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
}
input[type="submit"]:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="container">
<h2>Créer une équipe</h2>
<form action="/team/list" method="post">
<div class="form-group">
<label for="name">Nom de l'équipe :</label>
<input type="text" id="name" name="name" required>
</div>
<div class="form-group">
<input type="submit" value="Confirmer">
</div>
</form>
</div>
</body>
</html>
Loading…
Cancel
Save