<?php

namespace Leadlion\Autogedal\CustomerData;

use Magento\Customer\CustomerData\SectionSourceInterface;

class PhoneNumber implements SectionSourceInterface
{
    private $redirect;
    private $_storeManager;
    private $helper;

    public function __construct(
        \Leadlion\Autogedal\Helper\Config $helper,
        \Magento\Store\Model\StoreManagerInterface $storeManager,
        \Magento\Framework\HTTP\Header $redirect
    ) {
        $this->helper = $helper;
        $this->_storeManager = $storeManager;
        $this->redirect = $redirect;
    }
    
    /**
     * @inheritdoc
     */
    public function getSectionData()
    {
        $reffererFromAjax = $this->redirect->getHttpReferer();
        $params = $this->getCurrentUrl($reffererFromAjax);

        $campaignPhone = $this->helper->getConfig(
            'leadlion/phone_number/direct_number',
            $this->_storeManager->getStore()->getId()
        );

        if (isset($params['gclid'])) {
            $campaignPhone = $this->helper->getConfig(
                'leadlion/phone_number/gads_number',
                $this->_storeManager->getStore()->getId()
            );
        } elseif (isset($params['fbclid'])) {
            $campaignPhone = $this->helper->getConfig(
                'leadlion/phone_number/facebook_number',
                $this->_storeManager->getStore()->getId()
            );
        } elseif (isset($params['olx'])) {
            $campaignPhone = $this->helper->getConfig(
                'leadlion/phone_number/olx_number',
                $this->_storeManager->getStore()->getId()
            );
        } elseif (isset($params['pieseauto'])) {
            $campaignPhone = $this->helper->getConfig(
                'leadlion/phone_number/pieseauto_number',
                $this->_storeManager->getStore()->getId()
            );
        } elseif (isset($params['ttclid'])) {
            $campaignPhone = $this->helper->getConfig(
                'leadlion/phone_number/tiktok_number',
                $this->_storeManager->getStore()->getId()
            );
        }
        
        return ['custom_campaign_phone' => $campaignPhone];
    }

    protected function getCurrentUrl($currentUrl)
    {
        $parseUrl = parse_url($currentUrl);
        if (isset($parseUrl['query'])) {
            parse_str($parseUrl['query'], $params);
        } else {
            return "";
        }
        
        return $params;
    }
}
