diff --git a/Project/php/gateway/AbsGateway.php b/Project/php/gateway/AbsGateway.php new file mode 100644 index 0000000..5e07146 --- /dev/null +++ b/Project/php/gateway/AbsGateway.php @@ -0,0 +1,21 @@ +con = $con; + } + + public abstract function add(array $parameters): int; + public abstract function remove(array $id): void; + public abstract function findAll(): array; + public abstract function findById(int $id); +} \ No newline at end of file diff --git a/Project/php/gateway/GroupGateway.php b/Project/php/gateway/GroupGateway.php index 9cc090d..a96f4d3 100755 --- a/Project/php/gateway/GroupGateway.php +++ b/Project/php/gateway/GroupGateway.php @@ -2,16 +2,46 @@ namespace gateway; -class GroupGateway +use PDO; +use PDOException; + +class GroupGateway extends AbsGateway { - private Connection $con; public function __construct(Connection $con){ - $this->con = $con; + parent::__construct($con); } - public function findAllGroup(){ + public function add(array $parameters): int //require 4 elements + { try{ + $query = "INSERT INTO Group_ values(:id,:num,:year,:sec)"; + $args = array(':id'=>array($parameters[0],PDO::PARAM_INT), + ':num'=>array($parameters[1],PDO::PARAM_INT), + ':year'=>array($parameters[2],PDO::PARAM_INT), + ':sec'=>array($parameters[3],PDO::PARAM_STR)); + $this->con->ExecuteQuery($query,$args); + return $this->con->lastInsertId(); + } + catch (PDOException $e){ + throw new Exception($e->getMessage()); + } + } + + public function remove(array $id): void + { + try{ + $query = "DELETE FROM Group_ g WHERE g.id=:id "; + $args = array(':id'=>array($id,PDO::PARAM_INT)); + $this->con->ExecuteQuery($query,$args); + } + catch (PDOException $e){ + throw new Exception($e->getMessage()); + } + } + public function findAll(): array + { + try{ $query = "SELECT * FROM Group_"; $this->con->ExecuteQuery($query); @@ -22,13 +52,17 @@ class GroupGateway } Return $tab_group; } - catch(PDOException $e ){ - error_log('PDOException: ' . $e->getMessage(), 3, 'error.log'); + throw new Exception($e->getMessage()); } + } + public function findById(int $id) + { + // TODO: Implement findById() method. } - public function findByNum(String $num){ + + public function findByNum(String $num): array{ try{ $query = "SELECT * FROM Group_ g WHERE g.num = :num"; @@ -44,38 +78,8 @@ class GroupGateway } catch(PDOException $e ){ - error_log('PDOException: ' . $e->getMessage(), 3, 'error.log'); - } - - } - - public function addGroup(int $id, int $num, int $year,string $sector):void{ - try{ - $query = "INSERT INTO Group_ values(:id,:num,:year,:sec)"; - $args = array(':id'=>array($id,PDO::PARAM_INT), - ':num'=>array($num,PDO::PARAM_INT), - ':year'=>array($year,PDO::PARAM_INT), - ':sec'=>array($sector,PDO::PARAM_STR)); - $this->con->ExecuteQuery($query,$args); - } - catch (\PDOException $e){ - error_log('PDOException: ' . $e->getMessage(), 3, 'error.log'); - - } - - } - - public function delGroupById(int $id):void{ - try{ - $query = "DELETE FROM Group_ g WHERE g.id=:id "; - $args = array(':id'=>array($id,PDO::PARAM_INT)); - $this->con->ExecuteQuery($query,$args); + throw new Exception($e->getMessage()); } - catch (\PDOException $e){ - error_log('PDOException: ' . $e->getMessage(), 3, 'error.log'); - - } - } public function ModifGroupbById(int $id, int $num, int $year ,String $sector):void{ @@ -87,23 +91,8 @@ class GroupGateway ':sector'=>array($sector,PDO::PARAM_STR)); $this->con->ExecuteQuery($query,$args); } - catch (\PDOException $e){ - error_log('PDOException: ' . $e->getMessage(), 3, 'error.log'); - + catch (PDOException $e){ + throw new Exception($e->getMessage()); } - } - -} -/* -$con = new Connection('mysql:host=localhost;dbname=project','root',''); -$g = new GroupGateway($con); -var_dump($g->findAllGroup()); -var_dump($g->findByNum(1)); -var_dump($g->addGroup(2,2,2,"b")); -var_dump($g->addGroup(1,1,1,"a")); -var_dump($g->findAllGroup()); -var_dump($g->delGroupById(1)); -var_dump($g->findAllGroup()); -var_dump($g->ModifGroupbById(2,3,3,"c")); -*/ \ No newline at end of file +} \ No newline at end of file diff --git a/Project/php/gateway/UserGateway.php b/Project/php/gateway/UserGateway.php index 05782ca..e9bfd7d 100755 --- a/Project/php/gateway/UserGateway.php +++ b/Project/php/gateway/UserGateway.php @@ -2,38 +2,66 @@ namespace gateway; use config\Connection; +use model\User; use PDO; use PDOException; -use model\User; -class UserGateway +class UserGateway extends AbsGateway { - private Connection $con; - - /** - * @param Connection $con - */ public function __construct(Connection $con) { - $this->con = $con; + parent::__construct($con); } - private function getRoles(int $id): array { + public function add(array $parameters): int //require 9 elements + { try { - $query = "SELECT r.name FROM Be b, Role_ r WHERE b.userID=:id AND b.roleID=r.id"; + $query = "INSERT INTO User_ VALUES (NULL, :password, :email, :name, :surname, :nickname, :image, :extraTime, :group)"; + $args = array(':password' => array($parameters[0], PDO::PARAM_STR), + ':email' => array($parameters[1], PDO::PARAM_STR), + ':name' => array($parameters[2], PDO::PARAM_STR), + ':surname' => array($parameters[3], PDO::PARAM_STR), + ':nickname' => array($parameters[4], PDO::PARAM_STR), + ':image' => array($parameters[5], PDO::PARAM_STR), + ':extraTime' => array($parameters[6], PDO::PARAM_BOOL), + ':group' => array($parameters[7], PDO::PARAM_INT)); + $this->con->executeQuery($query, $args); + $userID = $this->con->lastInsertId(); + + foreach ($parameters[8] as $role) { + $query = "INSERT INTO Be VALUES (:userID, :roleID)"; + $args = array(':userID' => array($userID, PDO::PARAM_INT), + ':roleID' => array($role, PDO::PARAM_INT)); + $this->con->executeQuery($query, $args); + } + + return $userID; + } + catch (PDOException $e){ + throw new Exception($e->getMessage()); + } + } + + public function remove(array $id): void + { + try { + $query="DELETE FROM Vocabulary WHERE creator=:id"; $args = array(':id' => array($id, PDO::PARAM_INT)); $this->con->executeQuery($query, $args); - $results = $this->con->getResults(); - $tab = array(); - foreach ($results as $row) $tab[] = $row['name']; - return $tab; + + $query="DELETE FROM Be WHERE userID=:id"; + $this->con->executeQuery($query, $args); + + $query="DELETE FROM User_ WHERE id=:id"; + $this->con->executeQuery($query, $args); } - catch (PDOException $e) { + catch(PDOException $e ){ throw new Exception($e->getMessage()); } } - public function findAllUsers() : array{ + public function findAll(): array + { try { $this->con->executeQuery("SELECT * FROM User_"); $results = $this->con->getResults(); @@ -47,7 +75,8 @@ class UserGateway } } - public function findUserById(int $id) : User{ + public function findById(int $id) + { try { $query = "SELECT * FROM User_ WHERE id=:id"; $args = array(':id' => array($id, PDO::PARAM_INT)); @@ -60,39 +89,25 @@ class UserGateway } } - public function findUserByEmail(string $email) : User{ - try { - $query = "SELECT * FROM User_ WHERE email=:email"; - $args = array(':email' => array($email, PDO::PARAM_STR)); - $this->con->executeQuery($query, $args); - $results = $this->con->getResults(); - return new User($results[0]['id'], $results[0]['password'], $results[0]['email'], $results[0]['name'], $results[0]['surname'], $results[0]['nickname'], $results[0]['image'], $results[0]['extraTime'], $results[0]['groupID'], $this->getRoles($results[0]['id'])); - } - catch(PDOException $e ){ - throw new Exception($e->getMessage()); - } - } - - public function findUserByName(string $name) : array{ + private function getRoles(int $id): array { try { - $query = "SELECT * FROM User_ WHERE name=:name"; - $args = array(':name' => array($name, PDO::PARAM_STR)); + $query = "SELECT r.name FROM Be b, Role_ r WHERE b.userID=:id AND b.roleID=r.id"; + $args = array(':id' => array($id, PDO::PARAM_INT)); $this->con->executeQuery($query, $args); $results = $this->con->getResults(); $tab = array(); - foreach ($results as $row) - $tab[] = new User($row['id'], $row['password'], $row['email'], $row['name'], $row['surname'], $row['nickname'], $row['image'], $row['extraTime'], $row['groupID'], $this->getRoles($row['id'])); + foreach ($results as $row) $tab[] = $row['name']; return $tab; } - catch(PDOException $e ){ + catch (PDOException $e) { throw new Exception($e->getMessage()); } } - public function findUserBySurname(string $surname) : array{ + public function findUserByLoginPassword(string $login, string $password) : User{ try { - $query = "SELECT * FROM User_ WHERE surname=:surname"; - $args = array(':surname' => array($surname, PDO::PARAM_STR)); + $query = "SELECT * FROM User_ WHERE email=:email AND password=:password"; + $args = array(':email' => array($login, PDO::PARAM_STR), ':password' => array($password, PDO::PARAM_STR)); $this->con->executeQuery($query, $args); $results = $this->con->getResults(); return new User($results[0]['id'], $results[0]['password'], $results[0]['email'], $results[0]['name'], $results[0]['surname'], $results[0]['nickname'], $results[0]['image'], $results[0]['extraTime'], $results[0]['groupID'], $this->getRoles($results[0]['id'])); @@ -102,10 +117,10 @@ class UserGateway } } - public function findUserByLoginPassword(string $login, string $password) : User{ + public function findUserByEmail(string $email) : User{ try { - $query = "SELECT * FROM User_ WHERE email=:email AND password=:password"; - $args = array(':email' => array($login, PDO::PARAM_STR), ':password' => array($password, PDO::PARAM_STR)); + $query = "SELECT * FROM User_ WHERE email=:email"; + $args = array(':email' => array($email, PDO::PARAM_STR)); $this->con->executeQuery($query, $args); $results = $this->con->getResults(); return new User($results[0]['id'], $results[0]['password'], $results[0]['email'], $results[0]['name'], $results[0]['surname'], $results[0]['nickname'], $results[0]['image'], $results[0]['extraTime'], $results[0]['groupID'], $this->getRoles($results[0]['id'])); @@ -115,10 +130,10 @@ class UserGateway } } - public function findUserByNickname(string $nickname) : array{ + public function findUserByName(string $name) : array{ try { - $query = "SELECT * FROM User_ WHERE nickname=:nickname"; - $args = array(':nickname' => array($nickname, PDO::PARAM_STR)); + $query = "SELECT * FROM User_ WHERE name=:name"; + $args = array(':name' => array($name, PDO::PARAM_STR)); $this->con->executeQuery($query, $args); $results = $this->con->getResults(); $tab = array(); @@ -131,40 +146,29 @@ class UserGateway } } - public function isAdmin(int $id) : bool { + public function findUserBySurname(string $surname) : array{ try { - $query = "SELECT * FROM Be WHERE userID=:id AND roleID=1"; - $args = array(':id' => array($id, PDO::PARAM_INT)); + $query = "SELECT * FROM User_ WHERE surname=:surname"; + $args = array(':surname' => array($surname, PDO::PARAM_STR)); $this->con->executeQuery($query, $args); - return !empty($this->con->getResults()); + $results = $this->con->getResults(); + return new User($results[0]['id'], $results[0]['password'], $results[0]['email'], $results[0]['name'], $results[0]['surname'], $results[0]['nickname'], $results[0]['image'], $results[0]['extraTime'], $results[0]['groupID'], $this->getRoles($results[0]['id'])); } catch(PDOException $e ){ throw new Exception($e->getMessage()); } } - public function addUser(string $password, string $email, string $name, string $surname, string $nickname, string $image, bool $extraTime, int $group, array $roles): int { + public function findUserByNickname(string $nickname) : array{ try { - $query = "INSERT INTO User_ VALUES (NULL, :password, :email, :name, :surname, :nickname, :image, :extraTime, :group)"; - $args = array(':password' => array($password, PDO::PARAM_STR), - ':email' => array($email, PDO::PARAM_STR), - ':name' => array($name, PDO::PARAM_STR), - ':surname' => array($surname, PDO::PARAM_STR), - ':nickname' => array($nickname, PDO::PARAM_STR), - ':image' => array($image, PDO::PARAM_STR), - ':extraTime' => array($extraTime, PDO::PARAM_BOOL), - ':group' => array($group, PDO::PARAM_INT)); + $query = "SELECT * FROM User_ WHERE nickname=:nickname"; + $args = array(':nickname' => array($nickname, PDO::PARAM_STR)); $this->con->executeQuery($query, $args); - $userID = $this->con->lastInsertId(); - - foreach ($roles as $role) { - $query = "INSERT INTO Be VALUES (:userID, :roleID)"; - $args = array(':userID' => array($userID, PDO::PARAM_INT), - ':roleID' => array($role, PDO::PARAM_INT)); - $this->con->executeQuery($query, $args); - } - - return $userID; + $results = $this->con->getResults(); + $tab = array(); + foreach ($results as $row) + $tab[] = new User($row['id'], $row['password'], $row['email'], $row['name'], $row['surname'], $row['nickname'], $row['image'], $row['extraTime'], $row['groupID'], $this->getRoles($row['id'])); + return $tab; } catch(PDOException $e ){ throw new Exception($e->getMessage()); @@ -214,21 +218,4 @@ class UserGateway throw new Exception($e->getMessage()); } } - - public function removeUser(int $id) { - try { - $query="DELETE FROM Vocabulary WHERE creator=:id"; - $args = array(':id' => array($id, PDO::PARAM_INT)); - $this->con->executeQuery($query, $args); - - $query="DELETE FROM Be WHERE userID=:id"; - $this->con->executeQuery($query, $args); - - $query="DELETE FROM User_ WHERE id=:id"; - $this->con->executeQuery($query, $args); - } - catch(PDOException $e ){ - throw new Exception($e->getMessage()); - } - } } \ No newline at end of file diff --git a/Project/php/gateway/VocabularyGateway.php b/Project/php/gateway/VocabularyGateway.php index 148671b..03d0f7a 100755 --- a/Project/php/gateway/VocabularyGateway.php +++ b/Project/php/gateway/VocabularyGateway.php @@ -1,14 +1,45 @@ con = $con; + parent::__construct($con); + } + + public function add(array $parameters): int // require 4 elements + { + try{ + $query = "INSERT INTO Vocabulary values(:id,:name,:img,:aut)"; + $args = array(':id'=>array($parameters[0],PDO::PARAM_INT), + ':name'=>array($parameters[1],PDO::PARAM_STR), + ':img'=>array($parameters[2],PDO::PARAM_STR), + ':aut'=>array($parameters[3],PDO::PARAM_INT)); + $this->con->ExecuteQuery($query,$args); + return $this->con->lastInsertId(); + } + catch (PDOException $e){ + throw new Exception('problème pour ajouter une liste de vocabulaire'); + } + } + + public function remove(array $id): void + { + try{ + $query = "DELETE FROM Vocabulary v WHERE v.id=:id "; + $args = array(':id'=>array($id,PDO::PARAM_INT)); + $this->con->ExecuteQuery($query,$args); + } + catch (PDOException $e){ + throw new Exception('problème pour supprimer les vocabulaires avec leur Id'); + } } - public function findAllVoc(){ + public function findAll(): array + { try{ $query = "SELECT * FROM Vocabulary"; @@ -21,15 +52,17 @@ class VocabularyGateway } Return $tab_vocab; } - catch(PDOException $e ){ throw new Exception('problème pour affichage de tous les vocabulaires'); } - } + public function findById(int $id) + { + // TODO: Implement findById() method. + } - public function findByName(String $name){ + public function findByName(String $name): array { try{ $query = "SELECT * FROM Vocabulary v WHERE v.name = :name"; @@ -50,35 +83,6 @@ class VocabularyGateway } - public function addVocab(int $id, String $name, String $img, ?int $aut):void{ - try{ - $query = "INSERT INTO Vocabulary values(:id,:name,:img,:aut)"; - $args = array(':id'=>array($id,PDO::PARAM_INT), - ':name'=>array($name,PDO::PARAM_STR), - ':img'=>array($img,PDO::PARAM_STR), - ':aut'=>array($aut,PDO::PARAM_INT)); - $this->con->ExecuteQuery($query,$args); - } - catch (\PDOException $e){ - throw new Exception('problème pour ajouter une liste de vocabulaire'); - - } - - } - - public function delVocabById(int $id):void{ - try{ - $query = "DELETE FROM Vocabulary v WHERE v.id=:id "; - $args = array(':id'=>array($id,PDO::PARAM_INT)); - $this->con->ExecuteQuery($query,$args); - } - catch (\PDOException $e){ - throw new Exception('problème pour supprimer les vocabulaires avec leur Id'); - - } - - } - public function ModifVocabById(int $id, String $name,String $img,String $aut):void{ try{ $query = "UPDATE Vocabulary SET name=:name, image=:img, creator=:aut WHERE id=:id"; @@ -88,36 +92,8 @@ class VocabularyGateway ':aut'=>array($aut,PDO::PARAM_INT)); $this->con->ExecuteQuery($query,$args); } - catch (\PDOException $e){ + catch (PDOException $e){ throw new Exception('problème pour modifier les vocabulaires'); - } - } - - -} -/* -$con = new Connection('mysql:host=localhost;dbname=dbanrichard7','anrichard7','achanger'); -$g = new VocabularyGateway($con); -var_dump($g->findByName('gogo')); -echo "
avant
"; - -$g->addVocab(3,"gogo","img",2); -$g->addVocab(4,"gogo","img",2); -$g->addVocab(5,"troto","img",2); -echo"apres
"; -var_dump($g->findAllVoc()); -//print_r($g->findByName('gogo')); - -echo"
suppression normalement
"; - -$g->delVocabById(3); - -var_dump($g->findByName('gogo')); - -echo "
modifié normalement
"; -$g->ModifVocabById(4,"changer","new_img",4); -var_dump($g->findByName('gogo')); -var_dump($g->findByName('changer')); -*/ \ No newline at end of file +} \ No newline at end of file