/** * * @param Request $request * @param string|null $action * @return Form|boolean true Если форма успешно обработана * @throws \Exception */ public function createAction(Request $request = null) { return $this->builder->processForm(['caption' => 'Создать', 'object' => new BizAction(), 'action' => $this->action], function ($form) { $em = $this->em; $object = $form->getData(); $object_user = $this->user->getUserObject(); //auth checked here $this->user->checkImageAccess($object->photo, 'biz_action_image'); $object->setBiz($object_user); $object->setRandomCode(); $em->beginTransaction(); //rollback in formCode if ($this->hasActions()) { throw new \Exception('У вас уже есть акция'); } $em->persist($object); $em->flush(); $em->commit(); }, $request); }
protected function processReport($biz_id = null, Request $request = null) { $object = new FundReport(); $object->biz_id = $biz_id; return $this->formbuilder->processForm(['object' => $object, 'caption' => 'Отправить', 'action' => $this->action], function ($form) { $data = $form->getData(); $this->user->checkImageAccess($data->photo, 'report_image'); $fund = $this->user->getUserObject(); $biz = $this->em->getRepository('AppBundle:UserBiz')->getExistsById($data->biz_id); $c = $this->em->createQuery('SELECT count(u) ' . 'FROM AppBundle:Cert u ' . 'WHERE u.brand=:biz and u.fund=:fund')->setHydrationMode(Query::HYDRATE_SINGLE_SCALAR)->execute(['biz' => $biz, 'fund' => $fund]); if (!$c) { throw new \Exception('Отправка отчета недоступна т.к. нет сертификатов для данного бизнеса'); } $data->setFund($fund); $data->setBiz($biz); $this->em->persist($data); $this->em->flush(); }, $request); }