public function listProducts($data) { if (is_array($data)) { $promotions = new Promotions(); $product_ids = implode(",", array_keys($data)); $query = $this->sql("SELECT products.id, products.name as product_name, products.photo as product_photo, price, categories.name as category_name, category_id FROM products JOIN categories ON categories.id = products.category_id WHERE products.id IN ({$product_ids})")->fetchAllAssoc(); foreach ($query as $key => $item) { $discount = $promotions->getProductPromotion($item['id']); if ($discount) { $query[$key]['discount'] = $discount; } } return $query; } }
/** * @param $id * @param Products $products * @param Reviews $reviews * @param Categories $categories * @param Promotions $promotions * @throws \Exception */ public function getProduct($id, Products $products, Reviews $reviews, Categories $categories, Promotions $promotions) { $cart = $this->session->getSession()->cart ?: ['']; $this->view->appendToLayout('body', "products.product"); $this->view->display('layouts.main', ['product' => $products->get($id), 'cart' => $cart, 'promotion' => $promotions->getProductPromotion($id) ?: null, 'reviews' => $reviews->getForProduct($id), 'current_user_review' => $reviews->getForUser($this->auth->user()->id, $id), 'categories' => $categories->listAllNames()]); }