diff --git a/config/repositories.json b/config/repositories.json index 9244ea0..45fbd5f 100755 --- a/config/repositories.json +++ b/config/repositories.json @@ -54,6 +54,7 @@ "getAll", "getById", + "getByName", "getByToken", "updateToken" diff --git a/manager/repo/warehouse.php b/manager/repo/warehouse.php index e69de29..988c095 100644 --- a/manager/repo/warehouse.php +++ b/manager/repo/warehouse.php @@ -0,0 +1,175 @@ + Identifiant de l'entrepot + * @password Mot de passe de l'entrepot + * + * @return id_warehouse Renvoie l'UID de l'entrepot cree + * Renvoie FALSE si une erreur occure + * + */ + public static function create($name, $password){ + /* [1] Verification de l'unicite du nom (name) + =========================================================*/ + $check_unique = count(self::getByName($name)) == 0; + + // Si un entrepot a deja ce nom, on renvoie une erreur + if( !$check_unique ) + return false; + + /* [2] Creation de l'utilisateur + =========================================================*/ + $insert_warehouse = Database::getPDO()->prepare("INSERT INTO warehouse(id_warehouse, name, password, token) + VALUES(DEFAULT, :name, :password, :token)"); + $insert_warehouse->execute(array( + ':name' => $name, + ':password' => sessionManager::secure_sha1( $password ), + ':token' => sessionManager::secure_sha1( uniqid() ) + )); + + /* [3] On retourne l'id_warehouse ou FALSE si erreur + =========================================================*/ + $check_warehouse = self::getByName($name); + + // Si n'existe pas on retourne FALSE + if( !isset($check_warehouse[0]) || !is_array($check_warehouse[0]) ) + return false; + + // Sinon, on retourne son id + return intval( $check_warehouse[0]['id_warehouse'] ); + + } + + + + + + + + + /* MODIFICATION D'UN ENTREPOT + * + * @id_warehouse UID de l'entrepot + * @name Identifiant de l'entrepot + * @password Mot de passe de l'entrepot + * + * @return status Renvoie si oui ou non tout s'est bien passe + * + */ + public static function edit($id_warehouse=null, $name=null, $password=null){ + /* [1] Verification de l'unicite du nom (name) (si different) + =========================================================*/ + // On recupere les entrepots ayant le meme nom (si existent) + // pour éviter les collisions (car le nom doit être unique) + $getbyname = self::getByName($code); + + $check_unique = is_array($getbyname) && $getbyname['id_user'] == $id_user || !is_array($getbyname); + + // Si un utilisateur a deja ce code ou cet username (sauf lui), on renvoie une erreur + if( !$check_unique ) + return false; + + /* [2] Modification de l'utilisateur + =========================================================*/ + $edit_user = Database::getPDO()->prepare("UPDATE user + SET code = :code, + username = :username, + firstname = :firstname, + lastname = :lastname, + mail = :mail, + password = :password, + status = :status + WHERE id_user = :id_user"); + $edit_user->execute(array( + ':code' => $code, + ':username' => $username, + ':firstname' => $firstname, + ':lastname' => $lastname, + ':mail' => $mail, + ':password' => $password, + ':status' => $status, + ':id_user' => $id_user + )); + + + + /* [3] On retourne si tout a ete modifie, si erreur + =========================================================*/ + $check_user = self::getById($id_user); + + $checker = $check_user['id_user'] == $id_user; + $checker = $checker && $check_user['code'] == $code; + $checker = $checker && $check_user['username'] == $username; + $checker = $checker && $check_user['firstname'] == $firstname; + $checker = $checker && $check_user['lastname'] == $lastname; + $checker = $checker && $check_user['mail'] == $mail; + $checker = $checker && $check_user['password'] == $password; + $checker = $checker && $check_user['status'] == $status; + + // On retourne l'etat de la modification + return $checker; + } + + + + + + + + + /* SUPPRIME UN UTILISATEUR DONNE + * + * @id_user UID de l'utilisateur en question + * + * @return status Retourne si oui ou non l'utilisateur a bien ete supprime + * + */ + public static function delete($id_user){ + /* [1] On redige/execute la requete + =========================================================*/ + $delete_user = Database::getPDO()->prepare("DELETE FROM user WHERE id_user = :id_user"); + $delete_user->execute(array( + ':id_user' => $id_user + )); + + + /* [2] On verifie que l'utilisateur n'existe plus + =========================================================*/ + return ( self::getById($id_user) === false ); + } + + + + + + + + + + + + + + + + + + + + + + + } + + +?>