diff --git a/src/Controller/ActivityController.php b/src/Controller/ActivityController.php index 6ca187a..1a3e51b 100644 --- a/src/Controller/ActivityController.php +++ b/src/Controller/ActivityController.php @@ -1,9 +1,11 @@ getDoctrine()->getManager(); /** @var ActivityRepository $actorRepository */ $activityRepository = $entityManager->getRepository(ActivityEntity::class); + // Activity delete form + /** @var ActivityDeleteForm $activityDeleteForm */ + $activityDeleteForm = $this->createNamedCustomForm('activityDelete', ActivityDeleteForm::class); + $activityDeleteForm->handleRequest($request); + if ($activityDeleteForm->isSubmitted() && $activityDeleteForm->isValid()) { + $errors = $activityDeleteForm->validate(); + if (empty($errors)) { + $activity = $activityDeleteForm->getActivity($activityRepository); + if (!is_null($activity)) { + $entityManager->remove($activity); + $entityManager->flush(); + return $this->ajaxFormAnswer([ + 'refresh' => true, + ]); + } else { + return $this->ajaxFormAnswer([ + 'error' => 'Activité non trouvé', + 'code' => Response::HTTP_BAD_REQUEST, + ]); + } + } else { + return $this->ajaxFormAnswer([ + 'error' => join('
', $errors), + 'code' => Response::HTTP_BAD_REQUEST, + ]); + } + } + + // Get activities $activities = $activityRepository->findAll(); return $this->render('activity/activities.html.twig', [ 'activities' => $activities, + 'activityDeleteForm' => $activityDeleteForm, ]); } } \ No newline at end of file diff --git a/src/Form/Activity/ActivityDeleteForm.php b/src/Form/Activity/ActivityDeleteForm.php new file mode 100644 index 0000000..a5307ad --- /dev/null +++ b/src/Form/Activity/ActivityDeleteForm.php @@ -0,0 +1,40 @@ +form->getData(); + return $activityRepository->find($data['id']); + } + + /** + * {@inheritdoc} + */ + public function getTemplate(): string + { + return '_includes/html/form/activity/delete.html.twig'; + } + + /** + * {@inheritdoc} + */ + protected function addFields($formBuilder, $options): void + { + $formBuilder->add('id', HiddenType::class)->add('submit', SubmitType::class); + } +} \ No newline at end of file diff --git a/templates/_includes/html/arrays/activity.html.twig b/templates/_includes/html/arrays/activity.html.twig index 2fbf08b..5a233aa 100644 --- a/templates/_includes/html/arrays/activity.html.twig +++ b/templates/_includes/html/arrays/activity.html.twig @@ -29,7 +29,9 @@ {% endif %} {% if activity.realEndDate is not null %} {{ dateTools.euro(activity.realEndDate) }} {% endif %} - + {% if activityDeleteForm is defined %} + {% include '_includes/html/genericForm.html.twig' with {'form': activityDeleteForm, 'data': {activity: activity, variant: 'icon'}} only %} + {% endif %} {% endfor %} diff --git a/templates/_includes/html/form/activity/delete.html.twig b/templates/_includes/html/form/activity/delete.html.twig new file mode 100644 index 0000000..ecd328f --- /dev/null +++ b/templates/_includes/html/form/activity/delete.html.twig @@ -0,0 +1,15 @@ +{{ form_start(form, {attr: {class: 'ajax-form', 'data-form-confirmation': "Voulez-vous supprimer l'activité "~data.activity.name~" ?"}}) }} +{{ form_widget(form.id, {value: data.activity.id}) }} +{% if data.variant|default('icon') == 'icon' %} +{{ form_widget(form.submit, { + label: 'Supprimer', + label_html: true, + attr: { + class: 'icon-button', + title: 'Supprimer l\'activié', + } +})}} +{% elseif data.variant == 'full' %} +{{ form_widget(form.submit, {label: 'Supprimer l\'activité', attr: {class: "w-100"}})}} +{% endif %} +{{ form_end(form) }} \ No newline at end of file diff --git a/templates/activity/activities.html.twig b/templates/activity/activities.html.twig index 81d34c7..316b262 100644 --- a/templates/activity/activities.html.twig +++ b/templates/activity/activities.html.twig @@ -9,7 +9,8 @@

Activités

- {% include "_includes/html/arrays/activity.html.twig" with {activities: activities} %}
+ {% include "_includes/html/arrays/activity.html.twig" with {activities: activities, activityDeleteForm: activityDeleteForm} only %} + {% endblock %} \ No newline at end of file