File: D:/HostingSpaces/SBogers10/topswtw.komma.pro/app/controllers/ProductController.php
<?php
use KommaApp\Shop\Categories\CategoryService;
use KommaApp\Shop\Menus\SidebarMenu;
use KommaApp\Shop\Modules\Modules;
use KommaApp\Shop\Products\ProductService;
use KommaApp\Shop\Submenu;
use KommaApp\Shop\Checkout\Shipping\ShippingCostsRepository;
class ProductController extends BaseController
{
/**
* @var ProductService
*/
private $productService;
/**
* @var CategoryService
*/
private $categoryService;
const ITEMS_PER_PAGE = 5;
/**
* @var Submenu
*/
private $submenu;
/**
* @var SidebarMenu
*/
private $sidebarMenu;
/**
* @param CategoryService $categoryService
* @param ProductService $productService
* @param SidebarMenu $sidebarMenu
*/
public function __construct(CategoryService $categoryService, ProductService $productService, SidebarMenu $sidebarMenu)
{
$this->productService = $productService;
$this->categoryService = $categoryService;
$this->sidebarMenu = $sidebarMenu;
}
/**
* @param $treeNode
* @param bool $showBrandInfo
* @return view
*/
public function showAllProductsInCategory($treeNode, $showBrandInfo = false)
{
// No pagination
// $startItem = is_numeric(\Input::get('page')) ? (\Input::get('page')-1) * self::ITEMS_PER_PAGE : 0;
// $total = $this->productService->countByCategoryId($treeNode->id);
$products = $this->productService->getByCategoryId($treeNode->id); // , $startItem, self::ITEMS_PER_PAGE);
$mainBrand = $this->categoryService->getRootNode($treeNode);
//$paginator = \Paginator::make($products, $total, self::ITEMS_PER_PAGE);
$shippingCostsRepository = new ShippingCostsRepository();
$shipping_costs = $shippingCostsRepository->getEntities();
$sidebarMenu = $this->sidebarMenu->create($mainBrand);
return \View::make( viewPrefix() .'pages.products')
->with([
'products' => $products,
'brand' => $treeNode,
'mainBrand' => $mainBrand,
'root' => $mainBrand,
'menu' => $sidebarMenu,
'showBrandInfo' => $showBrandInfo,
'bodyClasses' => 'products',
'shippingCosts' => $shipping_costs
]);
}
/**
* @return mixed
*/
public function showDetail()
{
if (!$product = $this->productService->getByRoutableId(\Shop::getRouteData()->routable_id)) {
//Check if it exist as an old product
if ($redirect = $this->getLegacyUrl()) return $redirect;
//no Product entity found
return $this->abortPage();
}
if (!$brand = $this->categoryService->getNodeById($product->category_id)) {
//The brand does not exist or is inactive -> trow 404
return $this->abortPage();
}
$product->discounts = json_encode($product->discounts);
$mainBrand = $this->categoryService->getRootNode($brand);
$sidebarMenu = $this->sidebarMenu->create($mainBrand);
$shippingCostsRepository = new ShippingCostsRepository();
$shipping_costs = $shippingCostsRepository->getEntities();
return \View::make( viewPrefix() .'pages.productDetail')
->with([
'product' => $product,
'brand' => $brand,
'mainBrand' => $mainBrand,
'menu' => $sidebarMenu,
'root' => $mainBrand,
'bodyClasses' => 'productDetail',
'shippingCosts' => $shipping_costs
]);
}
}