formated the code and verification plus some more css
continuous-integration/drone/push Build is failing Details

pull/16/head
Maël DAIM 2 years ago
parent 7199a80562
commit 76e64a5ae5

@ -49,7 +49,7 @@ $router->map("GET", "/tactic/new", fn() => $editorController->makeNew());
$router->map("GET", "/tactic/[i:id]/edit", fn(int $id) => $editorController->openEditorFor($id)); $router->map("GET", "/tactic/[i:id]/edit", fn(int $id) => $editorController->openEditorFor($id));
$router->map("GET", "/tactic/[i:id]", fn(int $id) => $visualizerController->openVisualizer($id)); $router->map("GET", "/tactic/[i:id]", fn(int $id) => $visualizerController->openVisualizer($id));
$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)));
$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));

@ -8,10 +8,8 @@ use App\Http\ViewHttpResponse;
use App\Model\TeamModel; use App\Model\TeamModel;
use App\Validation\FieldValidationFail; use App\Validation\FieldValidationFail;
use App\Validation\Validators; use App\Validation\Validators;
use \Twig\Environment;
class TeamController class TeamController {
{
private TeamModel $model; private TeamModel $model;
/** /**
@ -25,6 +23,10 @@ class TeamController
return ViewHttpResponse::twig("insert_team.html.twig", []); return ViewHttpResponse::twig("insert_team.html.twig", []);
} }
/**
* @param array<string, mixed> $request
* @return HttpResponse
*/
public function submitTeam(array $request): HttpResponse { public function submitTeam(array $request): HttpResponse {
$errors = []; $errors = [];
@ -32,7 +34,7 @@ class TeamController
"name" => [Validators::lenBetween(1, 32), Validators::nameWithSpaces()], "name" => [Validators::lenBetween(1, 32), Validators::nameWithSpaces()],
"mainColor" => [Validators::regex('/#(?:[0-9a-fA-F]{6})/')], "mainColor" => [Validators::regex('/#(?:[0-9a-fA-F]{6})/')],
"secondColor" => [Validators::regex('/#(?:[0-9a-fA-F]{6})/')], "secondColor" => [Validators::regex('/#(?:[0-9a-fA-F]{6})/')],
"picture" => [Validators::isURL()] "picture" => [Validators::isURL()],
]); ]);
if (!empty($errors)) { if (!empty($errors)) {
$badFields = []; $badFields = [];
@ -50,10 +52,14 @@ class TeamController
return ViewHttpResponse::twig("list_team_by_name.html.twig", []); return ViewHttpResponse::twig("list_team_by_name.html.twig", []);
} }
/**
* @param array<string , mixed> $request
* @return HttpResponse
*/
public function listTeamByName(array $request): HttpResponse { public function listTeamByName(array $request): HttpResponse {
$errors = []; $errors = [];
$request = HttpRequest::from($request, $errors, [ $request = HttpRequest::from($request, $errors, [
"name" => [Validators::lenBetween(1, 32), Validators::nameWithSpaces()] "name" => [Validators::lenBetween(1, 32), Validators::nameWithSpaces()],
]); ]);
if (!empty($errors) && $errors[0] instanceof FieldValidationFail) { if (!empty($errors) && $errors[0] instanceof FieldValidationFail) {
@ -75,5 +81,3 @@ class TeamController
return ViewHttpResponse::twig('display_team.html.twig', ['team' => $result]); return ViewHttpResponse::twig('display_team.html.twig', ['team' => $result]);
} }
} }

@ -2,31 +2,31 @@
namespace App\Data; namespace App\Data;
use \InvalidArgumentException; use InvalidArgumentException;
class Color { class Color {
/** /**
* @var string 6 bytes unsigned int that represents an RGB color * @var string that represents an hexadecimal color code
*/ */
private string $hex; private string $hex;
/** /**
* @param string $value 6 bytes unsigned int that represents an RGB color * @param string $value 6 bytes unsigned int that represents an RGB color
* @throws \InvalidArgumentException if the value is negative or greater than 0xFFFFFF * @throws InvalidArgumentException if the value is negative or greater than 0xFFFFFF
*/ */
private function __construct(string $value) { private function __construct(string $value) {
if ($value < 0 || $value > 0xFFFFFF) { if ($value < 0 || $value > 0xFFFFFF) {
throw new InvalidArgumentException("int color value is invalid, must be positive and lower than 0xFFFFFF"); throw new InvalidArgumentException("int color value is invalid, must be positive and lower than 0xFFFFFF");
} }
$this->value = $value; $this->hex = $value;
} }
/** /**
* @return string * @return string
*/ */
public function getValue(): string { public function getValue(): string {
return $this->value; return $this->hex;
} }
public static function from(string $value): Color { public static function from(string $value): Color {
@ -45,4 +45,3 @@ class Color {
return new Color($value); return new Color($value);
} }
} }

@ -10,7 +10,6 @@ use http\Exception\InvalidArgumentException;
* encapsulates an integer value and use it as an enumeration discriminant * encapsulates an integer value and use it as an enumeration discriminant
*/ */
final class MemberRole { final class MemberRole {
private const ROLE_PLAYER = 0; private const ROLE_PLAYER = 0;
private const ROLE_COACH = 1; private const ROLE_COACH = 1;
private const MIN = self::ROLE_PLAYER; private const MIN = self::ROLE_PLAYER;
@ -25,11 +24,11 @@ final class MemberRole {
$this->value = $val; $this->value = $val;
} }
public static function player(){ public static function player(): MemberRole {
return new MemberRole(MemberRole::ROLE_PLAYER); return new MemberRole(MemberRole::ROLE_PLAYER);
} }
public static function coach(){ public static function coach(): MemberRole {
return new MemberRole(MemberRole::ROLE_COACH); return new MemberRole(MemberRole::ROLE_COACH);
} }

@ -12,50 +12,66 @@ class TeamGateway {
$this->con = $con; $this->con = $con;
} }
public function insert(string $name, string $picture, string $mainColor, string $secondColor) { public function insert(string $name, string $picture, string $mainColor, string $secondColor): void {
$this->con->exec( $this->con->exec(
"INSERT INTO Team(name, picture, mainColor, secondColor) VALUES (:teamName , :picture, :mainColor, :secondColor)", "INSERT INTO Team(name, picture, mainColor, secondColor) VALUES (:teamName , :picture, :mainColor, :secondColor)",
[ [
":teamName" => [$name, PDO::PARAM_STR], ":teamName" => [$name, PDO::PARAM_STR],
":picture" => [$picture, PDO::PARAM_STR], ":picture" => [$picture, PDO::PARAM_STR],
":mainColor" => [$mainColor, PDO::PARAM_STR], ":mainColor" => [$mainColor, PDO::PARAM_STR],
":secondColor" => [$secondColor, PDO::PARAM_STR] ":secondColor" => [$secondColor, PDO::PARAM_STR],
] ]
); );
} }
/**
* @param string $name
* @return array<string,mixed>[]
*/
public function listByName(string $name): array { public function listByName(string $name): array {
return $this->con->fetch( return $this->con->fetch(
"SELECT id,name,picture,mainColor,secondColor FROM Team WHERE name LIKE '%' || :name || '%'", "SELECT id,name,picture,mainColor,secondColor FROM Team WHERE name LIKE '%' || :name || '%'",
[ [
":name" => [$name, PDO::PARAM_STR] ":name" => [$name, PDO::PARAM_STR],
] ]
); );
} }
/**
* @param int $id
* @return array<string,mixed>[]
*/
public function getTeamById(int $id): array { public function getTeamById(int $id): array {
return $this->con->fetch( return $this->con->fetch(
"SELECT id,name,picture,mainColor,secondColor FROM Team WHERE id = :id", "SELECT id,name,picture,mainColor,secondColor FROM Team WHERE id = :id",
[ [
":id" => [$id, PDO::PARAM_INT] ":id" => [$id, PDO::PARAM_INT],
] ]
); );
} }
/**
* @param string $name
* @return array<string,int>[]
*/
public function getIdTeamByName(string $name): array { public function getIdTeamByName(string $name): array {
return $this->con->fetch( return $this->con->fetch(
"SELECT id FROM Team WHERE name = :name", "SELECT id FROM Team WHERE name = :name",
[ [
":name" => [$name, PDO::PARAM_STR] ":name" => [$name, PDO::PARAM_STR],
] ]
); );
} }
public function getMembersById($id):array{ /**
* @param int $id
* @return array<string,mixed>[]
*/
public function getMembersById(int $id): array {
return $this->con->fetch( return $this->con->fetch(
"SELECT m.role,u.id FROM User u,Team t,Member m WHERE t.id = :id AND m.idTeam = t.id AND m.idMember = u.id", "SELECT m.role,u.id FROM User u,Team t,Member m WHERE t.id = :id AND m.idTeam = t.id AND m.idMember = u.id",
[ [
":id" => [$id, PDO::PARAM_INT] ":id" => [$id, PDO::PARAM_INT],
] ]
); );
} }

@ -8,8 +8,7 @@ use App\Data\Member;
use App\Data\MemberRole; use App\Data\MemberRole;
use App\Data\Color; use App\Data\Color;
class TeamModel class TeamModel {
{
private TeamGateway $gateway; private TeamGateway $gateway;
/** /**

@ -70,6 +70,3 @@ class Validators {
); );
} }
} }

@ -22,9 +22,15 @@
#mainColor{ #mainColor{
background-color: {{ team.mainColor.getValue() }}; background-color: {{ team.mainColor.getValue() }};
{% if team.mainColor.getValue() == "#ffffff" %}
border-color: #666666;
{% endif %}
} }
#secondColor{ #secondColor{
background-color: {{ team.secondColor.getValue() }}; background-color: {{ team.secondColor.getValue() }};
{% if team.secondColor.getValue() == "#ffffff" %}
border-color: #666666;
{% endif %}
} }
.container{ .container{
@ -39,9 +45,6 @@
} }
.colors{
justify-content: space-between;
}
.color{ .color{
flex-direction: row; flex-direction: row;
justify-content: space-between; justify-content: space-between;
@ -65,12 +68,10 @@
<h1>{{ team.name }}</h1> <h1>{{ team.name }}</h1>
<img src="{{ team.picture }}" alt="Logo d'équipe" class="logo"> <img src="{{ team.picture }}" alt="Logo d'équipe" class="logo">
</div> </div>
<div class="colors"> <div>
<div class="color"><p>Couleur principale : </p><div class="square" id="mainColor"></div> </div> <div class="color"><p>Couleur principale : </p><div class="square" id="mainColor"></div> </div>
<div class="color"><p>Couleur secondaire : </p><div class="square" id="secondColor"></div></div> <div class="color"><p>Couleur secondaire : </p><div class="square" id="secondColor"></div></div>
</div> </div>
{% for m in team.members %} {% for m in team.members %}
<p> m.id </p> <p> m.id </p>
{% endfor %} {% endfor %}

Loading…
Cancel
Save