<?php

namespace Autogedal\TbiBank\Model;

use Magento\Sales\Model\Order;
use Magento\Sales\Model\Order\Email\Sender\OrderSender;
use Psr\Log\LoggerInterface;

class ApprovedOrderEmail
{
    public function __construct(private ApprovalConfig $config, private OrderSender $sender, private LoggerInterface $logger)
    {
    }

    public function send(Order $order): void
    {
        if (!$this->config->deferOrderEmail($order->getStoreId()) || $order->getEmailSent()) {
            return;
        }
        try {
            $this->sender->send($order);
        } catch (\Throwable $exception) {
            // The approval is already committed. A mail failure must not undo payment accounting.
            $this->logger->warning('TBI approved-order email failed for Magento order {order_id}.', ['order_id' => $order->getId()]);
        }
    }
}
