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(
idTeam integer FOREIGN KEY REFERENCES Team(id),
idMember integer FOREIGN KEY REFERENCES Member(id),
role char CHECK (role IN ('C','P'))
idTeam integer,
idMember integer,
role char(1) CHECK (role IN ('C','P')),
FOREIGN KEY (idTeam) REFERENCES Team(id),
FOREIGN KEY (idMember) REFERENCES Member(id)
);
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 {
$request['mainColor'] = intval($request['mainColor']);
$request['secondColor'] = intval($request['secondColor']);
var_dump($request['secondColor']);
$errors = [];
$request['mainColor'] = hexdec($request['mainColor']);
$request['secondColor'] = hexdec($request['secondColor']);
$request = HttpRequest::from($request, $errors, [
"name" => [Validators::lenBetween(1, 32), Validators::nameWithSpaces()],
"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]);
}
$id = $this->model->createTeam($request['name'], $request['picture'], $request['mainColor'], $request['secondColor']);
return $this->displayTeam($id);
return $this->displayTeam($this->model->createTeam($request['name'], $request['picture'], $request['mainColor'], $request['secondColor']));
}
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]);
}
public function displayTeam(int $id): HttpResponse{
public function displayTeam(int $id): HttpResponse {
$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
*/
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 MAX = self::ROLE_COACH;
@ -25,6 +26,14 @@ final class MemberRole {
$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 {
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 {
return $this->con->fetch(
"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{
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",

@ -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{
$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 {
@ -43,9 +44,9 @@ class TeamModel /* throw des exceptions(ex validation des champs, filtre etc) po
$resultMembers = $this->gateway->getMembersById($id);
foreach ($resultMembers as $row) {
if ($row['role'] == 'C') {
$role = 1;
$role = MemberRole::coach();
} else {
$role = 2;
$role = MemberRole::player();
}
$members[] = new Member($row['id'], $role);
}

Loading…
Cancel
Save