Implémentation de la création d'une relation au niveau du repo : 'subject/link'
This commit is contained in:
parent
7c1ab5e1cf
commit
733a49453c
|
@ -14,7 +14,8 @@
|
|||
"getAll",
|
||||
"create",
|
||||
"merge",
|
||||
"remove"
|
||||
"remove",
|
||||
"link"
|
||||
],
|
||||
|
||||
"Personnes": [
|
||||
|
|
|
@ -162,12 +162,134 @@
|
|||
*
|
||||
*/
|
||||
public static function remove($id_subject){
|
||||
/* [0] Vérification des INPUT
|
||||
=========================================================*/
|
||||
if( !Database::check('id', $id_subject) )
|
||||
return false;
|
||||
|
||||
/* [1] On effectue la suppression
|
||||
=========================================================*/
|
||||
$delSubject = Database::getPDO()->prepare("DELETE FROM sujets WHERE idSujet = :id_subject");
|
||||
return $delSubject->execute(array( ':id_subject' => $id_subject ));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* CREER UNE RELATION ENTRE 2 SUJETS
|
||||
*
|
||||
* @A<int> UID du premier sujet
|
||||
* @B<int> UID du second sujet
|
||||
* @category<String> Intitulé du type de relation
|
||||
*
|
||||
* @return id_relation<int> Renvoie l'id de la relation crée, sinon FALSE si erreur
|
||||
*
|
||||
*/
|
||||
public static function link($A, $B, $category){
|
||||
/* [0] Vérification des INPUT
|
||||
=========================================================*/
|
||||
$checkInput = Database::check('id', $A);
|
||||
$checkInput = $checkInput && Database::check('id', $B);
|
||||
$checkInput = $checkInput && Database::check('varchar(3,40)', $category);
|
||||
|
||||
// Si erreur de type de paramètre, on retourne FALSE
|
||||
if( !$checkInput )
|
||||
return false;
|
||||
|
||||
|
||||
/* [1] On vérifie l'existence de la catégorie
|
||||
=========================================================*/
|
||||
$category_exists_req = Database::getPDO()->prepare("SELECT idCategorie as id
|
||||
FROM categories
|
||||
WHERE intitule = :category
|
||||
");
|
||||
$cat_ex_status = $category_exists_req->execute( array( ':category' => $category ) );
|
||||
|
||||
// Si erreur de requête -> FALSE
|
||||
if( $cat_ex_status === 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
|
||||
=========================================================*/
|
||||
if( $category_id === null ){
|
||||
|
||||
$create_category_req = Database::getPDO()->prepare("INSERT INTO categories(idCategorie, intitule)
|
||||
VALUES(DEFAULT, :category)");
|
||||
$create_cat_status = $create_category_req->execute( 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 = :category");
|
||||
$get_cat_status = $get_category_id->execute( 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
|
||||
));
|
||||
|
||||
// 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 idPersonnA, 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 )
|
||||
return false;
|
||||
|
||||
|
||||
// Si tout s'est bien passé, on retourne TRUE
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue