Пример #1
0
 /**
  *  Get the ranking and other visual statistics of a game
  *
  * @param Request $request
  * @param int $id_partida
  * @return \Symfony\Component\HttpFoundation\Response|AccessDeniedException
  */
 public function statisticsAction(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;
     }
     /** @var User $admin */
     $admin = $this->getUser();
     $admin_id = $admin->getId();
     $gravatar = $this->getGravatar($admin->getEmail());
     $em = $this->getDoctrine()->getManager();
     try {
         /** @var Partida $partida */
         $partida = $em->getRepository('BaseBundle:Partida')->isMyAdminGame($id_partida, $admin_id);
         $form = $this->createFormBuilder()->getForm();
         $form->handleRequest($request);
         if ($form->isValid() && $request->isMethod('POST')) {
             $now = new \DateTime('now');
             $partida->setFin($now);
             $em->flush();
         }
         //pasar a ms para Angular
         $fin = $partida->getFin()->getTimestamp() * 1000;
         //la partida está en curso?
         new \DateTime('NOW') >= $partida->getFin() ? $terminado = PartidaLogic::TERMINADO : ($terminado = PartidaLogic::ENCURSO);
         $ranking = $em->getRepository('BaseBundle:UserPartida')->getRanking($id_partida);
         $graphics = new GraphicsLogic();
         $adminLogic = new AdminLogic();
         /*-------tarta------*/
         $rankingFutlitidadStats = $graphics->donutJsArray($ranking, 'fUtilidad');
         $rankingAluRojaStats = $graphics->donutJsArray($ranking, 'aluRojaActual');
         $rankingAluBlancaStats = $graphics->donutJsArray($ranking, 'aluBlancaActual');
         /*-------barras en detalle---*/
         $ofertasMod = $adminLogic->barChartGraphics($em, $id_partida);
         //creamos el array para graficar los ratios
         $lineChart = $graphics->linesRatioJsArray($ofertasMod);
         //creamos el array para graficar las alubias
         $barChart = $graphics->barBeansJsArray($ofertasMod);
         return $this->render('BaseBundle:Admin:stats.html.twig', array('ranking' => $ranking, 'partida' => $partida, 'terminado' => $terminado, 'fin' => $fin, 'rankingFutilidadStats' => $rankingFutlitidadStats, 'rankingAluRojaStats' => $rankingAluRojaStats, 'rankingAluBlancaStats' => $rankingAluBlancaStats, 'lineChart' => $lineChart, 'barChart' => $barChart, 'gravatar' => $gravatar, 'form' => $form->createView()));
     } catch (\Exception $e) {
         return new AccessDeniedException('You shall not pass!');
     }
 }