<?php

namespace Engelsystem\Mail\Transport;

use Psr\Log\LoggerInterface;
use Symfony\Component\Mailer\SentMessage;
use Symfony\Component\Mailer\Transport\AbstractTransport;

class LogTransport extends AbstractTransport
{
    /** @var LoggerInterface */
    protected $logger;

    public function __construct(LoggerInterface $logger)
    {
        $this->logger = $logger;

        parent::__construct();
    }

    /**
     * Send the message to log
     *
     * @param SentMessage $message
     */
    protected function doSend(SentMessage $message): void
    {
        $recipients = [];
        $messageRecipients = $message->getEnvelope()->getRecipients();
        foreach ($messageRecipients as $recipient) {
            $recipients[] = $recipient->toString();
        }

        $this->logger->debug(
            'Mail: Send mail to "{recipients}":' . PHP_EOL . PHP_EOL . '{content}',
            [
                'recipients' => implode(', ', $recipients),
                'content'    => $message->toString(),
            ]
        );
    }

    /**
     * @return string
     */
    public function __toString(): string
    {
        return 'log://';
    }
}