<?php
namespace App\Controller;
use App\Event\AppEvents;
use App\Event\FormEvent;
use App\Event\InvoiceEvent;
use App\Helper\ErrorSendHelper;
use App\Model\Form\ErrorFormType;
use JetBrains\PhpStorm\NoReturn;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Mailer\MailerInterface;
class ErrorController extends AbstractController
{
public function __construct(
ErrorSendHelper $errorSendHelper
) {
$this->errorSendHelper = $errorSendHelper;
}
public function show(\Throwable $exception, Request $request): Response
{
$statusCode = method_exists($exception, 'getStatusCode') ? $exception->getStatusCode() : 500;
$form = $this->createForm(ErrorFormType::class);
$form->handleRequest($request);
return $this->render('bundles/TwigBundle/Exception/error.html.twig', [
'exception' => $exception,
'statusCode' => $statusCode,
'form' => $form->createView(),
]);
}
/**
* @Route("/error-submt", name="error_submt", methods={"POST"})
*/
public function errorSubmt(Request $request)
{
$form = $this->createForm(ErrorFormType::class);
$form->handleRequest($request);
$exception = $request->get('exception_error');
$exceptionMessage = $request->get('exception_message');
$exceptionCode = $request->get('exception_code');
$exceptionFile = $request->get('exception_file');
$url = $request->request->get('request-url');
$exception = [
'message' => $exceptionMessage,
'code' => $exceptionCode,
'file' => $exceptionFile,
'exception_error' => $exception,
'exception_date' => new \DateTime('now'),
'url' => $url
];
if ($form->isSubmitted()) {
$data = $form->getData();
try {
$this->errorSendHelper->sendErrorEmail('bundles/TwigBundle/Exception/send_mail.html.twig', [
'form' => $data,
'exception' => $exception,
'user' => $this->getUser(),
], 'New support created', 'support@insivia.com');
} catch (\Exception $e) {
}
}
return new RedirectResponse($this->generateUrl('app_home'));
}
}