| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- <?php
- namespace App\Controller;
- use App\Entity\PrivateDiscussion;
- use App\Entity\PrivateMessage;
- use App\Entity\User;
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\Routing\Annotation\Route;
- class PrivateDiscussionController extends AbstractController
- {
- #[Route('/private/discussion/{id}', name: 'private_discussion')]
- public function index($id, Request $request): Response
- {
- $session = $this->get('session');
- // Redirection sur le login si l'utilisateur n'est pas connecté
- if (null === $session->get('user')) {
- return $this->redirectToRoute('login');
- }
- // Création du formulaire pour envoyer un message à l'utilisateur
- $formBuilder = $this->createFormBuilder();
- $formBuilder->add('text', \Symfony\Component\Form\Extension\Core\Type\TextType::class,['label' => 'Envoyer un message'])
- ->setAction($this->generateUrl('private_discussion', ['id' => $id]));
- $form = $formBuilder->getForm();
- // Obtention de la liste des messages privées correspondant à un utilisateur
- $em = $this->getDoctrine()->getManager();
- $repo_pd = $em->getRepository(PrivateDiscussion::class);
- $pd = $repo_pd->find($id);
- $messages = $pd->getPrivateMessages();
- // Envoi des messages à $user
- if ($request->getMethod() == 'POST') {
- $form->handleRequest($request);
- if($form->isValid()) {
- $user = $em->getRepository(User::class)->findOneBy(array('username' => $session->get('user')));
- $pm = new PrivateMessage();
- $pm->setText($form->get('text')->getData());
- $pm->setSender($user);
- $pm->setPrivateDiscussion($pd);
- $em->persist($pm);
- $em->flush();
- }
- }
- // Affichage de la vue
- return $this->render('private_discussion/index.html.twig', [
- 'controller_name' => 'PrivateDiscussionController',
- 'messages' => $messages,
- 'form' => $form->createView(),
- 'username' => $session->get('user'),
- ]);
- }
- }
|