<?php
/**
 * Copyright © 2018 EaDesign by Eco Active S.R.L. All rights reserved.
 * See LICENSE for license details.
 */

namespace Eadesigndev\Awb\Helper;

use Magento\Framework\App\Helper\AbstractHelper;
use Magento\Framework\App\Helper\Context;
use Magento\Framework\UrlInterface;
use Eadesigndev\Urgent\Model\Sources\Tracking as TrackingUrgent;
use Eadesigndev\FanCourier\Model\Sources\Tracking as TrackingFanCourier;
use Eadesigndev\DPD\Model\Sources\Tracking as TrackingDPD;
use Eadesigndev\GLS\Model\Sources\Tracking as TrackingGLS;
use Eadesigndev\DragonStar\Model\Sources\Tracking as TrackingDragonStar;
use Eadesigndev\xCurier\Model\Sources\Tracking as TrackingXCurier;
use Eadesigndev\NemoExpress\Model\Sources\Tracking as TrackingNemo;
use Eadesigndev\Awb\Model\Sources\CarrierType;

/**
 * Handles the config and other settings
 *
 * Class Data
 * @package Eadesigndev\Awb\Helper
 */
#[\AllowDynamicProperties]
class TrackingUrl extends AbstractHelper
{
    protected $_urlInterface;
    protected $_objectManager;
    /**
     * @var TrackingNemo
     */
    private $trackingNemo;

    public function __construct(
        Context $context,
        UrlInterface $urlInterface,
        private TrackingUrgent $trackingUrgent,
        private TrackingFanCourier $trackingFanCourier,
        private TrackingDPD $trackingDPD,
        private TrackingGLS $trackingGLS,
        private TrackingDragonStar $trackingDragonStar,
        private TrackingXCurier $trackingXCurier,
        TrackingNemo $trackingNemo
    )
    {
        $this->_urlInterface = $urlInterface;
        parent::__construct($context);
        $this->trackingNemo = $trackingNemo;
    }

    public function getTrackingUrl($carrierId, $identifier)
    {
        $currentCarrierTrackingUrl = '';
        switch ($carrierId)
        {
            case CarrierType::URGENT_CURRIER:
                $currentCarrierTrackingUrl = $this->trackingUrgent->getAvailable($identifier);
                break;
            case CarrierType::FAN_CURRIER:
                $currentCarrierTrackingUrl = $this->trackingFanCourier->getAvailable($identifier);
                break;
            case CarrierType::DPD:
                $currentCarrierTrackingUrl = $this->trackingDPD->getAvailable($identifier);
                break;
            case CarrierType::GLS:
                $currentCarrierTrackingUrl = $this->trackingGLS->getAvailable($identifier);
                break;
            case CarrierType::DRAGON_STAR:
                $currentCarrierTrackingUrl = $this->trackingDragonStar->getAvailable($identifier);
                break;
            case CarrierType::X_CURIER:
                $currentCarrierTrackingUrl = $this->trackingXCurier->getAvailable($identifier);
                break;
            case CarrierType::NEMO_EXPRESS:
                $currentCarrierTrackingUrl = $this->trackingNemo->getAvailable($identifier);
                break;
        }

        return $currentCarrierTrackingUrl;
    }
}