Commit 0d8f4b90 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Ajout de justification et toString sur les instances

parent b55c6844
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -22,6 +22,13 @@ return [
    'bjyauthorize' => [
        'guards' => [
            PrivilegeController::class => [
                [
                    'controller' => ValidationInstanceController::class,
                    'action' => [
                        'rechercher-validateur',
                    ],
                    'roles' => [],
                ],
                [
                    'controller' => ValidationInstanceController::class,
                    'action' => [
@@ -129,6 +136,16 @@ return [
                                    ],
                                ],
                            ],
                            'rechercher-validateur' => [
                                'type' => Literal::class,
                                'options' => [
                                    'route'    => '/rechercher-validateur',
                                    'defaults' => [
                                        'controller' => ValidationInstanceController::class,
                                        'action'     => 'rechercher-validateur',
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
+27 −1
Original line number Diff line number Diff line
@@ -3,6 +3,8 @@
namespace UnicaenValidation\Controller;

use Laminas\Http\Response;
use Laminas\View\Model\JsonModel;
use UnicaenUtilisateur\Entity\Db\User;
use UnicaenValidation\Entity\Db\ValidationInstance;
use UnicaenValidation\Form\ValidationInstance\ValidationInstanceFormAwareTrait;
use UnicaenValidation\Service\ValidationInstance\ValidationInstanceServiceAwareTrait;
@@ -18,10 +20,15 @@ class ValidationInstanceController extends AbstractActionController {

    public function indexAction() : ViewModel
    {
        $instances = $this->getValidationInstanceService()->getValidationsInstances();
        $params = $this->params()->fromQuery();

        $instances = $this->getValidationInstanceService()->getValidationsInstancesWithFiltre($params);
        $types = $this->getValidationTypeService()->getValidationsTypes();

        return new ViewModel([
            'instances' => $instances,
            'types' => $types,
            'params' => $params,
        ]);
    }

@@ -120,4 +127,23 @@ class ValidationInstanceController extends AbstractActionController {
        }
        return $vm;
    }

    public function rechercherValidateurAction()
    {
        if (($term = $this->params()->fromQuery('term'))) {
            /** @var User $validateurs */
            $validateurs = $this->getValidationInstanceService()->findValidateurByTerm($term);
            foreach ($validateurs as $validateur) {
                $result[] = array(
                    'id' => $validateur->getHistoCreateur()->getId(),
                    'label' => $validateur->getHistoCreateur()->getDisplayName(),
                );
            }
            usort($result, function ($a, $b) {
                return strcmp($a['label'], $b['label']);
            });
            return new JsonModel($result);
        }
        exit;
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@
        </many-to-one>

        <field name="valeur"            type="string"                    column="valeur"                 nullable="true"/>
        <field name="justification"     type="string"                    column="justification"          nullable="true"/>

        <field name="histoCreation"     type="datetime"                 column="histo_creation"     nullable="false"/>
        <field name="histoModification" type="datetime"                 column="histo_modification" nullable="false"/>
+43 −2
Original line number Diff line number Diff line
@@ -2,8 +2,8 @@

namespace UnicaenValidation\Entity\Db;

use UnicaenUtilisateur\Entity\HistoriqueAwareInterface;
use UnicaenUtilisateur\Entity\HistoriqueAwareTrait;
use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface;
use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait;

class ValidationInstance implements HistoriqueAwareInterface {
    use HistoriqueAwareTrait;
@@ -11,6 +11,7 @@ class ValidationInstance implements HistoriqueAwareInterface {
    private int $id;
    private ?ValidationType $type = null;
    private ?string $valeur = null;
    private ?string $justification = null;
    
    /**
     * @return int
@@ -56,6 +57,22 @@ class ValidationInstance implements HistoriqueAwareInterface {
        return $this;
    }

    /**
     * @return string|null
     */
    public function getJustification(): ?string
    {
        return $this->justification;
    }

    /**
     * @param string|null $justification
     */
    public function setJustification(?string $justification): void
    {
        $this->justification = $justification;
    }

    public function generateTooltipText() : string
    {
        $text  = "Validation effectuée<br/>";
@@ -63,4 +80,28 @@ class ValidationInstance implements HistoriqueAwareInterface {
        $text .= "le <span class='date'>".$this->getHistoModification()->format('d/m/Y')."</span>";
        return $text;
    }

    /** toString functions */

    public function toStringDate() : string
    {
        return $this->getHistoCreation()->format('d/m/Y à H:i');
    }

    public function toStringJustification() : string
    {
        if ($this->getJustification() === null) return "Aucune justification associée à la validation";
        return $this->getJustification();
    }

    public function toStringValeur() : string
    {
        if ($this->getValeur() === null) return "Aucune valeur associée à la validation";
        return $this->getValeur();
    }

    public function toStringValidateur() : string
    {
        return $this->getHistoCreateur()->getDisplayName();
    }
}
 No newline at end of file
+42 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ use Doctrine\ORM\QueryBuilder;
use Laminas\Mvc\Controller\AbstractActionController;
use UnicaenApp\Exception\RuntimeException;
use UnicaenApp\Service\EntityManagerAwareTrait;
use UnicaenUtilisateur\Entity\Db\User;
use UnicaenValidation\Entity\Db\ValidationInstance;
use UnicaenValidation\Service\ValidationType\ValidationTypeServiceAwareTrait;

@@ -158,6 +159,47 @@ class ValidationInstanceService {
        return $result;
    }

    /**
     * @param ?string $term
     * @return User[]
     */
    public function findValidateurByTerm(?string $term) : array
    {
        $qb = $this->createQueryBuilder()
            ->andWhere("LOWER(createur.displayName) like :search")
            ->setParameter('search', '%'.strtolower($term).'%');
        $result = $qb->getQuery()->getResult();

        $validateurs = [];
        /** @var  $item */
        foreach ($result as $item) {
            $validateurs[$item->getHistoCreateur()->getId()] = $item;
        }
        return $validateurs;
    }

    /**
     * @param array $params
     * @return ValidationInstance[]
     */
    public function getValidationsInstancesWithFiltre(array $params) : array
    {
        $qb = $this->createQueryBuilder();
        if (isset($params['reponse']) AND $params['reponse'] !== '') {
            $qb = $qb->andWhere('vinstance.valeur = :reponse')->setParameter('reponse', $params['reponse']);
        }
        if (isset($params['type'])  AND $params['type'] !== '') {
            $qb = $qb->andWhere('vtype.code = :code')->setParameter('code', $params['type']);
        }
        if (isset($params['validateur']) AND isset($params['validateur']['id']) AND $params['validateur']['id'] !== '') {
            $id = ((int) $params['validateur']['id']);
            $qb = $qb->andWhere('createur.id = :id')->setParameter('id', $id);
        }

        $result = $qb->getQuery()->getResult();
        return $result;
    }

    /** FACADE ********************************************************************************************************/

    /**
Loading