/** * @param Game $object * * @return RedirectResponse|\Symfony\Component\HttpFoundation\Response */ private function editObject($object) { $request = $this->getRequest(); $object->setStartDate($object->getStartDate()->sub(new \DateInterval('PT1H'))); /** @var User $user */ $user = $this->getUser(); $form = $this->createForm(new GameType(), $object); if ($request->isMethod('POST')) { $form->submit($request); if ($form->isValid()) { $fullGameTime = 0; /** @var Task $task */ foreach ($object->getTasks() as $task) { $fullGameTime += $task->getTaskTime(); } $object->setFullGameTime($fullGameTime); $object->getStartDate()->add(new \DateInterval('PT1H')); $this->getDoctrine()->getManager()->persist($object); $this->getDoctrine()->getManager()->flush(); $this->get('sd.game.engineservice')->updateTeamTaskLinks($object); $this->addFlash('sonata_flash_success', 'Сохранено!'); return new RedirectResponse($this->generateUrl('admin_sd_game_game_edit', ['id' => $object->getId()])); } else { $this->addFlash('sonata_flash_error', 'Ошибка сохранения'); } } return $this->render($this->admin->getTemplate('edit'), array('action' => 'edit', 'form' => $form->createView(), 'object' => $object)); }
public function findFreeTasks(Game $game) { $timeFromStart = (time() - $game->getStartDate()->getTimestamp()) / 60; return $this->getEntityManager()->createQuery('SELECT t FROM sdGameBundle:Task t WHERE t.showTime <= :time_from_start AND t.type = :ttype AND t.game = :game AND (t.showTime + t.taskTime) >= :time_from_start')->setParameters(['ttype' => Task::TYPE_FREE, 'game' => $game, 'time_from_start' => (int) $timeFromStart]); }