<?php
/**
 * Copyright © 2018 EaDesign by Eco Active S.R.L. All rights reserved.
 * See LICENSE for license details.
 */

namespace Eadesigndev\xCurier\Model;

use Eadesigndev\Urgent\Api\Data\GenerateAwbInterface;
use Magento\Framework\Model\Context;
use Magento\Framework\Model\AbstractModel;
use Eadesigndev\Awb\Model\AwbRepository;
use Magento\Sales\Api\OrderRepositoryInterface;
use Eadesigndev\xCurier\Helper\Api as XCurieriApi;

#[\AllowDynamicProperties]
class GenerateAwb extends AbstractModel implements GenerateAwbInterface
{

    protected $_awbRepository;
    protected $_orderRepository;
    protected $_connectorGLS;
    protected $_api;

    public function __construct(
        Context $context,
        \Magento\Framework\Registry $registry,
        AwbRepository $awbRepository,
        OrderRepositoryInterface $orderRepository,
        XCurieriApi $xCurieriApi,
        ?\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
        ?\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
        array $data = []
    )
    {
        $this->_api = $xCurieriApi;
        $this->_orderRepository = $orderRepository;
        $this->_awbRepository = $awbRepository;
        parent::__construct($context, $registry, $resource, $resourceCollection, $data);
    }

    public function generateAwb($awbId)
    {
        $model = $this->_awbRepository->getById($awbId);

        $awb = [
            'id_punct_de_ridicare' => $model->getData('awb_pickup_id'),
            'destinatar' => $model->getData('recipient'),
            'id_localitate',
            'cod_postal' => $model->getData('postcode'),
            'adresa' => $model->getData('street'),
            'telefon' => $model->getData('telephone'),
            'nr_piese' => (int)$model->getData('packages') ?? (int)$model->getData('envelopes'),
            'tip_expeditie' => $model->getData('envelopes') ? 1 : 2,
            'platitor' => (int)$model->getData('delivery_payment') + 1,
            'greutate' => $model->getData('weight'),
            'valoare_ramburs' => $model->getData('repayment_value'),
            'livrare_sambata' => $model->getData('delivery_saturday'),
            'continut' => $model->getData('content'),
            'observatii' => $model->getData('comments')
        ];
        $apiResponse = $this->_api->call('', $awb);

        return $apiResponse;
    }

    public function deleteAwb($awbNumber)
    {
        // TODO: Implement deleteAwb() method.
    }

    public function getPunctRidicare()
    {
        // TODO: Implement getPunctRidicare() method.
    }

    public function setGenerateAwb($awbId)
    {
        // TODO: Implement setGenerateAwb() method.
    }
}