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

Filtre + début de tri sur date

parent a473d169
Loading
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -12,12 +12,17 @@ class MailController extends AbstractActionController {

    public function indexAction() : ViewModel
    {
        $mails = $this->getMailService()->getMails();
        $filtre = $this->params()->fromQuery();
        if (!isset($filtre['date']) OR $filtre['date'] === '') $filtre['date'] = '1M';

        $mails = $this->getMailService()->getMailsWithFiltre($filtre);

        return new ViewModel([
            'title' => 'Gestion des mails',
            'mails' => $mails,
            'params' => $filtre,
        ]);

    }

    public function afficherAction(): ViewModel
+23 −0
Original line number Diff line number Diff line
@@ -2,12 +2,14 @@

namespace UnicaenMail\Service\Mail;

use DateInterval;
use DateTime;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\NonUniqueResultException;
use Doctrine\ORM\ORMException;
use Doctrine\ORM\QueryBuilder;
use DoctrineModule\Persistence\ProvidesObjectManager;
use Exception;
use RuntimeException;
use UnicaenMail\Entity\Db\Mail;
use Laminas\Mail\Message;
@@ -105,6 +107,7 @@ class MailService {
    public function getMails(string $champ='dateEnvoi', string $ordre = 'DESC') : array
    {
        $qb = $this->createQueryBuilder()
            ->andWhere('mail.dateEnvoi >= :july')->setParameter('july', DateTime::createFromFormat('d/m/Y', '01/07/2023'))
            ->orderBy('mail.' . $champ, $ordre);
        $result = $qb->getQuery()->getResult();
        return $result;
@@ -266,4 +269,24 @@ class MailService {
        return $mail;

    }

    /** @return Mail[] */
    public function getMailsWithFiltre(array $filtres) : array
    {
        $qb = $this->createQueryBuilder();

        if (isset($filtres['statut']) AND $filtres['statut'] !== '') {
            $qb = $qb->andWhere('mail.statusEnvoi = :statut')->setParameter('statut', $filtres['statut']);
        }
        if (isset($filtres['date']) AND $filtres['date'] !== '') {
            try {
                $date = (new DateTime())->sub(new DateInterval('P' . $filtres['date']));
            } catch (Exception $e) {
                throw new RuntimeException("Problème de calcul de la date buttoir avec [".$filtres['date']."]",0,$e);
            }
            $qb = $qb->andWhere('mail.dateEnvoi >= :date')->setParameter('date',$date);
        }
        $result = $qb->getQuery()->getResult();
        return $result;
    }
}
 No newline at end of file
+1 −1
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ if (!isset($options['droits']) OR !isset($options['droits']['supprimer'])) {
                    </ul>
                <?php endif; ?>
            </td>
            <td> <?php echo $mail->getDateEnvoi()->format('d/m/Y <br/> H:i'); ?> </td>
            <td> <?php echo $mail->getDateEnvoi()->format('Y-m-d <br/> H:i'); ?> </td>
            <td>
                <span class="badge <?php echo $mail->getStatusEnvoi(); ?>">
                    <?php echo $mail->getStatusEnvoi(); ?>
+4 −0
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
 * @see \UnicaenMail\Controller\MailController::indexAction()
 * @var string $title
 * @var Mail[] $mails
 * @var array[] $params
 */

use UnicaenMail\Entity\Db\Mail;
@@ -30,6 +31,8 @@ $canTest = $this->isAllowed(MailPrivileges::getResourceId(MailPrivileges::MAIL_A
    </div>
</div>

<?php echo $this->partial('partial/filtre-mail', ['params' => $params], [], true); ?>

<div class="card border-default mb-3">
    <div class="card-header bg-default">
        <h2>Liste des mails</h2>
@@ -40,6 +43,7 @@ $canTest = $this->isAllowed(MailPrivileges::getResourceId(MailPrivileges::MAIL_A
</div>

<script>

    $(function () {
        if (jQuery().dataTable) {
            $('#mails-liste').DataTable({
+77 −0
Original line number Diff line number Diff line
<?php

use UnicaenEvenement\Entity\Db\Etat;
use UnicaenEvenement\Entity\Db\Type;

/**
 * @var string $url
 * @var Type[] $types
 * @var array $params
 */

$statuts = [ 'PENDING', 'SUCCESS', 'FAILED'];
?>

<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="statut">Statut : &nbsp;</label>
                            <select id="statut" name="statut"  class="selectpicker">
                                <option value=""> Peu importe </option>
                                <?php foreach ($statuts as $statut) : ?>
                                    <option value="<?php echo $statut; ?>" <?php if ($statut === $params['statut']) echo " selected ";?>>
                                        <?php echo $statut; ?>
                                    </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').click(function() {
        window.location.href = '?';
    });


    $('select#date option[value=<?php echo $params['date']; ?>]').prop('selected', true);
    <?php if (isset($params['statut']) && $params['statut'] !== '') : ?>
        $('select#statut option[value=<?php echo $params['statut']; ?>]').prop('selected', true);
    <?php endif; ?>

</script>
 No newline at end of file