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

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use App\Repository\ProjectRepository;
use App\Entity\ProjectEntity;
use App\Form\Project\ProjectAddForm;

class ProjectController extends AbstractExtendedController
{

    /**
     * Projects list
     *
     * @param Request $request
     * @return Response
     */
    public function projects(Request $request): Response
    {
        // Get repositories
        $entityManager = $this->getDoctrine()->getManager();
        /** @var ProjectRepository $projectRepository */
        $projectRepository = $entityManager->getRepository(ProjectEntity::class);

        // Project add form
        /** @var ProjectAddForm $projectAddForm */
        $projectAddForm = $this->createNamedCustomForm('projectAdd', ProjectAddForm::class);
        $projectAddForm->handleRequest($request);
        if ($projectAddForm->isSubmitted() && $projectAddForm->isSubmitted()) {
            $errors = $projectAddForm->validate();
            if (empty($errors)) {
                $project = $projectAddForm->getProject();
                $entityManager->persist($project);
                $entityManager->flush();

                return $this->ajaxFormAnswer([
                    'refresh' => true,
                    'reset' => true
                ]);
            }
            return $this->ajaxFormAnswer([
                'error' => join('<br/>', $errors),
                'code' => Response::HTTP_BAD_REQUEST,
            ]);
        }

        // Get projects
        $projects = $projectRepository->findAll();

        return $this->render("project/projects.html.twig", [
            'projects' => $projects,
            'projectAddForm' => $projectAddForm,
        ]);
    }
}