public function insert($data)
 {
     $hydrator = new ObjectProperty();
     //Hidrate StdClass to array
     $data->user_id = $this->usersRepository->getAuthenticated()->getId();
     $data->created_at = (new \DateTime())->format('Y-m-d');
     $data->total = 0;
     $items = $data->item;
     unset($data->item);
     $orderData = $hydrator->extract($data);
     $tableGateway = $this->repository->getTableGateway();
     try {
         $tableGateway->getAdapter()->getDriver()->getConnection()->beginTransaction();
         $order_id = $this->repository->insert($orderData);
         foreach ($items as $key => $item) {
             $product = $this->productsRepository->find($item['product_id']);
             $item['order_id'] = $order_id;
             $item['price'] = $product->getPrice();
             $item['total'] = $items[$key]['total'] = $item['quantity'] * $item['price'];
             $total += $item['total'];
             $this->repository->insertItem($item);
         }
         $this->repository->update(['total' => $total], $order_id);
         $tableGateway->getAdapter()->getDriver()->getConnection()->commit();
         return ['order_id' => $order_id];
     } catch (\Exception $e) {
         $tableGateway->getAdapter()->getDriver()->getConnection()->rollback();
         return 'error';
     }
 }
 /**
  * Fetch all or a subset of resources
  *
  * @param  array $params
  * @return ApiProblem|mixed
  */
 public function fetchAll($params = array())
 {
     $userRepository = $this->repository->getUsersRepository();
     $user = $userRepository->findByUsername($this->getIdentity()->getRoleId());
     //if ($user->getRole() == "salesman"){
     //return $this->repository->findAllIdUsuario($user->getId());
     //}
     return $this->repository->findAll();
 }
 /**
  * Fetch all or a subset of resources
  *
  * @param  array $params
  * @return ApiProblem|mixed
  */
 public function fetchAll($params = array())
 {
     $usuarioLogado = $this->getUsuarioLogado();
     if ($usuarioLogado->getRole() === 'salesman') {
         $params['user_id'] = $usuarioLogado->getId();
     }
     return $this->repository->findAll($params);
 }
Example #4
0
 private function getTotal($idOrder)
 {
     $total = 0;
     $items = $this->ordersRepository->getItemTable()->select(['order_id' => (int) $idOrder]);
     foreach ($items as $item) {
         $total += $item->getTotal();
     }
     return $total;
 }
 public function delete($id)
 {
     try {
         $this->repository->beginTransaction();
         $this->repository->deleteItems($id);
         $this->repository->delete($id);
         $this->repository->commitTransaction();
         return true;
     } catch (Exception $e) {
         $this->repository->rollbackTransaction();
         return false;
     }
 }
 public function insert($data)
 {
     $hydrator = new ObjectProperty();
     $data = $hydrator->extract($data);
     $orderData = $data;
     unset($orderData['item']);
     $items = $data['item'];
     $tableGateway = $this->repository->getTableGateway();
     try {
         $tableGateway->getAdapter()->getDriver()->getConnection()->beginTransaction();
         $orderId = $this->repository->insert($orderData);
         foreach ($items as $item) {
             $item['order_id'] = $orderId;
             $this->repository->insertItem($item);
         }
         $tableGateway->getAdapter()->getDriver()->getConnection()->commit();
         return ['order_id' => $orderId];
     } catch (\Exception $e) {
         $tableGateway->getAdapter()->getDriver()->getConnection()->rollback();
         return 'error';
     }
 }
Example #7
0
 public function update($id, $data)
 {
     $hydrator = new ObjectProperty();
     $array = $hydrator->extract($data);
     $orderData = $array;
     unset($orderData['item']);
     $items = $array['item'];
     $tableGateway = $this->repository->getTablegateway();
     try {
         $tableGateway->getAdapter()->getDriver()->getConnection()->beginTransaction();
         $itensAtuais = $this->repository->getOrderItems($id);
         foreach ($items as $item) {
             $item['order_id'] = $id;
             $buscaItem = $this->repository->getOrderItemTablegateway()->select(['order_id' => $item['order_id'], 'product_id' => $item['product_id']]);
             $idItem = 0;
             if (count($buscaItem) > 0) {
                 $idItem = (int) $buscaItem->current()->getId();
                 $this->repository->getOrderItemTablegateway()->update($item, ['id' => $idItem]);
             } else {
                 $this->repository->insertItem($item);
             }
             if (isset($itensAtuais[$idItem])) {
                 unset($itensAtuais[$idItem]);
             }
         }
         foreach ($itensAtuais as $itemExcluir) {
             $this->repository->getOrderItemTablegateway()->delete(['id' => $itemExcluir['id']]);
         }
         $this->repository->update($id, $orderData);
         $tableGateway->getAdapter()->getDriver()->getConnection()->commit();
         return ['order_id' => $id];
     } catch (\Exception $exc) {
         $tableGateway->getAdapter()->getDriver()->getConnection()->rollback();
         return 'error';
         //            echo $exc->getTraceAsString();
     }
 }
 /**
  * Fetch all or a subset of resources
  *
  * @param  array $params
  * @return ApiProblem|mixed
  */
 public function fetchAll($params = array())
 {
     return $this->repository->fecthAll();
 }
 private function isOwnerOfOrder($id)
 {
     $user = $this->usersRepository->findByUsername($this->getIdentity()->getRoleId());
     return $this->repository->find($id, $user) != null;
 }
 /**
  * Update a resource
  *
  * @param  mixed $id
  * @param  mixed $data
  * @return ApiProblem|mixed
  */
 public function update($id, $data)
 {
     return $this->ordersRepository->updateStatus($id, $data);
 }