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); }
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'; } }
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); }