Commit c565c419 authored by Thomas Hamel's avatar Thomas Hamel
Browse files

Merge branch 'features_module_formation' into release_8.6.1

parents dc60a2b2 c3c49eb8
Loading
Loading
Loading
Loading
+6 −0
Changes for doc/release-notes/8.6.1/01_divers.sql: 6 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -176,3 +176,9 @@ SET document_corps = '<h1 style="text-align: center;">Convention de formation do
<h2>Validations accordées à la convention de formation doctorale</h2>
<p>VAR[AdmissionConventionFormationDoctorale#Operations]</p>'
WHERE code = 'ADMISSION_CONVENTION_FORMATION_DOCTORALE';

--
-- Formation
--
ALTER TABLE formation_session
    ADD COLUMN date_publication timestamp;
 No newline at end of file
+20 −0
Changes for module/Formation/config/others/session.config.php: 20 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -57,6 +57,15 @@ return [
                        SessionPrivileges::SESSION_INDEX,
                    ],
                ],
                [
                    'controller' => SessionController::class,
                    'action' => [
                        'generer-export-csv'
                    ],
                    'privileges' => [
                        SessionPrivileges::SESSION_INDEX,
                    ],
                ],
                [
                    'controller' => SessionController::class,
                    'action' => [
@@ -311,6 +320,17 @@ return [
                                    ],
                                ],
                            ],
                            'generer-export-csv' => [
                                'type'          => Segment::class,
                                'options'       => [
                                    'route'    => '/generer-export-csv',
                                    'defaults' => [
                                        /** @see SessionController::genererExportCsvAction() */
                                        'controller'    => SessionController::class,
                                        'action'        => 'generer-export-csv',
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
+28 −5
Changes for module/Formation/src/Formation/Assertion/Inscription/InscriptionAssertion.php: 28 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -4,15 +4,18 @@ namespace Formation\Assertion\Inscription;

use Application\Assertion\AbstractAssertion;
use Application\Entity\Db\Role;
use Application\Service\AnneeUniv\AnneeUnivServiceAwareTrait;
use Application\Service\UserContextServiceAwareInterface;
use DateInterval;
use DateTime;
use Doctorant\Service\DoctorantServiceAwareTrait;
use Exception;
use Formation\Entity\Db\Etat;
use Formation\Entity\Db\Inscription;
use Formation\Entity\Db\Session;
use Formation\Provider\Privilege\InscriptionPrivileges;
use Formation\Service\Inscription\InscriptionServiceAwareTrait;
use Formation\Service\Session\SessionServiceAwareTrait;
use JetBrains\PhpStorm\Pure;
use Laminas\Permissions\Acl\Assertion\AssertionInterface;
use Laminas\Permissions\Acl\Resource\ResourceInterface;
@@ -23,6 +26,9 @@ class InscriptionAssertion extends AbstractAssertion implements AssertionInterf
{
    use DoctorantServiceAwareTrait;
    use InscriptionServiceAwareTrait;
    use InscriptionServiceAwareTrait;
    use AnneeUnivServiceAwareTrait;
    use SessionServiceAwareTrait;

    private ?int $delaiDescinscription = null;

@@ -73,6 +79,22 @@ class InscriptionAssertion extends AbstractAssertion implements AssertionInterf
        if($sessionId) $inscription = $this->getInscriptionService()->getRepository()->find($sessionId);

        switch($action) {
            case 'ajouter' :
                $doctorantId = (($this->getMvcEvent()->getRouteMatch()->getParam('doctorant')));
                if ($inscription === null && $doctorantId) {
                    $sessionId = (($this->getMvcEvent()->getRouteMatch()->getParam('session')));
                    if($sessionId){
                        $doctorant = $this->doctorantService->getRepository()->find($doctorantId);
                        $session = $this->sessionService->getRepository()->find($sessionId);

                        $inscription = new Inscription();
                        $inscription->setDoctorant($doctorant);
                        $inscription->setSession($session);
                        return $this->scopeValide($inscription);
                    }
                    return false;
                }
                return true;
            case 'desinscription' :
                if ($inscription !== null) {
                    return $this->canDesinscrire($inscription);
@@ -89,9 +111,11 @@ class InscriptionAssertion extends AbstractAssertion implements AssertionInterf
            return false;
        }

        switch ($privilege) {
            case InscriptionPrivileges::INSCRIPTION_AJOUTER :
                return $this->canDesinscrire($entity);
        $inscription = $entity;

        if ($privilege == InscriptionPrivileges::INSCRIPTION_AJOUTER) {
            if ($inscription->getHistoCreateur()) return $this->canDesinscrire($entity);
            return $this->scopeValide($inscription);
        }

        return true;
@@ -125,13 +149,12 @@ class InscriptionAssertion extends AbstractAssertion implements AssertionInterf
            return false;
        }

        switch ($role->getRoleId()) {
        switch ($role->getCode()) {
            case Role::CODE_DOCTORANT :
                $doctorant = $inscription->getDoctorant();
                $userDoctorant = $this->doctorantService->getRepository()->findOneByIndividu($individu);
                return $doctorant === $userDoctorant;
        }
        return true;

    }
}
 No newline at end of file
+8 −0
Changes for module/Formation/src/Formation/Assertion/Inscription/InscriptionAssertionFactory.php: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -2,9 +2,11 @@

namespace Formation\Assertion\Inscription;

use Application\Service\AnneeUniv\AnneeUnivService;
use Doctorant\Service\DoctorantService;
use Formation\Provider\Parametre\FormationParametres;
use Formation\Service\Inscription\InscriptionService;
use Formation\Service\Session\SessionService;
use Laminas\Mvc\Application;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\ContainerInterface;
@@ -23,14 +25,20 @@ class InscriptionAssertionFactory {
         * @see DoctorantService $doctorantService
         * @see InscriptionService $inscriptionService
         * @see ParametreService $parametreService
         * @see AnneeUnivService $anneeUnivService
         * @see SessionService $sessionService
         */
        $doctorantService = $container->get(DoctorantService::class);
        $inscriptionService = $container->get(InscriptionService::class);
        $parametreService = $container->get(ParametreService::class);
        $anneeUnivService = $container->get(AnneeUnivService::class);
        $sessionService = $container->get(SessionService::class);

        $assertion = new InscriptionAssertion();
        $assertion->setDoctorantService($doctorantService);
        $assertion->setInscriptionService($inscriptionService);
        $assertion->setAnneeUnivService($anneeUnivService);
        $assertion->setSessionService($sessionService);
        $assertion->setDelaiDescinscription($parametreService->getValeurForParametre(FormationParametres::CATEGORIE, FormationParametres::DELAI_ANNULATION_INSCRIPTION));

        /* @var $application Application */
+1 −6
Changes for module/Formation/src/Formation/Assertion/Session/SessionAssertion.php: 1 added line, 6 removed lines.
Original line number Diff line number Diff line
@@ -76,13 +76,8 @@ class SessionAssertion extends AbstractAssertion implements AssertionInterface,

        switch ($role->getCode()) {
            case Role::CODE_DOCTORANT :
                $inscrits = $session->getInscriptions()->toArray();
                $userDoctorant = $this->doctorantService->getRepository()->findOneByIndividu($individu);
                foreach($inscrits as $inscrit){
                    /** @var Inscription $inscrit */
                    if($inscrit->getDoctorant() === $userDoctorant) return true;
                }
                return false;
                return $session->estInscrit($userDoctorant);
        }
        return true;
    }
Loading