Commit 39493a2f authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Lien entre utilisateur et individu :: interface

parent a5812335
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ Journal des modifications
2.1.7
-----
- Changement du fonctionnement de sursis pour les soutenances : seul la validation acteur vérifie le délai de deux mois et le sursis annule cette vérification.
- Ajout d'une interface pour lier/délier des utilisateurs sans individu à un individu.
 
2.1.6
-----
+11 −1
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ return [
                        'ajouter',
                        'ajouterFromIndividu',
                        'lier-individu',
                        'delier-individu',
                    ],
                    'privileges' => UtilisateurPrivileges::UTILISATEUR_MODIFICATION,
                ],
@@ -129,12 +130,21 @@ return [
                    'lier-individu' => [
                        'type'          => Segment::class,
                        'options'       => [
                            'route'       => '/lier-individu/:utilisateur',
                            'route'       => '/lier-individu/:utilisateur[/:individu]',
                            'defaults'    => [
                                'action' => 'lier-individu',
                            ],
                        ],
                    ],
                    'delier-individu' => [
                        'type'          => Segment::class,
                        'options'       => [
                            'route'       => '/delier-individu/:utilisateur',
                            'defaults'    => [
                                'action' => 'delier-individu',
                            ],
                        ],
                    ],
                    'creer-compte-local-individu' => [
                        'type'          => Segment::class,
                        'options'       => [
+48 −2
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ use Application\Service\UniteRecherche\UniteRechercheServiceAwareTrait;
use Application\Service\UserContextServiceAwareTrait;
use Application\Service\Utilisateur\UtilisateurServiceAwareTrait;
use Application\SourceCodeStringHelperAwareTrait;
use Doctrine\ORM\ORMException;
use Doctrine\ORM\Query\Expr;
use UnicaenApp\Exception\RuntimeException;
use UnicaenApp\Service\EntityManagerAwareTrait;
@@ -420,14 +421,48 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
    {
        $utilisateur = $this->getUtilisateurService()->getRequestedUtilisateur($this);

        /**
         * Si on a un utilisateur et un individu alors on doit réaliser le lien
         */
        $individu = $this->getIndividuService()->getRequestedIndividu($this);
        if ($individu !== null) {
            $utilisateur->setIndividu($individu);
            try {
                $this->getUtilisateurService()->getEntityManager()->flush($utilisateur);
            } catch(ORMException $e) {
                throw new RuntimeException("Un problème est survenu lors de l'enregistrement en base de donnée", 0, $e);
            }
            $vm = new ViewModel([
                'title' => "Création de lien entre un individu et l'utilisateur ".$utilisateur->getDisplayName() . " [".$utilisateur->getId()."]",
                'utilisateur' => $utilisateur,
                'individu' => $individu,
            ]);
            return $vm;
        }

        $request = $this->getRequest();
        if ($request->isPost()) {

            /**
             * Si on revient du post un individu à été selectionné et on examine pour validation
             */
            $data = $request->getPost();
            $individuId = $data['individu']['id'];
            /** @var Individu $individu */
            $individu = $this->getIndividuService()->getRepository()->find($individuId);
            $utilisateur->setIndividu($individu);
            $this->getUtilisateurService()->getEntityManager()->flush($utilisateur);
            if ($individu !== null) {
                $acteurs = $this->getActeurService()->getRepository()->findActeursByIndividu($individu);
                $roles = $individu->getRoles();

                $vm = new ViewModel([
                    "title" => "Création de lien entre un individu et l'utilisateur " . $utilisateur->getDisplayName() . " [" . $utilisateur->getId() . "]",
                    "utilisateur" => $utilisateur,
                    "individu" => $individu,
                    "acteurs" => $acteurs,
                    "roles" => $roles,
                ]);
                return $vm;
            }
        }

        $vm = new ViewModel([
@@ -435,7 +470,18 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
            'utilisateur' => $utilisateur,
        ]);
        return $vm;
    }

    public function delierIndividuAction()
    {
        $utilisateur = $this->getUtilisateurService()->getRequestedUtilisateur($this);
        $utilisateur->setIndividu(null);
        try {
            $this->getUtilisateurService()->getEntityManager()->flush($utilisateur);
        } catch (ORMException $e) {
            throw new RuntimeException("Un problème est survenu lors de l'enregistrement en base de donnée", 0, $e);
        }
        return $this->redirect()->toRoute('utilisateur/voir', ['utilisateur' => $utilisateur->getId()], [], true);
    }

}
 No newline at end of file
+1 −1
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ class Utilisateur extends AbstractUser implements UserInterface, ProviderInterfa
     * @param Individu $individu
     * @return self
     */
    public function setIndividu(Individu $individu = null)
    public function setIndividu(?Individu $individu = null)
    {
        $this->individu = $individu;

+3 −0
Original line number Diff line number Diff line
@@ -179,8 +179,11 @@ class IndividuService extends BaseService
    {
        $id = $controller->params()->fromRoute($param);
        /** @var Individu $individu */
        if ($id !== null) {
            $individu = $this->getRepository()->find($id);
            return $individu;
        }
        return null;

    }
}
 No newline at end of file
Loading