<?php
/**
 * Magento 2 Google Analytics 4 (GA4) GTM
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Anowave license that is
 * available through the world-wide-web at this URL:
 * https://www.anowave.com/license-agreement/
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade this extension to newer
 * version in the future.
 *
 * @category 	Anowave
 * @package 	Anowave_Ec
 * @copyright 	Copyright (c) 2026 Anowave (https://www.anowave.com/)
 * @license  	https://www.anowave.com/license-agreement/
 */

namespace Anowave\Ec\Model\Cookie;

class Cookiebot extends Directive
{
	/**
	 * Cookie name for cookie that keeps customer consent
	 * 
	 * @var string
	 */
	protected $name = \Anowave\Ec\Helper\Constants::COOKIE_COOKIEBOT;

	private $config = [];

	/**
	 * Check consent 
	 * 
	 * @return bool
	 */
	public function hasConsent() : bool
	{
		$cookie = $this->get();

		if ($cookie)
		{
			$cookie = ltrim($cookie,'{');
			$cookie = rtrim($cookie,'}');
			
			$cookie = explode(chr(44), $cookie);

			$result = array_reduce($cookie, function ($carry, $item) 
			{
				// Split into key and value
				[$key, $value] = explode(':', $item, 2);

				// Clean quotes and handle booleans
				$value = trim($value, "'");
				
				$value = match ($value)
				{
					'true'  => true,
					'false' => false,
					default => $value
				};

				// Add to the accumulator array
				$carry[$key] = $value;

				return $carry;
			}, []);

			if (array_key_exists('marketing', $result))
			{
				return $result['marketing'];
			}
		}
		
		return false;
	}

	/**
	 * Set config 
	 * 
	 * @param array $config
	 * 
	 * @return self
	 */
	public function setConfig(array $config = []) : self 
	{
		$this->config = $config;

		return $this;
	}

	public function getConfig() : array 
	{
		return $this->config;
	}
}