UID de l'entrepot * @code Code de la machine * @name Nom de la machine * * @return id_machine Renvoie l'UID de la machine cree * Renvoie FALSE si une erreur occure * */ public static function create($id_warehouse, $code, $name){ /* [1] Verification de l'unicite de code+name =========================================================*/ $check_unique = ( self::getByCode($code) === false ); $check_unique = $check_unique && ( self::getByName($name) === false ); // Si une machine a deja ce code/nom, on renvoie une erreur if( !$check_unique ) return false; /* [2] Creation de la machine =========================================================*/ $insert_machine = Database::getPDO()->prepare("INSERT INTO machine(id_machine, id_warehouse, code, name) VALUES(DEFAULT, :id_warehouse, :code, :name)"); $insert_machine->execute([ ':id_warehouse' => $id_warehouse, ':code' => $code, ':name' => $name ]); /* [3] On retourne l'id_machine ou FALSE si erreur =========================================================*/ $check_machine = self::getByCode($code); // Si n'existe pas on retourne FALSE if( $check_machine === false ) return false; // Sinon, on retourne son id return $check_machine['id_machine']; } /* RENVOIE UNE LISTE DE MACHINE EN FONCTION D'UN MOT CLE * * @id_warehouse UID de l'entrepot * @keyword Element de recherche * * @return machines Retourne les machines trouvees * */ public static function search($id_warehouse, $keyword){ // On recupere les donnees $searchmachines = Database::getPDO()->prepare("SELECT id_machine, code, name FROM machine WHERE id_warehouse = :id_warehouse AND ( code LIKE '%".$keyword."%' OR name LIKE '%".$keyword."%' ) "); $searchmachines->execute([ ':id_warehouse' => $id_warehouse ]); return Database::delNumeric( $searchmachines->fetchAll() ); } /* RENVOIE LES GROUPES AUQUEL APPARTIENT UNE MACHINE DONNEE * * @id_warehouse UID de l'entrepot * @id_machine UID de la machine en question * * @return clusters Retourne la liste des groupes auquel appartient la machine * */ public static function getClusters($id_warehouse, $id_machine){ /* [1] On redige/execute la requete =========================================================*/ $get_clusters = Database::getPDO()->prepare("SELECT c.id_cluster, c.name FROM cluster as c, cluster_merge as cm, machine as m WHERE cm.id_cluster = c.id_cluster AND cm.id_entity = m.id_machine AND m.id_warehouse = :id_warehouse AND cm.id_entity = :id_machine AND c.class = :class ORDER BY c.id_cluster"); $get_clusters->execute([ ':id_warehouse' => $id_warehouse, ':id_machine' => $id_machine, ':class' => clusterRepo::MACHINE_CLASS ]); /* [2] On retourne la liste des groupes =========================================================*/ return Database::delNumeric( $get_clusters->fetchAll() ); } /* MODIFICATION D'UNE MACHINE DONNEE * * @id_warehouse UID de l'entrepot * @id_machine UID de la machine * @code Code RFID de la machine * @name Identifiant l'utilisateur * * @return status Renvoie si oui ou non tout s'est bien passe * */ public static function edit($id_warehouse, $id_machine=null, $code=null, $name=null){ /* [1] Verification de l'unicite de code+name (si differents) =========================================================*/ // On recupere les machine ayant le meme code ou name (si existent) $getbycode = self::getByCode($id_warehouse, $code); $getbyname = self::getByName($id_warehouse, $name); $check_unique = is_array($getbycode) && $getbycode['id_machine'] == $id_machine || !is_array($getbycode); $check_unique = $check_unique && is_array($getbyname) && $getbyname['id_machine'] == $id_machine || !is_array($getbyname); // Si un utilisateur a deja ce code ou ce name (sauf lui), on renvoie une erreur if( !$check_unique ) return false; /* [2] Modification de la machine =========================================================*/ $edit_machine = Database::getPDO()->prepare("UPDATE machine SET code = :code, name = :name WHERE id_machine = :id_machine AND id_warehouse = :id_warehouse"); $edit_machine->execute([ ':code' => $code, ':name' => $name, ':id_machine' => $id_machine, ':id_warehouse' => $id_warehouse ]); /* [3] On retourne si tout a ete modifie, si erreur =========================================================*/ $check_machine = self::getById($id_warehouse, $id_machine); $checker = $check_machine['id_machine'] == $id_machine; $checker = $checker && $check_machine['code'] == $code; $checker = $checker && $check_machine['name'] == $name; // On retourne l'etat de la modification return $checker; } /* SUPPRIME UNE MACHINE DONNE * * @id_warehouse UID de l'entrepot * @id_machine UID de la machine en question * * @return status Retourne si oui ou non la machine a bien ete supprime * */ public static function delete($id_warehouse, $id_machine){ /* [1] On redige/execute la requete =========================================================*/ $delete_machine = Database::getPDO()->prepare("DELETE FROM machine WHERE id_machine = :id_machine AND id_warehouse = :id_warehouse"); $delete_machine->execute([ ':id_machine' => $id_machine, ':id_warehouse' => $id_warehouse ]); /* [2] On verifie que la machine n'existe plus =========================================================*/ return ( self::getById($id_warehouse, $id_machine) === false ); } /* RETOURNE UNE MACHINE SPECIFIQUE * * @id_warehouse UID de l'entrepot * @id_machine UID de la machine * * @return machine Données de la machine * FALSE si aucun résultat * */ public static function getById($id_warehouse, $id_machine){ /* [1] On rédige/execute la requête =========================================================*/ $get = Database::getPDO()->prepare("SELECT m.id_machine, m.code, m.name FROM machine as m WHERE m.id_warehouse = :id_warehouse AND m.id_machine = :id_machine"); $get->execute([ ':id_warehouse' => $id_warehouse, ':id_machine' => $id_machine ]); /* [2] Gestion des données =========================================================*/ $found = $get->fetch(); // Si aucun résultat if( $found === false ) return false; return Database::delNumeric( $found, true ); } /* RETOURNE UNE MACHINE SPECIFIQUE * * @id_warehouse UID de l'entrepot * @code Code RFID de la machine * * @return machine Données de la machine * FALSE si aucun résultat * */ public static function getByCode($id_warehouse, $code){ /* [1] On rédige/execute la requête =========================================================*/ $get = Database::getPDO()->prepare("SELECT m.id_machine, m.code, m.name FROM machine as m WHERE m.id_warehouse = :id_warehouse AND m.code = :code"); $get->execute([ ':id_warehouse' => $id_warehouse, ':code' => $code ]); /* [2] Gestion des données =========================================================*/ $found = $get->fetch(); // Si aucun résultat if( $found === false ) return false; return Database::delNumeric( $found, true ); } /* RETOURNE UNE MACHINE SPECIFIQUE * * @id_warehouse UID de l'entrepot * @name Nom de la machine * * @return machine Données de la machine * FALSE si aucun résultat * */ public static function getByName($id_warehouse, $name){ /* [1] On rédige/execute la requête =========================================================*/ $get = Database::getPDO()->prepare("SELECT m.id_machine, m.code, m.name FROM machine as m WHERE m.id_warehouse = :id_warehouse AND m.name = :name"); $get->execute([ ':id_warehouse' => $id_warehouse, ':name' => $name ]); /* [2] Gestion des données =========================================================*/ $found = $get->fetch(); // Si aucun résultat if( $found === false ) return false; return Database::delNumeric( $found, true ); } /* RETOURNE UNE MACHINE SPECIFIQUE * * @id_warehouse UID de l'entrepot * @token Token de la machine * * @return machine Données de la machine * FALSE si aucun résultat * */ public static function getByToken($id_warehouse, $token){ /* [1] On rédige/execute la requête =========================================================*/ $get = Database::getPDO()->prepare("SELECT m.id_machine, m.code, m.name FROM machine as m WHERE m.id_warehouse = :id_warehouse AND m.token = :token"); $get->execute([ ':id_warehouse' => $id_warehouse, ':token' => $token ]); /* [2] Gestion des données =========================================================*/ $found = $get->fetch(); // Si aucun résultat if( $found === false ) return false; return Database::delNumeric( $found, true ); } /* RETOURNE TOUTES LES MACHINES DE L'ENTREPOT * * @id_warehouse UID de l'entrepot * * @return machines Données des la machine * */ public static function getAll($id_warehouse){ /* [1] On rédige/execute la requête =========================================================*/ $get = Database::getPDO()->prepare("SELECT m.id_machine, m.code, m.name FROM machine as m WHERE m.id_warehouse = :id_warehouse"); $get->execute([ ':id_warehouse' => $id_warehouse ]); return Database::delNumeric( $get->fetchAll() ); } /* VERIFIE MET A JOUR LE TOKEN DE SYNCHRONISATION * * @token Nouveau token de synchronisation * * @return status VRAI si le token est correct, sinon FALSE * */ public static function checkToken($id_warehouse, $token){ /* [1] On vérifie le token =========================================================*/ $hash = sessionManager::secure_hash($token); $byToken = self::getByToken($id_warehouse, $hash); // Si aucun résultat, erreur if( count($byToken) < 1 ) return false; /* [2] On met à jour le token =========================================================*/ $updateToken = Database::getPDO()->prepare("UPDATE machine SET token = :token WHERE id_machine = :id_machine"); $updateToken->execute([ ':token' => $token, ':id_machine' => $byToken[0]['id_machine'] ]); /* [3] On retourne que tout s'est bien déroulé =========================================================*/ return true; } } ?>