Loading module/Application/config/module.config.php +1 −0 Original line number Diff line number Diff line Loading @@ -200,6 +200,7 @@ return [ 'head_scripts' => [ '015_jquery' => 'unistrap-1.0.0/js/jquery-3.6.1.min.js', '040_bootstrap' => '', '201_' => 'vendor/chart-2.9.4/Chart.bundle.js', ], 'inline_scripts' => [ '020_app' => '', Loading module/Atelier/src/Entity/Db/Inscription.php +5 −27 Original line number Diff line number Diff line Loading @@ -7,8 +7,8 @@ use Atelier\Provider\Etat\SessionEtats; use DateTime; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Enquete\Entity\Db\Enquete; use Enquete\Entity\Db\Instance; use Enquete\Entity\HasEnqueteInterface; use Enquete\Entity\HasEnqueteTrait; use Etudiant\Entity\Db\Etudiant; use Laminas\Permissions\Acl\Resource\ResourceInterface; use UnicaenEtat\Entity\Db\HasEtatsInterface; Loading @@ -18,11 +18,13 @@ use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait; use UnicaenValidation\Entity\HasValidationsInterface; use UnicaenValidation\Entity\HasValidationsTrait; class Inscription implements HistoriqueAwareInterface, HasEtatsInterface, HasValidationsInterface, ResourceInterface { class Inscription implements HistoriqueAwareInterface, HasEtatsInterface, HasValidationsInterface, ResourceInterface, HasEnqueteInterface { use HistoriqueAwareTrait; use HasEtatsTrait; use HasValidationsTrait; use HasEnqueteTrait; const PRINCIPALE = 'principale'; const COMPLEMENTAIRE = 'complementaire'; Loading @@ -43,10 +45,6 @@ class Inscription implements HistoriqueAwareInterface, HasEtatsInterface, HasVal private ?bool $international = null; private ?string $telephone = null; private ?DateTime $validationEnquete = null; private ?Instance $enquete = null; private Collection $presences; Loading Loading @@ -168,26 +166,6 @@ class Inscription implements HistoriqueAwareInterface, HasEtatsInterface, HasVal return true; } public function getEnquete(): ?Instance { return $this->enquete; } public function setEnquete(?Instance $enquete): void { $this->enquete = $enquete; } public function getValidationEnquete(): ?DateTime { return $this->validationEnquete; } public function setValidationEnquete(?DateTime $validationEnquete): void { $this->validationEnquete = $validationEnquete; } /** MACROS ********************************************************************************************************/ public function generateTag(): string Loading module/Enquete/config/merged/resultat.config.php 0 → 100644 +87 −0 Original line number Diff line number Diff line <?php namespace UnicaenEnquete; use Enquete\Controller\ResultatController; use Enquete\Controller\ResultatControllerFactory; use Enquete\Provider\Privilege\EnquetePrivileges; use Enquete\Service\Resultat\ResultatService; use Enquete\Service\Resultat\ResultatServiceFactory; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; use UnicaenPrivilege\Guard\PrivilegeController; return [ 'bjyauthorize' => [ 'guards' => [ PrivilegeController::class => [ [ 'controller' => ResultatController::class, 'action' => [ 'resultats', ], 'privileges' => [ EnquetePrivileges::ENQUETE_INDEX, ], ], ], ], ], 'router' => [ 'routes' => [ 'enquete' => [ 'type' => Literal::class, 'options' => [ 'route' => '/enquete', 'defaults' => [ ], ], 'may_terminate' => false, 'child_routes' => [ 'resultats' => [ 'type' => Segment::class, 'options' => [ 'route' => '/resultats/:enquete', 'defaults' => [ /** @see ResultatController::resultatsAction() */ 'controller' => ResultatController::class, 'action' => 'resultats', ], ], 'may_terminate' => true, 'child_routes' => [ ], ], ], ], ], ], 'console' => [ 'router' => [ 'routes' => [ ], ], ], 'service_manager' => [ 'factories' => [ ResultatService::class => ResultatServiceFactory::class, ], ], 'controllers' => [ 'factories' => [ ResultatController::class => ResultatControllerFactory::class, ], ], 'form_elements' => [ 'factories' => [ ], ], 'hydrators' => [ 'factories' => [ ], ] ]; No newline at end of file module/Enquete/src/Controller/ResultatController.php 0 → 100644 +66 −0 Original line number Diff line number Diff line <?php namespace Enquete\Controller; use Atelier\Service\Inscription\InscriptionServiceAwareTrait; use Enquete\Entity\Db\Instance; use Enquete\Entity\Db\Question; use Enquete\Service\Enquete\EnqueteServiceAwareTrait; use Enquete\Service\Resultat\ResultatServiceAwareTrait; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; class ResultatController extends AbstractActionController { use EnqueteServiceAwareTrait; use InscriptionServiceAwareTrait; use ResultatServiceAwareTrait; public function resultatsAction(): ViewModel { $enquete = $this->getEnqueteService()->getRequestedEnquete($this); $inscriptions = $this->getInscriptionService()->getInscriptions(); $resultats = []; foreach ($inscriptions as $inscription) { if ($inscription->getEnquete() !== null && $inscription->getValidationEnquete() !== null) $resultats[] = $inscription->getEnquete(); } /** TODO envoyer dans le service ($resultats => [$enquete, $resuts, $counts]) */ $results = []; $counts = []; /** @var Question $question */ foreach ($enquete->getQuestions() as $question) { $counts[$question->getId()]["sans"] = []; $counts[$question->getId()]["avec"] = []; $results[$question->getId()] = []; if ($question->estNonHistorise() and ($question->getGroupe() === null or $question->getGroupe()->estNonHistorise())) { /** @var Instance $item */ foreach ($resultats as $item) { if ($item->estNonHistorise()) { $reponse = $item->getReponseFor($question); if ($reponse) { if ($reponse->getReponse()) $results[$question->getId()][$reponse->getReponse()][] = $item->getId(); if ($reponse->getReponse() === "0") { $counts[$question->getId()]["sans"][] = $item->getId(); } else { $counts[$question->getId()]["avec"][] = $item->getId(); } } } } } } return new ViewModel([ 'enquete' => $enquete, 'results' => $results, 'counts' => $counts, 'elements' => $inscriptions, ]); } } No newline at end of file module/Enquete/src/Controller/ResultatControllerFactory.php 0 → 100644 +37 −0 Original line number Diff line number Diff line <?php namespace Enquete\Controller; use Atelier\Service\Inscription\InscriptionService; use Enquete\Service\Enquete\EnqueteService; use Enquete\Service\Resultat\ResultatService; use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; use Psr\Container\NotFoundExceptionInterface; class ResultatControllerFactory { /** * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function __invoke(ContainerInterface $container): ResultatController { /** * @var EnqueteService $enqueteService * @var InscriptionService $inscriptionService * @var ResultatService $resultatService */ $enqueteService = $container->get(EnqueteService::class); $inscriptionService = $container->get(InscriptionService::class); $resultatService = $container->get(ResultatService::class); $controller = new ResultatController(); $controller->setEnqueteService($enqueteService); $controller->setInscriptionService($inscriptionService); $controller->setResultatService($resultatService); return $controller; } } No newline at end of file Loading
module/Application/config/module.config.php +1 −0 Original line number Diff line number Diff line Loading @@ -200,6 +200,7 @@ return [ 'head_scripts' => [ '015_jquery' => 'unistrap-1.0.0/js/jquery-3.6.1.min.js', '040_bootstrap' => '', '201_' => 'vendor/chart-2.9.4/Chart.bundle.js', ], 'inline_scripts' => [ '020_app' => '', Loading
module/Atelier/src/Entity/Db/Inscription.php +5 −27 Original line number Diff line number Diff line Loading @@ -7,8 +7,8 @@ use Atelier\Provider\Etat\SessionEtats; use DateTime; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Enquete\Entity\Db\Enquete; use Enquete\Entity\Db\Instance; use Enquete\Entity\HasEnqueteInterface; use Enquete\Entity\HasEnqueteTrait; use Etudiant\Entity\Db\Etudiant; use Laminas\Permissions\Acl\Resource\ResourceInterface; use UnicaenEtat\Entity\Db\HasEtatsInterface; Loading @@ -18,11 +18,13 @@ use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait; use UnicaenValidation\Entity\HasValidationsInterface; use UnicaenValidation\Entity\HasValidationsTrait; class Inscription implements HistoriqueAwareInterface, HasEtatsInterface, HasValidationsInterface, ResourceInterface { class Inscription implements HistoriqueAwareInterface, HasEtatsInterface, HasValidationsInterface, ResourceInterface, HasEnqueteInterface { use HistoriqueAwareTrait; use HasEtatsTrait; use HasValidationsTrait; use HasEnqueteTrait; const PRINCIPALE = 'principale'; const COMPLEMENTAIRE = 'complementaire'; Loading @@ -43,10 +45,6 @@ class Inscription implements HistoriqueAwareInterface, HasEtatsInterface, HasVal private ?bool $international = null; private ?string $telephone = null; private ?DateTime $validationEnquete = null; private ?Instance $enquete = null; private Collection $presences; Loading Loading @@ -168,26 +166,6 @@ class Inscription implements HistoriqueAwareInterface, HasEtatsInterface, HasVal return true; } public function getEnquete(): ?Instance { return $this->enquete; } public function setEnquete(?Instance $enquete): void { $this->enquete = $enquete; } public function getValidationEnquete(): ?DateTime { return $this->validationEnquete; } public function setValidationEnquete(?DateTime $validationEnquete): void { $this->validationEnquete = $validationEnquete; } /** MACROS ********************************************************************************************************/ public function generateTag(): string Loading
module/Enquete/config/merged/resultat.config.php 0 → 100644 +87 −0 Original line number Diff line number Diff line <?php namespace UnicaenEnquete; use Enquete\Controller\ResultatController; use Enquete\Controller\ResultatControllerFactory; use Enquete\Provider\Privilege\EnquetePrivileges; use Enquete\Service\Resultat\ResultatService; use Enquete\Service\Resultat\ResultatServiceFactory; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; use UnicaenPrivilege\Guard\PrivilegeController; return [ 'bjyauthorize' => [ 'guards' => [ PrivilegeController::class => [ [ 'controller' => ResultatController::class, 'action' => [ 'resultats', ], 'privileges' => [ EnquetePrivileges::ENQUETE_INDEX, ], ], ], ], ], 'router' => [ 'routes' => [ 'enquete' => [ 'type' => Literal::class, 'options' => [ 'route' => '/enquete', 'defaults' => [ ], ], 'may_terminate' => false, 'child_routes' => [ 'resultats' => [ 'type' => Segment::class, 'options' => [ 'route' => '/resultats/:enquete', 'defaults' => [ /** @see ResultatController::resultatsAction() */ 'controller' => ResultatController::class, 'action' => 'resultats', ], ], 'may_terminate' => true, 'child_routes' => [ ], ], ], ], ], ], 'console' => [ 'router' => [ 'routes' => [ ], ], ], 'service_manager' => [ 'factories' => [ ResultatService::class => ResultatServiceFactory::class, ], ], 'controllers' => [ 'factories' => [ ResultatController::class => ResultatControllerFactory::class, ], ], 'form_elements' => [ 'factories' => [ ], ], 'hydrators' => [ 'factories' => [ ], ] ]; No newline at end of file
module/Enquete/src/Controller/ResultatController.php 0 → 100644 +66 −0 Original line number Diff line number Diff line <?php namespace Enquete\Controller; use Atelier\Service\Inscription\InscriptionServiceAwareTrait; use Enquete\Entity\Db\Instance; use Enquete\Entity\Db\Question; use Enquete\Service\Enquete\EnqueteServiceAwareTrait; use Enquete\Service\Resultat\ResultatServiceAwareTrait; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; class ResultatController extends AbstractActionController { use EnqueteServiceAwareTrait; use InscriptionServiceAwareTrait; use ResultatServiceAwareTrait; public function resultatsAction(): ViewModel { $enquete = $this->getEnqueteService()->getRequestedEnquete($this); $inscriptions = $this->getInscriptionService()->getInscriptions(); $resultats = []; foreach ($inscriptions as $inscription) { if ($inscription->getEnquete() !== null && $inscription->getValidationEnquete() !== null) $resultats[] = $inscription->getEnquete(); } /** TODO envoyer dans le service ($resultats => [$enquete, $resuts, $counts]) */ $results = []; $counts = []; /** @var Question $question */ foreach ($enquete->getQuestions() as $question) { $counts[$question->getId()]["sans"] = []; $counts[$question->getId()]["avec"] = []; $results[$question->getId()] = []; if ($question->estNonHistorise() and ($question->getGroupe() === null or $question->getGroupe()->estNonHistorise())) { /** @var Instance $item */ foreach ($resultats as $item) { if ($item->estNonHistorise()) { $reponse = $item->getReponseFor($question); if ($reponse) { if ($reponse->getReponse()) $results[$question->getId()][$reponse->getReponse()][] = $item->getId(); if ($reponse->getReponse() === "0") { $counts[$question->getId()]["sans"][] = $item->getId(); } else { $counts[$question->getId()]["avec"][] = $item->getId(); } } } } } } return new ViewModel([ 'enquete' => $enquete, 'results' => $results, 'counts' => $counts, 'elements' => $inscriptions, ]); } } No newline at end of file
module/Enquete/src/Controller/ResultatControllerFactory.php 0 → 100644 +37 −0 Original line number Diff line number Diff line <?php namespace Enquete\Controller; use Atelier\Service\Inscription\InscriptionService; use Enquete\Service\Enquete\EnqueteService; use Enquete\Service\Resultat\ResultatService; use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; use Psr\Container\NotFoundExceptionInterface; class ResultatControllerFactory { /** * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function __invoke(ContainerInterface $container): ResultatController { /** * @var EnqueteService $enqueteService * @var InscriptionService $inscriptionService * @var ResultatService $resultatService */ $enqueteService = $container->get(EnqueteService::class); $inscriptionService = $container->get(InscriptionService::class); $resultatService = $container->get(ResultatService::class); $controller = new ResultatController(); $controller->setEnqueteService($enqueteService); $controller->setInscriptionService($inscriptionService); $controller->setResultatService($resultatService); return $controller; } } No newline at end of file