Loading src/UnicaenMail/Controller/MailController.php +6 −1 Original line number Diff line number Diff line Loading @@ -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 Loading src/UnicaenMail/Service/Mail/MailService.php +23 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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 src/UnicaenMail/View/Helper/partial/mails.phtml +1 −1 Original line number Diff line number Diff line Loading @@ -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(); ?> Loading view/unicaen-mail/mail/index.phtml +4 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ * @see \UnicaenMail\Controller\MailController::indexAction() * @var string $title * @var Mail[] $mails * @var array[] $params */ use UnicaenMail\Entity\Db\Mail; Loading @@ -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> Loading @@ -40,6 +43,7 @@ $canTest = $this->isAllowed(MailPrivileges::getResourceId(MailPrivileges::MAIL_A </div> <script> $(function () { if (jQuery().dataTable) { $('#mails-liste').DataTable({ Loading view/unicaen-mail/mail/partial/filtre-mail.phtml 0 → 100644 +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 : </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 Loading
src/UnicaenMail/Controller/MailController.php +6 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
src/UnicaenMail/Service/Mail/MailService.php +23 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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
src/UnicaenMail/View/Helper/partial/mails.phtml +1 −1 Original line number Diff line number Diff line Loading @@ -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(); ?> Loading
view/unicaen-mail/mail/index.phtml +4 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ * @see \UnicaenMail\Controller\MailController::indexAction() * @var string $title * @var Mail[] $mails * @var array[] $params */ use UnicaenMail\Entity\Db\Mail; Loading @@ -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> Loading @@ -40,6 +43,7 @@ $canTest = $this->isAllowed(MailPrivileges::getResourceId(MailPrivileges::MAIL_A </div> <script> $(function () { if (jQuery().dataTable) { $('#mails-liste').DataTable({ Loading
view/unicaen-mail/mail/partial/filtre-mail.phtml 0 → 100644 +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 : </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