<?php
declare(strict_types=1);

namespace Leadlion\PersoanaJuridica\Controller\Index;

class Index extends \Magento\Framework\App\Action\Action
{

    protected $resultPageFactory;
    protected $jsonHelper;
    /**
     * @var \Psr\Log\LoggerInterface
     */
    private $logger;
    /**
     * @var \Leadlion\PersoanaJuridica\Model\Mfinante
     */
    private $connector;

    /**
     * Constructor
     *
     * @param \Magento\Framework\App\Action\Context $context
     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
     * @param Magento\Framework\Serialize\Serializer\Json $jsonHelper
     * @param \Psr\Log\LoggerInterface $logger
     */
    public function __construct(
        \Magento\Framework\App\Action\Context $context,
        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
        \Magento\Framework\Serialize\Serializer\Json $jsonHelper,
        \Psr\Log\LoggerInterface $logger,
        \Leadlion\PersoanaJuridica\Model\Mfinante $connector
    ) {
        $this->resultPageFactory = $resultPageFactory;
        $this->jsonHelper = $jsonHelper;
        $this->logger = $logger;
        $this->connector = $connector;
        parent::__construct($context);
    }

    /**
     * Execute view action
     *
     * @return \Magento\Framework\Controller\ResultInterface
     */
    public function execute()
    {
        $vat_id=(int)$this->getRequest()->getParam('vat_id');
        $response=$this->getCompanyData($vat_id);
        try {
            return $this->jsonResponse($response);
        } catch (\Magento\Framework\Exception\LocalizedException $e) {
            return $this->jsonResponse($e->getMessage());
        } catch (\Exception $e) {
            $this->logger->critical($e);
            return $this->jsonResponse($e->getMessage());
        }
    }

    /**
     * Create json response
     *
     * @return \Magento\Framework\Controller\ResultInterface
     */
    public function jsonResponse($response = '')
    {
        return $this->getResponse()->representJson(
            $this->jsonHelper->serialize($response)
        );
    }
    public function getCompanyData($vat_id = 0){

        if($vat_id) {
            $this->connector->setData('cui', $vat_id);
            $companyInfo = $this->connector->_getResponse();
        }
        else {
            return [
                'companyInfo'=>[],
                'found' => false,
                'message' =>__('Nu exist firma cu acest cod fiscal')
            ];
        }
        if(!empty($companyInfo)){

            return [
                'companyInfo'=> $companyInfo,
                'found' => true,
                'message' =>''
            ];
        } else {
            return [
                'companyInfo'=>[],
                'found' => false,
                'message' =>__('Nu exista firma cu acest cod fiscal')
            ];
        }

    }
}

