Commit 2cf1f2a5 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Ajout vh pour tableau d'événements

parent 58eb6db8
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ use UnicaenEvenement\Service\EvenementCollection\EvenementCollectionService;
use UnicaenEvenement\Service\EvenementCollection\EvenementCollectionServiceFactory;
use UnicaenEvenement\Service\EvenementGestion\EvenementGestionService;
use UnicaenEvenement\Service\EvenementGestion\EvenementGestionServiceFactory;
use UnicaenEvenement\View\Helper\EvenementsViewHelper;
use UnicaenEvenement\View\Helper\EvenementViewHelper;
use UnicaenEvenement\View\Helper\JournalViewHelper;
use UnicaenPrivilege\Guard\PrivilegeController;
@@ -178,6 +179,7 @@ return [
    'view_helpers' => [
        'invokables' => [
            'evenement' => EvenementViewHelper::class,
            'evenements' => EvenementsViewHelper::class,
            'journal' => JournalViewHelper::class,
        ],
    ],
+4 −2
Original line number Diff line number Diff line
<?php

namespace UnicaenEvenement\Entity\Db;
namespace UnicaenEvenement\Entity;

use Doctrine\Common\Collections\Collection;
use UnicaenEvenement\Entity\Db\Evenement;

interface HasEvenementsInterface {

    public function init() : void;
    public function initEvenements() : void;
    public function hasEvenement(Evenement $evenement): bool;
    public function addEvenement(Evenement $evenement): void;
    public function removeEvenement(Evenement $evenement): void;
    public function getEvenements(): Collection;

}
 No newline at end of file
+8 −2
Original line number Diff line number Diff line
<?php

namespace UnicaenEvenement\Entity\Db;
namespace UnicaenEvenement\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use UnicaenEvenement\Entity\Db\Evenement;

trait HasEvenementsTrait {

    public Collection $evenements;

    public function init() : void
    public function initEvenements() : void
    {
        $this->evenements = new ArrayCollection();
    }
@@ -32,4 +33,9 @@ trait HasEvenementsTrait {
            $this->evenements->removeElement($evenement);
        }
    }

    public function getEvenements(): Collection
    {
        return $this->evenements;
    }
}
 No newline at end of file
+26 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenEvenement\View\Helper;

use Laminas\View\Helper\AbstractHelper;
use Laminas\View\Helper\Partial;
use Laminas\View\Renderer\PhpRenderer;
use Laminas\View\Resolver\TemplatePathStack;
use UnicaenEvenement\Entity\Db\Evenement;

class EvenementsViewHelper extends AbstractHelper
{
    /**
     * @param Evenement[] $evenements
     * @param array $options
     * @return string|Partial
     */
    public function __invoke(array $evenements, array $options = [])
    {
        /** @var PhpRenderer $view */
        $view = $this->getView();
        $view->resolver()->attach(new TemplatePathStack(['script_paths' => [__DIR__ . "/partial"]]));

        return $view->partial('evenements', ['evenements' => $evenements, 'options' => $options]);
    }
}
 No newline at end of file
+96 −0
Original line number Diff line number Diff line
<?php

use UnicaenEvenement\Entity\Db\Evenement;
use UnicaenEvenement\Provider\Privilege\EvenementinstancePrivileges;

/**
 * @see \UnicaenEvenement\View\Helper\EvenementsViewHelper
 * @var Evenement[] $evenements
 * @var array $options
 */


usort($evenements, function (Evenement $a, Evenement $b) { return $a->getDatePlanification() <=> $b->getDatePlanification(); });

$types = []; foreach ($evenements as $evenement) { $types[$evenement->getType()->getId()] = $evenement->getType(); }
$etats = []; foreach ($evenements as $evenement) { $etats[$evenement->getEtat()->getId()] = $evenement->getEtat(); }
foreach($types as $t) {
    $listTypes[$t->getCode()] = $this->type($t)->renderIcon();
}
foreach($etats as $e) {
    $listEtats[$e->getCode()] = $this->etat($e)->renderIcon();
}

$canAfficher = $this->isAllowed(EvenementinstancePrivileges::getResourceId(EvenementinstancePrivileges::INSTANCE_CONSULTATION));
$canTraiter = $this->isAllowed(EvenementinstancePrivileges::getResourceId(EvenementinstancePrivileges::INSTANCE_TRAITEMENT));
$canModifier = $this->isAllowed(EvenementinstancePrivileges::getResourceId(EvenementinstancePrivileges::INSTANCE_EDITION));
$canSupprimer = $this->isAllowed(EvenementinstancePrivileges::getResourceId(EvenementinstancePrivileges::INSTANCE_SUPPRESSION));

?>

<table class="table table-condensed">
    <thead>
        <tr>
            <th> Id </th>
            <th> Type </th>
            <th> État </th>
            <th> Créé le </th>
            <th> Planifié le </th>
            <th> Traité le </th>
            <th> Action </th>
        </tr>
    </thead>
    <tbody>
    <?php foreach ($evenements as $event) : ?>
        <tr>
            <td>
                <?php echo $event->getId(); ?>
            </td>
            <td data-order=" <?php echo $event->getNom(); ?>" data-filter=" <?php echo $event->getNom(); ?>">
                <?php echo $this->type($event->getType())->render(); ?>
                <?php echo $event->getNom(); ?>
                <?php if ($event->getDescription()) : ?>
                    <span class="icon icon-information" data-bs-toggle="tooltip" data-bs-html="true"
                          title="<?php echo htmlentities($event->getDescription()); ?>"></span>
                <?php endif; ?>
            </td>
            <td data-order="<?php echo $event->getEtat()->getId() ?>">  <?php echo $this->etat($event->getEtat())->render(); ?> </td>
            <td data-order=" <?php echo ($event->getDateCreation()) ? $event->getDateCreation()->getTimestamp() : PHP_INT_MAX?>">
                <?php echo ($event->getDateCreation())?$event->getDateCreation()->format('d/m/Y').' <br/> '.$event->getDateCreation()->format('H:i:s'):"---"; ?>
            </td>
            <td data-order=" <?php echo ($event->getDatePlanification()) ?  $event->getDatePlanification()->getTimestamp() : PHP_INT_MAX ?>">
                <?php echo ($event->getDatePlanification())?$event->getDatePlanification()->format('d/m/Y').' <br/> '.$event->getDatePlanification()->format('H:i:s'):"---"; ?>
            </td>
            <td data-order=" <?php echo ($event->getDateTraitement()) ?  $event->getDateTraitement()->getTimestamp() : PHP_INT_MAX ?>">
                <?php echo ($event->getDateTraitement())?$event->getDateTraitement()->format('d/m/Y').' <br/> '.$event->getDateTraitement()->format('H:i:s'):"---"; ?>
            </td>
            <td>
                <?php if ($canAfficher) : ?>
                    <?php /** @see UnicaenEvenement\Controller\EvenementController::afficherAction() */ ?>
                    <a href="<?php echo $this->url('unicaen-evenement/evenement/afficher', ['evenement' => $event->getId()], [], true); ?>"
                       class="ajax-modal">
                        <span class="icon icon-voir" title="Afficher les information sur l'événement" ></span></a>
                <?php endif; ?>
                <?php if ($canTraiter) : ?>
                    <?php /** @see UnicaenEvenement\Controller\EvenementController::traiterAction() */ ?>
                    <a href="<?php echo $this->url('unicaen-evenement/evenement/traiter', ['ids' => $event->getId()], [], true); ?>"
                       class="ajax-modal">
                        <span class="icon icon-play" title="Lancer le traitement de l'événement" ></span></a>
                <?php endif; ?>
                <?php if ($canModifier) : ?>
                    <?php /** @see UnicaenEvenement\Controller\EvenementController::changerEtatAction() */ ?>
                    <a href="<?php echo $this->url('unicaen-evenement/evenement/changer-etat', ['ids' => $event->getId()], [], true); ?>"
                       class="ajax-modal">
                        <span class="icon icon-toggle-off" title="Modifier l'état de l'événement" ></span></a>
                <?php endif; ?>
                <?php if ($canSupprimer) : ?>
                    <?php /** @see UnicaenEvenement\Controller\EvenementController::supprimerAction() */ ?>
                    <a href="<?php echo $this->url('unicaen-evenement/evenement/supprimer', ['ids' => $event->getId()], [], true); ?>"
                       class="ajax-modal">
                        <span class="icon icon-unchecked text-danger" title="Supprimer l'événement" ></span></a>
                <?php endif; ?>
            </td>
        </tr>
    <?php endforeach; ?>

</table>