<?php
namespace App\Controller;
use App\Entity\Parametres;
use App\Entity\MessageParametre;
use App\Services\MessageReponse;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpFoundation\Request;
class AfficheMessageController extends Controller
{
/*
public function index()
{
return $this->render('affiche_message/index.html.twig', [
'controller_name' => 'AfficheMessageController',
]);
}
*/
public function afficheMessage(Request $request, SessionInterface $session, MessageReponse $msgRep)
{
if($request->isMethod('GET'))
{
$user = $session->get('user', null);
$idMessage = $_GET['idMessage'];
$em = $this->getDoctrine()->getManager();
$message0 = $em->createQueryBuilder('msg')->select('m')->from('App\Entity\MessageParametre', 'm')->where('m.id ='.$idMessage)->getQuery()->getResult();
$message = $message0[0];
$id_pseudo = $message->getIdParametre();
$stmt_pseudo = $em->getConnection()->prepare('SELECT `pseudo` FROM `parametres` WHERE `parametres`.`id_parametres` ='.$id_pseudo);
$stmt_pseudo->execute();
$pseudo = ($stmt_pseudo->fetchAll())[0]['pseudo'];
$reponses = $msgRep->getReponses($message, $em->getConnection());
$reponses_pseudo = array();
foreach($reponses as $reponse)
{
$sender = $em->createQueryBuilder('pseudo')->select('u')->from('App\Entity\Parametres', 'u')->where('u.idParametres ='.$reponse['id_parametre'])->getQuery()->getResult();
if(empty($sender))
{
$reponses_pseudo[] = "Non renseigné";
}
else
{
$reponses_pseudo[] = $sender[0]->getPseudo();
}
}
$newMessage = new MessageParametre();
$MessageForm = $this->getMessageForm($newMessage);
return $this->render('Messages/afficheMessage.html.php', array(
'user'=>$user,
'pseudo'=>$pseudo,
'idMessage'=>$idMessage,
'message'=>$message,
'reponses'=>$reponses,
'reponsesPseudo'=>$reponses_pseudo,
'messageForm'=>$MessageForm->createView()
));
}
if($request->isMethod('POST') && $session->get('user',null) != null)
{
$newMessage = new MessageParametre();
$MessageForm = $this->getMessageForm($newMessage);
$MessageForm->handleRequest($request);
if($MessageForm->isSubmitted() && $MessageForm->isValid())
{
$idPere = $_POST['idPere'];
$newMessage->setIdPere($idPere);
$newMessage->setIdParametre($session->get('user')->getIdParametres());
$newMessage->setDateCreation(new \DateTime('NOW'));
$newMessage->setDateMaj(new \DateTime('NOW'));
$em = $this->getDoctrine()->getManager();
$em->persist($newMessage);
$em->flush();
return $this->redirectToRoute('afficheMessage', array('idMessage' => $idPere));
}
return $this->redirectToRoute('afficheMessage', array('idMessage' => $idPere));
}
}
public function getMessageForm($message)
{
$MessageForm = $this->createFormBuilder($message)
->add('message', TextareaType::class,array('label' => 'Votre Reponse'))
->add('save', SubmitType::class, ['label' => 'Répondre'])
->getForm();
return $MessageForm;
}
public function newMessage(Request $request, SessionInterface $session)
{
$user = $session->get('user', null);
if($user == null)
{
return $this->redirectToRoute('login');
}
$newMessage = new MessageParametre();
$MessageForm = $this->getMessageForm($newMessage);
$MessageForm->handleRequest($request);
if($MessageForm->isSubmitted() && $MessageForm->isValid())
{
$newMessage->setIdParametre($session->get('user')->getIdParametres());
$newMessage->setDateCreation(new \DateTime('NOW'));
$newMessage->setDateMaj(new \DateTime('NOW'));
$em = $this->getDoctrine()->getManager();
$em->persist($newMessage);
$em->flush();
return $this->redirectToRoute('afficheMessage', array('idMessage' => $newMessage->getId()));
}
return $this->render('Messages/newMessage.html.php', array(
'user'=>$user,
'messageForm'=>$MessageForm->createView()
));
}
}