con = $con; } /** * insert member to a team * @param int $idTeam * @param int $userId * @param string $role * @return void */ public function insert(int $idTeam, int $userId, string $role): void { $this->con->exec( "INSERT INTO Member(id_team, id_user, role) VALUES (:id_team, :id_user, :role)", [ ":id_team" => [$idTeam, PDO::PARAM_INT], ":id_user" => [$userId, PDO::PARAM_INT], ":role" => [$role, PDO::PARAM_STR], ] ); } /** * @param int $teamId * @return Member[] */ public function getMembersOfTeam(int $teamId): array { $rows = $this->con->fetch( "SELECT a.id,a.email,a.username,a.profilePicture,m.role FROM Account a,Team t,Member m WHERE t.id = :id AND m.id_team = t.id AND m.id_user = a.id", [ ":id" => [$teamId, PDO::PARAM_INT], ] ); return array_map(fn($row) => new Member(new User($row['email'],$row['username'],$row['id'],$row['profilePicture']), $teamId, $row['role']),$rows); } /** * remove member from given team * @param int $idTeam * @param int $idMember * @return void */ public function remove(int $idTeam, int $idMember): void { $this->con->exec( "DELETE FROM Member WHERE id_team = :id_team AND id_user = :id_user", [ ":id_team" => [$idTeam, PDO::PARAM_INT], ":id_user" => [$idMember, PDO::PARAM_INT], ] ); } /** * @param string $email * @param int $idTeam * @return bool */ public function isCoach(string $email, int $idTeam): bool { $result = $this->con->fetch( "SELECT role FROM Member WHERE id_team=:team AND id_user = (SELECT id FROM Account WHERE email=:email)", [ "team" => [$idTeam, PDO::PARAM_INT], "email" => [$email, PDO::PARAM_STR] ] )[0]['role']; return $result == 'COACH'; } /** * @param int $idTeam * @param int $idCurrentUser * @return bool */ public function isMemberOfTeam(int $idTeam,int $idCurrentUser): bool { $result = $this->con->fetch( "SELECT id_user FROM Member WHERE id_team = :team AND id_user = :user", [ "team" => [$idTeam, PDO::PARAM_INT], "user" => [$idCurrentUser, PDO::PARAM_INT] ] )[0]['id_user'] ?? null; return $result == null; } }