diff --git a/src/Controller/AbstractExtendedController.php b/src/Controller/AbstractExtendedController.php index 53a5af4..ba33a59 100644 --- a/src/Controller/AbstractExtendedController.php +++ b/src/Controller/AbstractExtendedController.php @@ -12,7 +12,7 @@ */ abstract class AbstractExtendedController extends AbstractController { - + /** * Create the json answer for an ajax form * - code : Http code @@ -34,10 +34,10 @@ "refresh" => $settings["refresh"] ?? false, "reset" => $settings["reset"] ?? false, ]; - + return $this->json($data, $settings["code"] ?? Response::HTTP_OK); } - + /** * Create a form inherited from AbstractGenericForm * diff --git a/src/Controller/ActivityController.php b/src/Controller/ActivityController.php index a5b4591..32d23de 100644 --- a/src/Controller/ActivityController.php +++ b/src/Controller/ActivityController.php @@ -4,7 +4,9 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use App\Repository\ActivityRepository; +use App\Repository\ActorRepository; use App\Entity\ActivityEntity; +use App\Entity\ActorEntity; use App\Form\Activity\ActivityAddForm; use App\Form\Activity\ActivityDeleteForm; use App\Form\Activity\ActivityEditForm; @@ -27,10 +29,12 @@ $entityManager = $this->getDoctrine()->getManager(); /** @var ActivityRepository $activityRepository */ $activityRepository = $entityManager->getRepository(ActivityEntity::class); + /** @var ActorRepository $actorRepository */ + $actorRepository = $entityManager->getRepository(ActorEntity::class); // Activity add form /** @var ActivityAddForm $activityAddForm */ - $activityAddForm = $this->createNamedCustomForm('activityAdd', ActivityAddForm::class); + $activityAddForm = $this->createNamedCustomForm('activityAdd', ActivityAddForm::class, ['actors' => $actorRepository->findAll()]); $activityAddForm->handleRequest($request); if ($activityAddForm->isSubmitted() && $activityAddForm->isValid()) { $errors = $activityAddForm->validate(); @@ -101,15 +105,17 @@ $entityManager = $this->getDoctrine()->getManager(); /** @var ActivityRepository $actorRepository */ $activityRepository = $entityManager->getRepository(ActivityEntity::class); + /** @var ActorRepository $actorRepository */ + $actorRepository = $entityManager->getRepository(ActorEntity::class); // Get activity $activity = $activityRepository->find($id); // Activity edit form /** @var ActivityEditForm $activityEditForm */ - $activityEditForm = $this->createNamedCustomForm('edit', ActivityEditForm::class); + $activityEditForm = $this->createNamedCustomForm('edit', ActivityEditForm::class, ['actors' => $actorRepository->findAll()]); $activityEditForm->handleRequest($request); - if($activityEditForm->isSubmitted() && $activityEditForm->isValid()) { + if ($activityEditForm->isSubmitted() && $activityEditForm->isValid()) { $errors = $activityEditForm->validate(); $errors = $activityEditForm->validate(); if (empty($errors)) { @@ -127,7 +133,7 @@ ]); } } - + // Update fields $activityEditForm->updateFields($activity); diff --git a/src/Controller/ActorController.php b/src/Controller/ActorController.php index a164c39..29ff656 100644 --- a/src/Controller/ActorController.php +++ b/src/Controller/ActorController.php @@ -109,11 +109,13 @@ // Get actor $actor = $actorRepository->find($id); - + // Get activities $activityCriteria = new Criteria(); - $activityCriteria->andWhere($activityCriteria->expr()->eq('actor', $actor)); - $activityCriteria->andWhere($activityCriteria->expr()->in('status', StatusEnum::ACTIVE_STATUS)); + $activityCriteria->andWhere($activityCriteria->expr() + ->eq('actor', $actor)); + $activityCriteria->andWhere($activityCriteria->expr() + ->in('status', StatusEnum::ACTIVE_STATUS)); $activities = $activityRepository->matching($activityCriteria); // Actor edit form diff --git a/src/Controller/MainController.php b/src/Controller/MainController.php index ef699f4..5c78e53 100644 --- a/src/Controller/MainController.php +++ b/src/Controller/MainController.php @@ -8,13 +8,14 @@ */ class MainController extends AbstractExtendedController { + /** * Home page - * + * * @return Response */ public function home(): Response - { + { return $this->render('home.html.twig'); } } \ No newline at end of file diff --git a/src/Enum/StatusEnum.php b/src/Enum/StatusEnum.php index 09b7b01..570fb5a 100644 --- a/src/Enum/StatusEnum.php +++ b/src/Enum/StatusEnum.php @@ -30,7 +30,7 @@ 'planified' => 'Planifié', 'closed' => 'Clos', ]; - + /** @var array Status considered active */ public const ACTIVE_STATUS = [ self::OPEN, diff --git a/src/Form/AbstractFormManager.php b/src/Form/AbstractFormManager.php index e7aee0a..5ea86d1 100644 --- a/src/Form/AbstractFormManager.php +++ b/src/Form/AbstractFormManager.php @@ -15,6 +15,7 @@ /** @var Form Generated form */ protected $form; + /** @var string Unique ID of the form */ protected $id; diff --git a/src/Form/Activity/ActivityAddForm.php b/src/Form/Activity/ActivityAddForm.php index b4977da..37922c3 100644 --- a/src/Form/Activity/ActivityAddForm.php +++ b/src/Form/Activity/ActivityAddForm.php @@ -2,18 +2,31 @@ namespace App\Form\Activity; use App\Entity\ActivityEntity; -use App\Form\AbstractFormManager; -use Symfony\Component\Form\Extension\Core\Type\TextType; -use Symfony\Component\Form\Extension\Core\Type\SubmitType; -use Symfony\Bridge\Doctrine\Form\Type\EntityType; -use App\Entity\ActorEntity; -use Symfony\Component\Form\Extension\Core\Type\DateType; -use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use App\Enum\StatusEnum; +use App\Form\AbstractFormManager; +use Symfony\Bridge\Doctrine\Form\Type\EntityType; +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; +use Symfony\Component\Form\Extension\Core\Type\DateType; +use Symfony\Component\Form\Extension\Core\Type\SubmitType; +use Symfony\Component\Form\Extension\Core\Type\TextType; +use App\Entity\ActorEntity; class ActivityAddForm extends AbstractFormManager { + /** @var array List of actors */ + protected $actors = []; + + /** + * {@inheritdoc} + */ + public function __construct(FormBuilderInterface $formBuilder, array $data = []) + { + $this->actors = $data['actors']; + parent::__construct($formBuilder, $data); + } + /** * Get the activity entity * @@ -51,6 +64,7 @@ $formBuilder->add('name', TextType::class) ->add('actor', EntityType::class, [ 'class' => ActorEntity::class, + 'choices' => $this->actors, 'group_by' => function ($choice) { if ($choice->getActive()) { return 'Actif'; diff --git a/src/Form/Activity/ActivityEditForm.php b/src/Form/Activity/ActivityEditForm.php index efbd142..f65542e 100644 --- a/src/Form/Activity/ActivityEditForm.php +++ b/src/Form/Activity/ActivityEditForm.php @@ -2,18 +2,31 @@ namespace App\Form\Activity; use App\Entity\ActivityEntity; -use App\Form\AbstractFormManager; -use Symfony\Component\Form\Extension\Core\Type\TextType; -use Symfony\Component\Form\Extension\Core\Type\SubmitType; -use Symfony\Bridge\Doctrine\Form\Type\EntityType; use App\Entity\ActorEntity; -use Symfony\Component\Form\Extension\Core\Type\DateType; -use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use App\Enum\StatusEnum; +use App\Form\AbstractFormManager; +use Symfony\Bridge\Doctrine\Form\Type\EntityType; +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; +use Symfony\Component\Form\Extension\Core\Type\DateType; +use Symfony\Component\Form\Extension\Core\Type\SubmitType; +use Symfony\Component\Form\Extension\Core\Type\TextType; class ActivityEditForm extends AbstractFormManager { + /** @var array List of actors */ + protected $actors = []; + + /** + * {@inheritdoc} + */ + public function __construct(FormBuilderInterface $formBuilder, array $data = []) + { + $this->actors = $data['actors']; + parent::__construct($formBuilder, $data); + } + /** * Update fields with entity * @@ -69,14 +82,15 @@ protected function addFields($formBuilder, $options): void { $formBuilder->add('name', TextType::class) - ->add('actor', EntityType::class, [ + ->add('actor', EntityType::class, [ 'class' => ActorEntity::class, + 'choices' => $this->actors, 'group_by' => function ($choice) { - if ($choice->getActive()) { - return 'Actif'; - } - - return 'Inactif'; + if ($choice->getActive()) { + return 'Actif'; + } + + return 'Inactif'; }, 'choice_label' => 'displayName', 'required' => false, diff --git a/src/Form/Actors/ActorEditForm.php b/src/Form/Actors/ActorEditForm.php index 1c63674..bba1396 100644 --- a/src/Form/Actors/ActorEditForm.php +++ b/src/Form/Actors/ActorEditForm.php @@ -12,7 +12,7 @@ /** * Update field values with entity data - * + * * @param ActorEntity $actor * @return self */ diff --git a/src/Repository/ActorRepository.php b/src/Repository/ActorRepository.php index 7ad8ee5..78a1a0f 100644 --- a/src/Repository/ActorRepository.php +++ b/src/Repository/ActorRepository.php @@ -12,6 +12,7 @@ /** @var array Default sorting */ public const DEFAULT_ORDER = [ + 'active' => 'desc', 'firstName' => 'asc', 'lastName' => 'asc' ];