Your IP : 216.73.217.79


Current Path : /var/www/v3.cesa.co.za/src/CoreBundle/Controller/
Upload File :
Current File : /var/www/v3.cesa.co.za/src/CoreBundle/Controller/DefaultController.php

<?php

namespace App\CoreBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\CoreBundle\Services\ServiceGetterManager;
use Symfony\Component\ErrorHandler\Exception\FlattenException;
use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
use Throwable;

class DefaultController extends AbstractController
{
    public function __construct(\Symfony\Component\DependencyInjection\ContainerInterface $container)
    {
        $this->container = $container;
    }

    #[Route('/', name: 'home')]
    public function index(Request $request, ServiceGetterManager $sg): Response
    {

        //        $sg->get('user_list.manager')->getLoggedInUser();

        return $this->render('@CoreBundle/index.html.twig', []);
    }

    #[Route('/page-not-found', name: 'iga_core_404')]
    public function contentNotFoundAction(Request $request, ServiceGetterManager $sg)
    {

        $code = $request->get('code', 200);

        $response = new Response(
            $this->renderView('@CoreBundle/Default/page.not_found.html.twig'),
            $code
        );
        $response->headers->set('X-robots-tag', 'noindex');
        return $response;
    }

    #[Route('/exception', name: 'iga_core_exception')]
    public function exceptionAction(FlattenException $exception, DebugLoggerInterface $logger = null, ServiceGetterManager $sg = null): Response
    {
        // If ServiceGetterManager is not injected, get it from the container
        if (!$sg) {
            $sg = $this->container->get('service_getter.manager');
        }

        $errorString = $exception->getMessage();
        $statusCode = $exception->getStatusCode();
        $trace = $exception->getTraceAsString();

        // Log the error with full details if we have the error log manager
        if ($sg) {
            try {
                $errorLogManager = $sg->get('error_log.manager');
                $errorDetails = sprintf(
                    "Exception: %s\nStatus Code: %d\nFile: %s\nLine: %d\nTrace:\n%s",
                    $errorString,
                    $statusCode,
                    $exception->getFile(),
                    $exception->getLine(),
                    $trace
                );

                /** @var \App\CoreBundle\Services\ErrorLogManager $errorLogManager */
                $errorLogManager->error($errorDetails, false, true, true);
            } catch (\Exception $e) {
                // If error logging fails, at least log to Symfony's logger
                if ($logger) {
                    // DebugLoggerInterface doesn't have standard logging methods, so we'll just continue
                }
            }
        }

        // For production, show a generic error message
        if ($this->getParameter('kernel.environment') === 'prod') {
            $errorString = 'An error occurred while processing your request. Please try again later.';
        }

        return $this->render(
            '@CoreBundle/Default/page.error.html.twig',
            array('errorMessage' => nl2br($errorString))
        );
    }

    #[Route('/error', name: 'iga_core_500')]
    public function errorAction(Request $request, ServiceGetterManager $sg, $errorMessage = ''): Response
    {

        if (empty($errorMessage)) {
            $errorMessage = $request->get('message') ?? '';
        }

        return $this->render('@CoreBundle/Default/page.error.html.twig', array('errorMessage' => $errorMessage));
    }

    #[Route('/no-access', name: 'iga_core_403')]
    public function noAccessAction(Request $request, ServiceGetterManager $sg): Response
    {

        return $this->render('@CoreBundle/Default/page.no_access.html.twig');
    }
}