src/Controller/ChatController.php line 107

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: Asus
  5.  * Date: 15/08/2018
  6.  * Time: 01:23
  7.  */
  8. namespace App\Controller;
  9. use App\Entity\Wassila\Chat;
  10. use App\Entity\Wassila\Clients;
  11. use App\Entity\Wassila\ClientsComptes;
  12. use App\Entity\Wassila\Intervenants;
  13. use App\Entity\Wassila\IntervenantsComptes;
  14. use App\Serializer\Normalizer\ChatNormalizer;
  15. use FOS\RestBundle\Controller\FOSRestController;
  16. use FOS\RestBundle\Routing\ClassResourceInterface;
  17. use FOS\RestBundle\View\View;
  18. use Symfony\Component\HttpFoundation\JsonResponse;
  19. use Symfony\Component\HttpFoundation\Request;
  20. use Symfony\Component\HttpFoundation\Response;
  21. use FOS\RestBundle\Controller\Annotations\Get;
  22. use FOS\RestBundle\Controller\Annotations as Rest;
  23. /**
  24.  * Class ChatController
  25.  * @package App\Controller
  26.  * @Rest\Route("api/messages")
  27.  */
  28. class ChatController extends FOSRestController implements ClassResourceInterface
  29. {
  30.     /**
  31.      * Return Messages .
  32.      * @Rest\Get("/show", name="messages_intervenant_list")
  33.      * @return View
  34.      */
  35.     public function messages(Request $requestChatNormalizer $chatNormalizer){
  36.         ini_set('memory_limit''-1');
  37.         $role $request->get('t');
  38.         $u $request->get('u');
  39.         $current $this->getUser()->getId();
  40.         if($role == 1){
  41.             $apprenant $this->getDoctrine()
  42.                 ->getRepository(ClientsComptes::class, 'default')
  43.                 ->findOneBy(array('idUtilisateurs' => $u));
  44.             $intervenant $this->getDoctrine()
  45.                 ->getRepository(IntervenantsComptes::class, 'default')
  46.                 ->findOneBy(array('idUtilisateurs' => $current));
  47.             $chats $this->getDoctrine()
  48.                 ->getRepository(Chat::class, 'default')
  49.                 ->findBy(
  50.                     array(
  51.                         'client' => $u,
  52.                         'intervenant' => $intervenant->getIdIntervenants()->getId()
  53.                     )
  54.                 );
  55.             /*$chats = $this->getDoctrine()->getRepository(Chat::class)->findBy(
  56.                 array(
  57.                     'user' => $u,
  58.                     'intervenant' => $current
  59.                 )
  60.             );*/
  61.         }elseif($role == 0){
  62.             $apprenant $this->getDoctrine()
  63.                 ->getRepository(ClientsComptes::class, 'default')
  64.                 ->findOneBy(array('idUtilisateurs' => $current));
  65.             $apprenant $this->getDoctrine()
  66.                 ->getRepository(Clients::class, 'default')
  67.                 ->findOneBy(array('id' => $apprenant->getIdClients()));
  68.             $intervenant $this->getDoctrine()
  69.                 ->getRepository(Intervenants::class, 'default')
  70.                 ->findOneBy(array('id' => $u));
  71.             $chats $this->getDoctrine()
  72.                 ->getRepository(Chat::class, 'default')
  73.                 ->findBy(
  74.                 array(
  75.                     'client' => $apprenant,
  76.                     'intervenant' => $intervenant
  77.                 )
  78.             );
  79.         }
  80.         if(!$chats){
  81.             $v View::create([], Response::HTTP_OK,[]);
  82.         }else{
  83.             $chats $chatNormalizer->normalize($chats);
  84.             $v View::create($chatsResponse::HTTP_OK,[]);
  85.         }
  86.         return $this->handleView($v);
  87.     }
  88.     /**
  89.      * Return Messages .
  90.      * @Rest\Get("/check", name="messages_intervenant_list_check")
  91.      * @return View
  92.      */
  93.     public function checkEmail(Request $requestChatNormalizer $chatNormalizer){
  94.         ini_set('memory_limit''-1');
  95.         $role $request->get('typeuser');
  96.         $current $this->getUser()->getId();
  97.         if($role == 1){
  98.             $intervenant $this->getDoctrine()
  99.                 ->getRepository(IntervenantsComptes::class, 'default')
  100.                 ->findOneBy(array('idUtilisateurs' => $current));
  101.             $chats $this->getDoctrine()
  102.                 ->getRepository(\App\Entity\Wassila\Chat::class, 'default')
  103.                 ->findBy(
  104.                     array(
  105.                         'vu_intervenant' => false,
  106.                         'intervenant' => $intervenant->getIdIntervenants()->getId()
  107.                     )
  108.                 );
  109.             if(($chats)){
  110.                 $chats $chatNormalizer->normalize($chats);
  111.                 if(count($chats) == 0){
  112.                     $v View::create($chatsResponse::HTTP_OK,[]);
  113.                     return $this->handleView($v);
  114.                 }else{
  115.                     $v View::create($chatsResponse::HTTP_OK,[]);
  116.                     return $this->handleView($v);
  117.                 }
  118.             }else{
  119.                 $v View::create([], Response::HTTP_OK,[]);
  120.                 return $this->handleView($v);
  121.             }
  122.         }elseif ($role == 0){
  123.             $apprenant $this->getDoctrine()
  124.                 ->getRepository(ClientsComptes::class, 'default')
  125.                 ->findOneBy(array('idUtilisateurs' => $current));
  126.             $apprenant $this->getDoctrine()
  127.                 ->getRepository(Clients::class, 'default')
  128.                 ->findOneBy(array('id' => $apprenant->getIdClients()));
  129.             $chats $this->getDoctrine()
  130.                 ->getRepository(Chat::class, 'default')
  131.                 ->findBy(
  132.                     array(
  133.                         'vu_apprenant' => false,
  134.                         'client' => $apprenant
  135.                     )
  136.                 );
  137.             if(($chats)){
  138.                 $chats $chatNormalizer->normalize($chats);
  139.                 if(count($chats) == 0){
  140.                     $v View::create($chatsResponse::HTTP_OK,[]);
  141.                     return $this->handleView($v);
  142.                 }else{
  143.                     $v View::create($chatsResponse::HTTP_OK,[]);
  144.                     return $this->handleView($v);
  145.                 }
  146.             }else{
  147.                 $v View::create([], Response::HTTP_OK,[]);
  148.                 return $this->handleView($v);
  149.             }
  150.         }else{
  151.             $v View::create(0Response::HTTP_OK,[]);
  152.             return $this->handleView($v);
  153.         }
  154.     }
  155.     /**
  156.      *
  157.      * @param Request $request
  158.      * @Rest\Put("/new", name="new_chat")
  159.      * @return View
  160.      */
  161.     public function newChat(Request $request){
  162.         ini_set('memory_limit''-1');
  163.         $content $request->get('content');
  164.         $from $request->get('from_sender');
  165.         $intervenant $request->get('intervenant');
  166.         $user  $request->get('user');
  167.         //$em = $this->getDoctrine()->getManager();
  168.         $em $this->getDoctrine()->getManager('default');
  169.         $chat = new Chat();
  170.         if($intervenant == null){
  171.             //$user = $em->getRepository('App:User')->findOneBy(array('id' => $user));
  172.             $user $this->getDoctrine()
  173.                 ->getRepository(Clients::class, 'default')
  174.                 ->findOneBy(array('id' => intval($user)));
  175.             $intervenant $this->getUser()->getId();
  176.             $intervenant $this->getDoctrine()
  177.                 ->getRepository(IntervenantsComptes::class, 'default')
  178.                 ->findOneBy(array('idUtilisateurs' => intval($intervenant)));
  179.             $intervenant $intervenant->getIdIntervenants();
  180.             /*$intervenant = $this->getDoctrine()
  181.                 ->getRepository(Intervenants::class, 'default')
  182.                 ->findOneBy(array('id' => $intervenant));*/
  183.             $chat->setVuApprenant(false);
  184.             $chat->setVuIntervenant(true);
  185.         }elseif($user == null){
  186.             $user $this->getUser()->getId();
  187.             $user $this->getDoctrine()
  188.                 ->getRepository(ClientsComptes::class, 'default')
  189.                 ->findOneBy(array('idUtilisateurs' => intval($user)));
  190.             $user $user->getIdClients();
  191.             /*$user = $this->getDoctrine()
  192.                 ->getRepository(Clients::class, 'default')
  193.                 ->findOneBy(array('id' => $user));*/
  194.             $intervenant $this->getDoctrine()
  195.                 ->getRepository(Intervenants::class, 'default')
  196.                 ->find(intval($intervenant));
  197.             $chat->setVuApprenant(true);
  198.             $chat->setVuIntervenant(false);
  199.         }
  200.         //if($datas){
  201.         $chat->setContent($content);
  202.         $chat->setFromSender($from);
  203.         $chat->setDateChat(new \DateTime());
  204.         $chat->setIntervenant($intervenant);
  205.         $chat->setClient($user);
  206.         $em->persist($chat);
  207.         $em->flush();
  208.         $data =  new JsonResponse(
  209.             [
  210.                 'status' => 'ok',
  211.                 'chat' => $chat
  212.             ],JsonResponse::HTTP_CREATED
  213.         );
  214.         $v = new View($dataResponse::HTTP_OK);
  215.         return $this->handleView($v);
  216.     }
  217.     /**
  218.      *
  219.      * @param Request $request
  220.      * @Rest\Post("/close", name="setchat_as_readed_chat")
  221.      * @return JsonResponse
  222.      */
  223.     public function closeChat(Request $request){
  224.         ini_set('memory_limit''-1');
  225.         $role $request->get('t');
  226.         $u $request->get('u');
  227.         $current $this->getUser()->getId();
  228.         if($role == 1){
  229.             $intervenant $this->getDoctrine()
  230.                 ->getRepository(IntervenantsComptes::class, 'default')
  231.                 ->findOneBy(array('idUtilisateurs' => $current));
  232.             $chats $this->getDoctrine()
  233.                 ->getRepository(Chat::class, 'default')
  234.                 ->findBy(
  235.                     array(
  236.                         'client' => $u,
  237.                         'intervenant' => $intervenant->getIdIntervenants()->getId(),
  238.                         'vu_intervenant' => false
  239.                     )
  240.                 );
  241.             $em $this->getDoctrine()->getManager('default');
  242.             if(!empty($chats)){
  243.                 foreach ($chats as $chat){
  244.                     $chat->setVuIntervenant(true);
  245.                     $em->persist($chat);
  246.                     $em->flush();
  247.                 }
  248.             }
  249.             return new JsonResponse($intervenant);
  250.         }elseif($role == 0){
  251.             $apprenant $this->getDoctrine()
  252.                 ->getRepository(ClientsComptes::class, 'default')
  253.                 ->findOneBy(array('idUtilisateurs' => $current));
  254.             $apprenant $this->getDoctrine()
  255.                 ->getRepository(Clients::class, 'default')
  256.                 ->findOneBy(array('id' => $apprenant->getIdClients()));
  257.             $intervenant $this->getDoctrine()
  258.                 ->getRepository(Intervenants::class, 'default')
  259.                 ->findOneBy(array('id' => $u));
  260.             $chats $this->getDoctrine()
  261.                 ->getRepository(Chat::class, 'default')
  262.                 ->findBy(
  263.                     array(
  264.                         'client' => $apprenant,
  265.                         'intervenant' => $intervenant
  266.                     )
  267.                 );
  268.             $em $this->getDoctrine()->getManager('default');
  269.             if(!empty($chats)){
  270.                 foreach ($chats as $chat){
  271.                     $chat->setVuApprenant(true);
  272.                     $em->persist($chat);
  273.                     $em->flush();
  274.                 }
  275.             }
  276.             return new JsonResponse($apprenant);
  277.         }
  278.     }
  279.     /**
  280.      *
  281.      * @param Request $request
  282.      * @Rest\Put("/{id}/readed", name="setchat_as_readed_chat_on")
  283.      * @return JsonResponse
  284.      */
  285.     public function setAsReaded($idRequest $request){
  286.         $chat = [];
  287.         $col $request->request->get('col');
  288.         $role $request->get('typeuser');
  289.         //$role = 1;
  290.         $em $this->getDoctrine()->getManager('default');
  291.         /*$chat = $this->getDoctrine()
  292.             ->getRepository(Chat::class, 'default')
  293.             ->findOneBy(array(
  294.                 'id' => intval($col)
  295.             ));*/
  296.         $chat $this->getDoctrine()->getRepository(Chat::class)->find(intval($id));
  297.         $tt '';
  298.         if(!empty($chat)){
  299.             if($role == ){
  300.                 $chat->setVuIntervenant(1);
  301.                 $tt 'role 0 ';
  302.             }elseif($role == 1){
  303.                 $chat->setVuApprenant(1);
  304.                 $tt 'role 1 ';
  305.             }
  306.         }else{
  307.             return new JsonResponse('not ok hhh');
  308.         }
  309.         $em->persist($chat);
  310.         $em->flush();
  311.         return new JsonResponse($tt);
  312.     }
  313. }