feat: integrate with htmx
This commit is contained in:
@@ -5,9 +5,11 @@ namespace App\Controller\Admin\Application;
|
||||
use App\Entity\Application;
|
||||
use App\Entity\Disposition;
|
||||
use App\Event\DispositionCreatedEvent;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
@@ -25,24 +27,32 @@ class DisposeController extends AbstractController
|
||||
#[Route('/admin/application/dispose/{uuid}', name: 'app_admin_application_dispose')]
|
||||
#[IsGranted('ROLE_ADMINISTRATIVE')]
|
||||
#[IsGranted('DISPOSE', subject: 'application')]
|
||||
public function index(Application $application): Response
|
||||
public function index(Application $application, Request $request): Response
|
||||
{
|
||||
$disposition = new Disposition($application);
|
||||
if (true === $request->isMethod('POST')) {
|
||||
$disposition = new Disposition($application);
|
||||
|
||||
$this->entityManager->persist($disposition);
|
||||
$this->entityManager->remove($application);
|
||||
$this->entityManager->flush();
|
||||
$this->entityManager->persist($disposition);
|
||||
$this->entityManager->remove($application);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->eventDispatcher->dispatch(new DispositionCreatedEvent($disposition), DispositionCreatedEvent::NAME);
|
||||
$this->eventDispatcher->dispatch(new DispositionCreatedEvent($disposition), DispositionCreatedEvent::NAME);
|
||||
|
||||
$this->addFlash('success', 'Teamer:in wurde eingeteilt');
|
||||
$this->logger->info('Create disposition', [
|
||||
'disposition_id' => $disposition->getId(),
|
||||
'teamer' => (string) $application->getTeamer(),
|
||||
]);
|
||||
$this->addFlash('success', 'Teamer:in wurde eingeteilt');
|
||||
$this->logger->info('Create disposition', [
|
||||
'disposition_id' => $disposition->getId(),
|
||||
'teamer' => (string) $application->getTeamer(),
|
||||
]);
|
||||
|
||||
return $this->redirectToRoute('app_admin_assignment_detail', [
|
||||
'uuid' => $application->getAssignment()->getUuid(),
|
||||
$redirectUrl = $this->generateUrl('app_admin_assignment_detail', [
|
||||
'uuid' => $application->getAssignment()->getUuid(),
|
||||
]);
|
||||
|
||||
return new HxRedirectResponse($redirectUrl);
|
||||
}
|
||||
|
||||
return $this->render('admin/application/modal_dispose.html.twig', [
|
||||
'application' => $application,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -3,21 +3,17 @@
|
||||
namespace App\Controller\Admin\Application;
|
||||
|
||||
use App\Entity\Application;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
|
||||
class InfoController extends AbstractController
|
||||
{
|
||||
#[Route('/admin/application/info/{uuid}', name: 'app_admin_application_info')]
|
||||
public function index(Application $application): JsonResponse
|
||||
public function index(Application $application): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$response->setContent($this->renderView('admin/application/info.html.twig', [
|
||||
return $this->render('admin/application/modal_info.html.twig', [
|
||||
'application' => $application,
|
||||
]));
|
||||
|
||||
return $this->json($response);
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -5,13 +5,13 @@ namespace App\Controller\Admin\Application;
|
||||
use App\Entity\Application;
|
||||
use App\Event\ApplicationStatusEvent;
|
||||
use App\Form\ApplicationStatusType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use App\Model\ApplicationStatusDto;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
@@ -28,12 +28,10 @@ class StatusController extends AbstractController
|
||||
#[Route('/admin/application/status/{uuid}', name: 'app_admin_application_status')]
|
||||
#[IsGranted('ROLE_ADMINISTRATIVE')]
|
||||
#[IsGranted('STATUS', subject: 'application')]
|
||||
public function index(Application $application, Request $request): JsonResponse
|
||||
public function index(Application $application, Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$formAction = $this->generateUrl('app_admin_application_status', ['uuid' => $application->getUuid()]);
|
||||
$statusDto = new ApplicationStatusDto($application);
|
||||
$form = $this->createForm(ApplicationStatusType::class, $statusDto, ['action' => $formAction, 'ajax_submit' => true]);
|
||||
$form = $this->createForm(ApplicationStatusType::class, $statusDto);
|
||||
|
||||
$form->handleRequest($request);
|
||||
|
||||
@@ -53,15 +51,13 @@ class StatusController extends AbstractController
|
||||
'teamer' => (string) $application->getTeamer(),
|
||||
]);
|
||||
|
||||
$response->setCloseAndRedirect($this->generateUrl('app_admin_assignment_detail', [
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_assignment_detail', [
|
||||
'uuid' => $application->getAssignment()->getUuid(),
|
||||
]));
|
||||
} else {
|
||||
$response->setContent($this->renderView('admin/application/status.html.twig', [
|
||||
'form' => $form,
|
||||
]));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/application/modal_status.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,13 @@ class CreateController extends AbstractController
|
||||
$assignment = new Assignment();
|
||||
$assignment->setOwner($user);
|
||||
|
||||
$form = $this->createForm(AssignmentType::class, $assignment);
|
||||
$form = $this->createForm(
|
||||
AssignmentType::class,
|
||||
$assignment,
|
||||
[
|
||||
'pickup_form_url' => $this->generateUrl('app_admin_assignment_pickup_form'),
|
||||
]
|
||||
);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -49,7 +55,7 @@ class CreateController extends AbstractController
|
||||
}
|
||||
|
||||
return $this->render('admin/assignment/create.html.twig', [
|
||||
'form' => $form,
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,11 @@
|
||||
namespace App\Controller\Admin\Assignment;
|
||||
|
||||
use App\Entity\Assignment;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
@@ -20,19 +22,25 @@ class DeleteController extends AbstractController
|
||||
|
||||
#[Route('/admin/assignment/delete/{uuid}', name: 'app_admin_assignment_delete')]
|
||||
#[IsGranted('ROLE_ADMINISTRATIVE')]
|
||||
public function index(Assignment $assignment): Response
|
||||
public function index(Assignment $assignment, Request $request): Response
|
||||
{
|
||||
$assignment->setDeleted();
|
||||
$this->entityManager->flush();
|
||||
if (true === $request->isMethod('POST')) {
|
||||
$assignment->setDeleted();
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->logger->info('Delete assignment', [
|
||||
'assignment_id' => $assignment->getId(),
|
||||
'destination' => (string) $assignment->getDestination(),
|
||||
'job_profile' => $assignment->getJobProfile()->getName(),
|
||||
$this->logger->info('Delete assignment', [
|
||||
'assignment_id' => $assignment->getId(),
|
||||
'destination' => (string) $assignment->getDestination(),
|
||||
'job_profile' => $assignment->getJobProfile()->getName(),
|
||||
]);
|
||||
|
||||
$this->addFlash('success', 'Der Einsatz wurde gelöscht');
|
||||
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_assignment_index'));
|
||||
}
|
||||
|
||||
return $this->render('admin/assignment/modal_delete.html.twig', [
|
||||
'assignment' => $assignment,
|
||||
]);
|
||||
|
||||
$this->addFlash('success', 'Der Einsatz wurde gelöscht');
|
||||
|
||||
return $this->redirectToRoute('app_admin_assignment_index');
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,13 @@ class DuplicateController extends AbstractController
|
||||
{
|
||||
$copy = Assignment::duplicate($assignment);
|
||||
|
||||
$form = $this->createForm(AssignmentType::class, $copy);
|
||||
$form = $this->createForm(
|
||||
AssignmentType::class,
|
||||
$copy,
|
||||
[
|
||||
'pickup_form_url' => $this->generateUrl('app_admin_assignment_pickup_form'),
|
||||
]
|
||||
);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -48,7 +54,7 @@ class DuplicateController extends AbstractController
|
||||
}
|
||||
|
||||
return $this->render('admin/assignment/duplicate.html.twig', [
|
||||
'form' => $form,
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,13 @@ class EditController extends AbstractController
|
||||
#[IsGranted('EDIT', subject: 'assignment')]
|
||||
public function index(Assignment $assignment, Request $request): Response
|
||||
{
|
||||
$form = $this->createForm(AssignmentType::class, $assignment);
|
||||
$form = $this->createForm(
|
||||
AssignmentType::class,
|
||||
$assignment,
|
||||
[
|
||||
'pickup_form_url' => $this->generateUrl('app_admin_assignment_pickup_form'),
|
||||
]
|
||||
);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -42,7 +48,7 @@ class EditController extends AbstractController
|
||||
}
|
||||
|
||||
return $this->render('admin/assignment/edit.html.twig', [
|
||||
'form' => $form,
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -4,13 +4,13 @@ namespace App\Controller\Admin\Disposition;
|
||||
|
||||
use App\Entity\Disposition;
|
||||
use App\Event\DispositionDeletedEvent;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
|
||||
@@ -27,12 +27,10 @@ class DeleteController extends AbstractController
|
||||
#[Route('/admin/disposition/delete/{uuid}', name: 'app_admin_disposition_delete')]
|
||||
#[IsGranted('ROLE_ADMINISTRATIVE')]
|
||||
#[IsGranted('DELETE', subject: 'disposition')]
|
||||
public function index(Disposition $disposition, Request $request): JsonResponse
|
||||
public function index(Disposition $disposition, Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$formAction = $this->generateUrl('app_admin_disposition_delete', ['uuid' => $disposition->getUuid()]);
|
||||
$form = $this
|
||||
->createFormBuilder($disposition, ['action' => $formAction, 'ajax_submit' => true])
|
||||
->createFormBuilder($disposition)
|
||||
->add('remarks', TextareaType::class, [
|
||||
'label' => 'Kommentar/Begründung',
|
||||
'required' => false,
|
||||
@@ -56,15 +54,13 @@ class DeleteController extends AbstractController
|
||||
$this->entityManager->remove($disposition);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$response->setCloseAndRedirect($this->generateUrl('app_admin_assignment_detail', [
|
||||
return new HxRedirectResponse($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);
|
||||
return $this->render('admin/disposition/modal_delete.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -5,14 +5,14 @@ namespace App\Controller\Admin\Document;
|
||||
use App\Entity\Upload;
|
||||
use App\Event\DocumentRejectedEvent;
|
||||
use App\Form\DocumentCheckType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use App\Model\DocumentCheckDto;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\DependencyInjection\Attribute\Target;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
use Symfony\Component\Workflow\WorkflowInterface;
|
||||
@@ -32,20 +32,10 @@ class CheckController extends AbstractController
|
||||
#[Route('/admin/document/check/{uuid}', name: 'app_admin_document_check')]
|
||||
#[IsGranted('ROLE_ADMINISTRATIVE')]
|
||||
#[IsGranted('CHECK', subject: 'document')]
|
||||
public function index(Upload $document, Request $request): JsonResponse
|
||||
public function index(Upload $document, Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$formData = new DocumentCheckDto($document);
|
||||
$formAction = $this->generateUrl('app_admin_document_check', ['uuid' => $document->getUuid()]);
|
||||
$form = $this->createForm(
|
||||
DocumentCheckType::class,
|
||||
$formData,
|
||||
[
|
||||
'action' => $formAction,
|
||||
'ajax_submit' => true,
|
||||
'document_type' => $document->getType(),
|
||||
]
|
||||
);
|
||||
$form = $this->createForm(DocumentCheckType::class, $formData, ['document_type' => $document->getType()]);
|
||||
|
||||
$form->handleRequest($request);
|
||||
|
||||
@@ -75,16 +65,13 @@ class CheckController extends AbstractController
|
||||
]);
|
||||
}
|
||||
|
||||
$returnUrl = $this->generateUrl('app_admin_document_index');
|
||||
$response->setCloseAndRedirect($returnUrl);
|
||||
} else {
|
||||
$response->setContent($this->renderView('admin/document/check.html.twig', [
|
||||
'document' => $document,
|
||||
'form' => $form,
|
||||
]));
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_document_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/document/modal_check.html.twig', [
|
||||
'document' => $document,
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
|
||||
private function rejectDocument(Upload $document, string $comment = null): void
|
||||
|
||||
@@ -3,9 +3,11 @@
|
||||
namespace App\Controller\Admin\Document;
|
||||
|
||||
use App\Entity\Upload;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
@@ -21,17 +23,23 @@ class DeleteController extends AbstractController
|
||||
#[Route('/admin/document/delete/{uuid}', name: 'app_admin_document_delete')]
|
||||
#[IsGranted('ROLE_ADMINISTRATIVE')]
|
||||
#[IsGranted('DELETE', subject: 'document')]
|
||||
public function index(Upload $document): Response
|
||||
public function index(Upload $document, Request $request): Response
|
||||
{
|
||||
$this->entityManager->remove($document);
|
||||
$this->entityManager->flush();
|
||||
if (true === $request->isMethod('POST')) {
|
||||
$this->entityManager->remove($document);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Das Dokument wurde gelöscht');
|
||||
$this->logger->info('Delete document', [
|
||||
'document_filename' => $document->getOriginalFilename(),
|
||||
'owner' => $document->getOwner()->getFullName(),
|
||||
$this->addFlash('success', 'Das Dokument wurde gelöscht');
|
||||
$this->logger->info('Delete document', [
|
||||
'document_filename' => $document->getOriginalFilename(),
|
||||
'owner' => $document->getOwner()->getFullName(),
|
||||
]);
|
||||
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_document_index'));
|
||||
}
|
||||
|
||||
return $this->render('admin/document/modal_delete.html.twig', [
|
||||
'document' => $document,
|
||||
]);
|
||||
|
||||
return $this->redirectToRoute('app_admin_document_index');
|
||||
}
|
||||
}
|
||||
@@ -4,12 +4,12 @@ namespace App\Controller\Admin\Feedback;
|
||||
|
||||
use App\Entity\Feedback;
|
||||
use App\Form\FeedbackApproveType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -23,11 +23,9 @@ class ApproveController extends AbstractController
|
||||
|
||||
#[Route('/admin/feedback/approve/{uuid}', name: 'app_admin_feedback_approve')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(Feedback $feedback, Request $request): JsonResponse
|
||||
public function index(Feedback $feedback, Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$action = $this->generateUrl('app_admin_feedback_approve', ['uuid' => $feedback->getUuid()]);
|
||||
$form = $this->createForm(FeedbackApproveType::class, $feedback, ['action' => $action, 'ajax_submit' => true]);
|
||||
$form = $this->createForm(FeedbackApproveType::class, $feedback);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -39,15 +37,12 @@ class ApproveController extends AbstractController
|
||||
'feedback_uuid' => $feedback->getUuid(),
|
||||
]);
|
||||
|
||||
$returnUrl = $this->generateUrl('app_admin_index');
|
||||
$response->setCloseAndRedirect($returnUrl);
|
||||
} else {
|
||||
$response->setContent($this->renderView('admin/feedback/approve.html.twig', [
|
||||
'feedback' => $feedback,
|
||||
'form' => $form->createView(),
|
||||
]));
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/feedback/modal_approve.html.twig', [
|
||||
'feedback' => $feedback,
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -4,12 +4,12 @@ namespace App\Controller\Admin\System\Availability;
|
||||
|
||||
use App\Entity\Availability;
|
||||
use App\Form\AvailabilityType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -23,13 +23,10 @@ class CreateController extends AbstractController
|
||||
|
||||
#[Route('/admin/system/availability/create', name: 'app_admin_system_availability_create')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(Request $request): JsonResponse
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$action = $this->generateUrl('app_admin_system_availability_create');
|
||||
|
||||
$availability = new Availability();
|
||||
$form = $this->createForm(AvailabilityType::class, $availability, ['action' => $action, 'ajax_submit' => true]);
|
||||
$form = $this->createForm(AvailabilityType::class, $availability);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -42,15 +39,11 @@ class CreateController extends AbstractController
|
||||
'availability_range' => (string) $availability,
|
||||
]);
|
||||
|
||||
$redirectUrl = $this->generateUrl('app_admin_system_availability_index');
|
||||
$response->setCloseAndRedirect($redirectUrl);
|
||||
} else {
|
||||
$content = $this->renderView('admin/system/availability/form.html.twig', [
|
||||
'form' => $form,
|
||||
]);
|
||||
$response->setContent($content);
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_availability_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/system/availability/modal_create.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,11 @@
|
||||
namespace App\Controller\Admin\System\Availability;
|
||||
|
||||
use App\Entity\Availability;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
@@ -20,17 +22,23 @@ class DeleteController extends AbstractController
|
||||
|
||||
#[Route('/admin/system/availability/delete/{id}', name: 'app_admin_system_availability_delete', methods: ['POST'])]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(Availability $availability): Response
|
||||
public function index(Availability $availability, Request $request): Response
|
||||
{
|
||||
$availability->setDeleted();
|
||||
$this->entityManager->flush();
|
||||
if (true === $request->isMethod('POST')) {
|
||||
$availability->setDeleted();
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Die Verfügbarkeit wurde gelöscht');
|
||||
$this->logger->info('Delete availability', [
|
||||
'availability_id' => $availability->getId(),
|
||||
'availability_range' => (string) $availability,
|
||||
$this->addFlash('success', 'Die Verfügbarkeit wurde gelöscht');
|
||||
$this->logger->info('Delete availability', [
|
||||
'availability_id' => $availability->getId(),
|
||||
'availability_range' => (string) $availability,
|
||||
]);
|
||||
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_availability_index'));
|
||||
}
|
||||
|
||||
return $this->render('admin/system/availability/modal_delete.html.twig', [
|
||||
'availability' => $availability,
|
||||
]);
|
||||
|
||||
return $this->redirectToRoute('app_admin_system_availability_index');
|
||||
}
|
||||
}
|
||||
@@ -4,12 +4,12 @@ namespace App\Controller\Admin\System\Availability;
|
||||
|
||||
use App\Entity\Availability;
|
||||
use App\Form\AvailabilityType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -23,14 +23,11 @@ class DuplicateController extends AbstractController
|
||||
|
||||
#[Route('/admin/system/availability/duplicate/{id}', name: 'app_admin_system_availability_duplicate')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(Availability $availability, Request $request): JsonResponse
|
||||
public function index(Availability $availability, Request $request): Response
|
||||
{
|
||||
$copy = Availability::duplicate($availability);
|
||||
|
||||
$response = new AjaxModalResponseDto();
|
||||
$action = $this->generateUrl('app_admin_system_availability_duplicate', ['id' => $availability->getId()]);
|
||||
|
||||
$form = $this->createForm(AvailabilityType::class, $copy, ['action' => $action, 'ajax_submit' => true]);
|
||||
$form = $this->createForm(AvailabilityType::class, $copy);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -45,15 +42,11 @@ class DuplicateController extends AbstractController
|
||||
'duplicate_range' => (string) $copy,
|
||||
]);
|
||||
|
||||
$redirectUrl = $this->generateUrl('app_admin_system_availability_index');
|
||||
$response->setCloseAndRedirect($redirectUrl);
|
||||
} else {
|
||||
$content = $this->renderView('admin/system/availability/form.html.twig', [
|
||||
'form' => $form,
|
||||
]);
|
||||
$response->setContent($content);
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_availability_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/system/availability/modal_duplicate.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -4,12 +4,12 @@ namespace App\Controller\Admin\System\Availability;
|
||||
|
||||
use App\Entity\Availability;
|
||||
use App\Form\AvailabilityType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -23,12 +23,9 @@ class EditController extends AbstractController
|
||||
|
||||
#[Route('/admin/system/availability/edit/{id}', name: 'app_admin_system_availability_edit')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(Availability $availability, Request $request): JsonResponse
|
||||
public function index(Availability $availability, Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$action = $this->generateUrl('app_admin_system_availability_edit', ['id' => $availability->getId()]);
|
||||
|
||||
$form = $this->createForm(AvailabilityType::class, $availability, ['action' => $action, 'ajax_submit' => true]);
|
||||
$form = $this->createForm(AvailabilityType::class, $availability);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -40,15 +37,11 @@ class EditController extends AbstractController
|
||||
'availability_range' => (string) $availability,
|
||||
]);
|
||||
|
||||
$redirectUrl = $this->generateUrl('app_admin_system_availability_index');
|
||||
$response->setCloseAndRedirect($redirectUrl);
|
||||
} else {
|
||||
$content = $this->renderView('admin/system/availability/form.html.twig', [
|
||||
'form' => $form
|
||||
]);
|
||||
$response->setContent($content);
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_availability_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/system/availability/modal_edit.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -6,13 +6,13 @@ use App\Entity\Contact;
|
||||
use App\Entity\Upload;
|
||||
use App\Entity\User;
|
||||
use App\Form\ContactType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use App\Service\Upload\UploadHandler;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -27,11 +27,9 @@ class CreateController extends AbstractController
|
||||
|
||||
#[Route('/admin/system/contact/create', name: 'app_admin_system_contact_create')]
|
||||
#[IsGranted('ROLE_ADMINISTRATIVE')]
|
||||
public function index(Request $request): JsonResponse
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$contact = new Contact();
|
||||
$formAction = $this->generateUrl('app_admin_system_contact_create');
|
||||
|
||||
// Handle upload independently from form submission to avoid issues with failing validation
|
||||
$uploadSession = $this->uploadHandler->getUploadSession();
|
||||
@@ -48,15 +46,7 @@ class CreateController extends AbstractController
|
||||
$this->uploadHandler->destroyUploadSession();
|
||||
}
|
||||
|
||||
$form = $this->createForm(
|
||||
ContactType::class,
|
||||
$contact,
|
||||
[
|
||||
'action' => $formAction,
|
||||
'ajax_submit' => true,
|
||||
'upload_session' => $uploadSession,
|
||||
]
|
||||
);
|
||||
$form = $this->createForm(ContactType::class, $contact, ['upload_session' => $uploadSession]);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -68,13 +58,11 @@ class CreateController extends AbstractController
|
||||
'contact_name' => $contact->getName(),
|
||||
]);
|
||||
|
||||
$response->setCloseAndRedirect($this->generateUrl('app_admin_system_contact_index'));
|
||||
} else {
|
||||
$response->setContent($this->renderView('admin/system/contact/create.html.twig', [
|
||||
'form' => $form,
|
||||
]));
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_contact_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/system/contact/modal_create.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,11 @@
|
||||
namespace App\Controller\Admin\System\Contact;
|
||||
|
||||
use App\Entity\Contact;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
@@ -20,17 +22,23 @@ class DeleteController extends AbstractController
|
||||
|
||||
#[Route('/admin/system/contact/delete/{id}', name: 'app_admin_system_contact_delete')]
|
||||
#[IsGranted('ROLE_ADMINISTRATIVE')]
|
||||
public function index(Contact $contact): Response
|
||||
public function index(Contact $contact, Request $request): Response
|
||||
{
|
||||
$this->entityManager->remove($contact);
|
||||
$this->entityManager->flush();
|
||||
if (true === $request->isMethod('POST')) {
|
||||
$this->entityManager->remove($contact);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Die Ansprechperson wurde gelöscht');
|
||||
$this->logger->info('Delete contact', [
|
||||
'contact_id' => $contact->getId(),
|
||||
'contact_name' => $contact->getName(),
|
||||
$this->addFlash('success', 'Die Ansprechperson wurde gelöscht');
|
||||
$this->logger->info('Delete contact', [
|
||||
'contact_id' => $contact->getId(),
|
||||
'contact_name' => $contact->getName(),
|
||||
]);
|
||||
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_contact_index'));
|
||||
}
|
||||
|
||||
return $this->render('admin/system/contact/modal_delete.html.twig', [
|
||||
'contact' => $contact,
|
||||
]);
|
||||
|
||||
return $this->redirectToRoute('app_admin_system_contact_index');
|
||||
}
|
||||
}
|
||||
@@ -6,13 +6,13 @@ use App\Entity\Contact;
|
||||
use App\Entity\Upload;
|
||||
use App\Entity\User;
|
||||
use App\Form\ContactType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use App\Service\Upload\UploadHandler;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -27,10 +27,8 @@ class EditController extends AbstractController
|
||||
|
||||
#[Route('/admin/system/contact/edit/{id}', name: 'app_admin_system_contact_edit')]
|
||||
#[IsGranted('ROLE_ADMINISTRATIVE')]
|
||||
public function index(Contact $contact, Request $request): JsonResponse
|
||||
public function index(Contact $contact, Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$formAction = $this->generateUrl('app_admin_system_contact_edit', ['id' => $contact->getId()]);
|
||||
// Handle upload independently from form submission to avoid issues with failing validation
|
||||
$uploadSession = $this->uploadHandler->getUploadSession();
|
||||
if (true === $request->isMethod('POST') && 0 < $uploadSession->getCount()) {
|
||||
@@ -46,15 +44,7 @@ class EditController extends AbstractController
|
||||
$this->uploadHandler->destroyUploadSession();
|
||||
}
|
||||
|
||||
$form = $this->createForm(
|
||||
ContactType::class,
|
||||
$contact,
|
||||
[
|
||||
'action' => $formAction,
|
||||
'ajax_submit' => true,
|
||||
'upload_session' => $uploadSession,
|
||||
]
|
||||
);
|
||||
$form = $this->createForm(ContactType::class, $contact, ['upload_session' => $uploadSession]);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -65,13 +55,11 @@ class EditController extends AbstractController
|
||||
'contact_name' => $contact->getName(),
|
||||
]);
|
||||
|
||||
$response->setCloseAndRedirect($this->generateUrl('app_admin_system_contact_index'));
|
||||
} else {
|
||||
$response->setContent($this->renderView('admin/system/contact/edit.html.twig', [
|
||||
'form' => $form,
|
||||
]));
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_contact_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/system/contact/modal_edit.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,11 @@
|
||||
namespace App\Controller\Admin\System\Document;
|
||||
|
||||
use App\Entity\Upload;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
@@ -21,17 +23,23 @@ class DeleteController extends AbstractController
|
||||
#[Route('/admin/system/document/delete/{uuid}', name: 'app_admin_system_document_delete')]
|
||||
#[IsGranted('ROLE_ADMINISTRATIVE')]
|
||||
#[IsGranted('DELETE', subject: 'document')]
|
||||
public function index(Upload $document): Response
|
||||
public function index(Upload $document, Request $request): Response
|
||||
{
|
||||
$this->entityManager->remove($document);
|
||||
$this->entityManager->flush();
|
||||
if (true === $request->isMethod('POST')) {
|
||||
$this->entityManager->remove($document);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Das Dokument wurde gelöscht');
|
||||
$this->logger->info('Delete document', [
|
||||
'document_id' => $document->getId(),
|
||||
'document_filename' => $document->getOriginalFilename(),
|
||||
$this->addFlash('success', 'Das Dokument wurde gelöscht');
|
||||
$this->logger->info('Delete document', [
|
||||
'document_id' => $document->getId(),
|
||||
'document_filename' => $document->getOriginalFilename(),
|
||||
]);
|
||||
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_document_index'));
|
||||
}
|
||||
|
||||
return $this->render('admin/system/document/modal_delete.html.twig', [
|
||||
'document' => $document,
|
||||
]);
|
||||
|
||||
return $this->redirectToRoute('app_admin_system_document_index');
|
||||
}
|
||||
}
|
||||
@@ -3,14 +3,13 @@
|
||||
namespace App\Controller\Admin\System\Document;
|
||||
|
||||
use App\Entity\Upload;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -24,15 +23,12 @@ class EditController extends AbstractController
|
||||
|
||||
#[Route('/admin/system/document/edit/{uuid}', name: 'app_admin_system_document_edit')]
|
||||
#[IsGranted('ROLE_ADMINISTRATIVE')]
|
||||
public function index(Upload $upload, Request $request): JsonResponse
|
||||
public function index(Upload $upload, Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$formAction = $this->generateUrl('app_admin_system_document_edit', ['uuid' => $upload->getUuid()]);
|
||||
|
||||
$nameBefore = $upload->getDisplayName();
|
||||
|
||||
$form = $this
|
||||
->createFormBuilder($upload, ['action' => $formAction, 'ajax_submit' => true])
|
||||
->createFormBuilder($upload)
|
||||
->add('displayName', TextType::class, [
|
||||
'label' => 'angezeigter Name',
|
||||
'attr' => [
|
||||
@@ -54,13 +50,11 @@ class EditController extends AbstractController
|
||||
'document_name_after' => $upload->getDisplayName(),
|
||||
]);
|
||||
|
||||
$response->setCloseAndRedirect($this->generateUrl('app_admin_system_document_index'));
|
||||
} else {
|
||||
$response->setContent($this->renderView('admin/system/document/edit.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]));
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_document_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/system/document/modal_edit.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -4,13 +4,13 @@ namespace App\Controller\Admin\System\Document;
|
||||
|
||||
use App\Entity\Upload;
|
||||
use App\Entity\User;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use App\Service\Upload\UploadHandler;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -25,7 +25,7 @@ class ReplaceController extends AbstractController
|
||||
|
||||
#[Route('/admin/system/document/replace/{uuid}', name: 'app_admin_system_document_replace')]
|
||||
#[IsGranted('ROLE_ADMINISTRATIVE')]
|
||||
public function index(Upload $upload, Request $request): JsonResponse
|
||||
public function index(Upload $upload, Request $request): Response
|
||||
{
|
||||
// Handle upload independently from form submission to avoid issues with failing validation
|
||||
$uploadSession = $this->uploadHandler->getUploadSession();
|
||||
@@ -38,7 +38,6 @@ class ReplaceController extends AbstractController
|
||||
$this->uploadHandler->destroyUploadSession();
|
||||
}
|
||||
|
||||
$response = new AjaxModalResponseDto();
|
||||
$formAction = $this->generateUrl('app_admin_system_document_replace', ['uuid' => $upload->getUuid()]);
|
||||
|
||||
$filenameBefore = $upload->getOriginalFilename();
|
||||
@@ -57,13 +56,11 @@ class ReplaceController extends AbstractController
|
||||
'document_filename_after' => $upload->getOriginalFilename(),
|
||||
]);
|
||||
|
||||
$response->setCloseAndRedirect($this->generateUrl('app_admin_system_document_index'));
|
||||
} else {
|
||||
$response->setContent($this->renderView('admin/system/document/replace.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]));
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_document_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/system/document/modal_replace.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -4,13 +4,13 @@ namespace App\Controller\Admin\System\Document;
|
||||
|
||||
use App\Entity\Upload;
|
||||
use App\Entity\User;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use App\Service\Upload\UploadHandler;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -25,13 +25,10 @@ class UploadController extends AbstractController
|
||||
|
||||
#[Route('/admin/system/document/upload', name: 'app_admin_system_document_upload')]
|
||||
#[IsGranted('ROLE_ADMINISTRATIVE')]
|
||||
public function index(Request $request): JsonResponse
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$formAction = $this->generateUrl('app_admin_system_document_upload');
|
||||
|
||||
$form = $this
|
||||
->createFormBuilder(null, ['action' => $formAction, 'ajax_submit' => true])
|
||||
->createFormBuilder()
|
||||
->getForm()
|
||||
;
|
||||
$form->handleRequest($request);
|
||||
@@ -53,7 +50,8 @@ class UploadController extends AbstractController
|
||||
}
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$this->addFlash('success', 'Das/die Dokument/e wurden hochgeladen');
|
||||
$count = count($uploadedDocuments);
|
||||
$this->addFlash('success', $count === 1 ? 'Das Dokument wurde hochgeladen' : 'Die Dokumente wurden hochgeladen');
|
||||
$loggerContext = [];
|
||||
foreach ($uploadedDocuments as $document) {
|
||||
$loggerContext[] = [
|
||||
@@ -63,13 +61,11 @@ class UploadController extends AbstractController
|
||||
}
|
||||
$this->logger->info('Upload document(s)', $loggerContext);
|
||||
|
||||
$response->setCloseAndRedirect($this->generateUrl('app_admin_system_document_index'));
|
||||
} else {
|
||||
$response->setContent($this->renderView('admin/system/document/upload.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]));
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_document_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/system/document/modal_upload.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,11 @@
|
||||
namespace App\Controller\Admin\System\Faq;
|
||||
|
||||
use App\Entity\Faq;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
@@ -18,19 +20,25 @@ class DeleteController extends AbstractController
|
||||
) {
|
||||
}
|
||||
|
||||
#[Route('/admin/system/faq/delete/{id}', name: 'app_admin_system_faq_delete', methods: ['POST'])]
|
||||
#[Route('/admin/system/faq/delete/{id}', name: 'app_admin_system_faq_delete')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(Faq $faq): Response
|
||||
public function index(Faq $faq, Request $request): Response
|
||||
{
|
||||
$this->entityManager->remove($faq);
|
||||
$this->entityManager->flush();
|
||||
if (true === $request->isMethod('POST')) {
|
||||
$this->entityManager->remove($faq);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Der FAQ-Eintrag wurde gelöscht');
|
||||
$this->logger->info('Delete faq', [
|
||||
'faq_id' => $faq->getId(),
|
||||
'faq_question' => $faq->getQuestion(),
|
||||
$this->addFlash('success', 'Der FAQ-Eintrag wurde gelöscht');
|
||||
$this->logger->info('Delete faq', [
|
||||
'faq_id' => $faq->getId(),
|
||||
'faq_question' => $faq->getQuestion(),
|
||||
]);
|
||||
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_faq_index'));
|
||||
}
|
||||
|
||||
return $this->render('admin/system/faq/modal_delete.html.twig', [
|
||||
'faq' => $faq,
|
||||
]);
|
||||
|
||||
return $this->redirectToRoute('app_admin_system_faq_index');
|
||||
}
|
||||
}
|
||||
@@ -4,12 +4,12 @@ namespace App\Controller\Admin\System\Fee;
|
||||
|
||||
use App\Entity\Fee;
|
||||
use App\Form\FeeType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -23,13 +23,10 @@ class CreateController extends AbstractController
|
||||
|
||||
#[Route('/admin/system/fee/create', name: 'app_admin_system_fee_create')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(Request $request): JsonResponse
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$action = $this->generateUrl('app_admin_system_fee_create');
|
||||
|
||||
$fee = new Fee();
|
||||
$form = $this->createForm(FeeType::class, $fee, ['action' => $action, 'ajax_submit' => true]);
|
||||
$form = $this->createForm(FeeType::class, $fee);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -42,15 +39,11 @@ class CreateController extends AbstractController
|
||||
'fee_name' => $fee->getNameInternal() ?? $fee->getName(),
|
||||
]);
|
||||
|
||||
$redirectUrl = $this->generateUrl('app_admin_system_fee_index');
|
||||
$response->setCloseAndRedirect($redirectUrl);
|
||||
} else {
|
||||
$content = $this->renderView('admin/system/fee/form.html.twig', [
|
||||
'form' => $form
|
||||
]);
|
||||
$response->setContent($content);
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_fee_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/system/fee/modal_create.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,11 @@
|
||||
namespace App\Controller\Admin\System\Fee;
|
||||
|
||||
use App\Entity\Fee;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
@@ -18,19 +20,25 @@ class DeleteController extends AbstractController
|
||||
) {
|
||||
}
|
||||
|
||||
#[Route('/admin/system/fee/delete/{id}', name: 'app_admin_system_fee_delete', methods: ['POST'])]
|
||||
#[Route('/admin/system/fee/delete/{id}', name: 'app_admin_system_fee_delete')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(Fee $fee): Response
|
||||
public function index(Fee $fee, Request $request): Response
|
||||
{
|
||||
$fee->setDeleted();
|
||||
$this->entityManager->flush();
|
||||
if (true === $request->isMethod('POST')) {
|
||||
$fee->setDeleted();
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Das Honorar wurde gelöscht');
|
||||
$this->logger->info('Delete fee', [
|
||||
'fee_id' => $fee->getId(),
|
||||
'fee_name' => $fee->getNameInternal() ?? $fee->getName(),
|
||||
$this->addFlash('success', 'Das Honorar wurde gelöscht');
|
||||
$this->logger->info('Delete fee', [
|
||||
'fee_id' => $fee->getId(),
|
||||
'fee_name' => $fee->getNameInternal() ?? $fee->getName(),
|
||||
]);
|
||||
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_fee_index'));
|
||||
}
|
||||
|
||||
return $this->render('admin/system/fee/modal_delete.html.twig', [
|
||||
'fee' => $fee,
|
||||
]);
|
||||
|
||||
return $this->redirectToRoute('app_admin_system_fee_index');
|
||||
}
|
||||
}
|
||||
@@ -4,12 +4,12 @@ namespace App\Controller\Admin\System\Fee;
|
||||
|
||||
use App\Entity\Fee;
|
||||
use App\Form\FeeType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -23,14 +23,10 @@ class DuplicateController extends AbstractController
|
||||
|
||||
#[Route('/admin/system/fee/duplicate/{id}', name: 'app_admin_system_fee_duplicate')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(Fee $fee, Request $request): JsonResponse
|
||||
public function index(Fee $fee, Request $request): Response
|
||||
{
|
||||
$copy = Fee::duplicate($fee);
|
||||
|
||||
$response = new AjaxModalResponseDto();
|
||||
$action = $this->generateUrl('app_admin_system_fee_duplicate', ['id' => $fee->getId()]);
|
||||
|
||||
$form = $this->createForm(FeeType::class, $copy, ['action' => $action, 'ajax_submit' => true]);
|
||||
$form = $this->createForm(FeeType::class, $copy);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -45,15 +41,11 @@ class DuplicateController extends AbstractController
|
||||
'duplicate_name' => $copy->getNameInternal() ?? $copy->getName(),
|
||||
]);
|
||||
|
||||
$redirectUrl = $this->generateUrl('app_admin_system_fee_index');
|
||||
$response->setCloseAndRedirect($redirectUrl);
|
||||
} else {
|
||||
$content = $this->renderView('admin/system/fee/form.html.twig', [
|
||||
'form' => $form
|
||||
]);
|
||||
$response->setContent($content);
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_fee_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/system/fee/modal_duplicate.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -4,12 +4,12 @@ namespace App\Controller\Admin\System\Fee;
|
||||
|
||||
use App\Entity\Fee;
|
||||
use App\Form\FeeType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -23,12 +23,9 @@ class EditController extends AbstractController
|
||||
|
||||
#[Route('/admin/system/fee/edit/{id}', name: 'app_admin_system_fee_edit')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(Fee $fee, Request $request): JsonResponse
|
||||
public function index(Fee $fee, Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$action = $this->generateUrl('app_admin_system_fee_edit', ['id' => $fee->getId()]);
|
||||
|
||||
$form = $this->createForm(FeeType::class, $fee, ['action' => $action, 'ajax_submit' => true]);
|
||||
$form = $this->createForm(FeeType::class, $fee);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -40,15 +37,11 @@ class EditController extends AbstractController
|
||||
'fee_name' => $fee->getNameInternal() ?? $fee->getName(),
|
||||
]);
|
||||
|
||||
$redirectUrl = $this->generateUrl('app_admin_system_fee_index');
|
||||
$response->setCloseAndRedirect($redirectUrl);
|
||||
} else {
|
||||
$content = $this->renderView('admin/system/fee/form.html.twig', [
|
||||
'form' => $form
|
||||
]);
|
||||
$response->setContent($content);
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_fee_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/system/fee/modal_edit.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,11 @@
|
||||
namespace App\Controller\Admin\System\FeedbackSet;
|
||||
|
||||
use App\Entity\FeedbackSet;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
@@ -18,20 +20,26 @@ class DeleteController extends AbstractController
|
||||
) {
|
||||
}
|
||||
|
||||
#[Route('/admin/system/feedback-set/delete/{id}', name: 'app_admin_system_feedback_set_delete', methods: ['POST'])]
|
||||
#[Route('/admin/system/feedback-set/delete/{id}', name: 'app_admin_system_feedback_set_delete')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('DELETE', subject: 'feedbackSet')]
|
||||
public function index(FeedbackSet $feedbackSet): Response
|
||||
public function index(FeedbackSet $feedbackSet, Request $request): Response
|
||||
{
|
||||
$this->entityManager->remove($feedbackSet);
|
||||
$this->entityManager->flush();
|
||||
if (true === $request->isMethod('POST')) {
|
||||
$this->entityManager->remove($feedbackSet);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Die Feedback-Vorlage wurde gelöscht');
|
||||
$this->logger->info('Delete feedback set', [
|
||||
'feedback_set_id' => $feedbackSet->getId(),
|
||||
'feedback_set_name' => $feedbackSet->getName(),
|
||||
$this->addFlash('success', 'Die Feedback-Vorlage wurde gelöscht');
|
||||
$this->logger->info('Delete feedback set', [
|
||||
'feedback_set_id' => $feedbackSet->getId(),
|
||||
'feedback_set_name' => $feedbackSet->getName(),
|
||||
]);
|
||||
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_feedback_set_index'));
|
||||
}
|
||||
|
||||
return $this->render('admin/system/feedback_set/modal_delete.html.twig', [
|
||||
'feedbackSet' => $feedbackSet,
|
||||
]);
|
||||
|
||||
return $this->redirectToRoute('app_admin_system_feedback_set_index');
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,11 @@
|
||||
namespace App\Controller\Admin\System\JobProfile;
|
||||
|
||||
use App\Entity\JobProfile;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
@@ -18,19 +20,25 @@ class DeleteController extends AbstractController
|
||||
) {
|
||||
}
|
||||
|
||||
#[Route('/admin/system/job-profile/delete/{id}', name: 'app_admin_system_job_profile_delete', methods: ['POST'])]
|
||||
#[Route('/admin/system/job-profile/delete/{id}', name: 'app_admin_system_job_profile_delete')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(JobProfile $jobProfile): Response
|
||||
public function index(JobProfile $jobProfile, Request $request): Response
|
||||
{
|
||||
$jobProfile->setDeleted();
|
||||
$this->entityManager->flush();
|
||||
if (true === $request->isMethod('POST')) {
|
||||
$jobProfile->setDeleted();
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Das Job-Profil wurde gelöscht');
|
||||
$this->logger->info('Delete job-profile', [
|
||||
'job_profile_id' => $jobProfile->getId(),
|
||||
'job_profile_name' => $jobProfile->getName(),
|
||||
$this->addFlash('success', 'Das Job-Profil wurde gelöscht');
|
||||
$this->logger->info('Delete job-profile', [
|
||||
'job_profile_id' => $jobProfile->getId(),
|
||||
'job_profile_name' => $jobProfile->getName(),
|
||||
]);
|
||||
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_job_profile_index'));
|
||||
}
|
||||
|
||||
return $this->render('admin/system/job_profile/modal_delete.html.twig', [
|
||||
'jobProfile' => $jobProfile,
|
||||
]);
|
||||
|
||||
return $this->redirectToRoute('app_admin_system_job_profile_index');
|
||||
}
|
||||
}
|
||||
@@ -4,12 +4,12 @@ namespace App\Controller\Admin\System\Training;
|
||||
|
||||
use App\Entity\Training;
|
||||
use App\Form\TrainingType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -23,13 +23,10 @@ class CreateController extends AbstractController
|
||||
|
||||
#[Route('/admin/system/training/create', name: 'app_admin_system_training_create')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(Request $request): JsonResponse
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$action = $this->generateUrl('app_admin_system_training_create');
|
||||
|
||||
$training = new Training();
|
||||
$form = $this->createForm(TrainingType::class, $training, ['action' => $action, 'ajax_submit' => true]);
|
||||
$form = $this->createForm(TrainingType::class, $training);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -42,15 +39,11 @@ class CreateController extends AbstractController
|
||||
'training_name' => $training->getName(),
|
||||
]);
|
||||
|
||||
$redirectUrl = $this->generateUrl('app_admin_system_training_index');
|
||||
$response->setCloseAndRedirect($redirectUrl);
|
||||
} else {
|
||||
$content = $this->renderView('admin/system/training/form.html.twig', [
|
||||
'form' => $form
|
||||
]);
|
||||
$response->setContent($content);
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_training_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/system/training/modal_create.hml.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,11 @@
|
||||
namespace App\Controller\Admin\System\Training;
|
||||
|
||||
use App\Entity\Training;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
@@ -18,19 +20,25 @@ class DeleteController extends AbstractController
|
||||
) {
|
||||
}
|
||||
|
||||
#[Route('/admin/system/training/delete/{id}', name: 'app_admin_system_training_delete', methods: ['POST'])]
|
||||
#[Route('/admin/system/training/delete/{id}', name: 'app_admin_system_training_delete')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(Training $training): Response
|
||||
public function index(Training $training, Request $request): Response
|
||||
{
|
||||
$training->setDeleted();
|
||||
$this->entityManager->flush();
|
||||
if (true === $request->isMethod('POST')) {
|
||||
$training->setDeleted();
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Die Fortbildung wurde gelöscht');
|
||||
$this->logger->info('Delete training', [
|
||||
'training_id' => $training->getId(),
|
||||
'training_name' => $training->getName(),
|
||||
$this->addFlash('success', 'Die Fortbildung wurde gelöscht');
|
||||
$this->logger->info('Delete training', [
|
||||
'training_id' => $training->getId(),
|
||||
'training_name' => $training->getName(),
|
||||
]);
|
||||
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_training_index'));
|
||||
}
|
||||
|
||||
return $this->render('admin/system/training/modal_delete.html.twig', [
|
||||
'training' => $training,
|
||||
]);
|
||||
|
||||
return $this->redirectToRoute('app_admin_system_training_index');
|
||||
}
|
||||
}
|
||||
@@ -4,12 +4,12 @@ namespace App\Controller\Admin\System\Training;
|
||||
|
||||
use App\Entity\Training;
|
||||
use App\Form\TrainingType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -23,12 +23,9 @@ class EditController extends AbstractController
|
||||
|
||||
#[Route('/admin/system/training/edit/{id}', name: 'app_admin_system_training_edit')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(Training $training, Request $request): JsonResponse
|
||||
public function index(Training $training, Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$action = $this->generateUrl('app_admin_system_training_edit', ['id' => $training->getId()]);
|
||||
|
||||
$form = $this->createForm(TrainingType::class, $training, ['action' => $action, 'ajax_submit' => true]);
|
||||
$form = $this->createForm(TrainingType::class, $training);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -40,15 +37,11 @@ class EditController extends AbstractController
|
||||
'training_name' => $training->getName(),
|
||||
]);
|
||||
|
||||
$redirectUrl = $this->generateUrl('app_admin_system_training_index');
|
||||
$response->setCloseAndRedirect($redirectUrl);
|
||||
} else {
|
||||
$content = $this->renderView('admin/system/training/form.html.twig', [
|
||||
'form' => $form
|
||||
]);
|
||||
$response->setContent($content);
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_system_training_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/system/training/modal_edit.hml.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ namespace App\Controller\Admin\Teamer\Availability;
|
||||
use App\Controller\Traits\ReturnUrlTrait;
|
||||
use App\Entity\Availability;
|
||||
use App\Entity\Teamer;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
|
||||
@@ -33,24 +34,30 @@ class DeleteController extends AbstractController
|
||||
Availability $availability,
|
||||
Request $request
|
||||
): Response {
|
||||
if (null === $availability->getOwner()) {
|
||||
$teamer->removeAvailability($availability);
|
||||
} elseif ($teamer === $availability->getOwner()) {
|
||||
$this->entityManager->remove($availability);
|
||||
if (true === $request->isMethod('POST')) {
|
||||
if (null === $availability->getOwner()) {
|
||||
$teamer->removeAvailability($availability);
|
||||
} elseif ($teamer === $availability->getOwner()) {
|
||||
$this->entityManager->remove($availability);
|
||||
}
|
||||
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Der Zeitraum wurde entfernt/gelöscht.');
|
||||
$this->logger->info('Delete teamer availability', [
|
||||
'availability_id' => $availability->getId(),
|
||||
'availability_range' => (string) $availability,
|
||||
'teamer_id' => $teamer->getId(),
|
||||
'teamer_name' => (string) $teamer,
|
||||
]);
|
||||
|
||||
$redirectUrl = $this->getReturnUrl($request, 'app_admin_teamer_profile', ['uuid' => $teamer->getUuid()]);
|
||||
|
||||
return new HxRedirectResponse($redirectUrl);
|
||||
}
|
||||
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Der Zeitraum wurde entfernt/gelöscht.');
|
||||
$this->logger->info('Delete teamer availability', [
|
||||
'availability_id' => $availability->getId(),
|
||||
'availability_range' => (string) $availability,
|
||||
'teamer_id' => $teamer->getId(),
|
||||
'teamer_name' => (string) $teamer,
|
||||
return $this->render('admin/teamer/availability/modal_delete.html.twig', [
|
||||
'availability' => $availability,
|
||||
]);
|
||||
|
||||
$redirectUrl = $this->getReturnUrl($request, 'app_admin_teamer_profile', ['uuid' => $teamer->getUuid()]);
|
||||
|
||||
return $this->redirect($redirectUrl);
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controller\Admin\Teamer;
|
||||
namespace App\Controller\Admin\Teamer\Availability;
|
||||
|
||||
use App\Entity\Teamer;
|
||||
use App\Service\Teamer\AvailabilityProcessor;
|
||||
@@ -9,7 +9,7 @@ use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
class AvailabilityController extends AbstractController
|
||||
class IndexController extends AbstractController
|
||||
{
|
||||
#[Route('/admin/teamer/availability/{uuid}', name: 'app_admin_teamer_availability')]
|
||||
#[IsGranted('ROLE_ADMINISTRATIVE')]
|
||||
@@ -19,7 +19,7 @@ class AvailabilityController extends AbstractController
|
||||
$availabilities = $teamer->getAvailabilities()->toArray();
|
||||
$groupedAvailabilities = $processor->groupRecords($availabilities);
|
||||
|
||||
return $this->render('admin/teamer/availability.html.twig', [
|
||||
return $this->render('admin/teamer/availability/index.html.twig', [
|
||||
'teamer' => $teamer,
|
||||
'groupedAvailabilities' => $groupedAvailabilities,
|
||||
]);
|
||||
@@ -3,10 +3,9 @@
|
||||
namespace App\Controller\Admin\Teamer;
|
||||
|
||||
use App\Entity\Teamer;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Repository\DispositionRepository;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
|
||||
class InfoController extends AbstractController
|
||||
@@ -15,16 +14,13 @@ class InfoController extends AbstractController
|
||||
{}
|
||||
|
||||
#[Route('/admin/teamer/info/{uuid}', name: 'app_admin_teamer_info')]
|
||||
public function index(Teamer $teamer): JsonResponse
|
||||
public function index(Teamer $teamer): Response
|
||||
{
|
||||
$recentDispositions = $this->dispositionRepository->findRecentDispositionsByTeamer($teamer);
|
||||
|
||||
$response = new AjaxModalResponseDto();
|
||||
$response->setContent($this->renderView('admin/teamer/info.html.twig', [
|
||||
return $this->render('admin/teamer/modal_info.html.twig', [
|
||||
'teamer' => $teamer,
|
||||
'recentDispositions' => $recentDispositions,
|
||||
]));
|
||||
|
||||
return $this->json($response);
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -6,14 +6,13 @@ use App\Entity\Teamer;
|
||||
use App\Entity\Training;
|
||||
use App\Entity\TrainingAttendance;
|
||||
use App\Form\AbbreviatedDateType;
|
||||
use App\Form\FeeType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -33,13 +32,7 @@ class CreateController extends AbstractController
|
||||
#[MapEntity(mapping: ['teamer_id' => 'id'])]
|
||||
Teamer $teamer,
|
||||
Request $request
|
||||
): JsonResponse {
|
||||
$response = new AjaxModalResponseDto();
|
||||
$action = $this->generateUrl('app_admin_teamer_skills_training_attendance_create', [
|
||||
'training_id' => $training->getId(),
|
||||
'teamer_id' => $teamer->getId(),
|
||||
]);
|
||||
|
||||
): Response {
|
||||
$attendance = new TrainingAttendance();
|
||||
$attendance
|
||||
->setTeamer($teamer)
|
||||
@@ -47,7 +40,7 @@ class CreateController extends AbstractController
|
||||
;
|
||||
|
||||
$form = $this
|
||||
->createFormBuilder($attendance, ['action' => $action, 'ajax_submit' => true])
|
||||
->createFormBuilder($attendance)
|
||||
->add('date', AbbreviatedDateType::class, [
|
||||
'label' => 'Datum',
|
||||
])
|
||||
@@ -69,14 +62,12 @@ class CreateController extends AbstractController
|
||||
]);
|
||||
|
||||
$redirectUrl = $this->generateUrl('app_admin_teamer_skills', ['uuid' => $teamer->getUuid()]);
|
||||
$response->setCloseAndRedirect($redirectUrl);
|
||||
} else {
|
||||
$content = $this->renderView('admin/teamer/training_attendance/create.html.twig', [
|
||||
'form' => $form
|
||||
]);
|
||||
$response->setContent($content);
|
||||
|
||||
return new HxRedirectResponse($redirectUrl);
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('admin/teamer/training_attendance/modal_create.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,11 @@
|
||||
namespace App\Controller\Admin\Teamer\TrainingAttendance;
|
||||
|
||||
use App\Entity\TrainingAttendance;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
@@ -18,24 +20,32 @@ class DeleteController extends AbstractController
|
||||
) {
|
||||
}
|
||||
|
||||
#[Route('/admin/teamer/skills/training-attendance/delete/{uuid}', name: 'app_admin_teamer_skills_training_attendance_delete', methods: ['POST'])]
|
||||
#[Route('/admin/teamer/skills/training-attendance/delete/{uuid}', name: 'app_admin_teamer_skills_training_attendance_delete')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
public function index(TrainingAttendance $attendance): Response
|
||||
public function index(TrainingAttendance $attendance, Request $request): Response
|
||||
{
|
||||
$teamer = $attendance->getTeamer();
|
||||
if (true === $request->isMethod('POST')) {
|
||||
$teamer = $attendance->getTeamer();
|
||||
|
||||
$this->entityManager->remove($attendance);
|
||||
$this->entityManager->flush();
|
||||
$this->entityManager->remove($attendance);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Die Teilnahme an der Fortbilundg wurde gelöscht');
|
||||
$this->logger->info('Delete training attendance', [
|
||||
'attendance_id' => $attendance->getId(),
|
||||
'teamer_id' => $teamer->getId(),
|
||||
'teamer_name' => (string) $teamer,
|
||||
'training_id' => $attendance->getTraining()->getId(),
|
||||
'training_name' => $attendance->getTraining()->getName(),
|
||||
$this->addFlash('success', 'Die Teilnahme an der Fortbilundg wurde gelöscht');
|
||||
$this->logger->info('Delete training attendance', [
|
||||
'attendance_id' => $attendance->getId(),
|
||||
'teamer_id' => $teamer->getId(),
|
||||
'teamer_name' => (string) $teamer,
|
||||
'training_id' => $attendance->getTraining()->getId(),
|
||||
'training_name' => $attendance->getTraining()->getName(),
|
||||
]);
|
||||
|
||||
return new HxRedirectResponse($this->generateUrl('app_admin_teamer_skills', [
|
||||
'uuid' => $teamer->getUuid(),
|
||||
]));
|
||||
}
|
||||
|
||||
return $this->render('admin/teamer/training_attendance/modal_delete.html.twig', [
|
||||
'attendance' => $attendance,
|
||||
]);
|
||||
|
||||
return $this->redirectToRoute('app_admin_teamer_skills', ['uuid' => $teamer->getUuid()]);
|
||||
}
|
||||
}
|
||||
@@ -4,11 +4,10 @@ namespace App\Controller\Common;
|
||||
|
||||
use App\Controller\Traits\ReturnUrlTrait;
|
||||
use App\Form\AssignmentFilterType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use App\Repository\AssignmentRepository;
|
||||
use App\Service\Common\AssignmentFilterHandler;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
@@ -26,15 +25,11 @@ class AssignmentFilterController extends AbstractController
|
||||
|
||||
#[Route('/common/assignment/filter', name: 'app_common_assignment_filter')]
|
||||
#[IsGranted('ROLE_USER')]
|
||||
public function index(Request $request): JsonResponse
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$formAction = $this->generateUrl('app_common_assignment_filter', ['r' => $request->query->get('r')]);
|
||||
$formData = $this->filterHandler->getFilterSettings();
|
||||
$filterOptions = $this->assignmentRepository->getFilterOptions();
|
||||
$formOptions = [
|
||||
'action' => $formAction,
|
||||
'ajax_submit' => true,
|
||||
'min_date' => $filterOptions['minDate'],
|
||||
'max_date' => $filterOptions['maxDate'],
|
||||
'job_profiles' => $filterOptions['jobProfiles'],
|
||||
@@ -47,15 +42,14 @@ class AssignmentFilterController extends AbstractController
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$this->filterHandler->handleRequest($form);
|
||||
$returnUrl = $this->getReturnUrl($request, 'app_admin_assignment_index');
|
||||
$response->setCloseAndRedirect($returnUrl);
|
||||
} else {
|
||||
$response->setContent($this->renderView('common/assignment_filter.html.twig', [
|
||||
'filterForm' => $form,
|
||||
'filterDto' => $form->getData(),
|
||||
]));
|
||||
|
||||
return new HxRedirectResponse($returnUrl);
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('common/modal_assignment_filter.html.twig', [
|
||||
'filterForm' => $form->createView(),
|
||||
'filterDto' => $form->getData(),
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/common/assignment/filter/reset', name: 'app_common_assignment_filter_reset')]
|
||||
|
||||
@@ -4,11 +4,10 @@ namespace App\Controller\Common;
|
||||
|
||||
use App\Controller\Traits\ReturnUrlTrait;
|
||||
use App\Form\TeamerFilterType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use App\Repository\TeamerRepository;
|
||||
use App\Service\Common\TeamerFilterHandler;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
@@ -26,29 +25,23 @@ class TeamerFilterController extends AbstractController
|
||||
|
||||
#[Route('/common/teamer/filter', name: 'app_common_teamer_filter')]
|
||||
#[IsGranted('ROLE_USER')]
|
||||
public function index(Request $request): JsonResponse
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$formAction = $this->generateUrl('app_common_teamer_filter', ['r' => $request->query->get('r')]);
|
||||
$formData = $this->filterHandler->getFilterSettings();
|
||||
$form = $this->createForm(TeamerFilterType::class, $formData, [
|
||||
'action' => $formAction,
|
||||
'ajax_submit' => true,
|
||||
]);
|
||||
$form = $this->createForm(TeamerFilterType::class, $formData);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$this->filterHandler->handleRequest($form);
|
||||
$returnUrl = $this->getReturnUrl($request, 'app_admin_teamer_index');
|
||||
$response->setCloseAndRedirect($returnUrl);
|
||||
} else {
|
||||
$response->setContent($this->renderView('common/teamer_filter.html.twig', [
|
||||
'filterForm' => $form,
|
||||
'filterDto' => $form->getData(),
|
||||
]));
|
||||
|
||||
return new HxRedirectResponse($returnUrl);
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('common/modal_teamer_filter.html.twig', [
|
||||
'filterForm' => $form->createView(),
|
||||
'filterDto' => $form->getData(),
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/common/teamer/filter/reset', name: 'app_common_teamer_filter_reset')]
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace App\Controller\Teamer\Application;
|
||||
use App\Controller\Traits\ReturnUrlTrait;
|
||||
use App\Entity\Application;
|
||||
use App\Entity\User;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
@@ -27,24 +28,28 @@ class WithdrawController extends AbstractController
|
||||
#[IsGranted('WITHDRAW', subject: 'application')]
|
||||
public function index(Application $application, Request $request): Response
|
||||
{
|
||||
/** @var User $user */
|
||||
$user = $this->getUser();
|
||||
$teamer = $user->getTeamer();
|
||||
$assignment = $application->getAssignment();
|
||||
if (true === $request->isMethod('POST')) {
|
||||
/** @var User $user */
|
||||
$user = $this->getUser();
|
||||
$teamer = $user->getTeamer();
|
||||
$assignment = $application->getAssignment();
|
||||
|
||||
$this->entityManager->remove($application);
|
||||
$this->entityManager->flush();
|
||||
$this->entityManager->remove($application);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->logger->info('Withdraw application', [
|
||||
'teamer_id' => $teamer->getId(),
|
||||
'teamer_name' => (string) $teamer,
|
||||
'application_id' => $application->getId(),
|
||||
'assignment_id' => $assignment->getId(),
|
||||
'destination' => (string) $assignment->getDestination(),
|
||||
$this->logger->info('Withdraw application', [
|
||||
'teamer_id' => $teamer->getId(),
|
||||
'teamer_name' => (string) $teamer,
|
||||
'application_id' => $application->getId(),
|
||||
'assignment_id' => $assignment->getId(),
|
||||
'destination' => (string) $assignment->getDestination(),
|
||||
]);
|
||||
|
||||
return new HxRedirectResponse($this->getReturnUrl($request, 'app_teamer_index'));
|
||||
}
|
||||
|
||||
return $this->render('teamer/application/modal_withdraw.html.twig', [
|
||||
'application' => $application,
|
||||
]);
|
||||
|
||||
$returnUrl = $this->getReturnUrl($request, 'app_teamer_index');
|
||||
|
||||
return $this->redirect($returnUrl);
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,8 @@
|
||||
namespace App\Controller\Teamer;
|
||||
|
||||
use App\Entity\Feedback;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -13,13 +12,10 @@ class FeedbackController extends AbstractController
|
||||
{
|
||||
#[Route('/teamer/feedback/{uuid}', name: 'app_teamer_feedback')]
|
||||
#[IsGranted('VIEW', subject: 'feedback')]
|
||||
public function index(Feedback $feedback): JsonResponse
|
||||
public function index(Feedback $feedback): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$response->setContent($this->renderView('teamer/feedback/index.html.twig', [
|
||||
return $this->render('teamer/feedback/modal.html.twig', [
|
||||
'feedback' => $feedback,
|
||||
]));
|
||||
|
||||
return $this->json($response);
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -5,12 +5,12 @@ namespace App\Controller\Teamer\Profile\Availability;
|
||||
use App\Entity\Availability;
|
||||
use App\Entity\User;
|
||||
use App\Form\AvailabilityType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -24,14 +24,11 @@ class CreateController extends AbstractController
|
||||
|
||||
#[Route('/teamer/profile/availability/create', name: 'app_teamer_profile_availability_create')]
|
||||
#[IsGranted('ROLE_TEAMER')]
|
||||
public function index(Request $request): JsonResponse
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$action = $this->generateUrl('app_teamer_profile_availability_create');
|
||||
|
||||
$availability = new Availability();
|
||||
|
||||
$form = $this->createForm(AvailabilityType::class, $availability, ['action' => $action, 'ajax_submit' => true]);
|
||||
$form = $this->createForm(AvailabilityType::class, $availability);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -53,15 +50,11 @@ class CreateController extends AbstractController
|
||||
'availability' => (string) $availability,
|
||||
]);
|
||||
|
||||
$redirectUrl = $this->generateUrl('app_teamer_profile_availability_index');
|
||||
$response->setCloseAndRedirect($redirectUrl);
|
||||
} else {
|
||||
$content = $this->renderView('teamer/profile/availability/create.html.twig', [
|
||||
'form' => $form,
|
||||
]);
|
||||
$response->setContent($content);
|
||||
return new HxRedirectResponse($this->generateUrl('app_teamer_profile_availability_index'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('teamer/profile/availability/modal_create.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -4,9 +4,11 @@ namespace App\Controller\Teamer\Profile\Availability;
|
||||
|
||||
use App\Entity\Availability;
|
||||
use App\Entity\User;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
@@ -21,27 +23,33 @@ class DeleteController extends AbstractController
|
||||
|
||||
#[Route('/teamer/profile/availability/delete/{id}', name: 'app_teamer_profile_availability_delete')]
|
||||
#[IsGranted('DELETE', subject: 'availability')]
|
||||
public function index(Availability $availability): Response
|
||||
public function index(Availability $availability, Request $request): Response
|
||||
{
|
||||
/** @var User $user */
|
||||
$user = $this->getUser();
|
||||
$teamer = $user->getTeamer();
|
||||
if (true === $request->isMethod('POST')) {
|
||||
/** @var User $user */
|
||||
$user = $this->getUser();
|
||||
$teamer = $user->getTeamer();
|
||||
|
||||
if (null === $availability->getOwner()) {
|
||||
$teamer->removeAvailability($availability);
|
||||
} elseif ($teamer === $availability->getOwner()) {
|
||||
$this->entityManager->remove($availability);
|
||||
if (null === $availability->getOwner()) {
|
||||
$teamer->removeAvailability($availability);
|
||||
} elseif ($teamer === $availability->getOwner()) {
|
||||
$this->entityManager->remove($availability);
|
||||
}
|
||||
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Der Zeitraum wurde entfernt/gelöscht.');
|
||||
$this->logger->info('Delete availability', [
|
||||
'teamer_id' => $teamer->getId(),
|
||||
'teamer_name' => (string) $teamer,
|
||||
'availability' => (string) $availability,
|
||||
]);
|
||||
|
||||
return new HxRedirectResponse($this->generateUrl('app_teamer_profile_availability_index'));
|
||||
}
|
||||
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Der Zeitraum wurde entfernt/gelöscht.');
|
||||
$this->logger->info('Delete availability', [
|
||||
'teamer_id' => $teamer->getId(),
|
||||
'teamer_name' => (string) $teamer,
|
||||
'availability' => (string) $availability,
|
||||
return $this->render('teamer/profile/availability/modal_delete.html.twig', [
|
||||
'availability' => $availability,
|
||||
]);
|
||||
|
||||
return $this->redirectToRoute('app_teamer_profile_availability_index');
|
||||
}
|
||||
}
|
||||
@@ -6,14 +6,14 @@ use App\Entity\License;
|
||||
use App\Entity\Upload;
|
||||
use App\Entity\User;
|
||||
use App\Form\LicenseType;
|
||||
use App\Model\AjaxModalResponseDto;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use App\Model\UploadSessionDto;
|
||||
use App\Service\Upload\UploadHandler;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
@@ -28,11 +28,8 @@ class AddController extends AbstractController
|
||||
|
||||
#[Route('/teamer/profile/license/add', name: 'app_teamer_profile_license_add')]
|
||||
#[IsGranted('ROLE_TEAMER')]
|
||||
public function index(Request $request): JsonResponse
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$response = new AjaxModalResponseDto();
|
||||
$action = $this->generateUrl('app_teamer_profile_license_add');
|
||||
|
||||
/** @var User $user */
|
||||
$user = $this->getUser();
|
||||
$license = new License();
|
||||
@@ -43,15 +40,7 @@ class AddController extends AbstractController
|
||||
$this->updateCertificate($user, $license, $uploadSession);
|
||||
}
|
||||
|
||||
$form = $this->createForm(
|
||||
LicenseType::class,
|
||||
$license,
|
||||
[
|
||||
'action' => $action,
|
||||
'ajax_submit' => true,
|
||||
'upload_session' => $uploadSession,
|
||||
]
|
||||
);
|
||||
$form = $this->createForm(LicenseType::class, $license, ['upload_session' => $uploadSession]);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
@@ -69,16 +58,12 @@ class AddController extends AbstractController
|
||||
'license_type' => $license->getType(),
|
||||
]);
|
||||
|
||||
$redirectUrl = $this->generateUrl('app_teamer_profile_skills');
|
||||
$response->setCloseAndRedirect($redirectUrl);
|
||||
} else {
|
||||
$content = $this->renderView('teamer/profile/license/add.html.twig', [
|
||||
'form' => $form,
|
||||
]);
|
||||
$response->setContent($content);
|
||||
return new HxRedirectResponse($this->generateUrl('app_teamer_profile_skills'));
|
||||
}
|
||||
|
||||
return $this->json($response);
|
||||
return $this->render('teamer/profile/license/modal_add.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
|
||||
private function updateCertificate(User $user, License $license, UploadSessionDto $uploadSession): void
|
||||
|
||||
@@ -3,9 +3,11 @@
|
||||
namespace App\Controller\Teamer\Profile\License;
|
||||
|
||||
use App\Entity\License;
|
||||
use App\Htmx\HxRedirectResponse;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
@@ -20,20 +22,26 @@ class DeleteController extends AbstractController
|
||||
|
||||
#[Route('//teamer/profile/license/delete/{uuid}', name: 'app_teamer_profile_license_delete')]
|
||||
#[IsGranted('DELETE', subject: 'license')]
|
||||
public function index(License $license): Response
|
||||
public function index(License $license, Request $request): Response
|
||||
{
|
||||
$teamer = $license->getTeamer();
|
||||
if (true === $request->isMethod('POST')) {
|
||||
$teamer = $license->getTeamer();
|
||||
|
||||
$this->entityManager->remove($license);
|
||||
$this->entityManager->flush();
|
||||
$this->entityManager->remove($license);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Die Lizenz wurde gelöscht.');
|
||||
$this->logger->info('Delete license', [
|
||||
'teamer_id' => $teamer->getId(),
|
||||
'teamer_name' => (string) $teamer,
|
||||
'license_type' => $license->getType(),
|
||||
$this->addFlash('success', 'Die Lizenz wurde gelöscht.');
|
||||
$this->logger->info('Delete license', [
|
||||
'teamer_id' => $teamer->getId(),
|
||||
'teamer_name' => (string) $teamer,
|
||||
'license_type' => $license->getType(),
|
||||
]);
|
||||
|
||||
return new HxRedirectResponse($this->generateUrl('app_teamer_profile_skills'));
|
||||
}
|
||||
|
||||
return $this->render('teamer/profile/license/modal_delete.html.twig', [
|
||||
'license' => $license,
|
||||
]);
|
||||
|
||||
return $this->redirectToRoute('app_teamer_profile_skills');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user