示例#1
0
 /**
  * Выполняет действие над объектом
  * @param string $action
  * @param Request|null $request
  * @return Form|true true если форма была отправлена и успешно обработана(в остальных случаях она будет содержать ошибки)
  */
 public function processAction($action, Request $request = null)
 {
     if (is_null($this->type)) {
         throw new \Exception('wrong type');
     }
     $this->checkAction($action);
     $this->auth->setEntityName($this->type);
     $action_data = self::getActionData($action);
     $object = null;
     if ($action == 'reg') {
         $object = $this->create();
     }
     $form_action = $this->router->generate('process_action', array('action' => $action, 'type' => $this->type));
     $form = $this->form_builder->createForm($object, $action_data['caption'], $action_data['is_login'], $form_action, null, !is_null($request));
     if (is_null($request)) {
         return $form;
     }
     $form->handleRequest($request);
     if (!$form->isSubmitted() || !$form->isValid()) {
         return $form;
     }
     $ok = false;
     switch ($action) {
         case 'logout':
             try {
                 $this->auth->Logout();
                 $ok = true;
             } catch (\Exception $e) {
                 $form->addError(new FormError('Ошибка выхода: ' . $e->getMessage()));
             }
             break;
         case 'login':
             try {
                 $data = $form->getData();
                 $this->auth->Authenticate($data['login'], $data['password']);
                 $ok = true;
             } catch (\Exception $e) {
                 $form->addError(new FormError($e->getMessage()));
             }
             break;
         case 'reg':
             try {
                 $this->em->persist($object);
                 $this->em->flush();
                 $ok = true;
             } catch (UniqueConstraintViolationException $e) {
                 $form->addError(new FormError('Такой пользователь уже существует'));
             } catch (\Exception $e) {
                 $form->addError(new FormError('Внутренняя ошибка сервера, попробуйте позднее'));
             }
             break;
         default:
             throw new \Exception('unhandled form type');
     }
     return $ok ? true : $form;
 }
示例#2
0
 public function sendToFund(Request $request = null)
 {
     return $this->formbuilder->processForm(['object' => new SendFund(), 'caption' => 'Отправить', 'cancel_caption' => 'Отмена', 'action' => $this->action2], function (Form $form) {
         $user = $this->user->getUserObject();
         //UserClient
         $fund = $form->getData()->fund;
         $c = $this->em->createQuery('UPDATE AppBundle:UserClientActivatedAction u ' . 'SET ' . 'u.fund=:fund,' . 'u.status=2 ' . 'WHERE ' . 'u.user=:user and ' . 'u.status=1')->execute(['user' => $user, 'fund' => $fund]);
         $c2 = $this->em->createQuery('UPDATE AppBundle:UserClientActionsClicks u ' . 'SET ' . 'u.fund=:fund,' . 'u.clickPriceActual=false ' . 'WHERE ' . 'u.user=:user and ' . 'u.clickPriceActual=true')->execute(['user' => $user, 'fund' => $fund]);
         if (!$c && !$c2) {
             throw new \Exception('Нечего отправлять, т.к. ваш баланс 0');
         }
     }, $request);
 }
示例#3
0
文件: Biz.php 项目: nxnx/donatservice
 /**
  *
  * @throws \Exception
  */
 public function deactivateAction(Request $request = null, $id = null)
 {
     $object = new DeactivateAction();
     if (!is_null($id)) {
         $object->action_id = $id;
     }
     return $this->builder->processForm(['object' => $object, 'caption' => 'Деактивировать', 'action' => $this->action2], function ($form) {
         $user_object = $this->user->getUserObject();
         $target = $this->em->getRepository('AppBundle:BizAction')->findOneBy(['biz' => $user_object, 'active' => true, 'id' => $form->getData()->action_id]);
         if (is_null($target)) {
             throw new \Exception('Акция уже деактивирована');
         }
         $target->active = false;
         $this->em->persist($target);
         $this->em->flush();
     }, $request);
 }
示例#4
0
 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);
 }
示例#5
0
 /**
  * @Route("/user/code",name="user_code")
  * @Method("POST")
  * @param Request $request
  */
 function codeUser(Request $request)
 {
     $form = $this->get('donator')->formCode($request);
     return FormBuilder::getFormAnswer($form);
 }