Parcourir la source

add api directory

master
tibo il y a 5 ans
Parent
révision
b3c7a26e3b
3 fichiers modifiés avec 122 ajouts et 0 suppressions
  1. +48
    -0
      api/credits.php
  2. +39
    -0
      api/get.php
  3. +35
    -0
      api/parents.php

+ 48
- 0
api/credits.php Voir le fichier

@ -0,0 +1,48 @@
<?php
/*
* Donne tous les parents d'un item, comme parents.php
* Rajoute une jointure sur les crédits
* Cela permet de r&écupérer le montant, et la réalisation
* Le montant est affecté directement à l'item
* La réalisation est la somem des crédits des enfants de l'item
*/
header('Content-Type: application/json');
try{
$pdo = new PDO('sqlite:../data/base.sqlite');
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // ERRMODE_WARNING | ERRMODE_EXCEPTION | ERRMODE_SILENT
} catch(Exception $e) {
echo "Impossible d'accéder à la base de données SQLite : ".$e->getMessage();
die();
}
$where_clause = 'WHERE 1 = 1 ';
$where_clause .= 'AND item = '.$_REQUEST['item'];
$sql = '
WITH arbre (id, level, path, realisation) AS(
SELECT parent, 0, '['|| tree.parent || ']', (SELECT SUM(montant) FROM credit WHERE item in (SELECT item FROM tree st WHERE st.parent = tree.parent))
FROM tree
WHERE_CLAUSE
UNION ALL
SELECT parent, arbre.level+1, arbre.path||'['||tree.parent||']',(SELECT SUM(montant) FROM credit WHERE item in (SELECT item FROM tree st WHERE st.parent = tree.parent))
FROM tree
INNER JOIN arbre ON arbre.id = tree.item
) SELECT arbre.*, item.code, item.title, credit.montant FROM arbre
INNER JOIN item ON arbre.id = item.id
LEFT JOIN credit ON credit.item = item.id
ORDER BY path
';
$query = $pdo->prepare(str_replace('WHERE_CLAUSE',$where_clause,$sql));
$query->execute();
echo json_encode( $query->fetchAll(PDO::FETCH_ASSOC));
/*
* TODO : Cumuler les réalisatiosn sur les parents lorsque ceux-ci n'en n'ont pas
*/
?>

+ 39
- 0
api/get.php Voir le fichier

@ -0,0 +1,39 @@
<?php
header('Content-Type: application/json');
try{
$pdo = new PDO('sqlite:../data/base.sqlite');
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // ERRMODE_WARNING | ERRMODE_EXCEPTION | ERRMODE_SILENT
} catch(Exception $e) {
echo "Impossible d'accéder à la base de données SQLite : ".$e->getMessage();
die();
}
$where_clause = 'WHERE 1 = 1';
//$where_clause .= ' AND path LIKE "%[1]%"';
$sql = '
WITH arbre (parent, id, link, code, name, level, path) AS (
SELECT 0, id, link, code, libelle, 0, "{0} [" || id || "]"
FROM v_items_tree WHERE parent IS NULL
UNION ALL
SELECT
v_items_tree.parent,
v_items_tree.id,
v_items_tree.link,
v_items_tree.code,
v_items_tree.libelle,
arbre.level+1,
arbre.path || " {" || v_items_tree.rank || "} [" || v_items_tree.id || "]"
FROM v_items_tree
INNER JOIN arbre ON v_items_tree.parent=arbre.id
) SELECT parent, id, link, code, name,level,path FROM arbre WHERE_CLAUSE ORDER BY path
';
$query = $pdo->prepare(str_replace('WHERE_CLAUSE',$where_clause,$sql));
$query->execute();
echo json_encode( $query->fetchAll(PDO::FETCH_ASSOC));
?>

+ 35
- 0
api/parents.php Voir le fichier

@ -0,0 +1,35 @@
<?php
header('Content-Type: application/json');
try{
$pdo = new PDO('sqlite:../data/base.sqlite');
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // ERRMODE_WARNING | ERRMODE_EXCEPTION | ERRMODE_SILENT
} catch(Exception $e) {
echo "Impossible d'accéder à la base de données SQLite : ".$e->getMessage();
die();
}
$where_clause = 'WHERE 1 = 1 ';
$where_clause .= 'AND item = '.$_REQUEST['item'];
$sql = '
WITH arbre (id,level, path) AS(
SELECT parent, 0, '['|| tree.parent || ']'
FROM tree
WHERE_CLAUSE
UNION ALL
SELECT parent, arbre.level+1, arbre.path||'['||tree.parent||']'
FROM tree
INNER JOIN arbre ON arbre.id = tree.item
) SELECT arbre.*, item.code, item.title FROM arbre
INNER JOIN item ON arbre.id = item.id
ORDER BY path DESC
';
$query = $pdo->prepare(str_replace('WHERE_CLAUSE',$where_clause,$sql));
$query->execute();
echo json_encode( $query->fetchAll(PDO::FETCH_ASSOC));
?>

Chargement…
Annuler
Enregistrer