WIP fixed some bugs, still got two regarding /team/id and /team/list
continuous-integration/drone/push Build is passing Details

pull/16/head
Maël DAIM 1 year ago
parent 9bc03c099b
commit 46862bb7cd

@ -20,9 +20,11 @@ CREATE TABLE Member(
); );
CREATE TABLE Participate( CREATE TABLE Participate(
idTeam integer FOREIGN KEY REFERENCES Team(id), idTeam integer,
idMember integer FOREIGN KEY REFERENCES Member(id), idMember integer,
role char CHECK (role IN ('C','P')) role char(1) CHECK (role IN ('C','P')),
FOREIGN KEY (idTeam) REFERENCES Team(id),
FOREIGN KEY (idMember) REFERENCES Member(id)
); );
CREATE TABLE TacticInfo( CREATE TABLE TacticInfo(

@ -29,10 +29,11 @@ class TeamController /* verif si les camp sont assignés, sinon erreur 400*/
} }
public function submitTeam(array $request): HttpResponse { public function submitTeam(array $request): HttpResponse {
$request['mainColor'] = intval($request['mainColor']);
$request['secondColor'] = intval($request['secondColor']);
var_dump($request['secondColor']);
$errors = []; $errors = [];
$request['mainColor'] = hexdec($request['mainColor']);
$request['secondColor'] = hexdec($request['secondColor']);
$request = HttpRequest::from($request, $errors, [ $request = HttpRequest::from($request, $errors, [
"name" => [Validators::lenBetween(1, 32), Validators::nameWithSpaces()], "name" => [Validators::lenBetween(1, 32), Validators::nameWithSpaces()],
"mainColor" => [Validators::isInteger(), Validators::isIntInRange(0, 0xffffff)], "mainColor" => [Validators::isInteger(), Validators::isIntInRange(0, 0xffffff)],
@ -48,8 +49,7 @@ class TeamController /* verif si les camp sont assignés, sinon erreur 400*/
} }
return ViewHttpResponse::twig('insert_team.html.twig', ['bad_fields' => $badFields]); return ViewHttpResponse::twig('insert_team.html.twig', ['bad_fields' => $badFields]);
} }
$id = $this->model->createTeam($request['name'], $request['picture'], $request['mainColor'], $request['secondColor']); return $this->displayTeam($this->model->createTeam($request['name'], $request['picture'], $request['mainColor'], $request['secondColor']));
return $this->displayTeam($id);
} }
public function displayListTeamByName(): HttpResponse { public function displayListTeamByName(): HttpResponse {
@ -76,9 +76,9 @@ class TeamController /* verif si les camp sont assignés, sinon erreur 400*/
return ViewHttpResponse::twig('display_teams.html.twig', ['teams' => $results]); return ViewHttpResponse::twig('display_teams.html.twig', ['teams' => $results]);
} }
public function displayTeam(int $id): HttpResponse{ public function displayTeam(int $id): HttpResponse {
$result = $this->model->displayTeam($id); $result = $this->model->displayTeam($id);
return ViewHttpResponse::twig('display_team.html.twig',['team' => $result]); return ViewHttpResponse::twig('display_team.html.twig', ['team' => $result]);
} }
} }

@ -11,8 +11,9 @@ 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_COACH = 1; public const ROLE_PLAYER = 0;
public const ROLE_COACH = 1;
private const MIN = self::ROLE_PLAYER; private const MIN = self::ROLE_PLAYER;
private const MAX = self::ROLE_COACH; private const MAX = self::ROLE_COACH;
@ -25,6 +26,14 @@ final class MemberRole {
$this->value = $val; $this->value = $val;
} }
public static function player(){
return new MemberRole(MemberRole::ROLE_PLAYER);
}
public static function coach(){
return new MemberRole(MemberRole::ROLE_COACH);
}
private function isValid(int $val): bool { private function isValid(int $val): bool {
return ($val <= self::MAX and $val >= self::MIN); return ($val <= self::MAX and $val >= self::MIN);
} }

@ -24,13 +24,6 @@ class TeamGateway {
); );
} }
public function getIdOfLastInsertion(): array{
return $this->con->fetch(
"SELECT last_insert_rowid() as id",
[]
);
}
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 || '%'",
@ -49,6 +42,15 @@ class TeamGateway {
); );
} }
public function getIdTeamByName(string $name): array{
return $this->con->fetch(
"SELECT id FROM Team WHERE name = :name",
[
":name" => [$name, PDO::PARAM_STR]
]
);
}
public function getMembersById($id):array{ public function getMembersById($id):array{
return $this->con->fetch( return $this->con->fetch(
"SELECT p.role,m.email,m.id FROM Member m,Team t,Participate p WHERE t.id = :id AND p.idTeam = t.id AND p.idMember = m.id", "SELECT p.role,m.email,m.id FROM Member m,Team t,Participate p WHERE t.id = :id AND p.idTeam = t.id AND p.idMember = m.id",

@ -24,7 +24,8 @@ class TeamModel /* throw des exceptions(ex validation des champs, filtre etc) po
public function createTeam(string $name, string $picture, int $mainColor, int $secondColor): int{ public function createTeam(string $name, string $picture, int $mainColor, int $secondColor): int{
$this->gateway->insert($name, $picture, $mainColor, $secondColor); $this->gateway->insert($name, $picture, $mainColor, $secondColor);
return (int) $this->gateway->getIdOfLastInsertion()['id']; $result = $this->gateway->getIdTeamByName($name);
return intval($result[0]['id']);
} }
public function listByName(string $name): array { public function listByName(string $name): array {
@ -43,9 +44,9 @@ class TeamModel /* throw des exceptions(ex validation des champs, filtre etc) po
$resultMembers = $this->gateway->getMembersById($id); $resultMembers = $this->gateway->getMembersById($id);
foreach ($resultMembers as $row) { foreach ($resultMembers as $row) {
if ($row['role'] == 'C') { if ($row['role'] == 'C') {
$role = 1; $role = MemberRole::coach();
} else { } else {
$role = 2; $role = MemberRole::player();
} }
$members[] = new Member($row['id'], $role); $members[] = new Member($row['id'], $role);
} }

Loading…
Cancel
Save