HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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
            ]);

    }
}