<?php
declare(strict_types=1);

namespace Autogedal\PayPo\Plugin;

use Autogedal\PayPo\Model\PayPoContext;
use Autogedal\PayPo\Model\ApprovalConfig;
use Magento\Sales\Model\Order;
use Magento\Sales\Model\Order\Status\History;

class OrderStatusHistoryPlugin
{
    private const STATUS_APPROVED = 'new';

    public function __construct(
        private readonly PayPoContext $payPoContext,
        private readonly ApprovalConfig $approvalConfig
    ) {
    }

    /**
     * While a PayPo approval is in progress, override any AWB-EMIS/processing status
     * injected by invoice creation so history entries show NOUA instead.
     */
    public function afterAddStatusHistoryComment(Order $subject, History $result): History
    {
        return $this->afterAddCommentToStatusHistory($subject, $result);
    }

    public function afterAddCommentToStatusHistory(Order $subject, History $result): History
    {
        if (!$this->payPoContext->appliesToOrder($subject->getId())
            || !$this->approvalConfig->isOrderAllowed($subject, true)
        ) {
            return $result;
        }

        if ($result->getStatus() !== self::STATUS_APPROVED) {
            $result->setStatus(self::STATUS_APPROVED);
        }

        return $result;
    }
}
