diff --git a/config/packages/security.yaml b/config/packages/security.yaml
index 6a2fd4c..bf768d9 100644
--- a/config/packages/security.yaml
+++ b/config/packages/security.yaml
@@ -33,6 +33,7 @@ security:
access_control:
- { path: ^/admin, roles: ROLE_Root }
- { path: ^/chef, roles: "ROLE_Root, ROLE_Chef" }
+ - { path: ^/service, roles: "ROLE_Root, ROLE_Chef, ROLE_Waiter" }
# - { path: ^/profile, roles: ROLE_USER }
when@test:
diff --git a/migrations/Version20231127080747.php b/migrations/Version20231127080747.php
new file mode 100644
index 0000000..cc80a60
--- /dev/null
+++ b/migrations/Version20231127080747.php
@@ -0,0 +1,31 @@
+addSql('CREATE TABLE resa (id INT AUTO_INCREMENT NOT NULL, id_resto INT NOT NULL, nb_user INT NOT NULL, date_heur DATETIME NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
+ }
+
+ public function down(Schema $schema): void
+ {
+ // this down() migration is auto-generated, please modify it to your needs
+ $this->addSql('DROP TABLE resa');
+ }
+}
diff --git a/src/Controller/AvisController.php b/src/Controller/AvisController.php
new file mode 100644
index 0000000..736d3a3
--- /dev/null
+++ b/src/Controller/AvisController.php
@@ -0,0 +1,122 @@
+getUser();
+ $email_user = $utilisateur->getUserIdentifier();
+
+ $user = $userRepository->findOneBy(['email' => $email_user]);
+
+ $role_user = $user->getGrade();
+ $id_resto = $user->getIdResto();
+ $id_user = $user->getId();
+
+ $this->role_user = $role_user;
+ $this->id_resto = $id_resto;
+ $this->id_user = $id_user;
+ }
+ #[Route('/', name: 'app_avis_index', methods: ['GET'])]
+ public function index(AvisRepository $avisRepository, TicketRepository $ticketRepository): Response
+ {
+ $tickets = $ticketRepository->findBy(['id_users' => $this->id_user]);
+
+ $ticketvalide = 0;
+ foreach ($tickets as $ticket) {
+ $verif = $ticket->getPayement();
+ if ($verif === 'oui') {
+ $ticketvalide++;
+ }
+ }
+
+ return $this->render('avis/index.html.twig', [
+ 'avis' => $avisRepository->findBy([], ['id' => 'DESC']),
+ 'ticket' => $ticketvalide,
+ ]);
+ }
+
+ #[Route('/new', name: 'app_avis_new', methods: ['GET', 'POST'])]
+ public function new(Request $request, EntityManagerInterface $entityManager, TicketRepository $ticketRepository): Response
+ {
+ $tickets_one = $ticketRepository->findOneBy(['id_users' => $this->id_user], ['id' => 'DESC']);
+ $tickets_one_id = $tickets_one->getId();
+
+ $avi = new Avis();
+ $avi->setIdTicket($tickets_one_id);
+
+ $form = $this->createForm(AvisType::class, $avi);
+ $form->handleRequest($request);
+
+ if ($form->isSubmitted() && $form->isValid()) {
+ $entityManager->persist($avi);
+ $entityManager->flush();
+
+ return $this->redirectToRoute('app_avis_index', [], Response::HTTP_SEE_OTHER);
+ }
+
+ return $this->renderForm('avis/new.html.twig', [
+ 'avi' => $avi,
+ 'form' => $form,
+ ]);
+ }
+
+ #[Route('/{id}', name: 'app_avis_show', methods: ['GET'])]
+ public function show(Avis $avi): Response
+ {
+ return $this->render('avis/show.html.twig', [
+ 'avi' => $avi,
+ ]);
+ }
+
+ #[Route('/{id}/edit', name: 'app_avis_edit', methods: ['GET', 'POST'])]
+ public function edit(Request $request, Avis $avi, EntityManagerInterface $entityManager): Response
+ {
+ $form = $this->createForm(AvisType::class, $avi);
+ $form->handleRequest($request);
+
+ if ($form->isSubmitted() && $form->isValid()) {
+ $entityManager->flush();
+
+ return $this->redirectToRoute('app_avis_index', [], Response::HTTP_SEE_OTHER);
+ }
+
+ return $this->renderForm('avis/edit.html.twig', [
+ 'avi' => $avi,
+ 'form' => $form,
+ ]);
+ }
+
+ #[Route('/{id}', name: 'app_avis_delete', methods: ['POST'])]
+ public function delete(Request $request, Avis $avi, EntityManagerInterface $entityManager): Response
+ {
+ if ($this->isCsrfTokenValid('delete' . $avi->getId(), $request->request->get('_token'))) {
+ $entityManager->remove($avi);
+ $entityManager->flush();
+ }
+
+ return $this->redirectToRoute('app_avis_index', [], Response::HTTP_SEE_OTHER);
+ }
+}
diff --git a/src/Controller/HomeController.php b/src/Controller/HomeController.php
index 6515f13..1c0f6e3 100644
--- a/src/Controller/HomeController.php
+++ b/src/Controller/HomeController.php
@@ -2,17 +2,93 @@
namespace App\Controller;
+use App\Entity\Ticket;
+use App\Form\Ticket2Type;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
+use App\Repository\UserRepository;
+use Symfony\Component\Security\Core\Security;
+use App\Repository\RestoRepository;
+use App\Repository\MenuRepository;
use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpFoundation\Request;
+use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Routing\Annotation\Route;
class HomeController extends AbstractController
{
+ private $id_resto;
+ private $id_user;
+ private $userRepository;
+ private $restoRepository;
+ private $menuRepository;
+ private $role_user;
+ public function __construct(userRepository $userRepository, restoRepository $restoRepository, menuRepository $menuRepository, Security $security)
+ {
+ $utilisateur = $security->getUser();
+ $email_user = $utilisateur->getUserIdentifier();
+
+ $user = $userRepository->findOneBy(['email' => $email_user]);
+
+ $role_user = $user->getGrade();
+ $id_resto = $user->getIdResto();
+ $id_user = $user->getId();
+
+ $this->role_user = $role_user;
+ $this->id_resto = $id_resto;
+ $this->id_user = $id_user;
+ $this->userRepository = $userRepository;
+ $this->restoRepository = $restoRepository;
+ $this->menuRepository = $menuRepository;
+ }
+
#[Route('/', name: 'app_home')]
public function index(): Response
{
+ $resto = $this->restoRepository->findAll();
+
return $this->render('home/index.html.twig', [
'controller_name' => 'Home',
+ 'restos' => $resto,
+ ]);
+ }
+
+ #[Route('/{idresto}', name: 'app_home_choice')]
+ public function choice($idresto): Response
+ {
+ $resto = $this->restoRepository->find($idresto);
+ $menus = $this->menuRepository->findBy(['id_resto' => $idresto]);
+
+ return $this->render('home/choice.html.twig', [
+ 'controller_name' => 'Home',
+ 'resto' => $resto,
+ 'menus' => $menus,
+ ]);
+ }
+
+ #[Route('/{idresto}/resa', name: 'app_home_resa')]
+ public function resa(): Response
+ {
+ return $this->render('home/resa.html.twig', [
+ 'controller_name' => 'Home',
]);
}
+
+ #[Route('/{idresto}/{idmenu}', name: 'app_home_ticket')]
+ public function ticket($idresto, $idmenu, Request $request, EntityManagerInterface $entityManager): Response
+ {
+ $ticket = new Ticket();
+ $ticket->setIdResto($idresto);
+ $ticket->setIdUsers($this->id_user);
+ $ticket->setIdMenu($idmenu);
+ $ticket->setPayement('non');
+
+ $form = $this->createForm(Ticket2Type::class, $ticket);
+
+ $form->handleRequest($request);
+
+ $entityManager->persist($ticket);
+ $entityManager->flush();
+
+ return $this->redirectToRoute('app_home', [], Response::HTTP_SEE_OTHER);
+ }
}
diff --git a/src/Controller/MenuChefController.php b/src/Controller/MenuChefController.php
index 16dcddf..f668729 100644
--- a/src/Controller/MenuChefController.php
+++ b/src/Controller/MenuChefController.php
@@ -22,6 +22,7 @@ class MenuChefController extends AbstractController
private $id_user;
private $userRepository;
private $restoRepository;
+ private $role_user;
public function __construct(userRepository $userRepository, restoRepository $restoRepository, Security $security)
{
@@ -30,8 +31,11 @@ class MenuChefController extends AbstractController
$user = $userRepository->findOneBy(['email' => $email_user]);
+ $role_user = $user->getGrade();
$id_resto = $user->getIdResto();
$id_user = $user->getId();
+
+ $this->role_user = $role_user;
$this->id_resto = $id_resto;
$this->id_user = $id_user;
$this->userRepository = $userRepository;
@@ -40,10 +44,9 @@ class MenuChefController extends AbstractController
#[Route('/', name: 'app_menu_chef_index', methods: ['GET'])]
public function index(MenuRepository $menuRepository): Response
{
- if ($this->id_resto != '') {
+ if ($this->role_user != 'Root') {
$menus = $menuRepository->findBy(['id_resto' => $this->id_resto]);
} else {
- $this->id_resto = 0;
$menus = $menuRepository->findAll();
}
@@ -69,7 +72,6 @@ class MenuChefController extends AbstractController
'menus' => $menus,
'users' => $users,
'restos' => $restos,
- 'id_resto' => $this->id_resto,
]);
}
diff --git a/src/Controller/ResaServiceController.php b/src/Controller/ResaServiceController.php
new file mode 100644
index 0000000..9aa14a0
--- /dev/null
+++ b/src/Controller/ResaServiceController.php
@@ -0,0 +1,61 @@
+render('resa_service/index.html.twig', [
+ 'resas' => $resaRepository->findAll(),
+ ]);
+ }
+
+ #[Route('/{id}', name: 'app_resa_service_show', methods: ['GET'])]
+ public function show(Resa $resa): Response
+ {
+ return $this->render('resa_service/show.html.twig', [
+ 'resa' => $resa,
+ ]);
+ }
+
+ #[Route('/{id}/edit', name: 'app_resa_service_edit', methods: ['GET', 'POST'])]
+ public function edit(Request $request, Resa $resa, EntityManagerInterface $entityManager): Response
+ {
+ $form = $this->createForm(ResaType::class, $resa);
+ $form->handleRequest($request);
+
+ if ($form->isSubmitted() && $form->isValid()) {
+ $entityManager->flush();
+
+ return $this->redirectToRoute('app_resa_service_index', [], Response::HTTP_SEE_OTHER);
+ }
+
+ return $this->renderForm('resa_service/edit.html.twig', [
+ 'resa' => $resa,
+ 'form' => $form,
+ ]);
+ }
+
+ #[Route('/{id}', name: 'app_resa_service_delete', methods: ['POST'])]
+ public function delete(Request $request, Resa $resa, EntityManagerInterface $entityManager): Response
+ {
+ if ($this->isCsrfTokenValid('delete' . $resa->getId(), $request->request->get('_token'))) {
+ $entityManager->remove($resa);
+ $entityManager->flush();
+ }
+
+ return $this->redirectToRoute('app_resa_service_index', [], Response::HTTP_SEE_OTHER);
+ }
+}
diff --git a/src/Controller/TicketServiceController.php b/src/Controller/TicketServiceController.php
new file mode 100644
index 0000000..54e4cfb
--- /dev/null
+++ b/src/Controller/TicketServiceController.php
@@ -0,0 +1,81 @@
+render('ticket_service/index.html.twig', [
+ 'tickets' => $ticketRepository->findBy([], ['id' => 'DESC']),
+ ]);
+ }
+
+ #[Route('/new', name: 'app_ticket_service_new', methods: ['GET', 'POST'])]
+ public function new(Request $request, EntityManagerInterface $entityManager): Response
+ {
+ $ticket = new Ticket();
+ $form = $this->createForm(TicketType::class, $ticket);
+ $form->handleRequest($request);
+
+ if ($form->isSubmitted() && $form->isValid()) {
+ $entityManager->persist($ticket);
+ $entityManager->flush();
+
+ return $this->redirectToRoute('app_ticket_service_index', [], Response::HTTP_SEE_OTHER);
+ }
+
+ return $this->renderForm('ticket_service/new.html.twig', [
+ 'ticket' => $ticket,
+ 'form' => $form,
+ ]);
+ }
+
+ #[Route('/{id}', name: 'app_ticket_service_show', methods: ['GET'])]
+ public function show(Ticket $ticket): Response
+ {
+ return $this->render('ticket_service/show.html.twig', [
+ 'ticket' => $ticket,
+ ]);
+ }
+
+ #[Route('/{id}/edit', name: 'app_ticket_service_edit', methods: ['GET', 'POST'])]
+ public function edit(Request $request, Ticket $ticket, EntityManagerInterface $entityManager): Response
+ {
+ $form = $this->createForm(TicketType::class, $ticket);
+ $form->handleRequest($request);
+
+ if ($form->isSubmitted() && $form->isValid()) {
+ $entityManager->flush();
+
+ return $this->redirectToRoute('app_ticket_service_index', [], Response::HTTP_SEE_OTHER);
+ }
+
+ return $this->renderForm('ticket_service/edit.html.twig', [
+ 'ticket' => $ticket,
+ 'form' => $form,
+ ]);
+ }
+
+ #[Route('/{id}', name: 'app_ticket_service_delete', methods: ['POST'])]
+ public function delete(Request $request, Ticket $ticket, EntityManagerInterface $entityManager): Response
+ {
+ if ($this->isCsrfTokenValid('delete' . $ticket->getId(), $request->request->get('_token'))) {
+ $entityManager->remove($ticket);
+ $entityManager->flush();
+ }
+
+ return $this->redirectToRoute('app_ticket_service_index', [], Response::HTTP_SEE_OTHER);
+ }
+}
diff --git a/src/Entity/Resa.php b/src/Entity/Resa.php
new file mode 100644
index 0000000..f6fb8f9
--- /dev/null
+++ b/src/Entity/Resa.php
@@ -0,0 +1,66 @@
+id;
+ }
+
+ public function getIdResto(): ?int
+ {
+ return $this->id_resto;
+ }
+
+ public function setIdResto(int $id_resto): static
+ {
+ $this->id_resto = $id_resto;
+
+ return $this;
+ }
+
+ public function getNbUser(): ?int
+ {
+ return $this->nb_user;
+ }
+
+ public function setNbUser(int $nb_user): static
+ {
+ $this->nb_user = $nb_user;
+
+ return $this;
+ }
+
+ public function getDateHeur(): ?\DateTimeInterface
+ {
+ return $this->date_heur;
+ }
+
+ public function setDateHeur(\DateTimeInterface $date_heur): static
+ {
+ $this->date_heur = $date_heur;
+
+ return $this;
+ }
+}
diff --git a/src/Form/AvisType.php b/src/Form/AvisType.php
new file mode 100644
index 0000000..1c52afb
--- /dev/null
+++ b/src/Form/AvisType.php
@@ -0,0 +1,49 @@
+add(
+ 'note',
+ IntegerType::class,
+ [
+ 'attr' => [
+ 'min' => 1, // Valeur minimale autorisée
+ 'max' => 10, // Valeur maximale autorisée
+ ],
+ 'data' => 1, // Valeur par défaut
+ 'constraints' => [
+ new Range([
+ 'min' => 1,
+ 'max' => 10,
+ 'notInRangeMessage' => 'La note doit être entre {{ min }} et {{ max }}.',
+ ]),
+ ],
+ ]
+ )
+ ->add('com')
+ ->add('id_ticket', HiddenType::class, [
+ 'disabled' => true, // Désactive le champ
+ 'data' => $options['data']->getIdTicket() // Remplacez $valeurSpecifique par la valeur souhaitée
+ ]);
+ }
+
+ public function configureOptions(OptionsResolver $resolver): void
+ {
+ $resolver->setDefaults([
+ 'data_class' => Avis::class,
+ ]);
+ }
+}
diff --git a/src/Form/ResaType.php b/src/Form/ResaType.php
new file mode 100644
index 0000000..beb9e59
--- /dev/null
+++ b/src/Form/ResaType.php
@@ -0,0 +1,26 @@
+add('id_resto')
+ ->add('nb_user')
+ ->add('date_heur');
+ }
+
+ public function configureOptions(OptionsResolver $resolver): void
+ {
+ $resolver->setDefaults([
+ 'data_class' => Resa::class,
+ ]);
+ }
+}
diff --git a/src/Form/Ticket2Type.php b/src/Form/Ticket2Type.php
new file mode 100644
index 0000000..fdba72e
--- /dev/null
+++ b/src/Form/Ticket2Type.php
@@ -0,0 +1,40 @@
+add('id_resto', HiddenType::class, [
+ 'disabled' => true, // Désactive le champ
+ 'data' => $options['data']->getIdResto()
+ ])
+ ->add('id_users', HiddenType::class, [
+ 'disabled' => true, // Désactive le champ
+ 'data' => $options['data']->getIdUsers()
+ ])
+ ->add('payement', HiddenType::class, [
+ 'disabled' => true, // Désactive le champ
+ 'data' => $options['data']->getPayement()
+ ])
+ ->add('id_menu', HiddenType::class, [
+ 'disabled' => true, // Désactive le champ
+ 'data' => $options['data']->getIdMenu()
+ ]);
+ }
+
+ public function configureOptions(OptionsResolver $resolver): void
+ {
+ $resolver->setDefaults([
+ 'data_class' => Ticket::class,
+ ]);
+ }
+}
diff --git a/src/Form/TicketType.php b/src/Form/TicketType.php
new file mode 100644
index 0000000..c502a26
--- /dev/null
+++ b/src/Form/TicketType.php
@@ -0,0 +1,28 @@
+add('id_resto')
+ ->add('id_users')
+ ->add('payement')
+ ->add('id_menu')
+ ;
+ }
+
+ public function configureOptions(OptionsResolver $resolver): void
+ {
+ $resolver->setDefaults([
+ 'data_class' => Ticket::class,
+ ]);
+ }
+}
diff --git a/src/Repository/ResaRepository.php b/src/Repository/ResaRepository.php
new file mode 100644
index 0000000..13ee931
--- /dev/null
+++ b/src/Repository/ResaRepository.php
@@ -0,0 +1,48 @@
+
+ *
+ * @method Resa|null find($id, $lockMode = null, $lockVersion = null)
+ * @method Resa|null findOneBy(array $criteria, array $orderBy = null)
+ * @method Resa[] findAll()
+ * @method Resa[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class ResaRepository extends ServiceEntityRepository
+{
+ public function __construct(ManagerRegistry $registry)
+ {
+ parent::__construct($registry, Resa::class);
+ }
+
+// /**
+// * @return Resa[] Returns an array of Resa objects
+// */
+// public function findByExampleField($value): array
+// {
+// return $this->createQueryBuilder('r')
+// ->andWhere('r.exampleField = :val')
+// ->setParameter('val', $value)
+// ->orderBy('r.id', 'ASC')
+// ->setMaxResults(10)
+// ->getQuery()
+// ->getResult()
+// ;
+// }
+
+// public function findOneBySomeField($value): ?Resa
+// {
+// return $this->createQueryBuilder('r')
+// ->andWhere('r.exampleField = :val')
+// ->setParameter('val', $value)
+// ->getQuery()
+// ->getOneOrNullResult()
+// ;
+// }
+}
diff --git a/templates/avis/_delete_form.html.twig b/templates/avis/_delete_form.html.twig
new file mode 100644
index 0000000..2d6811e
--- /dev/null
+++ b/templates/avis/_delete_form.html.twig
@@ -0,0 +1,4 @@
+
diff --git a/templates/avis/_form.html.twig b/templates/avis/_form.html.twig
new file mode 100644
index 0000000..bf20b98
--- /dev/null
+++ b/templates/avis/_form.html.twig
@@ -0,0 +1,4 @@
+{{ form_start(form) }}
+ {{ form_widget(form) }}
+ {{ button_label|default('Save') }}
+{{ form_end(form) }}
diff --git a/templates/avis/edit.html.twig b/templates/avis/edit.html.twig
new file mode 100644
index 0000000..1d51a91
--- /dev/null
+++ b/templates/avis/edit.html.twig
@@ -0,0 +1,13 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Edit Avis{% endblock %}
+
+{% block body %}
+ Edit Avis
+
+ {{ include('avis/_form.html.twig', {'button_label': 'Update'}) }}
+
+ back to list
+
+ {{ include('avis/_delete_form.html.twig') }}
+{% endblock %}
diff --git a/templates/avis/index.html.twig b/templates/avis/index.html.twig
new file mode 100644
index 0000000..ae53ec0
--- /dev/null
+++ b/templates/avis/index.html.twig
@@ -0,0 +1,40 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Avis index{% endblock %}
+
+{% block body %}
+ Avis index
+
+
+
+
+ Id
+ Note
+ Com
+ Id_ticket
+ actions
+
+
+
+ {% for avi in avis %}
+
+ {{ avi.id }}
+ {{ avi.note }}
+ {{ avi.com }}
+ {{ avi.idTicket }}
+
+ show
+
+
+ {% else %}
+
+ no records found
+
+ {% endfor %}
+
+
+
+ {% if ticket != 0 %}
+ Create new
+ {% endif %}
+{% endblock %}
diff --git a/templates/avis/new.html.twig b/templates/avis/new.html.twig
new file mode 100644
index 0000000..62f762d
--- /dev/null
+++ b/templates/avis/new.html.twig
@@ -0,0 +1,11 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}New Avis{% endblock %}
+
+{% block body %}
+ Create new Avis
+
+ {{ include('avis/_form.html.twig') }}
+
+ back to list
+{% endblock %}
diff --git a/templates/avis/show.html.twig b/templates/avis/show.html.twig
new file mode 100644
index 0000000..a4b43ed
--- /dev/null
+++ b/templates/avis/show.html.twig
@@ -0,0 +1,30 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Avis{% endblock %}
+
+{% block body %}
+ Avis
+
+
+
+
+ Id
+ {{ avi.id }}
+
+
+ Note
+ {{ avi.note }}
+
+
+ Com
+ {{ avi.com }}
+
+
+ Id_ticket
+ {{ avi.idTicket }}
+
+
+
+
+ back to list
+{% endblock %}
diff --git a/templates/home/choice.html.twig b/templates/home/choice.html.twig
new file mode 100644
index 0000000..a95213b
--- /dev/null
+++ b/templates/home/choice.html.twig
@@ -0,0 +1,26 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Home{% endblock %}
+
+{% block body %}
+
+
+
Commande/Resa
+
{{ resto.address }}
+
+
Vous souhaitez reserver au restaurant : C'est par ici !
+
+ {% for menu in menus %}
+
+ Menu {{ menu.id }}
+
+ Entrée : {{ menu.entre }}
+ Plat : {{ menu.plat }}
+ Dessert : {{ menu.dessert }}
+
+ Commandez en ligne ce menu !
+
+ {% endfor %}
+
+
+{% endblock %}
diff --git a/templates/home/index.html.twig b/templates/home/index.html.twig
index ea99af4..3a55346 100644
--- a/templates/home/index.html.twig
+++ b/templates/home/index.html.twig
@@ -8,15 +8,15 @@
Bienvenue chez McDoPlus !
{% if not app.user %}
- compte utilisateur c'est ici
+ compte utilisateur c'est ici
+{% else %}
+ Laisser un avis ici
+ Réserver/Commander :
+
{% endif %}
-{% if app.user and ('Waiter' in app.user.grade or 'Chef' in app.user.grade or 'Root' in app.user.grade) %}
- User roles: {{ app.user.grade }}
-{% endif %}
-
-
- test
- coucou
-
{% endblock %}
diff --git a/templates/menu_chef/index.html.twig b/templates/menu_chef/index.html.twig
index 41ba1d4..909d76a 100644
--- a/templates/menu_chef/index.html.twig
+++ b/templates/menu_chef/index.html.twig
@@ -3,7 +3,7 @@
{% block title %}Menu index{% endblock %}
{% block body %}
- Menu du resto {{ id_resto }}
+ Menu du resto
diff --git a/templates/resa_service/_delete_form.html.twig b/templates/resa_service/_delete_form.html.twig
new file mode 100644
index 0000000..f3d3184
--- /dev/null
+++ b/templates/resa_service/_delete_form.html.twig
@@ -0,0 +1,4 @@
+
diff --git a/templates/resa_service/_form.html.twig b/templates/resa_service/_form.html.twig
new file mode 100644
index 0000000..bf20b98
--- /dev/null
+++ b/templates/resa_service/_form.html.twig
@@ -0,0 +1,4 @@
+{{ form_start(form) }}
+ {{ form_widget(form) }}
+ {{ button_label|default('Save') }}
+{{ form_end(form) }}
diff --git a/templates/resa_service/edit.html.twig b/templates/resa_service/edit.html.twig
new file mode 100644
index 0000000..b1ca729
--- /dev/null
+++ b/templates/resa_service/edit.html.twig
@@ -0,0 +1,13 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Edit Resa{% endblock %}
+
+{% block body %}
+ Edit Resa
+
+ {{ include('resa_service/_form.html.twig', {'button_label': 'Update'}) }}
+
+ back to list
+
+ {{ include('resa_service/_delete_form.html.twig') }}
+{% endblock %}
diff --git a/templates/resa_service/index.html.twig b/templates/resa_service/index.html.twig
new file mode 100644
index 0000000..652b378
--- /dev/null
+++ b/templates/resa_service/index.html.twig
@@ -0,0 +1,37 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Resa index{% endblock %}
+
+{% block body %}
+ Resa index
+
+
+
+
+ Id
+ Id_resto
+ Nb_user
+ Date_heur
+ actions
+
+
+
+ {% for resa in resas %}
+
+ {{ resa.id }}
+ {{ resa.idResto }}
+ {{ resa.nbUser }}
+ {{ resa.dateHeur ? resa.dateHeur|date('Y-m-d H:i:s') : '' }}
+
+ show
+ edit
+
+
+ {% else %}
+
+ no records found
+
+ {% endfor %}
+
+
+{% endblock %}
diff --git a/templates/resa_service/new.html.twig b/templates/resa_service/new.html.twig
new file mode 100644
index 0000000..251d1e6
--- /dev/null
+++ b/templates/resa_service/new.html.twig
@@ -0,0 +1,11 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}New Resa{% endblock %}
+
+{% block body %}
+ Create new Resa
+
+ {{ include('resa_service/_form.html.twig') }}
+
+ back to list
+{% endblock %}
diff --git a/templates/resa_service/show.html.twig b/templates/resa_service/show.html.twig
new file mode 100644
index 0000000..eea276a
--- /dev/null
+++ b/templates/resa_service/show.html.twig
@@ -0,0 +1,34 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Resa{% endblock %}
+
+{% block body %}
+ Resa
+
+
+
+
+ Id
+ {{ resa.id }}
+
+
+ Id_resto
+ {{ resa.idResto }}
+
+
+ Nb_user
+ {{ resa.nbUser }}
+
+
+ Date_heur
+ {{ resa.dateHeur ? resa.dateHeur|date('Y-m-d H:i:s') : '' }}
+
+
+
+
+ back to list
+
+ edit
+
+ {{ include('resa_service/_delete_form.html.twig') }}
+{% endblock %}
diff --git a/templates/ticket_service/_delete_form.html.twig b/templates/ticket_service/_delete_form.html.twig
new file mode 100644
index 0000000..f81c013
--- /dev/null
+++ b/templates/ticket_service/_delete_form.html.twig
@@ -0,0 +1,4 @@
+
diff --git a/templates/ticket_service/_form.html.twig b/templates/ticket_service/_form.html.twig
new file mode 100644
index 0000000..bf20b98
--- /dev/null
+++ b/templates/ticket_service/_form.html.twig
@@ -0,0 +1,4 @@
+{{ form_start(form) }}
+ {{ form_widget(form) }}
+ {{ button_label|default('Save') }}
+{{ form_end(form) }}
diff --git a/templates/ticket_service/edit.html.twig b/templates/ticket_service/edit.html.twig
new file mode 100644
index 0000000..3710e5d
--- /dev/null
+++ b/templates/ticket_service/edit.html.twig
@@ -0,0 +1,13 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Edit Ticket{% endblock %}
+
+{% block body %}
+ Edit Ticket
+
+ {{ include('ticket_service/_form.html.twig', {'button_label': 'Update'}) }}
+
+ back to list
+
+ {{ include('ticket_service/_delete_form.html.twig') }}
+{% endblock %}
diff --git a/templates/ticket_service/index.html.twig b/templates/ticket_service/index.html.twig
new file mode 100644
index 0000000..e16b043
--- /dev/null
+++ b/templates/ticket_service/index.html.twig
@@ -0,0 +1,41 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Ticket index{% endblock %}
+
+{% block body %}
+ Ticket index
+
+
+
+
+ Id
+ Id_resto
+ Id_users
+ Payement
+ Id_menu
+ actions
+
+
+
+ {% for ticket in tickets %}
+
+ {{ ticket.id }}
+ {{ ticket.idResto }}
+ {{ ticket.idUsers }}
+ {{ ticket.payement }}
+ {{ ticket.idMenu }}
+
+ show
+ edit
+
+
+ {% else %}
+
+ no records found
+
+ {% endfor %}
+
+
+
+ Create new
+{% endblock %}
diff --git a/templates/ticket_service/new.html.twig b/templates/ticket_service/new.html.twig
new file mode 100644
index 0000000..c42394e
--- /dev/null
+++ b/templates/ticket_service/new.html.twig
@@ -0,0 +1,11 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}New Ticket{% endblock %}
+
+{% block body %}
+ Create new Ticket
+
+ {{ include('ticket_service/_form.html.twig') }}
+
+ back to list
+{% endblock %}
diff --git a/templates/ticket_service/show.html.twig b/templates/ticket_service/show.html.twig
new file mode 100644
index 0000000..d58c554
--- /dev/null
+++ b/templates/ticket_service/show.html.twig
@@ -0,0 +1,38 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Ticket{% endblock %}
+
+{% block body %}
+ Ticket
+
+
+
+
+ Id
+ {{ ticket.id }}
+
+
+ Id_resto
+ {{ ticket.idResto }}
+
+
+ Id_users
+ {{ ticket.idUsers }}
+
+
+ Payement
+ {{ ticket.payement }}
+
+
+ Id_menu
+ {{ ticket.idMenu }}
+
+
+
+
+ back to list
+
+ edit
+
+ {{ include('ticket_service/_delete_form.html.twig') }}
+{% endblock %}