src/Controller/MessagesController.php line 41

  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\Mailer\MailerInterface;
  10. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  11. use Symfony\Component\Mime\Email;
  12. use Symfony\Component\Mime\Address;
  13. use OlaSoft\Common;
  14. use App\Entity\Messages;
  15. /**
  16.  * @Route("/os-admin/messages")
  17.  */
  18. class MessagesController extends AbstractController
  19. {
  20.     public function __construct(ManagerRegistry $doctrine){
  21.         $this->doctrine =  $doctrine;
  22.     }
  23.     
  24.     private $doctrine;
  25.     
  26.     public function getDoctrine()
  27.     {
  28.         return $this->doctrine;
  29.     }
  30.     
  31.     /**
  32.      * @Route("/", name="messages-admin")
  33.      * @Route("/page/{offset}", name="messages-admin-page")
  34.      * @Route("/search/{keywords}/page/{offset}/",name="messages-search-admin-page")
  35.      * @Route("/search/{keywords}/",name="messages-search-admin")
  36.      */
  37.     public function admin(Request $request$keywords=null,$offset=1)
  38.     {
  39.         $offset--;
  40.         $limit 100;
  41.         $of=$offset*$limit;
  42.         $em $this->getDoctrine()->getManager();
  43.         $list$em->getRepository(Messages::class)->getAll($limit,$of,$keywords);
  44.         $count=$em->getRepository(Messages::class)->getCount();
  45.         $ajax $request->isXmlHttpRequest();
  46.         $response $this->render('Admin\index.html.twig',[
  47.             'messages' => $list,
  48.             'ajax'=>$ajax,
  49.             'count'=>$count,
  50.             'table_limit'=>$limit,
  51.             'offset'=>$offset,
  52.             'noAddBtn' => true,
  53.             'title'=>'Gestion des messages reçus',
  54.             'subtitle'=>'Liste de tous les messages'
  55.         ]);
  56.         return $ajax ?
  57.             new Response(\json_encode([
  58.                 'content'=>$response->getContent(),
  59.                 'title'=>'Gestion des messages reçus',
  60.                 'subtitle'=>'Liste de tous les messages'
  61.             ]))
  62.         : $response;
  63.     }
  64.     /**
  65.      * @Route("/view/{id}", name="messages-view")
  66.      */
  67.     public function view(Request $requestMessages $msg)
  68.     {
  69.         $ajax $request->isXmlHttpRequest();
  70.         $response $this->render('Messages\view.html.twig',[
  71.             'msg' => $msg,
  72.             'ajax'=>$ajax,
  73.             'title'=>'Gestion des messages reçus',
  74.             'subtitle'=>'Message de '.$msg->getFName().' '.$msg->getLName()
  75.         ]);
  76.         return $ajax ?
  77.             new Response(\json_encode([
  78.                 'content'=>$response->getContent(),
  79.                 'title'=>'Gestion des messages reçus',
  80.                 'subtitle'=>'Message de '.$msg->getFName().' '.$msg->getLName()
  81.             ]))
  82.         : $response;
  83.     }
  84.     /**
  85.      * @Route("/send/{id}", name="messages-send")
  86.      */
  87.     public function send(Request $requestMessages $msgMailerInterface $mailer)
  88.     {
  89.         $author $msg->getFName().' '.$msg->getLName();
  90.         $message"<b>Nom et prénoms : </b>".$author.
  91.             "<br/><b>Adresse électronique : </b>".$msg->getEmail().
  92.             "<br/><b>Téléphone : </b>".$msg->getPhone().
  93.             "<br/><b>Object : </b>".$msg->getObject().
  94.             "<br/><b>Message :</b><p style='border-left: 3px solid #ccc; padding-left: 10px; padding-top: 5px; padding-bottom: 5px;'>".nl2br($msg->getContent())."</p>";
  95.         $email = (new TemplatedEmail())
  96.             ->from('noreply@'.$_SERVER['HTTP_HOST'])
  97.             ->to(Common::params('contacts')['email'])
  98.             ->replyTo(new Address($msg->getEmail(),$author))
  99.             ->priority(Email::PRIORITY_HIGH)
  100.             ->subject(Common::params('sitename').' - '.$msg->getObject())
  101.             ->html($message);
  102.         $mailer->send($email);
  103.         $this->addFlash("notice","Votre message a été envoyé avec succès.");
  104.         $ajax $request->isXmlHttpRequest();
  105.         return $ajax
  106.             ? new Response(\json_encode(['status'=>true'notice'=>'Message envoyé avec succès']))
  107.             : $this->redirectToRoute('messages-admin');
  108.     }
  109. }