<?php

namespace App\EntityListener;

use App\Entity\ContentVersion;
use App\Message\ContentWordCountMessage;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Messenger\MessageBusInterface;

final class ContentVersionListener
{
    /**
     * @var MessageBusInterface
     */
    private $bus;

    public function __construct(MessageBusInterface $bus)
    {
        $this->bus = $bus;
    }

    /**
     * @Orm\PostPersist()
     * @ORM\PostUpdate()
     *
     * @param ContentVersion $contentVersion
     */
    public function updateContent(ContentVersion $contentVersion)
    {
        if (is_int($contentVersion->getWordCount())) {
            $this->bus->dispatch(new ContentWordCountMessage($contentVersion->getContent(), $contentVersion->getWordCount()));
        }
    }
}
