/**
  * @param User      $user
  * @param Portfolio $portfolio
  * @param array     $range     0 => startDate and 1 => endDate
  *
  * @return array
  */
 public function getViewsForChart(User $user, Portfolio $portfolio, array $range)
 {
     /** @var \Claroline\CoreBundle\Repository\Log\LogRepository $logRepository */
     $logRepository = $this->entityManager->getRepository('ClarolineCoreBundle:Log\\Log');
     $queryBuilder = $logRepository->createQueryBuilder('log')->select('log.shortDateLog as shortDate, count(log.id) as total')->orderBy('shortDate', 'ASC')->groupBy('shortDate');
     $queryBuilder = $logRepository->addOwnerFilterToQueryBuilder($queryBuilder, $user);
     $queryBuilder = $logRepository->addActionFilterToQueryBuilder($queryBuilder, PortfolioViewEvent::ACTION);
     $queryBuilder = $logRepository->addOtherElementIdFilterToQueryBuilder($queryBuilder, $portfolio->getId());
     $queryBuilder = $logRepository->addDateRangeFilterToQueryBuilder($queryBuilder, $range);
     return $logRepository->extractChartData($queryBuilder->getQuery()->getResult(), $range);
 }
 /**
  * @param Portfolio $portfolio
  * @param User      $user
  *
  * @return array
  */
 public function getUserGuidedPortfolioData(Portfolio $portfolio, User $user)
 {
     return array('type' => $user === $portfolio->getUser() ? 'owned' : 'guided', 'id' => $portfolio->getId(), 'title' => $portfolio->getTitle(), 'unreadComments' => $portfolio->getCountUnreadComments(), 'commentsViewAt' => $portfolio->getCommentsViewAt()->format(DATE_W3C));
 }
 /**
  * Get details.
  *
  * @return array
  */
 public function getNotificationDetails()
 {
     $receiver = $this->getReceiver();
     $notificationDetails = array('portfolio' => array('id' => $this->portfolio->getId(), 'title' => $this->portfolio->getTitle(), 'slug' => $this->portfolio->getSlug()), 'guide' => array('id' => $receiver->getId(), 'publicUrl' => $receiver->getPublicUrl(), 'lastName' => $receiver->getLastName(), 'firstName' => $receiver->getFirstName()));
     return $notificationDetails;
 }
 public function getLogSignature()
 {
     return self::ACTION . '_' . $this->portfolio->getId();
 }