Commit ac5fca04 authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Merge branch 'master' into alc-reconduction-offre

parents 4ce68ef8 82fb5bf5
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -4,6 +4,9 @@

* L'interface d'administration des motifs de modification de service est de nouveau pleinement fonctionelle.

## Nouveautés

* Formule de calcul de Lyon2

# OSE 10-zf2 et 10-zf3

+0 −1
Original line number Diff line number Diff line
@@ -89,7 +89,6 @@ Dépendances requises :
    * ldap
    * bcmath
    * mbstring
    * mcrypt
    * opcache
    * xml
    * zip

code/Contrôle des séquences.php

deleted100755 → 0
+0 −132
Original line number Diff line number Diff line
<?php

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

$bdd = new \Application\Connecteur\Bdd\BddConnecteur();
$bdd->setEntityManager($container->get(\Application\Constants::BDD));


$tables = getData($bdd);

$tableToModif = isset($_REQUEST['table-to-modif']) ? $_REQUEST['table-to-modif'] : null;

if ($tableToModif && isset($tables[$tableToModif]) && !empty($tables[$tableToModif]['sql'])) {
    foreach ($tables[$tableToModif]['sql'] as $query) {
        $bdd->exec($query);
    }
    die('OK');
}

?>
    <h1>Contrôle des valeurs des séquences</h1>
    <table class="table table-bordered table-condensed table-hover">
        <thead>
        <tr>
            <th>Table</th>
            <th>Séquence</th>
            <th>Séq. val</th>
            <th>Dernier ID</th>
            <th>SQL</th>
        </tr>
        </thead>
        <tbody>
        <?php foreach ($tables as $table => $d): extract($d); ?>
            <tr<?= $probleme ? ' class="bg-danger"' : '' ?>>
                <td><?= $table ?></td>
                <td><?= $sequence ?></td>
                <td><?= $seqVal ?></td>
                <td><?= $maxId ?></td>
                <td>
                    <?php if (!empty($sql)): ?>
                        <button class="btn btn-default btn-maj-seq" data-table="<?= $table ?>">MAJ séquence</button>
                    <?php endif; ?>
                </td>
            </tr>
        <?php endforeach; ?>
        </tbody>
    </table>
    <script>

        $(function ()
        {

            $('.btn-maj-seq').click(function ()
            {
                majSeq($(this).data('table'))
            });

        });

        function majSeq(table)
        {
            var url = '<?= $_SERVER['REQUEST_URI'] ?>';

            $.post(url, {"table-to-modif": table}, function (data)
            {
                alertFlash('Réussi', 'success', 1000);
                window.location.reload();
            }).fail(function (jqXHR)
            {
                alertFlash(jqXHR.responseText, 'danger', 5000);
                console.log(jqXHR);
            });
        }

    </script>
<?php


function getData(Application\Connecteur\Bdd\BddConnecteur $bdd)
{
    $sql = "
    SELECT
      utc.table_name,
      us.sequence_name,
      us.last_number
    FROM
      USER_TAB_COLUMNS utc
      JOIN USER_SEQUENCES us ON us.sequence_name = SUBSTR(utc.table_name,1,23) || '_ID_SEQ'
    WHERE
      utc.column_name = 'ID'
    ";

    $dt = $bdd->fetch($sql, [], 'TABLE_NAME');

    $sqls = [];
    foreach ($dt as $tableName => $d) {
        $sqls[$tableName] = "SELECT '$tableName' table_name, max(id) max_id FROM $tableName";
    }

    $ids = $bdd->fetch(implode(' UNION ', $sqls), [], 'TABLE_NAME');

    $tables = [];
    foreach ($dt as $tableName => $d) {
        $sequence = $d['SEQUENCE_NAME'];
        $seqVal   = (int)$d['LAST_NUMBER'];
        $maxId    = (int)$ids[$tableName]['MAX_ID'];
        $probleme = $seqVal <= $maxId;

        $modifSqls = [];
        if ($maxId - $seqVal >= 0) {
            $modifSqls[] = "ALTER SEQUENCE $sequence INCREMENT BY " . ($maxId - $seqVal + 1);
            $modifSqls[] = "SELECT $sequence.NEXTVAL FROM dual";
            $modifSqls[] = "ALTER SEQUENCE $sequence INCREMENT BY 1";
        }

        $tables[$tableName] = [
            'sequence' => $sequence,
            'seqVal'   => $seqVal,
            'maxId'    => $maxId,
            'probleme' => $probleme,
            'sql'      => $modifSqls,
        ];
    }

    return $tables;
}
 No newline at end of file
+223 −0
Original line number Diff line number Diff line
<?php

/**
 * @var $this       \Application\View\Renderer\PhpRenderer
 * @var $controller \Zend\Mvc\Controller\AbstractController
 * @var $container  \Interop\Container\ContainerInterface
 * @var $viewName   string
 * @var $viewFile   string
 */
$formuleTestIntervenantId = 132;

$data = "901	Oui	CM	50,00 %	0,00 %	50,00 %	20 h	1,5 HETD	30 HETD		30 HETD	66,67 %	30 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		15 HETD	0 HETD	15 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD
909	Oui	TD	50,00 %	25,00 %	25,00 %	50 h	1 HETD	50 HETD		0 HETD	0,00 %	0 HETD	0 HETD		50 HETD	40,00 %	50 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		25 HETD	12,5 HETD	12,5 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD
902	Oui	CM	0,00 %	0,00 %	100,00 %	50 h	1,5 HETD	75 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		75 HETD	65,22 %	14,35 HETD	60,65 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0 HETD	14,35 HETD	0 HETD	0 HETD	0 HETD	60,65 HETD	0 HETD	0 HETD
D4DAC10000	Oui	Référentiel				20 h	1 HETD	20 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		20 HETD	16,00 %	0 HETD	20 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	20 HETD
D4DAC10000	Oui	CM	0,00 %	0,00 %	100,00 %	10 h	1,5 HETD	15 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		15 HETD	31,58 %	0 HETD	15 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	15 HETD	0 HETD	0 HETD
901	Oui	TD	0,00 %	0,00 %	100,00 %	40 h	1 HETD	40 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		40 HETD	34,78 %	7,65 HETD	32,35 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0 HETD	7,65 HETD	0 HETD	0 HETD	0 HETD	32,35 HETD	0 HETD	0 HETD
901	Oui	Référentiel				40 h	1 HETD	40 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		40 HETD	32,00 %	0 HETD	40 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	40 HETD
909	Oui	CM	80,00 %	0,00 %	20,00 %	50 h	1,5 HETD	75 HETD		0 HETD	0,00 %	0 HETD	0 HETD		75 HETD	60,00 %	75 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		60 HETD	0 HETD	15 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD
901	Oui	Référentiel				15 h	1 HETD	15 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		15 HETD	12,00 %	0 HETD	15 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	15 HETD
ETAB-X	Non	TD	100,00 %	0,00 %	0,00 %	30 h	1 HETD	30 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		30 HETD	66,67 %	0 HETD	30 HETD		0 HETD	0 HETD	0 HETD	0 HETD	30 HETD	0 HETD	0 HETD	0 HETD	0 HETD
ETAB-X	Non	Référentiel				40 h	1 HETD	40 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		40 HETD	32,00 %	0 HETD	40 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	40 HETD
ETAB-Y	Non	CM	100,00 %	0,00 %	0,00 %	10 h	1,5 HETD	15 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		15 HETD	33,33 %	0 HETD	15 HETD		0 HETD	0 HETD	0 HETD	0 HETD	15 HETD	0 HETD	0 HETD	0 HETD	0 HETD
909	Oui	Référentiel				10 h	1 HETD	10 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		10 HETD	8,00 %	0 HETD	10 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	10 HETD
901	Oui	TD	40,00 %	20,00 %	40,00 %	15 h	1 HETD	15 HETD		15 HETD	33,33 %	15 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		6 HETD	3 HETD	6 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD
D4DAC10000	Oui	CM	0,00 %	0,00 %	100,00 %	5 h	1,5 HETD	7,5 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		7,5 HETD	15,79 %	0 HETD	7,5 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	0 HETD	7,5 HETD	0 HETD	0 HETD
D4DAC10000	Oui	TD	100,00 %	0,00 %	0,00 %	25 h	1 HETD	25 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		25 HETD	52,63 %	0 HETD	25 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0,00 %	0 HETD	0 HETD		0 HETD	0 HETD	0 HETD	0 HETD	25 HETD	0 HETD	0 HETD	0 HETD	0 HETD
";

/*
Structures :
1	Droit
2	Histoire
3	IAE
4	IUT
5	Lettres
6	Santé
7	Sciences
8	SUAPS
9	Université
*/

$correspStructs = [
    '901'        => 1,
    '909'        => 2,
    '902'        => 3,
    'U1LY200000' => 4,
    'D4DAC10000' => 5,
    'ETAB-X'     => 6,
    'ETAB-Y'     => 7,
];

$correspChamps = [
    'structureTest'           => 0,
    'referentiel'             => 2,
    'serviceStatutaire'       => null,
    'typeInterventionCode'    => 2,
    'tauxFi'                  => 3,
    'tauxFa'                  => 4,
    'tauxFc'                  => 5,
    'ponderationServiceDu'    => null,
    'ponderationServiceCompl' => null,
    'param1'                  => 0,
    'param2'                  => 1,
    'param3'                  => null,
    'param4'                  => null,
    'param5'                  => null,
    'heures'                  => 6,
    'aServiceFi'              => 40,
    'aServiceFa'              => 41,
    'aServiceFc'              => 42,
    'aServiceReferentiel'     => 43,
    'aHeuresComplFi'          => 44,
    'aHeuresComplFa'          => 45,
    'aHeuresComplFc'          => 46,
    'aHeuresComplFcMajorees'  => 47,
    'aHeuresComplReferentiel' => 48,
];

function transfo(array $c)
{
    if ($c['typeInterventionCode'] == 'Référentiel') {
        $c['typeInterventionCode'] = null;
        $c['referentiel']          = true;
    } else {
        $c['referentiel'] = false;
    }

    return $c;
}

$debug = false;
//$debug = true;


$defaults = [
    'referentiel'             => false,
    'serviceStatutaire'       => true,
    'tauxFi'                  => 100,
    'tauxFa'                  => 0,
    'tauxFc'                  => 0,
    'ponderationServiceDu'    => 1,
    'ponderationServiceCompl' => 1,
];

/** @var \Doctrine\ORM\EntityManager $bdd */
$bdd = $container->get(\Application\Constants::BDD);

$data   = explode("\n", $data);
$vhHead = [];
$vhData = [];
foreach ($data as $l) {
    if (trim($l)) {
        $cOri = explode("\t", trim($l));

        $values = [];
        foreach ($correspChamps as $col => $index) {
            if ($index !== null) {
                $vhHead[$col] = $col;
                $values[$col] = $cOri[$index];
                if ('' === $values[$col] && isset($defaults[$col])) {
                    $values[$col] = $defaults[$col];
                }
            }
        }

        $values = transfo($values);

        foreach ($correspChamps as $col => $index) {
            if ($index !== null) {
                if ((null === $values[$col] || '' === $values[$col]) && isset($defaults[$col])) {
                    $values[$col] = $defaults[$col];
                }
            }
        }

        if (isset($values['structureTest']) && !empty($values['structureTest']) && !$values['structureTest'] instanceof \Application\Entity\Db\FormuleTestStructure) {
            try {
                $values['structureTest'] = $bdd->getRepository(\Application\Entity\Db\FormuleTestStructure::class)->find($correspStructs[$values['structureTest']]);
            } catch (\Exception $e) {
                throw new \Exception("Composante " . $values['structureTest'] . " non mappée", 0, $e);
            }
        }

        $lfloat = [
            'tauxFi', 'tauxFa', 'tauxFc',
            'heures',
            'ponderationServiceDu', 'ponderationServiceCompl',
            'aServiceFi', 'aServiceFa', 'aServiceFc', 'aServiceReferentiel', 'aHeuresComplFi', 'aHeuresComplFa', 'aHeuresComplFc', 'aHeuresComplFcMajorees', 'aHeuresComplReferentiel',
        ];
        foreach ($lfloat as $col) {
            if (isset($values[$col])) {
                $values[$col] = stringToFloat($values[$col]);
            }
        }

        $ltaux = ['tauxFi', 'tauxFa', 'tauxFc'];
        foreach ($ltaux as $col) {
            if (isset($values[$col])) {
                $values[$col] = $values[$col] / 100;
            }
        }

        $lbool = ['referentiel', 'serviceStatutaire'];
        foreach ($lbool as $col) {
            if (isset($values[$col])) {
                $values[$col] = (bool)$values[$col];
            }
        }

        $values['debugInfo'] = $cOri;
        $vhData[]            = $values;
    }
}


if (!$debug) {
    /** @var \Application\Service\FormuleTestIntervenantService $ftiService */
    $ftiService = $container->get(\Application\Service\FormuleTestIntervenantService::class);
    $fti        = $ftiService->get($formuleTestIntervenantId);
    $bdd->getConnection()->exec('DELETE FROM formule_test_volume_horaire WHERE intervenant_test_id = ' . $fti->getId());
    foreach ($vhData as $i => $values) {
        $vh = new \Application\Entity\Db\FormuleTestVolumeHoraire();
        $vh->setIntervenantTest($fti);
        foreach ($vhHead as $col) {
            $vh->{'set' . ucfirst($col)}($values[$col]);
        }
        try {
            $bdd->persist($vh);
            $bdd->flush($vh);
            $vhData[$i]['debugInfo'] = 'OK';
        } catch (\Exception $e) {
            $vhData[$i]['debugInfo'] = $e->getMessage();
        }
    }
}

?>
<style>
    table {
        font-size: 8pt;
    }
</style>
<table class="table table-bordered table-condensed table-extra-condensed table-hover">
    <tr>
        <?php foreach ($vhHead as $col): ?>
            <th><?= $col; ?></th>
        <?php endforeach; ?>
        <th>Infos Débug</th>
    </tr>
    <?php
    foreach ($vhData as $values) {
        echo '<tr>';
        foreach ($values as $col => $value) {
            if (is_array($value)) {
                $value = '<pre style="font-size:8pt">' . var_export($value, true) . '</pre>';
            }
            echo "<td>$value</td>";
        }
        echo '</tr>';
    }
    ?>
</table>
 No newline at end of file
+11 −19
Original line number Diff line number Diff line
@@ -3,26 +3,12 @@
/**
 * @var $this       \Application\View\Renderer\PhpRenderer
 * @var $controller \Zend\Mvc\Controller\AbstractController
 * @var $container  \Interop\Container\ContainerInterface
 * @var $viewName   string
 * @var $sl         \Zend\ServiceManager\ServiceLocatorInterface
 * @var $viewFile   string
 */

spl_autoload_register(function ($class) {
    if (0 === strpos($class, 'BddAdmin')) {
        $dir   = dirname(__DIR__) . '/admin/src/';
        $class = $dir . str_replace('\\', '/', $class) . '.php';

        require_once $class;
    }
});

$bdd    = new \BddAdmin\Bdd([
    'host'     => AppConfig::get('bdd', 'host'),
    'port'     => AppConfig::get('bdd', 'port'),
    'dbname'   => AppConfig::get('bdd', 'dbname'),
    'username' => AppConfig::get('bdd', 'username'),
    'password' => AppConfig::get('bdd', 'password'),
]);
$bdd    = adminBdd();
$schema = new \BddAdmin\Schema($bdd);

/*$tables = [
@@ -49,7 +35,7 @@ $schema = new \BddAdmin\Schema($bdd);

$list = [
    'ANNEE', 'INTERVENANT', 'CORPS', 'GRADE', 'GROUPE_TYPE_FORMATION', 'TYPE_FORMATION', 'ETAPE', 'ELEMENT_PEDAGOGIQUE',
'CHEMIN_PEDAGOGIQUE', 'VOLUME_HORAIRE_ENS', 'TYPE_INTERVENTION'
    'CHEMIN_PEDAGOGIQUE', 'VOLUME_HORAIRE_ENS', 'TYPE_INTERVENTION',
];

$tables = [];
@@ -144,7 +130,13 @@ foreach ($cls as $cl) {
                    },
                    new go.Binding("text", "name")),
                $(go.TextBlock,
                    {margin: new go.Margin(0, 5), column: 2,stroke: "#ef9b0b",font: "normal 9px sans-serif", alignment: go.Spot.Left},
                    {
                        margin: new go.Margin(0, 5),
                        column: 2,
                        stroke: "#ef9b0b",
                        font: "normal 9px sans-serif",
                        alignment: go.Spot.Left
                    },
                    new go.Binding("text", "type"))
            );

Loading