<?php

namespace App\EntityListener;

use App\Entity\Campaign\Tasklist\Task;
use App\Entity\CommentTask;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Security\Core\Security;

final class CommentTaskListener
{
    /**
     * @var ContainerInterface
     */
    private $container;

    /**
     * @var Security
     */
    private $security;

    public function __construct(Security $security, ContainerInterface $container)
    {
        $this->container = $container;
        $this->security = $security;
    }

    /**
     * @ORM\PostPersist()
     *
     * @param CommentTask $comment
     */
    public function createFirstVersion(CommentTask $comment)
    {
        $activity = (new Task\Activity())
            ->setCreatedBy($this->security->getUser())
            ->setTask($comment->getTask())
            ->setType('comment')
            ->setTitle('commented on this task');

        $activityService = $this->container->get('App\Service\Campaign\Tasklist\Task\ActivityService');
        $activityService->save($activity);
    }
}
