function buildMessage(User $user, Salon $salon, $content, $date) { $message = new Message(); $message->setSalon($salon); $message->setUser($user); $message->setCreatedAt($date); $message->setMessage($content); return $message; }
public function showAction(Request $request, $id) { $user = $this->getUser(); $em = $this->get('doctrine.orm.entity_manager'); $salon = $em->getRepository('TerAelisTChatBundle:Salon')->getRoomFull($id); if ($salon == null) { throw $this->createNotFoundException('Salon introuvable.'); } $salonUsers = $salon->getUsers(); $salonMods = $salon->getMods(); $allow = false; $mod = false; if (!$allow) { foreach ($salonMods as $m) { if ($m->getId() == $user->getId()) { $allow = true; $mod = true; break; } } if (!$allow) { foreach ($salonUsers as $u) { if ($u->getId() == $user->getId()) { $allow = true; break; } } } } if (!$allow) { throw $this->createNotFoundException('Salon introuvable.'); } $messages = $salon->getMessages(); // Création du formulaire $message = new Message(); $message->setSalon($salon); $message->setUser($user); if ($request->isMethod('POST')) { $message->setCreatedAt(new \DateTime()); $message->setMessage(json_decode($request->getContent())->message); $persistService = $this->get('teraelis.tchat.persist_chat'); $persistService->persistMessage($message); $response = new Response(); $response->setContent(json_encode(array('response' => 'ok', 'createdAt' => $message->getCreatedAt()->getTimestamp()))); $response->headers->set('Content-Type', 'application/json'); return $response; } else { if ($request->isMethod('OPTION')) { $response = new Response(); $response->headers->set('Allow', 'GET', 'POST', 'OPTIONS'); return $response; } } $form = $this->createForm(new MessageType(), $message); $renderArray = array('date' => (new \DateTime())->getTimestamp(), 'salon' => $salon, 'users' => $salonUsers, 'mods' => $salonMods, 'mod' => $mod, 'messages' => $messages, 'form' => $form->createView()); if ($salon->getPrivate()) { $otherUser = null; foreach ($salonUsers as $otherUser) { if ($user->getId() != $otherUser->getId()) { break; } } $renderArray['otherUser'] = $otherUser; } $nonVus = $em->getRepository('TerAelisTChatBundle:NonVuTChat')->nonVuBySalon($salon, $user); foreach ($nonVus as $nv) { $em->remove($nv); } $em->flush(); return $this->render('TerAelisTChatBundle:Salon:show.html.twig', $renderArray); }