diff --git a/api/credits.php b/api/credits.php new file mode 100644 index 0000000..5afe44d --- /dev/null +++ b/api/credits.php @@ -0,0 +1,48 @@ +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 + */ + +?> diff --git a/api/get.php b/api/get.php new file mode 100644 index 0000000..27da2d4 --- /dev/null +++ b/api/get.php @@ -0,0 +1,39 @@ +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)); + +?> diff --git a/api/parents.php b/api/parents.php new file mode 100644 index 0000000..81910a6 --- /dev/null +++ b/api/parents.php @@ -0,0 +1,35 @@ +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)); + +?>