Commit 672b0b10 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Finalisation de l'IHM de création de nouvelles formules

parent ecf6345a
Loading
Loading
Loading
Loading
+1 −0
Changes for admin/actions/help.php: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ $actionsDev = [
    "update-ddl"            => "Mise à jour du fichier de définition de la base de données à partir de cette dernière",
    "update-bdd-data"       => "Mise à jour des données de la base de données",
    "update-bdd-privileges" => "Mise à jour des privilèges de la base de données",
    "update-bdd-formules"   => "Mise à jour de le liste des formules de calcul",
    "test"                  => "Script de tests divers",
    "test-migration"        => "Script de test de migration. Paramètres : [before|after nom_du_script_de_migration]",
    "build-tableaux-bord"   => "Reconstruction des tableaux de bord",
+5 −0
Changes for admin/actions/update-bdd-formules.php: 5 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

// Mise à jour
$dataGen = new DataGen($oa);
$dataGen->update('FORMULE');
+72 −9
Changes for code/Créateur de formule.php: 72 added lines, 9 removed lines.
Original line number Diff line number Diff line
<?php

/**
 * @var $this       \Application\View\Renderer\PhpRenderer
 * @var $controller \Laminas\Mvc\Controller\AbstractController
 * @var $container  \Psr\Container\ContainerInterface
 * @var $viewName   string
 * @var $viewFile   string
 */

use UnicaenCode\Util;

$name = strtoupper($_POST['name'] ?? '');
$name = trim(strtoupper($_POST['name'] ?? ''));

?>
    <form method="post" enctype="multipart/form-data">
@@ -17,27 +25,82 @@ $name = strtoupper($_POST['name'] ?? '');
        </div>

        <div class="form-group">
            <button type="submit" name="action" value="generer" class="btn btn-primary">Générer le package</button>
            <button type="submit" name="action" value="voir" class="btn btn-default">Voir la feuille de calcul</button>
            <button type="submit" name="action" value="gen" class="btn btn-primary">Générer le package et l'implenter en BDD</button>
            <button type="submit" name="action" value="aff" class="btn btn-primary">Simple affichage du package généré</button>
            <button type="submit" name="action" value="feuille" class="btn btn-default">Voir la feuille de calcul</button>
        </div>
    </form>
<?php
$action  = $_POST['action'] ?? 'generer';
$action  = $_POST['action'] ?? 'gen';
$fichier = $_FILES['fichier'] ?? null;


$bdd = oseAdmin()->getBdd();


if (!$fichier) {
    return;
}

$fc = new \Application\Model\FormuleCalcul($fichier['tmp_name'], $name);
if (!file_exists($fichier['tmp_name'])) {
    ?>
    <div class="alert alert-danger">Fichier non fourni ou erroné</div>
    <?php

    return;
}

$fc           = new \Application\Model\FormuleCalcul($fichier['tmp_name'], $name);

switch ($action) {
    case 'voir':
    case 'feuille':
        echo $fc->getSheet(1)->html();
    break;
    case 'generer':
        Util::highlight($fc->makePackageDef(), 'plsql', true, ['show-line-numbers' => true]);
        Util::highlight($fc->makePackageBody(), 'plsql', true, ['show-line-numbers' => true]);
    case 'aff':
    case 'gen':
        $def = $fc->makePackageDef();
        $body = $fc->makePackageBody();

        if ($action === 'gen') {
            try {
                $bdd->exec($def);
                $bdd->exec($body);

                ?>
                <div class="alert alert-success">Package de formule correctement implanté dans la BDD</div>
                <?php

                $packageName = 'FORMULE_' . $name . '2';
                $pe          = $bdd->select('SELECT id FROM formule WHERE package_name = :pn', ['pn' => $packageName]);
                if (empty($pe)) {
                    $newFormuleId = $bdd->select('SELECT max(id) + 1 nid FROM formule')[0]['NID'];

                    ?>
                    <div class="alert alert-info">
                        Cette formule n'est pas encore déclarée en BDD.
                        Vous devez l'ajouter dans le fichier /data/formules.php
                        <pre>
    <?= $newFormuleId ?> => [
        'LIBELLE'      => '...',
        'PACKAGE_NAME' => '<?= $packageName ?>',
    ],</pre>

                        Puis lancer
                        <pre>./bin/ose update-bdd-formules</pre>

                    </div>
                    <?php
                }
            } catch (\Exception $e) {
                ?>
                <div class="alert alert-danger"><?= $e->getMessage() ?>></div>
                <?php
            }

            echo '<h2>Code généré</h2>';
        }

        Util::highlight($def, 'plsql', true, ['show-line-numbers' => true]);
        Util::highlight($body, 'plsql', true, ['show-line-numbers' => true]);
    break;
}