From c0a02c91c53e1f7f74828d10e43df07d15ecdc9b Mon Sep 17 00:00:00 2001 From: "mael.daim" Date: Wed, 20 Dec 2023 15:23:10 +0100 Subject: [PATCH] implementing the add of member in a team --- front/style/team_panel.css | 42 +++++++++++++++++++++++++++ front/views/TeamPanel.tsx | 9 ++++-- public/index.php | 2 +- src/App/Controller/TeamController.php | 27 ++++++++--------- src/App/Views/add_member.html.twig | 4 +-- src/Core/Data/Color.php | 2 +- src/Core/Gateway/MemberGateway.php | 2 +- 7 files changed, 66 insertions(+), 22 deletions(-) diff --git a/front/style/team_panel.css b/front/style/team_panel.css index 409ecc9..d9104a6 100644 --- a/front/style/team_panel.css +++ b/front/style/team_panel.css @@ -80,4 +80,46 @@ section { width: 60%; align-items: center; background-color: #666666; +} + +#headMembers{ + width: 33%; + display: flex; + flex-direction: row; + justify-content: space-between; +} + +#addMember{ + height: 30px; + aspect-ratio: 1/1; + border-radius: 100%; + align-self: center; +} + +.popup { + display: none; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0,0,0,0.7); +} + +.popup-content { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background-color: #fff; + padding: 20px; + text-align: center; +} + +.close { + position: absolute; + top: 10px; + right: 10px; + font-size: 20px; + cursor: pointer; } \ No newline at end of file diff --git a/front/views/TeamPanel.tsx b/front/views/TeamPanel.tsx index e6f7166..9b28097 100644 --- a/front/views/TeamPanel.tsx +++ b/front/views/TeamPanel.tsx @@ -6,7 +6,7 @@ export default function TeamPanel({isCoach, team}: {isCoach: boolean, team: Team return (
-

IQBall

+

IQBall

@@ -49,13 +49,16 @@ function CoachOptions ({id}:{id:number}){ ) } -function MembersDisplay({members}:{members : Member[]}){ +function MembersDisplay({members,isCoach}:{members : Member[], isCoach : boolean}){ const listMember = members.map((member) => ); return (
-

Membres :

+
+

Membres :

+ +
{listMember}
) diff --git a/public/index.php b/public/index.php index 906a2ae..afe7cd6 100644 --- a/public/index.php +++ b/public/index.php @@ -105,7 +105,7 @@ function getRoutes(): AltoRouter { $ar->map("GET", "/team/[i:id]", Action::auth(fn(int $id, SessionHandle $s) => getTeamController()->displayTeam($id, $s))); $ar->map("GET", "/team/[i:id]/delete", Action::auth(fn(int $id,SessionHandle $s) => getTeamController()->deleteTeamById($id,$s))); $ar->map("GET", "/team/members/add", Action::auth(fn(SessionHandle $s) => getTeamController()->displayAddMember($s))); - $ar->map("POST", "/team/members/add", Action::auth(fn(SessionHandle $s) => getTeamController()->addMember($_POST, $s))); + $ar->map("POST", "/team/[i:id]/addMember", Action::auth(fn(int $id,SessionHandle $s) => getTeamController()->addMember($id,$_POST, $s))); $ar->map("GET", "/team/members/remove", Action::auth(fn(SessionHandle $s) => getTeamController()->displayDeleteMember($s))); $ar->map("POST", "/team/members/remove", Action::auth(fn(SessionHandle $s) => getTeamController()->deleteMember($_POST, $s))); diff --git a/src/App/Controller/TeamController.php b/src/App/Controller/TeamController.php index 8b85773..56ac482 100644 --- a/src/App/Controller/TeamController.php +++ b/src/App/Controller/TeamController.php @@ -32,13 +32,7 @@ class TeamController { } - /** - * @param SessionHandle $session - * @return ViewHttpResponse the team panel to add a member - */ - public function displayAddMember(SessionHandle $session): ViewHttpResponse { - return ViewHttpResponse::twig("add_member.html.twig", []); - } + /** @@ -74,7 +68,7 @@ class TeamController { } $teamId = $this->model->createTeam($request['name'], $request['picture'], $request['main_color'], $request['second_color']); $this->model->addMember($session->getAccount()->getUser()->getEmail(),$teamId,'COACH'); - return $this->displayTeam($teamId, $session); + return ViewHttpResponse::redirect('/team/'.$teamId); } /** @@ -138,7 +132,7 @@ class TeamController { } else{ $role = $this->model->isCoach($id,$session->getAccount()->getUser()->getEmail()); - var_dump($role); + return ViewHttpResponse::react('views/TeamPanel.tsx', [ 'team' => [ "info" => $result->getInfo(), @@ -147,13 +141,21 @@ class TeamController { } } + /** + * @param SessionHandle $session + * @return ViewHttpResponse the team panel to add a member + */ + public function displayAddMember(SessionHandle $session): ViewHttpResponse { + return ViewHttpResponse::twig("add_member.html.twig", []); + } + /** * add a member to a team * @param array $request * @param SessionHandle $session * @return HttpResponse */ - public function addMember(array $request, SessionHandle $session): HttpResponse { + public function addMember(int $idTeam,array $request, SessionHandle $session): HttpResponse { $errors = []; $request = HttpRequest::from($request, $errors, [ @@ -161,9 +163,8 @@ class TeamController { "email" => [Validators::email(), Validators::lenBetween(5, 256)], ]); - $teamId = intval($request['team']); - $this->model->addMember($request['email'], $teamId, $request['role']); - return $this->displayTeam($teamId, $session); + $this->model->addMember($request['email'], $idTeam, $request['role']); + return ViewHttpResponse::redirect('/team/'.$idTeam); } /** diff --git a/src/App/Views/add_member.html.twig b/src/App/Views/add_member.html.twig index c6bae0e..2cc9811 100644 --- a/src/App/Views/add_member.html.twig +++ b/src/App/Views/add_member.html.twig @@ -73,10 +73,8 @@

Ajouter un membre à votre équipe

-
+
- - diff --git a/src/Core/Data/Color.php b/src/Core/Data/Color.php index 8cb07a5..f6244cd 100755 --- a/src/Core/Data/Color.php +++ b/src/Core/Data/Color.php @@ -29,7 +29,7 @@ class Color implements \JsonSerializable { public static function from(string $value): Color { $color = self::tryFrom($value); if ($color == null) { - var_dump($value); + throw new InvalidArgumentException("The string is not an hexadecimal code"); } return $color; diff --git a/src/Core/Gateway/MemberGateway.php b/src/Core/Gateway/MemberGateway.php index 70e2032..f14790c 100644 --- a/src/Core/Gateway/MemberGateway.php +++ b/src/Core/Gateway/MemberGateway.php @@ -78,7 +78,7 @@ class MemberGateway { "email" => [$email, PDO::PARAM_STR] ] )[0]['role']; - var_dump($result); + return $result == 'COACH'; }