add api directory
This commit is contained in:
48
api/credits.php
Normal file
48
api/credits.php
Normal file
@@ -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
|
||||
*/
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user