<?php

namespace Medienreaktor\Products\Service;


use Medienreaktor\Products\Domain\Model\Product;

class CartDataService
{

    /**
     * productDataService
     *
     * @var \Medienreaktor\Products\Service\ProductDataService
     */
    protected $productDataService = null;

    /**
     * pageRepository
     *
     * @var \Medienreaktor\Products\Domain\Repository\PageRepository
     */
    protected $pageRepository = null;
    public function __construct(\Medienreaktor\Products\Service\ProductDataService $productDataService, \Medienreaktor\Products\Domain\Repository\PageRepository $pageRepository)
    {
        $this->productDataService = $productDataService;
        $this->pageRepository = $pageRepository;
    }


    public function getProductsFromCookie()
    {
        $productKeys = array_key_exists("sidebar_notedProducts", $_COOKIE) ? $_COOKIE["sidebar_notedProducts"] : "[]";
        $productKeys = json_decode($productKeys, true);

        if ($productKeys && count($productKeys) > 0) {

            $products = [];
            foreach ($productKeys as $productKey) {
                $parsedKey = explode("-", $productKey);

                $product = $this->productDataService->getProductDataByProductGroupId($parsedKey[0]);
                $product["pageData"] = $this->pageRepository->findByProductGroup($product["productGroup"]);
                $product["chosenVariant"] = count($parsedKey) > 1 ? $parsedKey[1] : false;

                if ($product["chosenVariant"]) {
                    /** @var Product $productVariant */
                    foreach ($product["productGroup"]->getProducts() as $productVariant) {
                        if ($productVariant->getUid() == $product["chosenVariant"]) {
                            $product["chosenVariant"] = $productVariant;
                            break;
                        }
                    }
                }

                $products[] = $product;
            }

            return $products;
        }

        return null;
    }



}