<?php

namespace Leadlion\SalesOrder\Plugin;

use Magento\Framework\UrlInterface;
use Magento\Sales\Block\Adminhtml\Order\View as OrderView;
use Magento\Sales\Api\OrderRepositoryInterface;
use Leadlion\AutogedalOrderFlow\Helper\Data as OrderFlowData;

class AddOrderButton
{
    protected $_urlBuilder;
    protected $orderRepository;
    protected $orderFlowHelper;

    public function __construct(
        UrlInterface $url,
        OrderRepositoryInterface $orderRepository,
        OrderFlowData $orderFlowHelper
    ) {
        $this->_urlBuilder = $url;
        $this->orderRepository = $orderRepository;
        $this->orderFlowHelper = $orderFlowHelper;
    }
    public function beforeSetLayout(OrderView $view,$layout)
    {
        $orderId = $view->getOrderId();
        $orderObject = $this->orderRepository->get($orderId);
        if (!in_array($orderObject->getStatus(), ['canceled', 'complete'])) {
            if ($orderObject->getAwbNumber() != '') {
                $pickupId = $orderObject->getPickupId();
                $carrierName = $orderObject->getCarrierId();
                $identifier = $orderObject->getAwbNumber();
                $awbPrintUrl = $this->_urlBuilder->getUrl(
                    'shipping_awb/index/preview',
                    [
                        'carrier' => $carrierName,
                        'identifier' => $identifier,
                        'pickup_id' => $pickupId,
                        'order_id' => $orderId,
                        '_secure' => true
                    ]
                );
                if ($pickupId != '28486416027') {
                    $view->addButton(
                        'printawb_button',
                        [
                            'label' => __('Print awb'),
                            'onclick' => "window.open('".$awbPrintUrl."');location.reload();",
                            'class' => 'reset primary'
                        ]
                    );
                }
                if ($pickupId == '28486416027') {
                    $view->addButton(
                        'printawb_button',
                        [
                            'label' => __('Print awb A4'),
                            'onclick' => "window.open('".$awbPrintUrl."');location.reload();",
                            'class' => 'reset primary'
                        ]
                    );

                    $awbPrintUrl = $this->_urlBuilder->getUrl(
                        'shipping_awb/index/preview',
                        [
                            'carrier' => $carrierName,
                            'identifier' => $identifier,
                            'pickup_id' => $pickupId,
                            'paperSize' => 'A6',
                            'order_id' => $orderId,
                            '_secure' => true
                        ]
                    );
                    $view->addButton(
                        'printawb_button_a6',
                        [
                            'label' => __('Print awb A6'),
                            'onclick' => "window.open('".$awbPrintUrl."')",
                            'class' => 'reset primary'
                        ]
                    );
        
                }
            }
        }

        $getInvoicedStatusCode = $this->orderFlowHelper->getInvoicedStatusCode();
        $orderStatusUrl = $this->_urlBuilder->getUrl('salesorder/order/updatestatus/', ['order_id' => $view->getOrderId()]);
        if ( ($orderObject->getAwbNumber() != '' || $orderObject->getData('emkp_is_emag_order'))  && $orderObject->getStatus() == $getInvoicedStatusCode  ) {
            $view->addButton(
                'orderstatus_button',
                [
                    'label' => __('Finalizeaza comanda'),
                    'onclick' => "setLocation('".$orderStatusUrl."')",
                    'class' => 'reset primary'
                ]
            );
        }
        return [$layout];
    }
}
