Commit 5bb92ffe authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Notions de perimètres ok

parent 46bb22b5
Loading
Loading
Loading
Loading
Loading
+24 −12
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ use UnicaenIndicateur\Form\Indicateur\IndicateurFormAwareTrait;
use UnicaenIndicateur\Service\Abonnement\AbonnementServiceAwareTrait;
use UnicaenIndicateur\Service\Indicateur\IndicateurServiceAwareTrait;
use UnicaenApp\View\Model\CsvModel;
use UnicaenIndicateur\Service\Perimetre\PerimetreServiceAwareTrait;
use UnicaenMail\Service\Mail\MailServiceAwareTrait;
use UnicaenUtilisateur\Service\User\UserServiceAwareTrait;
use Laminas\Http\Request;
@@ -21,6 +22,7 @@ class IndicateurController extends AbstractActionController {
    use UserServiceAwareTrait;
    use AbonnementServiceAwareTrait;
    use MailServiceAwareTrait;
    use PerimetreServiceAwareTrait;

    use IndicateurFormAwareTrait;

@@ -63,18 +65,28 @@ class IndicateurController extends AbstractActionController {
        $indicateur = $this->getIndicateurService()->getRequestedIndicateur($this);
        $mails = $this->getMailService()->getMailsByMotClef($indicateur->generateTag());

        $userStructurePerimetre = [12,5];
        $userRolePerimetre = [1,15];

        $userPerimetre = null;
        switch ($indicateur->getPerimetre()) {
            case Indicateur::PERIMETRE_STRUCTURE:
                $userPerimetre = $userStructurePerimetre;
                break;
            case Indicateur::PERIMETRE_ROLE:
                $userPerimetre = $userRolePerimetre;
                break;
        }
        $user = $this->getUserService()->getConnectedUser();
        $role = $this->getUserService()->getConnectedRole();

        $perimetres = $this->getPerimetreService()->getPerimetres($user, $role);

        $indicateurPerimetre = $indicateur->getPerimetre();
        $perimetreValides = array_filter($perimetres, function(string $p) use ($indicateurPerimetre) {
            return (strtolower(explode('_', $p)[0]) === strtolower($indicateurPerimetre));
        });
        $userPerimetre = array_map(function ($p) { return explode('_', $p)[1];}, $perimetreValides);

//        $userPerimetre = null;
//        switch ($indicateur->getPerimetre()) {
//            case Indicateur::PERIMETRE_STRUCTURE:
////                $userPerimetre = $user->getPerimetreStructure();
//                $userPerimetre = $userStructurePerimetre;
//                break;
//            case Indicateur::PERIMETRE_ROLE:
////                $userPerimetre = $user->getPerimetreRole();
//                $userPerimetre = $userRolePerimetre;
//                break;
//        }

        $exists = $this->getIndicateurService()->verifierExistanceMaterializedView($indicateur->getViewId());
        if ($exists === true) $result = $this->getIndicateurService()->getIndicateurData($indicateur, $userPerimetre);
+7 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ use UnicaenIndicateur\Form\Indicateur\IndicateurForm;
use UnicaenIndicateur\Service\Abonnement\AbonnementService;
use UnicaenIndicateur\Service\Indicateur\IndicateurService;
use Interop\Container\ContainerInterface;
use UnicaenIndicateur\Service\Perimetre\PerimetreServiceInterface;
use UnicaenMail\Service\Mail\MailService;
use UnicaenUtilisateur\Service\User\UserService;;

@@ -26,12 +27,17 @@ class IndicateurControllerFactory {
         * @var IndicateurService $indicateurService
         * @var MailService $mailService
         * @var UserService $userService
         * @var PerimetreServiceInterface $perimetreService
         */
        $abonnementService = $container->get(AbonnementService::class);
        $indicateurService = $container->get(IndicateurService::class);
        $mailService = $container->get(MailService::class);
        $userService = $container->get(UserService::class);

        $config = $container->get('config');
        $perimetreServiceKey = $container->get($config['unicaen-indicateur']['perimetreService']);
        $perimetreService = $container->get($perimetreServiceKey::class);

        /**
         * @var IndicateurForm $indicateurForm
         */
@@ -41,6 +47,7 @@ class IndicateurControllerFactory {
        $controller->setAbonnementService($abonnementService);
        $controller->setIndicateurService($indicateurService);
        $controller->setMailService($mailService);
        $controller->setPerimetreService($perimetreService);
        $controller->setUserService($userService);
        $controller->setIndicateurForm($indicateurForm);
        return $controller;
+22 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenIndicateur\Service\Perimetre;

use Application\Service\Perimetre\PerimetreService;

trait PerimetreServiceAwareTrait
{
    private PerimetreService $perimetreService;

    public function getPerimetreService(): PerimetreService
    {
        return $this->perimetreService;
    }

    public function setPerimetreService(PerimetreService $perimetreService): void
    {
        $this->perimetreService = $perimetreService;
    }


}
 No newline at end of file
+11 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenIndicateur\Service\Perimetre;

use UnicaenUtilisateur\Entity\Db\AbstractRole;
use UnicaenUtilisateur\Entity\Db\AbstractUser;

interface PerimetreServiceInterface {

    public function getPerimetres(AbstractUser $user, AbstractRole $role) : array;
}
 No newline at end of file