/** * Distributes randomly the beans to the players, and starts the game. * * @param Request $request * @param int $id_partida * @return RedirectResponse|AccessDeniedException */ public function distributeBeansAction(Request $request, $id_partida) { $locale = $request->get('_locale'); $request->setLocale($locale); $request->getSession()->set('_locale', $locale); //Security control. Check user roles. $response = $this->checkSecurity($request); if ($response instanceof RedirectResponse) { return $response; } $admin_id = $this->getUser()->getId(); $em = $this->getDoctrine()->getManager(); try { /** @var Partida $partida */ $partida = $em->getRepository('BaseBundle:Partida')->isMyAdminGame($id_partida, $admin_id); /** @var QueryBuilder $qb */ $qb = $em->createQueryBuilder(); //localizamos el objeto $qb->select('u')->from('BaseBundle:UserPartida', 'u')->where($qb->expr()->eq('u.idPartida', '?1'))->setParameter(1, $id_partida); $query = $qb->getQuery(); $jugadores = $query->getResult(); $logic = new UserPartidaLogic(); $logic->distributeBeans($partida, $jugadores, $em); //actualizar partida a empezado $partida->setEmpezado(true); $em->flush(); return new RedirectResponse($this->get('router')->generate('game_statistics', array('id_partida' => $id_partida))); } catch (\Exception $e) { return new AccessDeniedException('You shall not pass!'); } }