public function findAll(UsersEntity $user)
 {
     $hydrator = new ClassMethods();
     $hydrator->addStrategy('items', new OrderItemHydratorStrategy(new ClassMethods()));
     $res = [];
     switch ($user->getRole()) {
         case 'administrador':
             $orders = $this->tableGateway->select();
             break;
         case 'salesman':
             $orders = $this->tableGateway->select(['user_id' => $user->getId()]);
             break;
         case 'guest':
         default:
             return new ApiProblem(405, "Guests can't get orders list.");
             break;
     }
     foreach ($orders as $order) {
         $items = $this->orderItemTableGateway->select(['order_id' => $order->getId()]);
         foreach ($items as $item) {
             $order->addItem($item);
         }
         $data = $hydrator->extract($order);
         $res[] = $data;
     }
     $arrayAdapter = new ArrayAdapter($res);
     $ordersCollection = new OrdersCollection($arrayAdapter);
     return $ordersCollection;
 }
 public function find($id, UsersEntity $user = null)
 {
     $hydrator = new ClassMethods();
     $hydrator->addStrategy('items', new OrderItemHydratorStrategy($hydrator));
     $where = new Where();
     $where->equalTo('id', $id);
     if ($user) {
         $where->equalTo('user_id', $user->getId());
     }
     $order = $this->tableGateway->select($where)->current();
     if (!$order) {
         return null;
     }
     $client = $this->clientTableGateway->select(['id' => $order->getClientId()])->current();
     $order->setClient($client);
     $sql = $this->tableGatewayItems->getSql();
     $select = $sql->select();
     $select->join('products', 'order_items.product_id = products.id', ['product_name' => 'name'])->where(['order_id' => $order->getId()]);
     $items = $this->tableGatewayItems->selectWith($select);
     foreach ($items as $item) {
         $order->addItem($item);
     }
     return $hydrator->extract($order);
 }
Exemple #3
0
 public function getUserRole()
 {
     return $this->user->getRole();
 }
 /**
  * 
  * @param array $data
  * @param UsersEntity $object
  */
 public function hydrate(array $data, $object)
 {
     return $object->setId($data['id'])->setUsername($data['username'])->setPassword($data['password'])->setFirstName($data['first_name'])->setLastName($data['last_name'])->setRole($data['role']);
 }