/** * @Route("/api/check-score", name="checkScore") * @Method({"GET", "POST"}) */ public function checkScoreAction(Request $request) { $encodedScore = $request->query->get('v1', FALSE); $factor = $request->query->get('v2', FALSE); $separator = $request->query->get('v3', FALSE); if ($encodedScore && $factor && $separator) { $score = $this->decodeScore($encodedScore, $factor, $separator); $bestResults = $this->getBestResults('DESC', 10); $checkedScore = $this->checkScore($score, $bestResults); // Show save result form. if ($checkedScore['saveResultNeeded'] || !$bestResults && $score) { $scoreObj = new Score(); $scoreObj->setScore($score); $form = $this->getSaveResultForm($scoreObj); $form->handleRequest($request); // Save result to database. if ($form->isValid()) { $scoreToSave = $form->getData(); if (!$this->isScoreExists($scoreToSave, $bestResults)) { $this->writeToDatabase($scoreToSave); } return $this->redirectToRoute('best'); } return $this->render('bubbles/bubblesSaveResultForm.html.twig', array('score' => $score, 'position' => $checkedScore['position'], 'form' => $form->createView())); } else { return $this->redirectToRoute('home'); } } else { throw new NotFoundHttpException(); } }
protected function isScoreExists(Score $score, $bestResults) { $result = FALSE; foreach ($bestResults as $scoreItem) { if ($score->getName() == $scoreItem->getName() && $score->getScore() == $scoreItem->getScore()) { $result = TRUE; break; } } return $result; }
public function load(ObjectManager $manager) { $game = new Game(); $game->setName('name'); $game->setDeveloper('developer'); $player = new Player(); $player->setName('name'); $score = new Score(); $score->setValue(1); $score->setPlayer($player); $score->setGame($game); $manager->persist($game); $manager->persist($player); $manager->persist($score); $manager->flush(); self::$score = $score; }