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;
use App\Form\ActorDeleteForm;

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,
                ]);
            }
        }

        // Actor delete form
        /** @var ActorDeleteForm $actorDeleteForm */
        $actorDeleteForm = $this->createNamedCustomForm('actorDelete', ActorDeleteForm::class);
        $actorDeleteForm->handleRequest($request);
        if ($actorDeleteForm->isSubmitted() && $actorDeleteForm->isValid()) {
            $errors = $actorAddFom->validate();
            if (empty($errors)) {
                $actor = $actorDeleteForm->getActor($actorRepository);
                if (!is_null($actor)) {
                    $entityManager->remove($actor);
                    $entityManager->flush();
                    return $this->ajaxFormAnswer([
                        'refresh' => true,
                    ]);
                } else {
                    return $this->ajaxFormAnswer([
                        'error' => 'Utilisateur non trouvé',
                        'code' => Response::HTTP_BAD_REQUEST,
                    ]);
                }
            } 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,
            'actorDeleteForm' => $actorDeleteForm,
            'actors' => $actors,
        ]);
    }
}