public function create($data)
 {
     error_reporting(E_ALL);
     ini_set('display_errors', 1);
     $transaction = new Transaction();
     //var_dump($data);exit;
     if (isset($data['itemlist'])) {
         $arr = [];
         foreach ($data['itemlist'] as $item) {
             $arr[] = $item['id'];
         }
         $data['items'] = $arr;
     }
     $payDate = new \DateTime($data['payDate']);
     $createDate = new \DateTime("now");
     if (isset($data['bankinfouser'])) {
         $data["bankinfouser"] = $data['bankinfo']['name'];
     }
     $currency = '';
     if ($data['typeStatus'] == 1) {
         $client = $this->getReference('\\User\\Entity\\User', $data['userid']);
         $currency = $client->getCurrency();
         $freelancer = null;
     } else {
         // out going
         $freelancer = $this->getReference('\\User\\Entity\\User', $data['userid']);
         $currency = $freelancer->getCurrency();
         $client = null;
     }
     $transaction->setData(['intrans_no' => $data["transactionno"], 'fapiao_no' => $data["fapiaono"], 'total' => $data["total"] ? $data["total"] : 0.0, 'subtotal' => $data["subtotal"] ? $data["subtotal"] : 0.0, 'fee' => $data["transactionfee"] ? $data["transactionfee"] : 0.0, 'bank' => $this->getReference('Admin\\Entity\\ProfileBank', $data['bankinfo']['id']), 'bankuser' => $data["bankinfouser"], 'is_deleted' => 0, 'client' => $client, 'freelancer' => $freelancer, 'payDate' => $payDate, 'createDate' => $createDate, 'typeStatus' => $data['typeStatus'], 'currency' => $currency, 'items' => $data['items'] ? $data['items'] : null]);
     $transaction->save($this->getEntityManager());
     //update status project to pay
     if ($data['typeStatus'] == 1) {
         foreach ($data['itemlist'] as $pr) {
             $project = $this->find('\\User\\Entity\\Project', $pr['id']);
             $project->setData(['payStatus' => 2]);
             $project->save($this->getEntityManager());
         }
     } else {
         if ($data['typeStatus'] == 2) {
             foreach ($data['itemlist'] as $ta) {
                 $task = $this->find('\\User\\Entity\\Task', $ta['id']);
                 $task->setData(['payStatus' => 2]);
                 $task->save($this->getEntityManager());
             }
         }
     }
     return new JsonModel(['success' => true]);
 }
示例#2
0
 public function doneAction()
 {
     //error_reporting(E_ALL);
     //ini_set('display_errors', 1);
     $token = $this->getServiceLocator()->get('payum.security.http_request_verifier')->verify($this);
     $gateway = $this->getServiceLocator()->get('payum')->getGateway($token->getGatewayName());
     $gateway->execute($status = new GetHumanStatus($token));
     //return new JsonModel(array('status' => $status->getValue()) + iterator_to_array($status->getModel()));
     if ($status->getValue() == "captured") {
         $order = new Container('order');
         //create transaction sucessfull
         $transaction = new Transaction();
         $transaction->setData(['intrans_no' => "", 'fapiao_no' => "", 'total' => round($order->offsetGet('total'), 2), 'subtotal' => round($order->offsetGet('total'), 2), 'fee' => 0, 'bank' => $this->getReference('Admin\\Entity\\ProfileBank', 1), 'is_deleted' => 0, 'client' => $this->getReference('User\\Entity\\User', $order->offsetGet('client')), 'payDate' => new \DateTime('NOW'), 'createDate' => new \DateTime('NOW'), 'typeStatus' => 1, 'currency' => $order->offsetGet('currency'), 'items' => $data['items'] ? $data['items'] : null]);
         $transaction->save($this->getEntityManager());
         //update status project to pay
         $project = $this->find('\\User\\Entity\\Project', $order->offsetGet('project'));
         $project->setData(['payStatus' => 2]);
         $project->save($this->getEntityManager());
         //go to sucessful page
         return new ViewModel(['success' => true, 'total' => round($order->offsetGet('total'), 2), 'currency' => $order->offsetGet('currency'), 'project_no' => $order->offsetGet('project_no'), 'project' => $order->offsetGet('project')]);
     } else {
         //go to fail page
         return new ViewModel(['success' => false]);
     }
 }