示例#1
0
 /**
  * @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));
 }
示例#2
0
 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]);
 }