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

Mise en place des hydrateurs

parent 2c5d0cc2
Loading
Loading
Loading
Loading
+9 −13
Changes for module/Application/src/Hydrator/GenericHydrator.php: 9 added lines, 13 removed lines.
Original line number Diff line number Diff line
@@ -61,28 +61,24 @@ class GenericHydrator implements HydratorInterface
                $value = null;
                if (is_string($getter) && method_exists($object, $getter)) {
                    $value = $object->$getter();
                } elseif (is_callable($getter)) {
                    $value = $getter($object, $name);
                } elseif (method_exists($object, $gget = 'get' . ucFirst($name))) {
                    $value = $object->$gget();
                } elseif (method_exists($object, $gis = 'is' . ucFirst($name))) {
                    $value = $object->$gis();
                } elseif (is_callable($getter)) {
                    $value = $getter($name, $object);
                }

                /* Transformation en string */
                if ('float' == $type && is_float($value)) {
                    $value = floatToString($value);
                }
                if ('int' == $type && is_int($value)) {
                } elseif ('int' == $type && is_int($value)) {
                    $value = intToString($value);
                }
                if (('bool' == $type || 'boolean' == $type) && is_bool($value)) {
                } elseif (('bool' == $type || 'boolean' == $type) && is_bool($value)) {
                    $value = booleanToString($value, '1', '0');
                }
                if (\DateTime::class == $type && $value instanceof \DateTime) {
                } elseif (\DateTime::class == $type && $value instanceof \DateTime) {
                    $value = $value->format(Constants::DATE_FORMAT);
                }
                if (class_exists($type) && $value instanceof $type && method_exists($value, 'getId')) {
                } elseif (class_exists($type) && $value instanceof $type && method_exists($value, 'getId')) {
                    $value = (string)$value->getId();
                }

@@ -129,10 +125,10 @@ class GenericHydrator implements HydratorInterface
                }

                /* Injection de la valeur dans l'objet */
                if (is_string($setter) && method_exists($object, $setter)) {
                if (is_callable($setter)) {
                    $setter($object, $value, $name);
                } elseif (is_string($setter) && method_exists($object, $setter)) {
                    $object->$setter($value);
                } elseif (is_callable($setter)) {
                    $setter($object, $name, $value);
                }
            }
        }
+176 −2
Changes for module/Intervenant/src/Form/StatutSaisieForm.php: 176 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -121,6 +121,42 @@ class StatutSaisieForm extends AbstractForm
                        'edition'       => 'Activé et modifiable par l\'intervenant',
                    ],
                ],
                'hydrator' => [
                    'getter' => function (Statut $statut, string $name) {
                        $getter = 'get' . ucfirst($name);

                        $access = $statut->{$getter}();
                        $visu   = $statut->{$getter . 'Visualisation'}();
                        $edit   = $statut->{$getter . 'Edition'}();

                        if ($edit && $visu && $access) {
                            return 'edition';
                        } elseif ($visu && $access) {
                            return 'visualisation';
                        } elseif ($access) {
                            return 'active';
                        } else {
                            return 'desactive';
                        }
                    },
                    'setter' => function (Statut $statut, $value, string $name) {
                        $access = false;
                        $visu   = false;
                        $edit   = false;
                        switch ($value) {
                            case 'edition':
                                $edit = true;
                            case 'visualisation':
                                $visu = true;
                            case 'active':
                                $access = true;
                        }
                        $setter = 'set' . ucfirst($name);
                        $statut->{$setter}($access);
                        $statut->{$setter . 'Visualisation'}($visu);
                        $statut->{$setter . 'Edition'}($edit);
                    },
                ],
            ]]);
        }

@@ -130,10 +166,36 @@ class StatutSaisieForm extends AbstractForm
                'name'     => 'pieceJustificative',
                'options'  => [
                    'value_options' => [
                        'active'        => 'Activé mais non visible par l\'intervenant',
                        'visualisation' => 'Activé et visible par l\'intervenant',
                        'edition'       => 'Activé et modifiable par l\'intervenant',
                    ],
                ],
                'hydrator' => [
                    'getter' => function (Statut $statut, string $name) {
                        $visu = $statut->getPieceJustificativeVisualisation();
                        $edit = $statut->getPieceJustificativeEdition();
                        if ($edit && $visu) {
                            return 'edition';
                        } elseif ($visu) {
                            return 'visualisation';
                        } else {
                            return 'active';
                        }
                    },
                    'setter' => function (Statut $statut, $value, string $name) {
                        $visu = false;
                        $edit = false;
                        switch ($value) {
                            case 'edition':
                                $edit = true;
                            case 'visualisation':
                                $visu = true;
                        }
                        $statut->setPieceJustificativeVisualisation($visu);
                        $statut->setPieceJustificativeEdition($edit);
                    },
                ],
            ],
            'conseilRestreint'      => [
                'type'     => 'Select',
@@ -145,6 +207,32 @@ class StatutSaisieForm extends AbstractForm
                        'visualisation' => 'Activé et visible par l\'intervenant',
                    ],
                ],
                'hydrator' => [
                    'getter' => function (Statut $statut, string $name) {
                        $access = $statut->getConseilRestreint();
                        $visu   = $statut->getConseilRestreintVisualisation();

                        if ($visu && $access) {
                            return 'visualisation';
                        } elseif ($access) {
                            return 'active';
                        } else {
                            return 'desactive';
                        }
                    },
                    'setter' => function (Statut $statut, $value, string $name) {
                        $access = false;
                        $visu   = false;
                        switch ($value) {
                            case 'visualisation':
                                $visu = true;
                            case 'active':
                                $access = true;
                        }
                        $statut->setConseilRestreint($access);
                        $statut->setConseilRestreintVisualisation($visu);
                    },
                ],
            ],
            'conseilAcademique'     => [
                'type'     => 'Select',
@@ -156,6 +244,32 @@ class StatutSaisieForm extends AbstractForm
                        'visualisation' => 'Activé et visible par l\'intervenant',
                    ],
                ],
                'hydrator' => [
                    'getter' => function (Statut $statut, string $name) {
                        $access = $statut->getConseilAcademique();
                        $visu   = $statut->getConseilAcademiqueVisualisation();

                        if ($visu && $access) {
                            return 'visualisation';
                        } elseif ($access) {
                            return 'active';
                        } else {
                            return 'desactive';
                        }
                    },
                    'setter' => function (Statut $statut, $value, string $name) {
                        $access = false;
                        $visu   = false;
                        switch ($value) {
                            case 'visualisation':
                                $visu = true;
                            case 'active':
                                $access = true;
                        }
                        $statut->setConseilAcademique($access);
                        $statut->setConseilAcademiqueVisualisation($visu);
                    },
                ],
            ],
            'contrat'               => [
                'type'     => 'Select',
@@ -168,6 +282,39 @@ class StatutSaisieForm extends AbstractForm
                        'depot'         => 'Activé et contrat téléversable par l\'intervenant',
                    ],
                ],
                'hydrator' => [
                    'getter' => function (Statut $statut, string $name) {
                        $access = $statut->getContrat();
                        $visu   = $statut->getContratVisualisation();
                        $depot  = $statut->getContratDepot();

                        if ($depot && $visu && $access) {
                            return 'depot';
                        } elseif ($visu && $access) {
                            return 'visualisation';
                        } elseif ($access) {
                            return 'active';
                        } else {
                            return 'desactive';
                        }
                    },
                    'setter' => function (Statut $statut, $value, string $name) {
                        $access = false;
                        $visu   = false;
                        $depot  = false;
                        switch ($value) {
                            case 'depot':
                                $depot = true;
                            case 'visualisation':
                                $visu = true;
                            case 'active':
                                $access = true;
                        }
                        $statut->setContrat($access);
                        $statut->setContratVisualisation($visu);
                        $statut->setContratDepot($depot);
                    },
                ],
            ],
            'modificationServiceDu' => [
                'type'     => 'Select',
@@ -179,18 +326,45 @@ class StatutSaisieForm extends AbstractForm
                        'visualisation' => 'Activé et visible par l\'intervenant',
                    ],
                ],
                'hydrator' => [
                    'getter' => function (Statut $statut, string $name) {
                        $access = $statut->getModificationServiceDu();
                        $visu   = $statut->getModificationServiceDuVisualisation();

                        if ($visu && $access) {
                            return 'visualisation';
                        } elseif ($access) {
                            return 'active';
                        } else {
                            return 'desactive';
                        }
                    },
                    'setter' => function (Statut $statut, $value, string $name) {
                        $access = false;
                        $visu   = false;
                        switch ($value) {

                            case 'visualisation':
                                $visu = true;

                            case 'active':
                                $access = true;
                        }
                        $statut->setModificationServiceDu($access);
                        $statut->setModificationServiceDuVisualisation($visu);
                    },
                ],
            ],
        ]);

        $this->build();
        $this->setAttribute('class', 'statut');

        $this->addSubmit();
        $this->get('serviceStatutaire')->setOption('suffix', 'HETD');
        $this->get('tauxChargesPatronales')->setOption('suffix', '%');
        $this->get('conseilRestreintDureeVie')->setOption('suffix', 'an(s)');
        $this->get('conseilAcademiqueDureeVie')->setOption('suffix', 'an(s)');

        $this->addSubmit();
        $this->setLabels($labels);

        $this->setValueOptions('typeIntervenant', $this->getServiceTypeIntervenant()->getList());