public function countUnread(PersonInterface $person) { $conversations = $this->repository->getPersonConversations($person); $count = 0; foreach ($conversations as $conversation) { if ($conversation->getFirstUnreadMessage($person)) { $count++; } } return $count; }
/** * @ApiDoc( * section="Messaging", * description="List all conversations o a user", * resource=true, * output={ * "class" = "array<FOS\Message\Model\Conversation>", * "groups" = { "conversation_list" } * }, * statusCodes={ * 200 = "Loaded List", * }, * ) * @Route("/users/{user}/conversations") * @param PersonInterface $user * @ParamConverter(name="user", class="UserBundle:User", converter="doctrine.orm") * @Method("GET") * @View(serializerGroups={"conversation_list"}) * @return CollectionRepresentation|ConversationInterface[] */ public function listAction(PersonInterface $user) { return new CollectionRepresentation($this->repository->getPersonConversations($user), 'message:conversation', 'conversation'); }