/**
  * Return the count of activities by user
  *
  * Not Implemented Yet
  *
  * @param User $user
  * @param \DateTime $start
  * @return array
  */
 public function findActivitiesByUserCount(User $user, \DateTime $start)
 {
     /** @var $em EntityManager */
     $em = $this->getEntityManager();
     /** @var $qb QueryBuilder */
     $qb = $em->createQueryBuilder();
     $expr = $qb->expr();
     $districtsIds = $user->getDistrictsIds();
     $sectionsIds = $user->getGroupSectionsIds();
     $activeGroups = $this->getEntityManager()->getRepository('CivixCoreBundle:UserGroup')->getActiveGroupIds($user);
     $userFollowingIds = $user->getFollowingIds();
     return $qb->select('COUNT(act.id)')->from('CivixCoreBundle:Activity', 'act')->leftJoin('act.activityConditions', 'act_c')->where($expr->gt('act.sentAt', ':start'))->andWhere($expr->orX($expr->in('act_c.districtId', ':userDistrictsIds'), 'act_c.isSuperuser = 1', $expr->in('act_c.groupId', ':userGroupsIds'), $expr->in('act_c.userId', ':userFollowingIds'), $expr->in('act_c.groupSectionId', ':userGroupSectionIds'), ':user MEMBER OF act_c.users'))->setParameter('userDistrictsIds', empty($districtsIds) ? false : $districtsIds)->setParameter('userGroupsIds', empty($activeGroups) ? false : $activeGroups)->setParameter('userFollowingIds', empty($userFollowingIds) ? false : $userFollowingIds)->setParameter('userGroupSectionIds', empty($sectionsIds) ? false : $sectionsIds)->setParameter('user', $user)->setParameter('start', $start->format('Y-m-d H:i:s'))->getQuery()->getSingleScalarResult();
 }
 public function findActivitiesByUser(User $user, \DateTime $start)
 {
     /** @var $em EntityManager */
     $em = $this->getEntityManager();
     /** @var $qb QueryBuilder */
     $qb = $em->createQueryBuilder();
     $expr = $qb->expr();
     $districtsIds = $user->getDistrictsIds();
     $sectionsIds = $user->getGroupSectionsIds();
     $activeGroups = $this->getEntityManager()->getRepository('CivixCoreBundle:UserGroup')->getActiveGroupIds($user);
     $userFollowingIds = $user->getFollowingIds();
     $activities = $qb->select('act')->from('CivixCoreBundle:Activity', 'act')->leftJoin('act.activityConditions', 'act_c')->where($expr->gt('act.sentAt', ':start'))->andWhere($expr->orX($expr->in('act_c.districtId', ':userDistrictsIds'), 'act_c.isSuperuser = 1', $expr->in('act_c.groupId', ':userGroupsIds'), $expr->in('act_c.userId', ':userFollowingIds'), $expr->in('act_c.groupSectionId', ':userGroupSectionIds'), ':user MEMBER OF act_c.users'))->setParameter('userDistrictsIds', empty($districtsIds) ? false : $districtsIds)->setParameter('userGroupsIds', empty($activeGroups) ? false : $activeGroups)->setParameter('userFollowingIds', empty($userFollowingIds) ? false : $userFollowingIds)->setParameter('userGroupSectionIds', empty($sectionsIds) ? false : $sectionsIds)->setParameter('user', $user)->setParameter('start', $start->format('Y-m-d H:i:s'))->orderBy('act.sentAt', 'DESC')->setMaxResults(500)->getQuery()->getResult();
     $readItems = $this->getEntityManager()->getRepository(ActivityRead::class)->findLastIdsByUser($user, $start);
     /* @var $activity Activity */
     foreach ($activities as $activity) {
         if (in_array($activity->getId(), $readItems)) {
             $activity->setRead(true);
         }
     }
     return $activities;
 }
 public function getGroupSectionsIds()
 {
     $this->__load();
     return parent::getGroupSectionsIds();
 }