src/Controller/ErrorController.php line 30

  1. <?php
  2. namespace App\Controller;
  3. use App\Helper\ErrorSendHelper;
  4. use App\Model\Form\ErrorFormType;
  5. use Exception;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\HttpFoundation\RedirectResponse;
  10. use Symfony\Component\Routing\Attribute\Route;
  11. class ErrorController extends AbstractController
  12. {
  13. public function __construct(
  14. private readonly ErrorSendHelper $errorSendHelper
  15. ) {
  16. }
  17. public function show(\Throwable $exception, Request $request): Response
  18. {
  19. $statusCode = method_exists($exception, 'getStatusCode') ? $exception->getStatusCode() : 500;
  20. $form = $this->createForm(ErrorFormType::class);
  21. $form->handleRequest($request);
  22. return $this->render('bundles/TwigBundle/Exception/error.html.twig', [
  23. 'exception' => $exception,
  24. 'statusCode' => $statusCode,
  25. 'form' => $form->createView(),
  26. ]);
  27. }
  28. #[Route('/error-submit', name: 'error_submit', methods: ['POST'])]
  29. public function errorSubmit(Request $request): RedirectResponse
  30. {
  31. $form = $this->createForm(ErrorFormType::class);
  32. $form->handleRequest($request);
  33. $exception = $request->get('exception_error');
  34. $exceptionMessage = $request->get('exception_message');
  35. $exceptionCode = $request->get('exception_code');
  36. $exceptionFile = $request->get('exception_file');
  37. $url = $request->request->get('request-url');
  38. $exception = [
  39. 'message' => $exceptionMessage,
  40. 'code' => $exceptionCode,
  41. 'file' => $exceptionFile,
  42. 'exception_error' => $exception,
  43. 'exception_date' => new \DateTime('now'),
  44. 'url' => $url
  45. ];
  46. if ($form->isSubmitted()) {
  47. $data = $form->getData();
  48. try {
  49. $this->errorSendHelper->sendErrorEmail('bundles/TwigBundle/Exception/send_mail.html.twig', [
  50. 'form' => $data,
  51. 'exception' => $exception,
  52. 'user' => $this->getUser(),
  53. ], 'New support created', 'support@insivia.com');
  54. } catch (Exception $e) {
  55. }
  56. }
  57. return new RedirectResponse($this->generateUrl('app_home'));
  58. }
  59. }