コード例 #1
0
 /**
  * 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!');
     }
 }