File: /home/timetracker.panomity.com/tm.old/EventSubscriber/CalendarDragAndDropSourceSubscriber.php
<?php
/*
* This file is part of the TaskManagementBundle for Kimai 2.
* All rights reserved by Kevin Papst (www.kevinpapst.de).
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace KimaiPlugin\TaskManagementBundle\EventSubscriber;
use App\Constants;
use App\Event\CalendarDragAndDropSourceEvent;
use App\Utils\Color;
use KimaiPlugin\TaskManagementBundle\Calendar\TaskEntry;
use KimaiPlugin\TaskManagementBundle\Calendar\TaskSource;
use KimaiPlugin\TaskManagementBundle\Entity\Task;
use KimaiPlugin\TaskManagementBundle\Repository\TaskRepository;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
final class CalendarDragAndDropSourceSubscriber implements EventSubscriberInterface
{
/**
* @var AuthorizationCheckerInterface
*/
private $security;
/**
* @var TaskRepository
*/
private $taskRepository;
public function __construct(AuthorizationCheckerInterface $security, TaskRepository $taskRepository)
{
$this->security = $security;
$this->taskRepository = $taskRepository;
}
public static function getSubscribedEvents(): array
{
return [
CalendarDragAndDropSourceEvent::class => ['onDashboardEvent', 100],
];
}
public function onDashboardEvent(CalendarDragAndDropSourceEvent $event): void
{
if (!$this->security->isGranted('task_start')) {
return;
}
$colorHelper = new Color();
$entries = [];
$max = $event->getMaxEntries();
$query = $this->taskRepository->getUserTasksQuery($event->getUser(), $max);
$tasks = $this->taskRepository->getPagerfantaForQuery($query)->getIterator();
/** @var Task $task */
foreach ($tasks as $task) {
$color = null;
if ($task->getActivity() !== null) {
$color = $colorHelper->getColor($task->getActivity());
}
if ($color === null && $task->getProject() !== null) {
$color = $colorHelper->getColor($task->getProject(), true);
}
if ($color === null) {
$color = Constants::DEFAULT_COLOR;
}
$entries[] = new TaskEntry($task, $color);
}
$source = new TaskSource($entries);
$event->addSource($source);
}
}