public function handle(GetProductsByTagQuery $query)
 {
     $paginationDTO = $query->getRequest()->getPaginationDTO();
     $pagination = new Pagination($paginationDTO->maxResults, $paginationDTO->page);
     $products = $this->productService->getProductsByTagId($query->getRequest()->getTagId(), $pagination);
     $query->getResponse()->setPaginationDTOBuilder($this->dtoBuilderFactory->getPaginationDTOBuilder($pagination));
     foreach ($products as $product) {
         $query->getResponse()->addProductDTOBuilder($this->dtoBuilderFactory->getProductDTOBuilder($product));
     }
 }
 public function handle(ListProductsQuery $query)
 {
     $paginationDTO = $query->getRequest()->getPaginationDTO();
     $pagination = new Pagination($paginationDTO->maxResults, $paginationDTO->page);
     $tags = $this->tagService->getAllProducts($query->getRequest()->getQueryString(), $pagination);
     $query->getResponse()->setPaginationDTOBuilder($this->dtoBuilderFactory->getPaginationDTOBuilder($pagination));
     foreach ($tags as $tag) {
         $query->getResponse()->addProductDTOBuilder($this->dtoBuilderFactory->getProductDTOBuilder($tag));
     }
 }
 public function handle(ListOptionsQuery $query)
 {
     $paginationDTO = $query->getRequest()->getPaginationDTO();
     $pagination = new Pagination($paginationDTO->maxResults, $paginationDTO->page);
     $options = $this->optionService->getAllOptions($query->getRequest()->getQueryString(), $pagination);
     $query->getResponse()->setPaginationDTOBuilder($this->dtoBuilderFactory->getPaginationDTOBuilder($pagination));
     foreach ($options as $option) {
         $query->getResponse()->addOptionDTOBuilder($this->dtoBuilderFactory->getOptionDTOBuilder($option));
     }
 }
 public function handle(ListUsersQuery $query)
 {
     $paginationDTO = $query->getRequest()->getPaginationDTO();
     $pagination = new Pagination($paginationDTO->maxResults, $paginationDTO->page);
     $users = $this->userService->getAllUsers($query->getRequest()->getQueryString(), $pagination);
     $query->getResponse()->setPaginationDTOBuilder($this->dtoBuilderFactory->getPaginationDTOBuilder($pagination));
     foreach ($users as $user) {
         $query->getResponse()->addUserDTOBuilder($this->dtoBuilderFactory->getUserDTOBuilder($user));
     }
 }
 public function handle(ListCouponsQuery $query)
 {
     $request = $query->getRequest();
     $response = $query->getResponse();
     $paginationDTO = $request->getPaginationDTO();
     $pagination = new Pagination($paginationDTO->maxResults, $paginationDTO->page);
     $coupons = $this->couponService->getAllCoupons($request->getQueryString(), $pagination);
     $response->setPaginationDTOBuilder($this->dtoBuilderFactory->getPaginationDTOBuilder($pagination));
     foreach ($coupons as $coupon) {
         $response->addCouponDTOBuilder($this->dtoBuilderFactory->getCouponDTOBuilder($coupon));
     }
 }
 public function handle(ListOrdersQuery $query)
 {
     $paginationDTO = $query->getRequest()->getPaginationDTO();
     $pagination = new Pagination($paginationDTO->maxResults, $paginationDTO->page);
     // TODO: Add query search
     $queryString = $query->getRequest()->getQueryString();
     $orders = $this->orderService->getLatestOrders($pagination);
     $query->getResponse()->setPaginationDTOBuilder($this->dtoBuilderFactory->getPaginationDTOBuilder($pagination));
     foreach ($orders as $order) {
         $query->getResponse()->addOrderDTOBuilder($this->dtoBuilderFactory->getOrderDTOBuilder($order));
     }
 }