<?php

namespace Eadesigndev\Awb\Block\Adminhtml;

use Eadesigndev\Awb\Model\AwbFactory;
use Eadesigndev\Awb\Model\AwbRepository;
use Eadesigndev\Awb\Model\Sources\CarrierType;
use \Magento\Backend\Block\Template;
use Eadesigndev\Awb\Model\ResourceModel\Collection\Collection;
use Eadesigndev\Awb\Model\Sources\PickupId;
use Eadesigndev\Awb\Model\OrderAwb;

#[\AllowDynamicProperties]
class AwbInfo extends Template
{
    protected $_context;
    protected $_registry;
    public $extraParams = [];
    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        \Magento\Framework\Registry $coreRegistry,
        AwbFactory $awbFactory,
        Collection $awbCollection,
        PickupId $pickupId,
        OrderAwb $orderAwb,
        array $data = []
    ) {
        $this->_context = $context;
        $this->_registry = $coreRegistry;
        $this->_awbFactory = $awbFactory;
        $this->_awbCollection = $awbCollection;
        $this->_pickupId = $pickupId;
        $this->_orderAwb = $orderAwb;

        $this->getExtraParams();
        parent::__construct($context);
    }

    public function getExtraParams()
    {
        $currentOrder = $this->_registry->registry('current_order');

        $this->extraParams = $this->_orderAwb->getInfo(true);

        return $this->extraParams;
    }

    public function extraParamsExist()
    {
        return !empty(array_filter($this->extraParams));
    }

    public function getExtraParam($paramName, $itemIndex = null)
    {
        if (empty($this->extraParams)) {
            $this->getExtraParams();
        }

        return $this->extraParams[$itemIndex ?? count($this->extraParams) - 1][$paramName] ?? false;
    }

    public function getPreviewUrlOfAwb($carrierName, $awbNumber)
    {
        $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
        $this->previewManager = $objectManager->create('Eadesigndev\Awb\Helper\Preview');

        return $this->previewManager->getPreviewUrl($carrierName, $awbNumber, __('Print'));
    }
}