From 055b967996a21637eb466face94caa30dddc7b5f Mon Sep 17 00:00:00 2001 From: Alexey Skobkin Date: Sun, 31 May 2015 11:11:40 +0300 Subject: [PATCH] Case insensitive user search and URL's. --- .../Controller/UserController.php | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Skobkin/Bundle/PointToolsBundle/Controller/UserController.php b/src/Skobkin/Bundle/PointToolsBundle/Controller/UserController.php index ffcb6d6..d294de5 100644 --- a/src/Skobkin/Bundle/PointToolsBundle/Controller/UserController.php +++ b/src/Skobkin/Bundle/PointToolsBundle/Controller/UserController.php @@ -4,7 +4,6 @@ namespace Skobkin\Bundle\PointToolsBundle\Controller; use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\EntityManager; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; use Skobkin\Bundle\PointToolsBundle\Entity\TopUserDTO; use Skobkin\Bundle\PointToolsBundle\Entity\User; use Skobkin\Bundle\PointToolsBundle\Service\UserApi; @@ -14,14 +13,27 @@ use Symfony\Component\HttpFoundation\Request; class UserController extends Controller { /** - * @param User $user - * @ParamConverter("user", class="SkobkinPointToolsBundle:User", options={"login" = "login"}) + * @param string $login */ - public function showAction(User $user) + public function showAction($login) { + /** @var QueryBuilder $qb */ + $qb = $this->getDoctrine()->getManager()->getRepository('SkobkinPointToolsBundle:User')->createQueryBuilder('u'); + + $user = $qb + ->select('u') + ->where('LOWER(u.login) = LOWER(:login)') + ->setMaxResults(1) + ->setParameter('login', $login) + ->getQuery()->getOneOrNullResult() + ; + + if (!$user) { + throw $this->createNotFoundException('User ' . $login . ' not found.'); + } + $userApi = $this->container->get('skobkin_point_tools.api_user'); - /** @var QueryBuilder $qb */ $qb = $this->getDoctrine()->getManager()->getRepository('SkobkinPointToolsBundle:User')->createQueryBuilder('u'); $subscribers = $qb