/**
  * @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;
 }