From 4aab2a4c5264e90f5461289c870e1b879864c191 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Sun, 14 Feb 2016 14:16:47 +0100 Subject: [PATCH] - [x] Gestion des groupes (utilisateurs/machines) - [x] bdd - [x] Creation d'un groupe individuel pour utilisateurs + association - [x] Creation d'un groupe individuel pour machines - [x] Creation d'une liaison entre 2 groupes (groupeUtilisateur, groupeMachine) --- automate.php | 23 +++--- config/repositories.json | 2 + manager/module/machineDefault.php | 80 ++++++++++++++++++++- manager/repo/machine.php | 114 ++++++++++++++++++++++++------ todo.md | 12 ++-- view/machines.php | 9 ++- 6 files changed, 196 insertions(+), 44 deletions(-) diff --git a/automate.php b/automate.php index 4042503..d015de4 100755 --- a/automate.php +++ b/automate.php @@ -42,7 +42,7 @@ return true; - }insertUsersFromJSON(); + }//insertUsersFromJSON(); @@ -60,24 +60,19 @@ // Pour chaque entree foreach( $json as $machine ){ - $insertRequest = Database::getPDO()->prepare("INSERT INTO machine(id_machine, code, name) - VALUES( - DEFAULT, - :code, - :name - )"); - - $status = $insertRequest->execute(array( - ':code' => $machine['code'], - ':name' => $machine['name'] + // Creation de la requete + $request = new ModuleRequest('machineDefault/create', array( + $machine['code'], + $machine['name'] )); - - var_dump( $status ); + $answer = $request->dispatch(); + // Debug error + var_dump( $answer->error == ManagerError::Success ); } return true; - }//insertMachinesFromJSON(); + }insertMachinesFromJSON(); diff --git a/config/repositories.json b/config/repositories.json index 69f8e67..493c82e 100755 --- a/config/repositories.json +++ b/config/repositories.json @@ -17,6 +17,8 @@ "getAll", "getById", + "getByCode", + "getByName", "getClusters" ], diff --git a/manager/module/machineDefault.php b/manager/module/machineDefault.php index ded3c61..6100284 100755 --- a/manager/module/machineDefault.php +++ b/manager/module/machineDefault.php @@ -1,13 +1,91 @@ Liste des machines + * + */ public static function getAll(){ + // On recupere les donnees + $machines = new Repo('machine/getAll'); + return array( - 'machines' => \manager\Database::delNumeric( \manager\Database::getPDO()->query("SELECT * FROM machine ORDER BY id_machine")->fetchAll() ) + 'machines' => $machines->answer() + ); + } + + + /* CREATION D'UNE NOUVELLE MACHINE DANS LA BDD + * + * @code Code RFID de la machine + * @name Identifiant de la machine + * + * @return status Retourne si oui ou non, tout s'est bien passe + * + */ + public static function create($code=null, $name=null){ + /* [1] Normalisation + verification des donnees + =========================================================*/ + $correct_param = Database::check('machine.code', $code); + $correct_param = $correct_param && Database::check('machine.name', $name); + + // Si les parametres ne sont pas corrects, on retourne une erreur + if( !$correct_param ) + return array('ModuleError' => ManagerError::ParamError); + + + + + /* [2] Creation de la machine + =========================================================*/ + $create_machine = new Repo('machine/create', array($code, $name) ); + $id_machine = $create_machine->answer(); + + // Si une erreur est retournee, on retourne une erreur + if( $id_machine === false ) + return array('ModuleError' => ManagerError::ModuleError); + + + + + /* [3] Creation du groupe de meme nom que la machine + =========================================================*/ + $create_group = new Repo('cluster/create', array($name) ); + $id_group = $create_group->answer(); + + // Si une erreur est retournee, on retourne une erreur + if( $id_group === false ) + return array('ModuleError' => ManagerError::ModuleError); + + + + + /* [4] Association au groupe + =========================================================*/ + $assoc_goup = new Repo('cluster/link', array($id_group, $id_machine)); + $id_assoc = $assoc_goup->answer(); + + // Si une erreur est retournee, on retourne une erreur + if( $id_assoc === false ) + return array('ModuleError' => ManagerError::ModuleError); + + + + /* [5] Gestion du retour + =========================================================*/ + return array( + 'ModuleError' => ManagerError::Success, + 'id_machine' => $id_machine, + 'id_cluster' => $id_group ); } diff --git a/manager/repo/machine.php b/manager/repo/machine.php index 8e8fcd9..e48dcd5 100644 --- a/manager/repo/machine.php +++ b/manager/repo/machine.php @@ -8,40 +8,43 @@ /* CREATION D'UNE MACHINE * - * @name Nom du groupe + * @code Code de la machine + * @name Nom de la machine * - * @return id_user Renvoie l'UID du groupe cree + * @return id_machine Renvoie l'UID de la machine cree * Renvoie FALSE si une erreur occure * */ - public static function create($name){ - /* [1] Verification de l'unicite de name + public static function create($code, $name){ + /* [1] Verification de l'unicite de code+name =========================================================*/ - $check_unique = ( self::getByName($name) === false ); + $check_unique = ( self::getByCode($code) === false ); + $check_unique = $check_unique && ( self::getByName($name) === false ); - // Si un groupe a deja ce nom, on renvoie une erreur + // Si une machine a deja ce code/nom, on renvoie une erreur if( !$check_unique ) return false; - /* [2] Creation du groupe + /* [2] Creation de la machine =========================================================*/ - $insert_user = Database::getPDO()->prepare("INSERT INTO cluster(id_cluster, name) - VALUES(DEFAULT, :name)"); - $insert_user->execute(array( + $insert_machine = Database::getPDO()->prepare("INSERT INTO machine(id_machine, code, name) + VALUES(DEFAULT, :code, :name)"); + $insert_machine->execute(array( + ':code' => $code, ':name' => $name )); - /* [3] On retourne l'id_group ou FALSE si erreur + /* [3] On retourne l'id_machine ou FALSE si erreur =========================================================*/ - $check_group = self::getByName($name); + $check_machine = self::getByCode($code); // Si n'existe pas on retourne FALSE - if( $check_group === false ) + if( $check_machine === false ) return false; // Sinon, on retourne son id - return $check_group['id_cluster']; + return $check_machine['id_machine']; } @@ -110,26 +113,26 @@ - /* RENVOIE LA MACHINE DE NOM DONNE + /* RENVOIE LA MACHINE DE CODE DONNE * - * @name Nom du groupe en question + * @code Code de la machine en question * - * @return groupe Renvoie le groupe de nom donne si existe + * @return machine Renvoie la machine de code donne si existe * @return error Retourne FALSE si aucun resultat * */ - public static function getByName($name){ + public static function getByCode($code){ // On ecrit la requete - $request = Database::getPDO()->prepare("SELECT * FROM cluster - WHERE name = :name"); + $request = Database::getPDO()->prepare("SELECT * FROM machine + WHERE code = :code"); // On execute la requete $request->execute(array( - ':name' => $name + ':code' => $code )); - // On recupere 1 seul groupe + // On recupere 1 seule machine $answer = $request->fetch(); // Gestion d'erreur -> aucun resultat @@ -139,7 +142,74 @@ // On retourne en supprimant les indices numeriques return Database::delNumeric( $answer, true ); + } + + + + + + + + /* RENVOIE LA MACHINE DE NOM DONNE + * + * @name Nom de la machine en question + * + * @return machine Renvoie la machine de nom donne si existe + * @return error Retourne FALSE si aucun resultat + * + */ + public static function getByName($name){ + // On ecrit la requete + $request = Database::getPDO()->prepare("SELECT * FROM machine + WHERE name = :name"); + + + // On execute la requete + $request->execute(array( + ':name' => $name + )); + + // On recupere 1 seule machine + $answer = $request->fetch(); + + // Gestion d'erreur -> aucun resultat + if( $answer === false ) + return false; + + // On retourne en supprimant les indices numeriques + return Database::delNumeric( $answer, true ); + + } + + + + + + + + + /* RENVOIE LES GROUPES AUQUEL APPARTIENT UNE MACHINE DONNEE + * + * @id_machine UID de la machine en question + * + * @return clusters Retourne la liste des groupes auquel appartient la machine + * + */ + public static function getClusters($id_machine){ + /* [1] On redige/execute la requete + =========================================================*/ + $get_clusters = Database::getPDO()->prepare("SELECT c.* FROM cluster as c, cluster_merge as cm + WHERE cm.id_cluster = c.id_cluster + AND cm.id_entity = :id_machine + ORDER BY c.id_cluster"); + $get_clusters->execute(array( + ':id_machine' => $id_machine + )); + + /* [2] On retourne la liste des groupes + =========================================================*/ + return Database::delNumeric( $get_clusters->fetchAll() ); } diff --git a/todo.md b/todo.md index 5f1011a..80d1ed6 100755 --- a/todo.md +++ b/todo.md @@ -13,11 +13,8 @@ ############ # EN COURS # ############ -- [ ] Gestion des groupes (utilisateurs/machines) - - [x] bdd - - [x] Creation d'un groupe individuel pour utilisateurs + association - - [ ] Creation d'un groupe individuel pour machines - - [ ] Creation d'une liaison entre 2 groupes (groupeUtilisateur, groupeMachine) +- [ ] Conflit des id_user et id_machine dans les cluster a regler + - [ ] Prendre en compte au lieu de SERVER['HTTP_HOST'] l'hote et son dossier source - [ ] Gestion de l'erreur de chargement ou erreur de nav (page-manager) - [.] [/users/view] Affichage basique de liste d'elements complexes (users/machines/journal, ...) @@ -39,6 +36,11 @@ ######## # FAIT # ######## +- [x] Gestion des groupes (utilisateurs/machines) + - [x] bdd + - [x] Creation d'un groupe individuel pour utilisateurs + association + - [x] Creation d'un groupe individuel pour machines + - [x] Creation d'une liaison entre 2 groupes (groupeUtilisateur, groupeMachine) - [x] [view/users] Affichage des groupes des utilisateurs - [x] [cluster::link/unlink] Ajout/Suppression d'association des utilisateurs/machines a des groupes - [x] [user::getClusters] Recuperation des groupes d'un utilisateur diff --git a/view/machines.php b/view/machines.php index 42070d1..14d9865 100755 --- a/view/machines.php +++ b/view/machines.php @@ -3,6 +3,7 @@ use \manager\ModuleRequest; use \manager\ManagerError; use \manager\ResourceDispatcher; + use \manager\Repo; ?> @@ -68,6 +69,9 @@ // Si aucune erreur, on affiche les resultats else{ foreach( $answer->get('machines') as $machine){ + $clusters = new Repo('machine/getClusters', array($machine['id_machine'])); + $clusters = $clusters->answer(); + echo "
"; // Prenom Nom echo "".$machine['name'].""; @@ -85,8 +89,9 @@ echo ""; echo ResourceDispatcher::getResource('f/svg/group/st/container'); - echo "a"; - echo "a"; + if( $clusters != false ) + foreach($clusters as $cluster) + echo "".$cluster['name'].""; echo"";