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

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use App\Form\ActorAddForm;
use App\Repository\ActorRepository;
use App\Entity\ActorEntity;

class SettingsController extends AbstractExtendedController
{

    /**
     * Workspace selector page
     *
     * @param Request $request
     * @return Response
     */
    public function actors(Request $request): Response
    {
        // Get repositories
        $entityManager = $this->getDoctrine()->getManager();
        /** @var ActorRepository $actorRepository */
        $actorRepository = $entityManager->getRepository(ActorEntity::class);
        
        // Actor add form
        /** @var ActorAddForm $actorAddFom */
        $actorAddFom = $this->createNamedCustomForm('actorAdd', ActorAddForm::class);
        $actorAddFom->handleRequest($request);
        if ($actorAddFom->isSubmitted() && $actorAddFom->isValid()) {
            $errors = $actorAddFom->validate();
            if (empty($errors)) {
                $actor = $actorAddFom->getActor();
                $entityManager->persist($actor);
                $entityManager->flush();
                
                return $this->ajaxFormAnswer([
                    'refresh' => true,
                    'reset' => true,
                ]);
            } else {
                return $this->ajaxFormAnswer([
                    'error' => join('<br/>', $errors),
                    'code' => Response::HTTP_BAD_REQUEST,
                ]);
            }
        }
        
        // Get actors
        $actors = $actorRepository->findAll();

        return $this->render('actors.html.twig', [
            'actorAddForm' => $actorAddFom,
            'actors' => $actors,
        ]);
    }
}