Commit dc0a2ab7 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Début d'intégration formule Lyon2

parent 36f04e33
Loading
Loading
Loading
Loading
+195 −0
Original line number Diff line number Diff line
<?php

/**
 * @var $this       \Application\View\Renderer\PhpRenderer
 * @var $controller \Zend\Mvc\Controller\AbstractController
 * @var $viewName   string
 * @var $sl         \Zend\ServiceManager\ServiceLocatorInterface
 */

$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'             => null,
    'serviceStatutaire'       => null,
    'typeInterventionCode'    => null,
    'tauxFi'                  => null,
    'tauxFa'                  => null,
    'tauxFc'                  => null,
    'ponderationServiceDu'    => null,
    'ponderationServiceCompl' => null,
    'param1'                  => null,
    'param2'                  => null,
    'param3'                  => null,
    'param4'                  => null,
    'param5'                  => null,
    'heures'                  => null,
    'aServiceFi'              => null,
    'aServiceFa'              => null,
    'aServiceFc'              => null,
    'aServiceReferentiel'     => null,
    'aHeuresComplFi'          => null,
    'aHeuresComplFa'          => null,
    'aHeuresComplFc'          => null,
    'aHeuresComplFcMajorees'  => null,
    'aHeuresComplReferentiel' => null,
];

function transfo(array $c)
{

    return $c;
}

$debug = false;
$debug = true;


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

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

        $cTranf = transfo($cOri);
        $values = [];
        foreach ($correspChamps as $col => $index) {
            if ($index !== null) {
                $vhHead[$col] = $col;
                $values[$col] = $cTranf[$index];
            }
        }

        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 = $sl->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
+6 −0
Original line number Diff line number Diff line
@@ -112,6 +112,12 @@ return [
            'LIBELLE'      => 'Ensicaen',
            'PACKAGE_NAME' => 'FORMULE_ENSICAEN',
        ],
        7 => [
            'LIBELLE'            => 'Université Lumière Lyon 2',
            'PACKAGE_NAME'       => 'FORMULE_LYON2',
            'VH_PARAM_1_LIBELLE' => 'Code composante',
            'VH_PARAM_2_LIBELLE' => 'Structure interne',
        ],
    ],

    'MODELE_CONTRAT' => [