diff --git a/migrations/Version20231021084644.php b/migrations/Version20231021084644.php new file mode 100644 index 0000000..f63a0a2 --- /dev/null +++ b/migrations/Version20231021084644.php @@ -0,0 +1,31 @@ +addSql('ALTER TABLE disposition DROP deleted_at'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE disposition ADD deleted_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\''); + } +} diff --git a/src/Controller/Admin/Disposition/DeleteController.php b/src/Controller/Admin/Disposition/DeleteController.php new file mode 100644 index 0000000..4438630 --- /dev/null +++ b/src/Controller/Admin/Disposition/DeleteController.php @@ -0,0 +1,70 @@ +generateUrl('app_admin_disposition_delete', ['uuid' => $disposition->getUuid()]); + $form = $this + ->createFormBuilder($disposition, ['action' => $formAction, 'ajax_submit' => true]) + ->add('remarks', TextareaType::class, [ + 'label' => 'Kommentar/Begründung', + 'required' => false, + 'attr' => [ + 'rows' => 3, + ], + ]) + ->getForm() + ; + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $this->eventDispatcher->dispatch(new DispositionDeletedEvent($disposition), DispositionDeletedEvent::NAME); + + $this->entityManager->remove($disposition); + $this->entityManager->flush(); + + $this->addFlash('success', 'Die Einteilung wurde gelöscht'); + $this->logger->info('Delete disposition', [ + 'disposition_id' => $disposition->getId(), + 'teamer' => (string) $disposition->getTeamer(), + ]); + + $response->setCloseAndRedirect($this->generateUrl('app_admin_assignment_detail', [ + 'uuid' => $disposition->getAssignment()->getUuid(), + ])); + } else { + $response->setContent($this->renderView('admin/disposition/delete.html.twig', [ + 'form' => $form, + ])); + } + + return $this->json($response); + } +} \ No newline at end of file diff --git a/src/Entity/Disposition.php b/src/Entity/Disposition.php index 744d001..ef544c8 100644 --- a/src/Entity/Disposition.php +++ b/src/Entity/Disposition.php @@ -13,11 +13,10 @@ use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Uid\Uuid; #[ORM\Entity(repositoryClass: DispositionRepository::class)] -class Disposition implements BlameableEntityInterface, TimestampableEntityInterface, SoftDeletableEntityInterface +class Disposition implements BlameableEntityInterface, TimestampableEntityInterface { use BlameableEntity; use TimestampableEntity; - use SoftDeletableEntity; public const STATUS_NEW = 'new'; public const STATUS_CHECKING_CONTRACT = 'checking_contract'; diff --git a/src/Event/DispositionDeletedEvent.php b/src/Event/DispositionDeletedEvent.php new file mode 100644 index 0000000..a5e4d31 --- /dev/null +++ b/src/Event/DispositionDeletedEvent.php @@ -0,0 +1,19 @@ +disposition; + } +} \ No newline at end of file diff --git a/templates/admin/assignment/detail.html.twig b/templates/admin/assignment/detail.html.twig index e8089bf..af0eac7 100644 --- a/templates/admin/assignment/detail.html.twig +++ b/templates/admin/assignment/detail.html.twig @@ -91,7 +91,7 @@ {% else %}