/**
  * @param int $page
  * @param Request $request
  * @param Application $app
  *
  * @return Response
  */
 public function search($page, Request $request, Application $app)
 {
     $keyword = $request->query->get('search');
     if ($request->query->has('search') && empty($keyword)) {
         return $app->redirect($app->path('search'));
     }
     $response = new Response();
     $resultsPerPage = 10;
     $first = ($page - 1) * $resultsPerPage;
     /** @var Members $membersRepository */
     $membersRepository = $app['repository.members'];
     if (empty($keyword)) {
         $members = $membersRepository->findAll($first, $resultsPerPage);
         $membersCount = $membersRepository->getCount();
         $response->headers->clearCookie('keyword');
     } else {
         $membersCount = $membersRepository->getSearchCount($keyword);
         $members = $membersRepository->search($keyword, $first, $resultsPerPage);
         $response->headers->setCookie(new Cookie('keyword', $keyword));
     }
     $pages = ceil($membersCount / $resultsPerPage);
     if ($page > $pages && $page != 1) {
         $app->abort(404, 'Page does not exist.');
     }
     return $app->render('search.html.twig', ['members' => $members, 'results' => $membersCount, 'results_per_page' => $resultsPerPage, 'pages' => $pages, 'current_page' => $page, 'keyword' => $keyword], $response);
 }