$searchTerm = (isset($request->get('search_entry')['term']) ? $request->get('search_entry')['term'] : '');
$currentRoute = (null !== $request->query->get('currentRoute') ? $request->query->get('currentRoute') : '');
+ $sortBy = $request->get('sort', 'id');
+ $direction = $request->get('direction', 'DESC');
+
switch ($type) {
case 'search':
$qb = $repository->getBuilderForSearchByUser($this->getUser()->getId(), $searchTerm, $currentRoute);
break;
case 'untagged':
- $qb = $repository->getBuilderForUntaggedByUser($this->getUser()->getId());
+ $qb = $repository->getBuilderForUntaggedByUser($this->getUser()->getId(), $sortBy, $direction);
break;
case 'starred':
- $qb = $repository->getBuilderForStarredByUser($this->getUser()->getId());
+ $qb = $repository->getBuilderForStarredByUser($this->getUser()->getId(), $sortBy, $direction);
break;
case 'archive':
- $qb = $repository->getBuilderForArchiveByUser($this->getUser()->getId());
+ $qb = $repository->getBuilderForArchiveByUser($this->getUser()->getId(), $sortBy, $direction);
break;
case 'unread':
- $qb = $repository->getBuilderForUnreadByUser($this->getUser()->getId());
+ $qb = $repository->getBuilderForUnreadByUser($this->getUser()->getId(), $sortBy, $direction);
break;
case 'all':
- $qb = $repository->getBuilderForAllByUser($this->getUser()->getId());
+ $qb = $repository->getBuilderForAllByUser($this->getUser()->getId(), $sortBy, $direction);
break;
default:
throw new \InvalidArgumentException(sprintf('Type "%s" is not implemented.', $type));
*
* @return QueryBuilder
*/
- public function getBuilderForAllByUser($userId)
+ public function getBuilderForAllByUser($userId, $sortBy = 'id', $direction = 'DESC')
{
return $this
- ->getSortedQueryBuilderByUser($userId)
+ ->getSortedQueryBuilderByUser($userId, $sortBy, $direction)
;
}
*
* @return QueryBuilder
*/
- public function getBuilderForUnreadByUser($userId)
+ public function getBuilderForUnreadByUser($userId, $sortBy = 'id', $direction = 'DESC')
{
return $this
->getSortedQueryBuilderByUser($userId)
->andWhere('e.isArchived = false')
+ ->orderBy('e.'.$sortBy, $direction)
;
}
*
* @return QueryBuilder
*/
- public function getBuilderForArchiveByUser($userId)
+ public function getBuilderForArchiveByUser($userId, $sortBy = 'id', $direction = 'DESC')
{
return $this
->getSortedQueryBuilderByUser($userId, 'archivedAt', 'desc')
->andWhere('e.isArchived = true')
+ ->orderBy('e.'.$sortBy, $direction)
;
}
*
* @return QueryBuilder
*/
- public function getBuilderForStarredByUser($userId)
+ public function getBuilderForStarredByUser($userId, $sortBy = 'id', $direction = 'DESC')
{
return $this
->getSortedQueryBuilderByUser($userId, 'starredAt', 'desc')
->andWhere('e.isStarred = true')
+ ->orderBy('e.'.$sortBy, $direction)
;
}