UID de l'entrepot * @name Nom du groupe * * @return id_cluster Renvoie l'UID du groupe cree * Renvoie FALSE si une erreur occure * */ public static function create($id_warehouse, $name){ /* [1] Verification de l'unicite de name =========================================================*/ $inserted = Table::get('machine_cluster') ->insert([ 'id_machine_cluster' => Rows::INSERT_DEFAULT, 'id_warehouse' => $id_warehouse, 'name' => $name ]); // Si erreur (car name doit être unique) if( !$inserted ) return false; /* [2] On retourne l'id_group ou FALSE si erreur =========================================================*/ $check_group = self::getByName($id_warehouse, $name); // Si n'existe pas on retourne FALSE if( $check_group === false ) return false; // Sinon, on retourne son id return $check_group['id_machine_cluster']; } /* ASSOCIATION D'UNE MACHINE A UN GROUPE * * @id_warehouse UID de l'entrepot * @id_machine_cluster UID du groupe * @id_machine UID de la machine * * @return error Renvoie le code 'Error' * */ public static function link($id_warehouse, $id_machine_cluster, $id_machine){ /* [1] On vérifie que tout existe =========================================================*/ /* (1) On récupère le groupe */ $clusterR = Table::get('machine_cluster') ->whereIdWarehouse($id_warehouse) ->whereId($id_machine_cluster) ->unique() ->select('id_machine_cluster'); $cluster = $clusterR->fetch(); // Si le groupe n'existe pas if( $cluster === false ) return Err::NoMatchFound; /* (2) On récupère l'utilisateur */ $machineR = Table::get('machine') ->whereIdWarehouse($id_warehouse) ->whereId($id_machine) ->unique() ->select('id_machine'); $machine = $machineR->fetch(); // Si l'utilisateur n'existe pas if( $machine === false ) return Err::NoMatchFound; /* (3) On vérifie qu'il n'y a pas déja d'appartenance */ $cluster_mergeR = Table::get('machine_cluster_merge') ->select('id_machine_cluster_merge') ->join('id_machine_cluster', $clusterR) ->join('id_machine', $machineR) ->unique(); $cluster_merge_exists = $cluster_mergeR->fetch(); // Si la relation existe déja, on ne fait rien if( $cluster_merge_exists !== false ) return Err::Success; /* [2] On crée la relation =========================================================*/ /* (1) On insère la relation */ $inserted = Table::get('machine_cluster_merge') ->insert([ 'id_machine_cluster_merge' => Rows::INSERT_DEFAULT, 'id_machine_cluster' => $id_machine_cluster, 'id_machine' => $id_machine ]); /* (2) Si erreur, on la retourne */ if( !$inserted ) return Err::RepoError; /* (3) On vérifie quand même que l'entrée existe */ $cluster_merge_inserted = $cluster_mergeR->fetch(); /* (4) Sinon, on renvoie que tout s'est bien passé */ return is_array($cluster_merge_inserted) ? Err::Success : Err::RepoError; } /* SUPPRIME UNE ASSOCIATION D'UNE MACHINE A UN GROUPE * * @id_warehouse UID de l'entrepot * @id_machine_cluster UID du groupe * @id_machine UID de la machine * * @return error Renvoie le code 'Error' * */ public static function unlink($id_warehouse, $id_machine_cluster, $id_machine){ /* [1] On récupère l'UID du lien =========================================================*/ /* (1) On récupère le lien */ $get_merge_id = self::getMerge($id_warehouse, $id_machine_cluster, $id_machine); /* (2) Si on ne trouve rien */ if( $get_merge_id === false ) return Err::NoMatchFound; /* [2] On supprime le lien =========================================================*/ $deleted = Table::get('machine_cluster_merge') ->whereId($get_merge_id['id_machine_cluster_merge']) ->delete(); // Si erreur if( !$deleted ) return Err::RepoError; /* [2] On verifie que l'association n'existe plus =========================================================*/ if( self::getMerge($id_warehouse, $id_machine_cluster, $id_machine) !== false ) return Err::RepoError; return Err::Success; } /* RENVOIE L'ID D'UNE ASSOCIATION D'UNE MACHINE A UN GROUPE * * @id_warehouse UID de l'entrepot * @id_machine_cluster UID du groupe * @id_machine UID de la machine * * @return association Renvoie l'UID de l'association cree * Renvoie FALSE si une erreur occure * */ public static function getMerge($id_warehouse, $id_machine_cluster, $id_machine){ /* [1] On rédige/exécute la requête =========================================================*/ $cluster_merge = Table::get('machine_cluster_merge') ->whereIdWarehouse($id_warehouse) ->whereIdMachineCluster($id_machine_cluster) ->whereIdMachine($id_machine) ->select('*') ->unique() ->fetch(); /* [2] On retourne le résultat (FALSE si rien trouvé) =========================================================*/ return $cluster_merge; } /* RENVOIE LA LISTE DES GROUPES D'UN ENTREPOT * * @id_warehouse UID de l'entrepot * * @return machine_clusters Renvoie la liste des groupes * Renvoie FALSE si une erreur occure * */ public static function getAll($id_warehouse){ /* [1] On rédige/exécute la requête =========================================================*/ $machine_clusters = Table::get('machine_cluster') ->whereIdWarehouse($id_warehouse) ->select('*'); //TODO: ORDER BY c.name ASC /* [2] On retourne le résultat =========================================================*/ return $machine_clusters->fetch(); } /* RENVOIE UN GROUPE SPECIFIQUE * * @id_warehouse UID de l'entrepot * @id UID du groupe * * @return machine_cluster Renvoie le groupe correspondant * Renvoie FALSE si une erreur occure * */ public static function getById($id_warehouse, $id){ /* [1] On rédige/exécute la requête =========================================================*/ $machine_cluster = Table::get('machine_cluster') ->whereIdWarehouse($id_warehouse) ->whereId($id) ->select('*') ->unique(); /* [2] On retourne le résultat =========================================================*/ return $machine_cluster->fetch(); } /* RENVOIE UN GROUPE SPECIFIQUE * * @id_warehouse UID de l'entrepot * @name Nom du groupe * * @return machine_cluster Renvoie le groupe correspondant * Renvoie FALSE si une erreur occure * */ public static function getByName($id_warehouse, $name){ /* [1] On rédige/exécute la requête =========================================================*/ $machine_cluster = Table::get('machine_cluster') ->whereIdWarehouse($id_warehouse) ->whereName($name) ->select('*') ->unique(); /* [2] On retourne le résultat =========================================================*/ return $machine_cluster->fetch(); } /* RENVOIE LES MACHINES D'UN GROUPE DONNE * * @id_warehouse UID de l'entrepot * @id_machine_cluster UID du groupe en question * * @return members Retourne la liste des machines du groupe * */ public static function getMembers($id_warehouse, $id_machine_cluster){ /* [1] On recupere la liste des associations =========================================================*/ $machine_cluster = Table::get('machine_cluster') ->whereIdWarehouse($id_warehouse) ->whereId($id_machine_cluster); $machine = Table::get('machine')->select('*'); $machine_cluster_merge = Table::get('machine_cluster_merge') ->join('id_machine_cluster', $machine_cluster) ->join('id_machine', $machine); /* [2] On verifie que le groupe n'existe plus =========================================================*/ return $machine_cluster_merge->fetch(); } /* RENVOIE UNE LISTE DE GROUPES EN FONCTION D'UN MOT CLE * * @id_warehouse UID de l'entrepot * @keyword Element de recherche * * @return machine_clusters Retourne les groupes trouves * */ public static function search($id_warehouse, $keyword){ /* [1] On rédige/exécute la requête =========================================================*/ $search = Table::get('machine_cluster') ->whereIdWarehouse($id_warehouse) ->whereName(["%$keyword%", Rows::COND_LIKE]) ->select('*'); /* [2] On retourne le résultat =========================================================*/ return $search->fetch(); } /* MODIFIE LE NOM D'UN GROUPE DONNE * * @id_machine_cluster UID du gorupe * @name Nouveau nom du groupe * * @return status TRUE si tout s'est bien passé, sinon FALSE * */ public static function edit($id_warehouse, $id_machine_cluster, $name){ /* [1] On redige/execute la requete =========================================================*/ $edited = Table::get('machine_cluster') ->whereIdWarehouse($id_warehouse) ->whereId($id_machine_cluster) ->edit([ 'name' => $name ]); /* [2] On retourne le résultat =========================================================*/ return $edited; } /* SUPPRIME UN GROUPE DONNE * * @id_warehouse UID de l'entrepot * @id_machine_cluster UID du groupe en question * * @return status Retourne si oui ou non le groupe a bien ete supprime * */ public static function delete($id_warehouse, $id_machine_cluster){ /* [1] On redige/execute la requete =========================================================*/ $deleted = Table::get('machine_cluster') ->whereIdWarehouse($id_warehouse) ->whereId($id_machine_cluster) ->delete(); /* [2] On retourne le résultat =========================================================*/ return $deleted; } } ?>