Commit 1d2d943c authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Changement de gestion de la validation maintenant reportée dans la bibliothèque

parent 5a48b1c5
Loading
Loading
Loading
Loading
Loading
+1 −1

File changed.

Preview size limit exceeded, changes collapsed.

+34 −6
Original line number Diff line number Diff line
@@ -97,7 +97,11 @@ Elle regroupe les réponses pour chaque question d'un même questionnaire.
```php
    private ?Enquete $enquete = null;
    private Collection $reponses;
    private ?DateTime $validation = null;
```

La validation est un simple horodatage.

### `Reponse`

Une réponse represente les éléments répondus (évaluation et commentaire) pour une question et un questionnaire.
@@ -120,9 +124,37 @@ La biliothèque fournit une interface pour la partie réponse sous la forme d'un

La partie statistique propose de dépouiller de façon synthétique les résultats d'une enquête dans un contexte donné.

Pour chaque question on retrouve trois types de résultats :
1. le taux de participation avec comme mesure : sans réponse, sans avis et avec avis
2. le taux de satisfaction ne considérant que les réponses données et en exluant les sans avis
3. les commentaires associés

Pour chaque type de résultats on retroue les données sous trois formes :
1. les données sous forme tabulaire
2. les données sous forme graphique
3. les données sous forme d'export csv 


![exemple de réponse](img/statistique1.png)
![exemple de réponse](img/statistique2.png)

### prérequis techniques

Comme indiqué en introduction, les représentations exploite la bibliothèque `Chart.js` qu'il faut installer dans votre application.
Pour exemple, il peut être installé dans le répertoire `public/vendor` et il faut préciser dans `module.config.php` le chargement de la bibliothèque en entête.

```php
    ...
    'public_files' => [
        'head_scripts' => [
            '201_' => 'vendor/chart-2.9.3/Chart.bundle.js',
        ],
    ],
    ...
```

### Dépuoillage et interface/trait

La méthode dépouillant les résultats `ResultatService::generateResultatArray(Enquete $enquete, array $elements)` utilise deux paramètres :
1. `$enquete` qui permet de filtrer les réponses qui ne reposerait pas sur l'enquete donnée (en cas de changement d'enquête par exemple)
2. `$elements` qui est un tableau d'entité ayant une `Instance` d'attachée
@@ -139,12 +171,8 @@ use UnicaenEnquete\Entity\Db\Instance;

interface HasEnqueteInterface
{

    //private ?DateTime $validationEnquete = null;
    //private ?Instance $enquete = null;
    
    public function getValidationEnquete(): ?DateTime;
    public function setValidationEnquete(?DateTime $validationEnquete): void;
    public function getEnquete(): ?Instance;
    public function setEnquete(?Instance $enquete): void;

@@ -153,10 +181,10 @@ interface HasEnqueteInterface

**N.B. :** Attention la méthode de dépouillage est prévu pour exploiter des instances étant validées.



# Aides de vue founies

A écrire

# Version et changelog 

**A venir à partir de la version 1.0.0 ** 
+6 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace UnicaenEnquete\Controller;

use DateTime;
use Laminas\Http\Response;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
@@ -75,6 +76,11 @@ class InstanceController extends AbstractActionController
        if ($request->isPost()) {
            $data = $request->getPost();
            $this->getInstanceService()->updateReponses($instance, $data);

            if (isset($data["valider"])) {
                $instance->setValidation(new DateTime());
                $this->getInstanceService()->update($instance);
            }
        }

        $retour = $this->params()->fromQuery('retour');
+12 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace UnicaenEnquete\Entity\Db;

use DateTime;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface;
@@ -14,6 +15,7 @@ class Instance implements HistoriqueAwareInterface
    private ?int $id = null;
    private ?Enquete $enquete = null;
    private Collection $reponses;
    private ?DateTime $validation = null;

    public function __construct()
    {
@@ -48,4 +50,14 @@ class Instance implements HistoriqueAwareInterface
        return null;
    }

    public function getValidation(): ?DateTime
    {
        return $this->validation;
    }

    public function setValidation(?DateTime $validation): void
    {
        $this->validation = $validation;
    }

}
 No newline at end of file
+2 −1
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8" ?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping https://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
    <entity name="UnicaenEnquete\Entity\Db\Instance" table="unicaen_enquete_instance">

        <id name="id"                   column="id"                 type="integer">
@@ -10,6 +10,7 @@
            <join-column name="enquete_id" referenced-column-name="id"/>
        </many-to-one>
        <one-to-many field="reponses" target-entity="UnicaenEnquete\Entity\Db\Reponse" mapped-by="instance"/>
        <field name="validation"     type="datetime"                 column="validation"     nullable="true"/>

        <!-- HISTORISATION ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
        <field name="histoCreation"     type="datetime"                 column="histo_creation"     nullable="false"/>
Loading