PrestatairesController.php 4.39 KB
Newer Older
Julien Jorry committed
1 2 3 4
<?php

namespace App\Controller;

5
use App\Entity\Groupe;
Julien Jorry committed
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
use App\Entity\Prestataire;
use App\Entity\Rubrique;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Routing\RouterInterface;

class PrestatairesController extends FrontController
{
    protected $em;
    private $router;

    public function __construct(EntityManagerInterface $em, RouterInterface $router)
    {
        $this->em = $em;
        $this->router = $router;
    }

    /**
     * @Route("/prestataire/{slug}", name="show_prestataire")
     */
    public function showPrestaAction(Prestataire $prestataire)
    {
        if (!$this->isFrontActivated()) {
            return $this->redirectToRoute('index');
        }
        if ($prestataire->isMlc()) {
            // Ne pas montrer la page du prestataire recevant les cotisations !
            return new RedirectResponse($this->router->generate('index'));
        }

        return $this->render('@kohinos/presta/show.html.twig', [
            'presta' => $prestataire,
        ]);
    }

    /**
43
     * @Route("/prestataires/liste/{order}", name="liste_prestataire", defaults={"order": "raison"})
Julien Jorry committed
44
     */
45
    public function listePrestaAction($order = 'raison')
Julien Jorry committed
46 47 48 49
    {
        if (!$this->isFrontActivated()) {
            return $this->redirectToRoute('index');
        }
Julien Jorry committed
50 51

        if ('groupelocal' == $order) {
52
            $prestas = $this->em->getRepository(Prestataire::class)->findDefault('prestataire', 'groupelocal');
Julien Jorry committed
53

54 55 56 57 58
            return $this->render('@kohinos/presta/liste_prestataires_bygroupelocal.html.twig', [
                'prestas' => $prestas,
                'type' => 'Prestataires',
            ]);
        }
59
        $prestas = $this->em->getRepository(Prestataire::class)->findDefault('prestataire');
Julien Jorry committed
60 61 62 63 64 65 66

        return $this->render('@kohinos/presta/liste_prestataires.html.twig', [
            'prestas' => $prestas,
            'type' => 'Prestataires',
        ]);
    }

67 68 69 70 71 72 73 74
    /**
     * @Route("/prestataires/groupe/{slug}/liste", name="liste_presta_by_groupe")
     */
    public function listePrestaByGroupeAction(Groupe $groupe)
    {
        if (!$this->isFrontActivated()) {
            return $this->redirectToRoute('index');
        }
Julien Jorry committed
75

76 77 78 79
        $prestas = $this->em->getRepository(Prestataire::class)->findByGroupe($groupe);

        return $this->render('@kohinos/presta/liste_prestataires.html.twig', [
            'prestas' => $prestas,
Julien Jorry committed
80
            'type' => 'Prestataires du groupe local ' . $groupe->getName(),
81 82 83
        ]);
    }

Julien Jorry committed
84 85 86 87 88 89 90 91
    /**
     * @Route("/partenaires/liste", name="liste_partenaire")
     */
    public function listePartnerAction()
    {
        if (!$this->isFrontActivated()) {
            return $this->redirectToRoute('index');
        }
92
        $partners = $this->em->getRepository(Prestataire::class)->findDefault('partenaire');
Julien Jorry committed
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107

        return $this->render('@kohinos/presta/liste_prestataires.html.twig', [
            'prestas' => $partners,
            'type' => 'Partenaires',
        ]);
    }

    /**
     * @Route("/prestataires/carte", name="carte_prestataire")
     */
    public function cartePrestaAction()
    {
        if (!$this->isFrontActivated()) {
            return $this->redirectToRoute('index');
        }
Julien Jorry committed
108
        $prestas = $this->em->getRepository(Prestataire::class)->findDefault();
Julien Jorry committed
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144

        return $this->render('@kohinos/presta/carte.html.twig', [
            'prestas' => $prestas,
        ]);
    }

    /**
     * @Route("/prestataires/rubriques", name="rubriques_prestataire")
     */
    public function rubriquesAction()
    {
        if (!$this->isFrontActivated()) {
            return $this->redirectToRoute('index');
        }
        $rubriques = $this->em->getRepository(Rubrique::class)->findBy(['enabled' => true], ['name' => 'ASC']);

        return $this->render('@kohinos/presta/rubriques.html.twig', [
            'rubriques' => $rubriques,
        ]);
    }

    /**
     * @Route("/prestataires/rubrique/{slug}", name="show_rubrique")
     */
    public function showRubriqueAction(Rubrique $rubrique)
    {
        if (!$this->isFrontActivated()) {
            return $this->redirectToRoute('index');
        }

        return $this->render('@kohinos/presta/show_rubrique.html.twig', [
            'rubrique' => $rubrique,
            'prestataires' => $this->em->getRepository(Prestataire::class)->findByRubrique($rubrique),
        ]);
    }
}