/** * 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!'); } }