<?php

namespace App\MessageHandler;

use App\Factory\MailFactory;
use App\Message\NewPasswordTokenMessage;
use Swift_Mailer;
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;

class NewPasswordTokenMessageHandler implements MessageHandlerInterface
{
    /**
     * @var Swift_Mailer
     */
    private $mailer;
    /**
     * @var MailFactory
     */
    private $mailFactory;

    public function __construct(Swift_Mailer $mailer, MailFactory $mailFactory)
    {
        $this->mailer = $mailer;
        $this->mailFactory = $mailFactory;
    }

    public function __invoke(NewPasswordTokenMessage $message)
    {
        $email = $this->mailFactory->make($message->getPasswordToken());

        $this->mailer->send($email);
    }
}
