Newer
Older
activity-manager / src / Controller / TaskController.php
<?php
namespace App\Controller;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use App\Entity\ActorEntity;
use App\Entity\TaskEntity;
use App\Repository\ActorRepository;
use App\Repository\TaskRepository;
use App\Form\Actors\TaskAddForm;

class TaskController extends AbstractExtendedController
{

    /**
     * Page for task list
     *
     * @param Request $request
     * @return Response
     */
    public function tasks(Request $request): Response
    {
        // Get repositories
        $entityManager = $this->getDoctrine()->getManager();
        /** @var ActorRepository $actorRepository */
        $actorRepository = $entityManager->getRepository(ActorEntity::class);
        /** @var TaskRepository $taskRepository */
        $taskRepository = $entityManager->getRepository(TaskEntity::class);

        // Get actors
        $actors = $actorRepository->findAll();

        // Task add form
        /** @var TaskAddForm $taskAddForm */
        $taskAddForm = $this->createNamedCustomForm('taskAdd', TaskAddForm::class, [
            'actors' => $actors,
        ]);
        $taskAddForm->handleRequest($request);
        if ($taskAddForm->isSubmitted() && $taskAddForm->isValid()) {
            $errors = $taskAddForm->validate();
            if (empty($errors)) {
                $task = $taskAddForm->getTask();
                $entityManager->persist($task);
                $entityManager->flush();
                return $this->ajaxFormAnswer([
                    'refresh' => true,
                    'reset' => true,
                ]);
            } else {
                return $this->ajaxFormAnswer([
                    'error' => join('<br/>', $errors),
                    'code' => Response::HTTP_BAD_REQUEST,
                ]);
            }
        }

        // Get tasks
        $tasks = $taskRepository->findAll();

        return $this->render('task/tasks.html.twig', [
            'tasks' => $tasks,
            'taskAddForm' => $taskAddForm,
        ]);
    }
}