diff --git a/src/Controller/ActivityController.php b/src/Controller/ActivityController.php
index 1a3e51b..92b3154 100644
--- a/src/Controller/ActivityController.php
+++ b/src/Controller/ActivityController.php
@@ -5,6 +5,7 @@
use Symfony\Component\HttpFoundation\Response;
use App\Repository\ActivityRepository;
use App\Entity\ActivityEntity;
+use App\Form\Activity\ActivityAddForm;
use App\Form\Activity\ActivityDeleteForm;
/**
@@ -26,6 +27,29 @@
/** @var ActivityRepository $actorRepository */
$activityRepository = $entityManager->getRepository(ActivityEntity::class);
+ // Activity add form
+ /** @var ActivityAddForm $activityAddForm */
+ $activityAddForm = $this->createNamedCustomForm('activityAdd', ActivityAddForm::class);
+ $activityAddForm->handleRequest($request);
+ if ($activityAddForm->isSubmitted() && $activityAddForm->isValid()) {
+ $errors = $activityAddForm->validate();
+ if (empty($errors)) {
+ $activity = $activityAddForm->getActivity();
+ $entityManager->persist($activity);
+ $entityManager->flush();
+ return $this->ajaxFormAnswer([
+ 'message' => 'Activité ajoutée',
+ 'refresh' => true,
+ 'reset' => true,
+ ]);
+ } else {
+ return $this->ajaxFormAnswer([
+ 'error' => join('
', $errors),
+ 'code' => Response::HTTP_BAD_REQUEST,
+ ]);
+ }
+ }
+
// Activity delete form
/** @var ActivityDeleteForm $activityDeleteForm */
$activityDeleteForm = $this->createNamedCustomForm('activityDelete', ActivityDeleteForm::class);
@@ -60,6 +84,7 @@
return $this->render('activity/activities.html.twig', [
'activities' => $activities,
'activityDeleteForm' => $activityDeleteForm,
+ 'activityAddForm' => $activityAddForm,
]);
}
}
\ No newline at end of file
diff --git a/src/Entity/ActivityEntity.php b/src/Entity/ActivityEntity.php
index 66a4b70..2bff420 100644
--- a/src/Entity/ActivityEntity.php
+++ b/src/Entity/ActivityEntity.php
@@ -185,6 +185,8 @@
public function setRealEndDate(?DateTime $realEndDate): self
{
$this->realEndDate = $realEndDate;
+
+ return $this;
}
/**
diff --git a/src/Form/Activity/ActivityAddForm.php b/src/Form/Activity/ActivityAddForm.php
new file mode 100644
index 0000000..65e9ddd
--- /dev/null
+++ b/src/Form/Activity/ActivityAddForm.php
@@ -0,0 +1,72 @@
+form->getData();
+ $activity = new activityEntity();
+ $activity->generateId();
+ $activity->setName($data['name']);
+ $activity->setStartDate($data['startDate']);
+ $activity->setEndDate($data['endDate']);
+ $activity->setRealStartDate($data['realStartDate']);
+ $activity->setRealEndDate($data['realEndDate']);
+ $activity->setActor($data['actor']);
+
+ return $activity;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getTemplate(): string
+ {
+ return '_includes/html/form/activity/add.html.twig';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function addFields($formBuilder, $options): void
+ {
+ $formBuilder->add('name', TextType::class)
+ ->add('actor', EntityType::class, [
+ 'class' => ActorEntity::class,
+ 'choice_label' => 'displayName',
+ 'required' => false,
+ ])
+ ->add('startDate', DateType::class, [
+ 'required' => false,
+ 'widget' => 'single_text',
+ ])
+ ->add('endDate', DateType::class, [
+ 'required' => false,
+ 'widget' => 'single_text',
+ ])
+ ->add('realStartDate', DateType::class, [
+ 'required' => false,
+ 'widget' => 'single_text',
+ ])
+ ->add('realEndDate', DateType::class, [
+ 'required' => false,
+ 'widget' => 'single_text',
+ ])
+ ->add('submit', SubmitType::class);
+ }
+}
\ No newline at end of file
diff --git a/templates/_includes/html/form/activity/add.html.twig b/templates/_includes/html/form/activity/add.html.twig
new file mode 100644
index 0000000..0276819
--- /dev/null
+++ b/templates/_includes/html/form/activity/add.html.twig
@@ -0,0 +1,33 @@
+{{ form_start(form, {attr: {class: 'ajax-form'}}) }}
+