<?php
namespace Autogedal\Retur\Block\Customer\View;

use Magento\Framework\View\Element\Template;
use Magento\Framework\View\Element\Template\Context;
use Magento\Framework\Registry;
use Autogedal\Retur\Ui\Component\Listing\Column\Status\Options as StatusOptions;
use Autogedal\Retur\Ui\Component\Listing\Column\Rambursare\Options as RambursareOptions;
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;

class Info extends Template
{
    /**
     * @var Registry
     */
    protected $coreRegistry;

    /**
     * @var StatusOptions
     */
    protected $statusOptions;

    /**
     * @var RambursareOptions
     */
    protected $rambursareOptions;

    /**
     * @param Context $context
     * @param Registry $registry
     * @param StatusOptions $statusOptions
     * @param RambursareOptions $rambursareOptions
     * @param array $data
     */
    public function __construct(
        Context $context,
        Registry $registry,
        StatusOptions $statusOptions,
        RambursareOptions $rambursareOptions,
        array $data = []
    ) {
        $this->coreRegistry = $registry;
        $this->statusOptions = $statusOptions;
        $this->rambursareOptions = $rambursareOptions;
        parent::__construct($context, $data);
    }

    /**
     * Get current return
     *
     * @return \Autogedal\Retur\Api\Data\ReturInterface|null
     */
    public function getReturn()
    {
        return $this->coreRegistry->registry('current_retur');
    }

    /**
     * Get status label
     *
     * @param int $statusId
     * @return string
     */
    public function getStatusLabel($statusId)
    {
        $options = $this->statusOptions->toOptionArray();
        foreach ($options as $option) {
            if ($option['value'] == $statusId) {
                return $option['label'];
            }
        }
        return '';
    }

    /**
     * Get return method label
     *
     * @param string $methodCode
     * @return string
     */
    public function getReturnMethodLabel($methodCode)
    {
        $options = $this->rambursareOptions->toOptionArray();
        foreach ($options as $option) {
            if ($option['value'] == $methodCode) {
                return $option['label'];
            }
        }
        return $methodCode;
    }

    /**
     * Format date in medium format
     *
     * @param string $date
     * @return string
     */
    public function formatReturnDate($date)
    {
        return $this->formatDate(
            $date,
            \IntlDateFormatter::MEDIUM,
            false,
            null
        );
    }
}
