Loading src/UnicaenIndicateur/Controller/IndexController.php +4 −1 Original line number Diff line number Diff line Loading @@ -8,17 +8,20 @@ use UnicaenIndicateur\Entity\Db\Abonnement; use UnicaenIndicateur\Entity\Db\Indicateur; use UnicaenIndicateur\Service\Abonnement\AbonnementServiceAwareTrait; use UnicaenIndicateur\Service\Indicateur\IndicateurServiceAwareTrait; use UnicaenIndicateur\Service\Perimetre\PerimetreServiceAwareTrait; use UnicaenUtilisateur\Service\User\UserServiceAwareTrait; class IndexController extends AbstractActionController { use AbonnementServiceAwareTrait; use IndicateurServiceAwareTrait; use PerimetreServiceAwareTrait; use UserServiceAwareTrait; public function indexAction() : ViewModel { $user = $this->getUserService()->getConnectedUser(); $role = $this->getUserService()->getConnectedRole(); $perimetres = $this->getPerimetreService()->getPerimetres($user, $role); $abonnements = $this->getAbonnementService()->getAbonnementsByUser($user); $abonnements = array_filter($abonnements, function (Abonnement $abonnement) use ($role) { Loading @@ -30,7 +33,7 @@ class IndexController extends AbstractActionController { $result = []; foreach ($abonnements as $abonnement) { $indicateur = $abonnement->getIndicateur(); $data = $this->getIndicateurService()->getIndicateurData($indicateur); $data = $this->getIndicateurService()->getIndicateurData($indicateur, $perimetres); $result[$indicateur->getId()] = count($data[1]); } Loading src/UnicaenIndicateur/Controller/IndexControllerFactory.php +8 −1 Original line number Diff line number Diff line Loading @@ -2,11 +2,12 @@ namespace UnicaenIndicateur\Controller; use Interop\Container\ContainerInterface; use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; use Psr\Container\NotFoundExceptionInterface; use UnicaenIndicateur\Service\Abonnement\AbonnementService; use UnicaenIndicateur\Service\Indicateur\IndicateurService; use UnicaenIndicateur\Service\Perimetre\PerimetreServiceInterface; use UnicaenUtilisateur\Service\User\UserService; class IndexControllerFactory { Loading @@ -19,6 +20,11 @@ class IndexControllerFactory { */ public function __invoke(ContainerInterface $container) : IndexController { $config = $container->get('config'); $perimetreServiceKey = $container->get($config['unicaen-indicateur']['perimetreService']); /** @var PerimetreServiceInterface $perimetreService */ $perimetreService = $container->get($perimetreServiceKey::class); /** * @var AbonnementService $abonnementService * @var IndicateurService $indicateurService Loading @@ -31,6 +37,7 @@ class IndexControllerFactory { $controller = new IndexController(); $controller->setAbonnementService($abonnementService); $controller->setIndicateurService($indicateurService); $controller->setPerimetreService($perimetreService); $controller->setUserService($userService); return $controller; } Loading src/UnicaenIndicateur/Controller/IndicateurController.php +13 −3 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace UnicaenIndicateur\Controller; use DateTime; use Exception; use Laminas\Http\Response; use UnicaenIndicateur\Entity\Db\Indicateur; use UnicaenIndicateur\Entity\Db\Categorie; Loading Loading @@ -70,9 +71,18 @@ class IndicateurController extends AbstractActionController { $role = $this->getUserService()->getConnectedRole(); $perimetres = $this->getPerimetreService()->getPerimetres($user, $role); try { $exists = $this->getIndicateurService()->verifierExistanceMaterializedView($indicateur->getViewId()); if ($exists !== true) { $this->getIndicateurService()->createView($indicateur); } else { $result = $this->getIndicateurService()->getIndicateurData($indicateur, $perimetres); } } catch (Exception $e) { $this->getIndicateurService()->refresh($indicateur); $exists = $this->getIndicateurService()->verifierExistanceMaterializedView($indicateur->getViewId()); if ($exists === true) $result = $this->getIndicateurService()->getIndicateurData($indicateur, $perimetres); } return new ViewModel([ 'indicateur' => $indicateur, Loading src/UnicaenIndicateur/Service/Indicateur/IndicateurService.php +8 −3 Original line number Diff line number Diff line Loading @@ -79,11 +79,9 @@ class IndicateurService */ public function fetch(Indicateur $indicateur, ?array $userPerimetre = null): ?array { $exist = $this->verifierExistanceMaterializedView($indicateur->getViewId()); if ($exist === false) return null; $sql = "SELECT * FROM " . $indicateur->getViewId() . " WHERE 1=1"; if ($indicateur->getPerimetre() !== null and $indicateur->getPerimetre() !== "aucun") { Loading @@ -109,8 +107,15 @@ class IndicateurService $res = $this->getObjectManager()->getConnection()->executeQuery($sql, [], []); $tmp = $res->fetchAllAssociative(); } catch (DBA_Driver_Exception $e) { try { $this->refresh($indicateur); $this->getObjectManager()->getConnection()->prepare($sql); $res = $this->getObjectManager()->getConnection()->executeQuery($sql, [], []); $tmp = $res->fetchAllAssociative(); } catch(Exception $e) { throw new RuntimeException("Un problème est survenu lors de la récupération de des données de l'indicateur.", 0, $e); } } return $tmp; } Loading Loading
src/UnicaenIndicateur/Controller/IndexController.php +4 −1 Original line number Diff line number Diff line Loading @@ -8,17 +8,20 @@ use UnicaenIndicateur\Entity\Db\Abonnement; use UnicaenIndicateur\Entity\Db\Indicateur; use UnicaenIndicateur\Service\Abonnement\AbonnementServiceAwareTrait; use UnicaenIndicateur\Service\Indicateur\IndicateurServiceAwareTrait; use UnicaenIndicateur\Service\Perimetre\PerimetreServiceAwareTrait; use UnicaenUtilisateur\Service\User\UserServiceAwareTrait; class IndexController extends AbstractActionController { use AbonnementServiceAwareTrait; use IndicateurServiceAwareTrait; use PerimetreServiceAwareTrait; use UserServiceAwareTrait; public function indexAction() : ViewModel { $user = $this->getUserService()->getConnectedUser(); $role = $this->getUserService()->getConnectedRole(); $perimetres = $this->getPerimetreService()->getPerimetres($user, $role); $abonnements = $this->getAbonnementService()->getAbonnementsByUser($user); $abonnements = array_filter($abonnements, function (Abonnement $abonnement) use ($role) { Loading @@ -30,7 +33,7 @@ class IndexController extends AbstractActionController { $result = []; foreach ($abonnements as $abonnement) { $indicateur = $abonnement->getIndicateur(); $data = $this->getIndicateurService()->getIndicateurData($indicateur); $data = $this->getIndicateurService()->getIndicateurData($indicateur, $perimetres); $result[$indicateur->getId()] = count($data[1]); } Loading
src/UnicaenIndicateur/Controller/IndexControllerFactory.php +8 −1 Original line number Diff line number Diff line Loading @@ -2,11 +2,12 @@ namespace UnicaenIndicateur\Controller; use Interop\Container\ContainerInterface; use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; use Psr\Container\NotFoundExceptionInterface; use UnicaenIndicateur\Service\Abonnement\AbonnementService; use UnicaenIndicateur\Service\Indicateur\IndicateurService; use UnicaenIndicateur\Service\Perimetre\PerimetreServiceInterface; use UnicaenUtilisateur\Service\User\UserService; class IndexControllerFactory { Loading @@ -19,6 +20,11 @@ class IndexControllerFactory { */ public function __invoke(ContainerInterface $container) : IndexController { $config = $container->get('config'); $perimetreServiceKey = $container->get($config['unicaen-indicateur']['perimetreService']); /** @var PerimetreServiceInterface $perimetreService */ $perimetreService = $container->get($perimetreServiceKey::class); /** * @var AbonnementService $abonnementService * @var IndicateurService $indicateurService Loading @@ -31,6 +37,7 @@ class IndexControllerFactory { $controller = new IndexController(); $controller->setAbonnementService($abonnementService); $controller->setIndicateurService($indicateurService); $controller->setPerimetreService($perimetreService); $controller->setUserService($userService); return $controller; } Loading
src/UnicaenIndicateur/Controller/IndicateurController.php +13 −3 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace UnicaenIndicateur\Controller; use DateTime; use Exception; use Laminas\Http\Response; use UnicaenIndicateur\Entity\Db\Indicateur; use UnicaenIndicateur\Entity\Db\Categorie; Loading Loading @@ -70,9 +71,18 @@ class IndicateurController extends AbstractActionController { $role = $this->getUserService()->getConnectedRole(); $perimetres = $this->getPerimetreService()->getPerimetres($user, $role); try { $exists = $this->getIndicateurService()->verifierExistanceMaterializedView($indicateur->getViewId()); if ($exists !== true) { $this->getIndicateurService()->createView($indicateur); } else { $result = $this->getIndicateurService()->getIndicateurData($indicateur, $perimetres); } } catch (Exception $e) { $this->getIndicateurService()->refresh($indicateur); $exists = $this->getIndicateurService()->verifierExistanceMaterializedView($indicateur->getViewId()); if ($exists === true) $result = $this->getIndicateurService()->getIndicateurData($indicateur, $perimetres); } return new ViewModel([ 'indicateur' => $indicateur, Loading
src/UnicaenIndicateur/Service/Indicateur/IndicateurService.php +8 −3 Original line number Diff line number Diff line Loading @@ -79,11 +79,9 @@ class IndicateurService */ public function fetch(Indicateur $indicateur, ?array $userPerimetre = null): ?array { $exist = $this->verifierExistanceMaterializedView($indicateur->getViewId()); if ($exist === false) return null; $sql = "SELECT * FROM " . $indicateur->getViewId() . " WHERE 1=1"; if ($indicateur->getPerimetre() !== null and $indicateur->getPerimetre() !== "aucun") { Loading @@ -109,8 +107,15 @@ class IndicateurService $res = $this->getObjectManager()->getConnection()->executeQuery($sql, [], []); $tmp = $res->fetchAllAssociative(); } catch (DBA_Driver_Exception $e) { try { $this->refresh($indicateur); $this->getObjectManager()->getConnection()->prepare($sql); $res = $this->getObjectManager()->getConnection()->executeQuery($sql, [], []); $tmp = $res->fetchAllAssociative(); } catch(Exception $e) { throw new RuntimeException("Un problème est survenu lors de la récupération de des données de l'indicateur.", 0, $e); } } return $tmp; } Loading