|
|
@@ -0,0 +1,53 @@
|
|
|
+<?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');
|
|
|
+
|
|
|
+ if (null === $session->get('user')) {
|
|
|
+ return $this->redirectToRoute('home');
|
|
|
+ }
|
|
|
+
|
|
|
+ $formBuilder = $this->createFormBuilder();
|
|
|
+ $formBuilder->add('text', \Symfony\Component\Form\Extension\Core\Type\TextType::class)
|
|
|
+ ->setAction($this->generateUrl('private_discussion', ['id' => $id]));
|
|
|
+ $form = $formBuilder->getForm();
|
|
|
+
|
|
|
+ $em = $this->getDoctrine()->getManager();
|
|
|
+ $repo_pd = $em->getRepository(PrivateDiscussion::class);
|
|
|
+ $pd = $repo_pd->find($id);
|
|
|
+ $messages = $pd->getPrivateMessages();
|
|
|
+
|
|
|
+ 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();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return $this->render('private_discussion/index.html.twig', [
|
|
|
+ 'controller_name' => 'PrivateDiscussionController',
|
|
|
+ 'messages' => $messages,
|
|
|
+ 'form' => $form->createView()
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+}
|