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",
|
"getAll",
|
||||||
"create",
|
"create",
|
||||||
"merge",
|
"merge",
|
||||||
"remove"
|
"remove",
|
||||||
|
"link"
|
||||||
],
|
],
|
||||||
|
|
||||||
"Personnes": [
|
"Personnes": [
|
||||||
|
|
|
@ -162,12 +162,134 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function remove($id_subject){
|
public static function remove($id_subject){
|
||||||
|
/* [0] Vérification des INPUT
|
||||||
|
=========================================================*/
|
||||||
|
if( !Database::check('id', $id_subject) )
|
||||||
|
return false;
|
||||||
|
|
||||||
/* [1] On effectue la suppression
|
/* [1] On effectue la suppression
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$delSubject = Database::getPDO()->prepare("DELETE FROM sujets WHERE idSujet = :id_subject");
|
$delSubject = Database::getPDO()->prepare("DELETE FROM sujets WHERE idSujet = :id_subject");
|
||||||
return $delSubject->execute(array( ':id_subject' => $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