<?php
/**
 * Copyright 2025 Adobe
 * All Rights Reserved.
 */
declare(strict_types=1);

namespace Magento\OrderCancellationGraphQl\Model\Validator;

use Magento\OrderCancellation\Model\Config\Config;
use Magento\Sales\Model\Order;

/**
 * Validate cancellation reason of order
 */
class ValidateOrderCancellationReason
{
    /**
     * @var Config $config
     */
    private Config $config;

    /**
     * ValidateOrderCancellationReason Constructor
     *
     * @param Config $config
     */
    public function __construct(
        Config $config
    ) {
        $this->config = $config;
    }

    /**
     * Validate cancellation reason
     *
     * @param Order $order
     * @param string $reason
     * @return bool
     */
    public function validateReason(
        Order $order,
        string $reason
    ): bool {
        $cancellationReasons = array_map(
            'strtolower',
            $this->config->getCancellationReasons($order->getStore())
        );

        return !in_array(strtolower(trim($reason)), $cancellationReasons);
    }
}
