/** * @param Conversation $conversation * * @return ConversationValueObject * * @throws NotFoundHttpException */ private function populateConversationValueObject(Conversation $conversation) { $conversationValueObject = new ConversationValueObject($conversation->getId(), $conversation->getMessages()->count()); $users = []; if (2 > $conversation->getUsers()->count()) { throw new NotFoundHttpException('This conversation does not have enough participants'); } foreach ($conversation->getUsers() as $user) { $users[] = $this->populateUserValueObject($user); } $conversationValueObject->setUsers($users); return $conversationValueObject; }
/** * @ParamConverter("conversation", class="MessengerBundle:Conversation") * * @param Conversation $conversation * * @return Conversation */ public function newMessageAction(Conversation $conversation, $jsonMessage) { $em = $this->getManager(); $stdMessage = json_decode($jsonMessage); $user = $em->getRepository(User::class)->find($stdMessage->user); if (null === $user) { throw new NotFoundHttpException('No user found'); } $message = new Message($stdMessage->text); $message->setType($stdMessage->type)->setUser($user); $conversation->addMessage($message); $em->persist($conversation); $em->flush(); return $conversation; }