Gestion complète niveau et du formulaire téléphonique

This commit is contained in:
xdrm-brackets 2016-05-09 15:29:56 +02:00
parent 75d9ec964d
commit 5e6861d9ad
5 changed files with 135 additions and 93 deletions

View File

@ -27,9 +27,9 @@
"category": [
"getAll",
"getById",
"getByIntitule",
"create",
"remove"
"getOrCreate"
],
"Personnes": [

View File

@ -129,12 +129,11 @@
// Pour chaque relation avec le contact actuel (s'il y en a)
if( isset($matrice[$A]) && is_array($matrice[$A]) ){
foreach($matrice[$A] as $B){
$relation_request = new Repo('subject/link', array( $A, $B, null ));
$relation_request = new Repo('subject/link', array( $closest_id[$A], $closest_id[$B], '' ));
$relation_response = $relation_request->answer();
// Si erreur de création de relation
return array( 'ModuleError' => $relation_response );
if( $relation_response === false )
return array( 'ModuleError' => ManagerError::ModuleError );

62
manager/repo/category.php Normal file
View File

@ -0,0 +1,62 @@
<?php
namespace manager\repo;
use \manager\Database;
use \manager\sessionManager;
class category extends parentRepo{
protected static function table_name(){ static $table_name = 'categories'; return $table_name; }
/* CREATION D'UNE NOUVELLE CATEGORIE SI AUCUNE AVEC CE NOM N'EXISTE DEJA, SINON RENVOIE L'ID
*
* @intitule<String> Nom de la catégorie
*
* @return id<int> Retourne l'id de la catégorie crée, FALSE si erreur
*
*/
public static function getOrCreate($intitule){
/* [0] Vérification des INPUT
=========================================================*/
// Si erreur de type de paramètre, on retourne FALSE
if( !Database::check('varchar(0,40)', $intitule) )
return false;
/* [1] Vérification qu'aucune n'a cet intitulé
=========================================================*/
$existing = self::getByIntitule($intitule);
/* (1) Si existe déja avec cet intitulé, on récupère l'id */
if( is_array($existing) && count($existing) > 0 )
return $existing[0]['idCategorie'];
/* [2] Création si l'intitulé n'est pas déja utilisé
=========================================================*/
$create_r = Database::getPDO()->prepare("INSERT INTO categories(idCategorie, intitule)
VALUES(DEFAULT, :intitule)");
$create_r_status = $create_r->execute( array( ':intitule' => $intitule ) );
// Si erreur de requête
if( $create_r_status === false )
return false;
/* [3] On vérifie et renvoie l'id
=========================================================*/
$created = self::getByIntitule($intitule);
/* (1) Si existe déja avec cet intitulé, on récupère l'id */
if( is_array($created) && count($created) > 0 )
return $created[0]['idCategorie'];
// Sinon, c'est qu'il y a une erreur
return false;
}
}
?>

View File

@ -9,8 +9,64 @@
protected static function table_name(){ static $table_name = 'relations'; return $table_name; }
public static function create(){
/* CREATION D'UNE RELATION ENTRE @A ET @B DE TYPE @category
*
* @A<int> UID du sujet A
* @B<int> UID du sujet B
* @category<int> UID de la categorie en question
*
* @return status<Boolean> On retourne TRUE si tout s'est bien passé, sinon FALSE si erreur
*
*/
public static function create($A, $B, $category){
/* [0] Vérification des INPUT
=========================================================*/
$checkInput = Database::check('id', $A);
$checkInput = $checkInput && Database::check('id', $B);
$checkInput = $checkInput && Database::check('id', $category);
// Si erreur de type de paramètre, on retourne FALSE
if( !$checkInput )
return false;
/* [1] On vérifie que la relation n'existe pas déja
=========================================================*/
$exists = self::getById($A, $B, $category);
// Si la relation existe, on retourne TRUE
if( is_array($exists) && count($exists) > 0 )
return true;
/* [2] Création de la relation
=========================================================*/
$create_relation = Database::getPDO()->prepare("INSERT INTO relations(idPersonneA, idPersonneB, idCategorie)
VALUES(:A, :B, :category)");
$create_rel_status = $create_relation->execute( array(
':A' => $A,
':B' => $B,
':category' => $category
));
// Si erreur de requête -> FALSE
if( $create_rel_status === false )
return false;
/* [3] On vérifie que la relation est crée
=========================================================*/
$get_relation = self::getById($A, $B, $category);
// Si la relation n'existe pas, on renvoie une erreur
if( !is_array($get_relation) || is_array($get_relation) && count($get_relation) == 0 )
return false;
// Si tout s'est bien passé, on retourne TRUE
return true;
}

View File

@ -3,6 +3,7 @@
namespace manager\repo;
use \manager\Database;
use \manager\sessionManager;
use \manager\Repo;
class subject extends parentRepo{
@ -192,105 +193,29 @@
=========================================================*/
$checkInput = Database::check('id', $A);
$checkInput = $checkInput && Database::check('id', $B);
$checkInput = $checkInput && ( Database::check('varchar(0,40)', $category) || is_null($category) );
$checkInput = $checkInput && Database::check('varchar(0,40)', $category);
// Si erreur de type de paramètre, on retourne FALSE
if( !$checkInput )
return false;
$nullCat = is_null($category);
/* [1] On vérifie l'existence de la catégorie
/* [1] On récupère ou crée la catégorie
=========================================================*/
$category_exists_req = Database::getPDO()->prepare("SELECT idCategorie as id
FROM categories
WHERE intitule ".
( $nullCat ? "is NULL" : "= :category" )
);
$cat_ex_status = $category_exists_req->execute( ($nullCat) ? null : array( ':category' => $category ) );
$category_id_req = new Repo('category/getOrCreate', array($category));
$category_id = $category_id_req->answer();
// Si erreur de requête -> FALSE
if( $cat_ex_status === false )
// Si erreur -> FALSE
if( $category_id === false )
return false;
// On récupère l'id de la catégorie, sinon NULL
$category_id = is_array($category_exists_req->fetch()) ? $category_exists_req->fetch()['id'] : null;
/* [2] On crée la catégorie si elle n'existe pas
/* [2] On crée la relation
=========================================================*/
if( $category_id === null ){
$relation_req = new Repo('relation/create', array($A, $B, $category_id));
$relation = $relation_req->answer();
$create_category_req = Database::getPDO()->prepare("INSERT INTO categories(idCategorie, intitule)
VALUES(DEFAULT, ".
( $nullCat ? "NULL" : ":category" )
.")");
$create_cat_status = $create_category_req->execute( ($nullCat) ? null : array( ':category' => $category ) );
// Si erreur de requête -> FALSE
if( $create_cat_status === false )
return false;
// On récupère l'id de la catégorie
$get_category_id = Database::getPDO()->prepare("SELECT idCategorie as id
FROM categories
WHERE intitule ".
( $nullCat ? "is NULL" : "= :category" )
);
$get_cat_status = $get_category_id->execute( ($nullCat) ? null : array( ':category' => $category ) );
// Si erreur de requête -> FALSE
if( $get_cat_status === false )
return false;
// Si on a toujours rien, on retourne FALSE
if( !is_array($get_category_id->fetch()) )
return false;
// On récupère l'id de la catégorie
$category_id = $get_category_id->fetch()['id'];
}
/* [3] On crée la relation
=========================================================*/
$create_relation = Database::getPDO()->prepare("INSERT INTO relations(idPersonneA, idPersonneB, idCategorie)
VALUES(:A, :B, :category)");
$create_rel_status = $create_relation->execute( array(
':A' => $A,
':B' => $B,
':category' => $category_id
));
return $B;
// Si erreur de requête -> FALSE
if( $create_rel_status === false )
return false;
/* [4] On vérifie que la relation est crée
=========================================================*/
$check_relation = Database::getPDO()->prepare("SELECT idPersonneA, idPersonneB, idCategorie
FROM relations
WHERE idPersonneA = :A
AND idPersonneB = :B
AND idCategorie = :category");
$check_rel_status = $check_relation->execute( array(
':A' => $A,
':B' => $B,
':category' => $category_id
));
// Si erreur de requête -> FALSE
if( $check_rel_status === false )
return false;
// Si on ne trouve pas, on retourne une erreur
if( $check_relation->fetch() === false )
// Si erreur de création -> FALSE
if( $relation === false )
return false;
// Si tout s'est bien passé, on retourne TRUE