Example #1
0
 /**
  * Register an user in a game -> requires password only in case admin requires it.
  * @param Request $request
  * @param $id_partida
  * @return RedirectResponse|\Symfony\Component\HttpFoundation\Response
  */
 public function partidaRegisterAction(Request $request, $id_partida)
 {
     $this->denyAccessUnlessGranted('ROLE_USER', null, 'Unable to access this page!');
     //set language
     $locale = $request->get('_locale');
     $request->setLocale($locale);
     $request->getSession()->set('_locale', $locale);
     $user = $this->getUser();
     $user_id = $user->getId();
     $gravatar = $this->getGravatar($user->getEmail());
     /** @var ObjectManager $em */
     $em = $this->getDoctrine()->getManager();
     $router = $this->container->get('router');
     try {
         $em->getRepository('BaseBundle:UserPartida')->findByIDS($user_id, $id_partida);
         return new RedirectResponse($this->get('router')->generate('partida_home', array('id_partida' => $id_partida)));
     } catch (\Exception $e) {
         /** @var Partida $partida */
         $partida = $em->getRepository('BaseBundle:Partida')->findOneById($id_partida);
         if ($partida->getEmpezado()) {
             $this->get('session')->getFlashBag()->add('started', '');
         } else {
             $partidaLogic = new PartidaLogic();
             if ($partida->getPassword() == null) {
                 $partidaLogic->newPlayer($partida, $user_id, $em);
                 return new RedirectResponse($this->container->get('router')->generate('partida_home', array('id_partida' => $id_partida)));
             } else {
                 //creamos el formulario
                 $form = $this->createFormBuilder()->add('password', 'password', array('required' => true, 'label' => 'partida.password', 'translation_domain' => 'BaseBundle'))->getForm();
                 $form->handleRequest($request);
                 if ($form->isValid() && $request->isMethod('POST')) {
                     $data = $form->getData();
                     if (strcmp($data['password'], $partida->getPassword()) == 0) {
                         $partidaLogic->newPlayer($partida, $user_id, $em);
                         return new RedirectResponse($this->container->get('router')->generate('partida_home', array('id_partida' => $id_partida)));
                     } else {
                         $form->get('password')->addError(new FormError($this->get('translator')->trans('Incorrect password')));
                     }
                 }
                 return $this->render('BaseBundle:Partida:registerP.html.twig', array('partida' => $partida, 'form' => $form->createView(), 'gravatar' => $gravatar));
             }
         }
         return new RedirectResponse($router->generate('base_homepage'));
     }
 }