コード例 #1
0
 /**
  * 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);
 }
コード例 #2
0
ファイル: MessageRepository.php プロジェクト: rud-felix/tweet
 /**
  * @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;
 }
コード例 #3
0
ファイル: User.php プロジェクト: rud-felix/tweet
 /**
  * @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;
 }
コード例 #4
0
ファイル: MessageController.php プロジェクト: rud-felix/tweet
 /**
  * @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()]);
 }