/**
  * @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()]);
 }