Commit 67331367 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Listing/recherche d'individus : lien vers la substitution si individu...

Listing/recherche d'individus : lien vers la substitution si individu substituant ; nouveau filtre 'Historisés inclus' décoché par défaut ; cosmétique.
parent 782414c3
Loading
Loading
Loading
Loading
+1 −0
Changes for CHANGELOG.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ Journal des modifications
- Inclusion au script de purge des fichiers temporaires ceux générés par le FichierStorageService.
- Module Substitutions : amélioration de fonctions pgsql du moteur de substitutions.
- Structures : amélioration visuelle sur la page listant les structures (Etablissement, ED, UR).
- Listing/recherche d'individus : lien vers la substitution si individu substituant ; nouveau filtre 'Historisés inclus' décoché par défaut ; cosmétique.  
- [FIX] Module Substitutions : plantage de la page consacrée aux doublons (substitutions possibles). 
- [FIX] Page Assistance : plantage de la page lorsque le rôle de l'utilisateur est structure-dépendant.

+33 −0
Changes for module/Application/src/Application/Search/EstHistorise/EstHistoriseSearchFilter.php: 33 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application\Search\EstHistorise;

use Application\Search\Filter\CheckboxSearchFilter;
use Doctrine\ORM\QueryBuilder;

/**
 * Filtre de type case à cocher dont le fonctionnement est le suivant :
 *   - s'il est décoché : ajoute au query builder une clause écartant les enregistrements historisés ;
 *   - s'il est coché : n'ajoute rien au query builder.
 */
class EstHistoriseSearchFilter extends CheckboxSearchFilter
{
    const NAME = 'estHistorise';

    static public function newInstance(): self
    {
        return new self(
            "Historisés inclus",
            self::NAME
        );
    }

    public function applyToQueryBuilder(QueryBuilder $qb): void
    {
        $alias = current($qb->getRootAliases());

        if (!$this->getValue()) {
            $qb->andWhere("$alias.histoDestruction is null");
        }
    }
}
 No newline at end of file
+21 −0
Changes for module/Application/src/Application/Search/EstHistorise/EstHistoriseSearchFilterAwareTrait.php: 21 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application\Search\EstHistorise;

trait EstHistoriseSearchFilterAwareTrait
{
    protected ?EstHistoriseSearchFilter $estHistoriseSearchFilter = null;

    public function getEstHistoriseSearchFilter(): EstHistoriseSearchFilter
    {
        if ($this->estHistoriseSearchFilter === null) {
            $this->estHistoriseSearchFilter = EstHistoriseSearchFilter::newInstance();
        }
        return $this->estHistoriseSearchFilter;
    }

    public function setEstHistoriseSearchFilter(EstHistoriseSearchFilter $domaineScientifiqueSearchFilter): void
    {
        $this->estHistoriseSearchFilter = $domaineScientifiqueSearchFilter;
    }
}
 No newline at end of file
+6 −9
Changes for module/Application/src/Application/Search/Filter/CheckboxSearchFilter.php: 6 added lines, 9 removed lines.
Original line number Diff line number Diff line
@@ -2,17 +2,9 @@

namespace Application\Search\Filter;

/**
 *
 *
 * @author Unicaen
 */
class CheckboxSearchFilter extends SearchFilter
{
    /**
     * @var string
     */
    protected $checkedOptionValue = '1';
    protected string $checkedOptionValue = '1';

    /**
     * @param array $queryParams
@@ -26,6 +18,11 @@ class CheckboxSearchFilter extends SearchFilter
        return isset($queryParams[$optionName]) && $queryParams[$optionName] === $this->checkedOptionValue;
    }

    public function canApplyToQueryBuilder(): bool
    {
        return true;
    }

    /**
     * Adaptée pour le type Checkbox.
     *
+10 −3
Changes for module/Individu/src/Individu/Service/Search/IndividuSearchService.php: 10 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace Individu\Service\Search;

use Application\Search\EstHistorise\EstHistoriseSearchFilterAwareTrait;
use Application\Search\Filter\SearchFilter;
use Application\Search\Filter\TextSearchFilter;
use Application\Search\SearchService;
@@ -12,6 +13,7 @@ use Individu\Service\IndividuServiceAwareTrait;
class IndividuSearchService extends SearchService
{
    use IndividuServiceAwareTrait;
    use EstHistoriseSearchFilterAwareTrait;

    /**
     * @inheritDoc
@@ -23,7 +25,9 @@ class IndividuSearchService extends SearchService
            ->addSelect('u')
            ->leftJoin('i.utilisateurs', 'u')
            ->addSelect('cu')
            ->leftJoin('i.complements', 'cu');
            ->leftJoin('i.complements', 'cu')
            ->addOrderBy('i.nomUsuel')
            ->addOrderBy('i.prenom1');

        return $qb;
    }
@@ -44,9 +48,12 @@ class IndividuSearchService extends SearchService
        });
        $this->addFilter($textFilter);

        $estHistoriseFilter = $this->getEstHistoriseSearchFilter();
        $this->addFilter($estHistoriseFilter);

        $this->addSorters([
            (new SearchSorter("Id", 'id')),
            (new SearchSorter("Nom d'usage", 'nomUsuel'))->setIsDefault()
            (new SearchSorter("Nom d'usage", 'nomUsuel'))->setIsDefault(),
            (new SearchSorter("Prénom", 'prenom1'))
        ]);
    }
}
 No newline at end of file
Loading