Skip to content
Snippets Groups Projects
Commit 5dd4c073 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Ajout du filtre sur l'index des rendus (date + template)

parent 2c234c97
Branches
Tags
No related merge requests found
Pipeline #23307 passed
......@@ -34,7 +34,8 @@ Modification du schéma
----------------------
**6.0.3** (version à venir)
+ Ajout du filtre des types de template
+ Ajout du filtre des types de template sur l'index des template
+ Ajout du filtre sur l'index des rendus (date + template)
avec la 5.0.5
```sql
......
......@@ -6,18 +6,28 @@ use Laminas\Http\Request;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait;
use UnicaenRenderer\Service\Template\TemplateServiceAwareTrait;
class RenduController extends AbstractActionController
{
use RenduServiceAwareTrait;
use TemplateServiceAwareTrait;
public function indexAction(): ViewModel
{
$rendus = $this->getRenduService()->getRendus();
$templates = $this->getTemplateService()->getTemplates();
$template = $this->params()->fromQuery('template');
$date = $this->params()->fromQuery('date');
$rendus = $this->getRenduService()->getRendusByTemplateAndDate($template, $date);
return new ViewModel([
'title' => 'Gestions des rendus',
'rendus' => $rendus,
'templates' => $templates,
'template' => $template,
'date' => $date,
]);
}
......
......@@ -6,6 +6,7 @@ use Interop\Container\ContainerInterface;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use UnicaenRenderer\Service\Rendu\RenduService;
use UnicaenRenderer\Service\Template\TemplateService;
class RenduControllerFactory
{
......@@ -20,11 +21,14 @@ class RenduControllerFactory
{
/**
* @var RenduService $contenuService
* @var TemplateService $templateService
*/
$contenuService = $container->get(RenduService::class);
$templateService = $container->get(TemplateService::class);
$controller = new RenduController();
$controller->setRenduService($contenuService);
$controller->setTemplateService($templateService);
return $controller;
}
}
\ No newline at end of file
......@@ -2,6 +2,7 @@
namespace UnicaenRenderer\Service\Rendu;
use DateInterval;
use DateTime;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Exception\NotSupported;
......@@ -9,6 +10,7 @@ use Doctrine\ORM\NonUniqueResultException;
use Doctrine\ORM\Exception\ORMException;
use Doctrine\ORM\QueryBuilder;
use DoctrineModule\Persistence\ProvidesObjectManager;
use Exception;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Renderer\PhpRenderer;
use Mpdf\MpdfException;
......@@ -88,6 +90,25 @@ class RenduService
return $result;
}
/** @return Rendu[] */
public function getRendusByTemplateAndDate(?string $template = null, ?string $date = null, string $champ = 'date', string $ordre = 'ASC'): array
{
$qb = $this->createQueryBuilder()->orderBy('contenu.' . $champ, $ordre);
if ($template !== null && trim($template) !=='') $qb = $qb->andWhere('template.code = :code')->setParameter('code', $template);
if ($date !== null && trim($date) !=='') {
try {
$date_ = (new DateTime())->sub(new DateInterval('P' . $date));
} catch (Exception $e) {
throw new RuntimeException("Problème de calcul de la date buttoir avec [".$date."]",0,$e);
}
$qb = $qb->andWhere('contenu.date >= :date')->setParameter('date',$date_);
}
$result = $qb->getQuery()->getResult();
return $result;
}
public function getRendu(?int $id): ?Rendu
{
$qb = $this->createQueryBuilder()
......
......@@ -9,6 +9,9 @@ use UnicaenRenderer\Provider\Privilege\DocumenttemplatePrivileges;
* @see \UnicaenRenderer\Controller\RenduController::indexAction()
* @var Rendu[] $rendus
* @var string $title
* @var string[] $templates
* @var ?string $template
* @var ?string $date
*/
$this->headTitle("Index des contenus");
......@@ -42,12 +45,15 @@ $canTemplate = $this->isAllowed(DocumenttemplatePrivileges::getResourceId(Docume
</div>
</div>
<?php echo $this->partial('partial/filtre.phtml', ['templates' => $templates, 'params' => ['date' => $date, 'template' => $template ]]); ?>
<br/>
<table id='rendu-liste' class="table table-condensed table-hover">
<thead>
<tr>
<th class="col-md-1"> Id</th>
<th class="col-md"> Template</th>
<th class="col-md-3"> Date de génération</th>
<th data-type="num" class="col-md-3"> Date de génération</th>
<th class="col-md"> Sujet</th>
<th class="col-md-1 text-end"> Action</th>
</tr>
......@@ -61,7 +67,9 @@ $canTemplate = $this->isAllowed(DocumenttemplatePrivileges::getResourceId(Docume
<?php echo $rendu->getTemplate()->getCode(); ?>
<?php endif; ?>
</td>
<td> <?php echo $rendu->getDate()->format('d/m/Y à H:i:s'); ?> </td>
<td data-order="<?php echo $rendu->getDate()->getTimestamp(); ?>">
<?php echo $rendu->getDate()->format('d/m/Y à H:i:s'); ?>
</td>
<td>
<span title="<?php echo $rendu->getSujet(); ?>" data-toggle="tooltip" data-html="true">
<?php
......
<?php
/**
* @var string $url
* @var Template[] $templates
* @var array $params
*/
use UnicaenRenderer\Entity\Db\Template;
?>
<div class="card card-default">
<div class="card-header">
<span class="icon icon-filter"></span>
Filtre des courriers électroniques
</div>
<div class="card card-body">
<form method="get" action="<?php echo ($url) ?? ''; ?>">
<div class="row">
<div class="col-m-9">
<div class="row">
<div class="col-md-4">
<label for="template">Template :</label>
<select id="template" name="template" class="selectpicker">
<option value=""> Tous templates</option>
<?php foreach ($templates as $template) : ?>
<option value="<?php echo $template->getCode(); ?>"
<?php if ($template->getCode() === $params['template']) echo " selected "; ?>
>
<?php echo $template->getCode(); ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="col-md-4">
<label for="date">Historique :</label>
<select id="date" name="date" class="selectpicker">
<option value="1M"> 1 mois</option>
<option value="3M"> 3 mois</option>
<option value="6M"> 6 mois</option>
<option value="1Y"> 1 ans</option>
</select>
</div>
</div>
</div>
<!-- BOUTON -->
<div class="col-md-3">
<div class="pull-right">
<button class="btn btn-primary action" id="clear">
<span class="icon icon-gommer"></span> Remise à zéro
</button>
<button class="btn btn-primary action" id="filter">
<span class="icon icon-filtrer"></span>
Filtrer
</button>
</div>
</div>
</div>
</form>
</div>
</div>
<script>
// $('select').selectpicker();
$('button#clear').on('click', function () {
window.location.href = '?';
});
$('select#date option[value=<?php echo $params['date']; ?>]').prop('selected', true);
</script>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment