/** * Access URI /api/v1/messages/users/{id}/pages/{page} * * @ApiDoc( * resource=true, * description="Returns list of user messages", * requirements={ * {"name"="id", "dataType"="integer", "requirement"="true"}, * {"name"="page", "dataType"="integer", "requirement"="false"} * }, * output="Brd4\MessageBundle\Model\Message", * section="Message API", * statusCodes={ * 200="Returned when request was handled with success", * 400="Returned when bad request", * 500="Returned when there is a server side error", * }, * tags={ * "beta" = "#10A54A" * } * ) * * @ParamConverter(name="user", class="Brd4\UserBundle\Entity\User") * * @param User $user * @param $page * * @RestView * * @return View */ public function userMessageListAction(User $user, $page) { try { // TODO: remove to same service and write query $pagination = $this->get('knp_paginator')->paginate($user->getMessages(), $page, $this->getParameter('user_message.list.item.count')); $result = $this->get('brd4.common.data_transfer_prepare')->serialize($pagination, MessageModel::class, $format = 'json'); } catch (\Exception $e) { return $this->view($e->getMessage(), Codes::HTTP_BAD_REQUEST); } return $this->view(['total' => '', 'count' => $this->getParameter('user_message.list.item.count'), 'page' => $page, 'data' => $result], Codes::HTTP_OK); }
/** * @param User $user * @return array */ public function findFollowersMessages(User $user, $page, $count) { $followers[] = $user->getId(); /** @var User $follower */ foreach ($user->getFollowers() as $follower) { $followers[] = $follower->getId(); } $followers = array_unique($followers); $qb = $this->createQueryBuilder('m'); $query = $qb->select('u, m')->where('m.user IN (:ids)')->andWhere('m.createdAt >= :from')->join('m.user', 'u')->orderBy('m.createdAt', 'DESC')->setParameter('ids', $followers)->setParameter('from', new \DateTime('-24 hours'))->getQuery(); $massagePaginate = $this->getPaginator()->paginate($query, $page, $count); return $massagePaginate; }
/** * @param \Brd4\UserBundle\Entity\User $user * @param $page * @return array */ public function getUsersWithMarkFollower(\Brd4\UserBundle\Entity\User $user, $page) { $pagination = $this->userRepository->findAllUsers($user->getId(), $page, $count = $this->count); $followers = $user->getFollowers(); $followersIds = []; foreach ($followers as $follower) { $followersIds[] = $follower->getId(); } foreach ($pagination as $item) { if (in_array($item->getId(), $followersIds)) { $item->isFollow = true; } else { $item->isFollow = false; } } return $pagination; }
/** * @param User $user * @param $page * @ParamConverter(name="user", class="Brd4UserBundle:User") * @return \Symfony\Component\HttpFoundation\Response */ public function userListAction(User $user, $page) { $this->denyAccessUnlessGranted("ROLE_USER"); $pagination = $this->get('knp_paginator')->paginate($user->getMessages(), $page, $this->getParameter('user_message.list.item.count')); return $this->render('@Brd4Message/Message/user_list.html.twig', ['pagination' => $pagination, 'username' => $user->getUsername()]); }