TimesheetController :: index
Request
GET Parameters
No GET parameters
POST Parameters
No POST parameters
Uploaded Files
No files were uploaded
Request Attributes
| Key | Value |
|---|---|
| _controller | "App\Controller\TimesheetController::index" |
| _firewall_context | "security.firewall.map.context.main" |
| _redirected | true |
| _remove_csp_headers | true |
| _route | "timesheet_index" |
| _route_params | [] |
| _security_firewall_run | "_security_main" |
| _stopwatch_token | "7d0d20" |
Request Headers
| Header | Value |
|---|---|
| accept | "*/*" |
| accept-encoding | "gzip, br, zstd, deflate" |
| cookie | "sf_redirect=%7B%22token%22%3A%2286d40a%22%2C%22route%22%3A%22timesheet_index%22%2C%22method%22%3A%22GET%22%2C%22controller%22%3A%7B%22class%22%3A%22Symfony%5C%5CBundle%5C%5CFrameworkBundle%5C%5CController%5C%5CRedirectController%22%2C%22method%22%3A%22urlRedirectAction%22%2C%22file%22%3A%22%5C%2Fhome%5C%2Ftranscf%5C%2Fsupport-consulting-international%5C%2Fvendor%5C%2Fsymfony%5C%2Fframework-bundle%5C%2FController%5C%2FRedirectController.php%22%2C%22line%22%3A110%7D%2C%22status_code%22%3A301%2C%22status_text%22%3A%22Moved%20Permanently%22%7D" |
| host | "support-consulting-international.com" |
| referer | "https://support-consulting-international.com/timesheet" |
| remote-ip | "216.73.216.153" |
| user-agent | "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" |
| x-forwarded-for | "216.73.216.153" |
| x-forwarded-proto | "https" |
| x-ovhrequest-id | "b296634b4fd583b3f0042108fafe10f2" |
| x-php-ob-level | "1" |
| x-predictor | "1" |
Request Content
Request content not available (it was retrieved as a resource).
Response
Response Headers
| Header | Value |
|---|---|
| cache-control | "no-cache, private" |
| content-type | "text/html; charset=UTF-8" |
| date | "Fri, 16 Jan 2026 09:23:34 GMT" |
| vary | "Accept" |
| x-debug-exception | "Impossible%20to%20access%20an%20attribute%20%28%22firstname%22%29%20on%20a%20null%20variable." |
| x-debug-exception-file | "%2Fhome%2Ftranscf%2Fsupport-consulting-international%2Ftemplates%2Fadmin%2FbaseAdmin.html.twig:577" |
| x-debug-token | "953923" |
| x-debug-token-link | "https://support-consulting-international.com/_profiler/de1d5b" |
| x-previous-debug-token | "de1d5b" |
| x-robots-tag | "noindex" |
Cookies
Request Cookies
| Key | Value |
|---|---|
| sf_redirect | "{"token":"86d40a","route":"timesheet_index","method":"GET","controller":{"class":"Symfony\\Bundle\\FrameworkBundle\\Controller\\RedirectController","method":"urlRedirectAction","file":"\/home\/transcf\/support-consulting-international\/vendor\/symfony\/framework-bundle\/Controller\/RedirectController.php","line":110},"status_code":301,"status_text":"Moved Permanently"}" |
Response Cookies
No response cookies
Session 1
Session Metadata
No session metadata
Session Attributes
No session attributes
Session Usage
1
Usages
Stateless check enabled
| Usage |
|---|
Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage:44
[
[
"file" => "/home/transcf/support-consulting-international/vendor/symfony/security-core/Authentication/Token/Storage/UsageTrackingTokenStorage.php"
"line" => 44
"function" => "getMetadataBag"
"class" => "Symfony\Component\HttpFoundation\Session\Session"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/vendor/symfony/security-core/Authorization/AuthorizationChecker.php"
"line" => 70
"function" => "getToken"
"class" => "Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/vendor/symfony/twig-bridge/Extension/SecurityExtension.php"
"line" => 52
"function" => "isGranted"
"class" => "Symfony\Component\Security\Core\Authorization\AuthorizationChecker"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/var/cache/dev/twig/96/96fd45940097181d32845082d8918559.php"
"line" => 337
"function" => "isGranted"
"class" => "Symfony\Bridge\Twig\Extension\SecurityExtension"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/vendor/twig/twig/src/Template.php"
"line" => 360
"function" => "doDisplay"
"class" => "__TwigTemplate_505ba1f7898eff84ceb1c11a042bbe11"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/var/cache/dev/twig/a0/a096888187a7c66d1401062c9e34dab5.php"
"line" => 52
"function" => "yield"
"class" => "Twig\Template"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/vendor/twig/twig/src/Template.php"
"line" => 360
"function" => "doDisplay"
"class" => "__TwigTemplate_9307ca9cf352a1268ef66a94ccf13193"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/vendor/twig/twig/src/Template.php"
"line" => 335
"function" => "yield"
"class" => "Twig\Template"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/vendor/twig/twig/src/TemplateWrapper.php"
"line" => 38
"function" => "render"
"class" => "Twig\Template"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/vendor/twig/twig/src/Environment.php"
"line" => 306
"function" => "render"
"class" => "Twig\TemplateWrapper"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/vendor/symfony/framework-bundle/Controller/AbstractController.php"
"line" => 258
"function" => "render"
"class" => "Twig\Environment"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/vendor/symfony/framework-bundle/Controller/AbstractController.php"
"line" => 266
"function" => "renderView"
"class" => "Symfony\Bundle\FrameworkBundle\Controller\AbstractController"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/src/Controller/TimesheetController.php"
"line" => 76
"function" => "render"
"class" => "Symfony\Bundle\FrameworkBundle\Controller\AbstractController"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/vendor/symfony/http-kernel/HttpKernel.php"
"line" => 163
"function" => "index"
"class" => "App\Controller\TimesheetController"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/vendor/symfony/http-kernel/HttpKernel.php"
"line" => 75
"function" => "handleRaw"
"class" => "Symfony\Component\HttpKernel\HttpKernel"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/vendor/symfony/http-kernel/Kernel.php"
"line" => 202
"function" => "handle"
"class" => "Symfony\Component\HttpKernel\HttpKernel"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php"
"line" => 35
"function" => "handle"
"class" => "Symfony\Component\HttpKernel\Kernel"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/vendor/autoload_runtime.php"
"line" => 35
"function" => "run"
"class" => "Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner"
"type" => "->"
]
[
"file" => "/home/transcf/support-consulting-international/public/index.php"
"line" => 5
"args" => [
"/home/transcf/support-consulting-international/vendor/autoload_runtime.php"
]
"function" => "require_once"
]
]
|
Flashes
Flashes
No flash messages were created.
Server Parameters
Server Parameters
Defined in .env
| Key | Value |
|---|---|
| APP_ENV | "dev" |
| APP_SECRET | "0f6caae6df8f01344f36f7e569bf3846" |
| CORS_ALLOW_ORIGIN | "^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$" |
| DATABASE_URL | "mysql://transcfsupport:Supportc09810@transcfsupport.mysql.db/transcfsupport?serverVersion=5.6" |
| ILOVEPDF_PUBLIC_KEY | "project_public_14b2bce093c1cf7f20c8bfcdbae4036d_rvPEU4a4885d330a371fe9da5d047df1f2d4a" |
| ILOVEPDF_SECRET_KEY | "secret_key_72c7b19689593e22931a20c6f9733631_Qr265f2a4c8069b796b340395ea76fc7c946f" |
| JWT_PASSPHRASE | "15ac3ecc060bd90da68eda6960355b1188e7b8d76649b0f50f71b6e9128220c1" |
| JWT_PUBLIC_KEY | "%kernel.project_dir%/config/jwt/public.pem" |
| JWT_SECRET_KEY | "%kernel.project_dir%/config/jwt/private.pem" |
| LOCK_DSN | "semaphore" |
| MAILER_DSN | "smtp://adiate-juridique%40easeandcar.fr:Azoo0404911@ssl0.ovh.net:587" |
| MAILER_URL | "null://localhost" |
| PHP_MEMORY_LIMIT | "512M" |
| PROJECT1_API_KEY | "auto-extraction-key-67890" |
| PROJECT2_API_KEY | "test-key-12345" |
| PROJECT2_API_URL | "http://gps.devaweb.fr/api" |
Defined as regular env variables
| Key | Value |
|---|---|
| APP_DEBUG | "1" |
| CFG_CLUSTER | "cluster100" |
| DOCUMENT_ROOT | "/home/transcf/support-consulting-international" |
| ENVIRONMENT | "production" |
| FCGI_ROLE | "RESPONDER" |
| GATEWAY_INTERFACE | "CGI/1.1" |
| GEOIP_AREA_CODE | "805" |
| GEOIP_CITY | "Santa Paula" |
| GEOIP_COUNTRY_CODE | "US" |
| GEOIP_COUNTRY_NAME | "United States" |
| GEOIP_DMA_CODE | "803" |
| GEOIP_LATITUDE | "34.355598" |
| GEOIP_LONGITUDE | "-119.070099" |
| GEOIP_REGION | "CA" |
| HTTPS | "on" |
| HTTP_ACCEPT | "*/*" |
| HTTP_ACCEPT_ENCODING | "gzip, br, zstd, deflate" |
| HTTP_COOKIE | "sf_redirect=%7B%22token%22%3A%2286d40a%22%2C%22route%22%3A%22timesheet_index%22%2C%22method%22%3A%22GET%22%2C%22controller%22%3A%7B%22class%22%3A%22Symfony%5C%5CBundle%5C%5CFrameworkBundle%5C%5CController%5C%5CRedirectController%22%2C%22method%22%3A%22urlRedirectAction%22%2C%22file%22%3A%22%5C%2Fhome%5C%2Ftranscf%5C%2Fsupport-consulting-international%5C%2Fvendor%5C%2Fsymfony%5C%2Fframework-bundle%5C%2FController%5C%2FRedirectController.php%22%2C%22line%22%3A110%7D%2C%22status_code%22%3A301%2C%22status_text%22%3A%22Moved%20Permanently%22%7D" |
| HTTP_HOST | "support-consulting-international.com" |
| HTTP_REFERER | "https://support-consulting-international.com/timesheet" |
| HTTP_REMOTE_IP | "216.73.216.153" |
| HTTP_USER_AGENT | "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" |
| HTTP_X_FORWARDED_FOR | "216.73.216.153" |
| HTTP_X_FORWARDED_PROTO | "https" |
| HTTP_X_OVHREQUEST_ID | "b296634b4fd583b3f0042108fafe10f2" |
| HTTP_X_PREDICTOR | "1" |
| PHP_SELF | "/public/index.php" |
| QUERY_STRING | "" |
| REDIRECT_STATUS | "200" |
| REDIRECT_URL | "/public/timesheet/" |
| REMOTE_ADDR | "216.73.216.153" |
| REMOTE_PORT | "15446" |
| REQUEST_METHOD | "GET" |
| REQUEST_TIME | 1768555414 |
| REQUEST_TIME_FLOAT | 1768555414.1441 |
| REQUEST_URI | "/timesheet/" |
| SCRIPT_FILENAME | "/home/transcf/support-consulting-international/public/index.php" |
| SCRIPT_NAME | "/public/index.php" |
| SCRIPT_URI | "https://support-consulting-international.com:443/timesheet/" |
| SCRIPT_URL | "/timesheet/" |
| SERVER_ADDR | "10.100.20.14" |
| SERVER_ADMIN | "postmaster@support-consulting-international.com" |
| SERVER_NAME | "support-consulting-international.com" |
| SERVER_PORT | "443" |
| SERVER_PROTOCOL | "HTTP/1.1" |
| SERVER_SIGNATURE | "" |
| SERVER_SOFTWARE | "Apache" |
| SYMFONY_DOTENV_VARS | "APP_ENV,APP_SECRET,DATABASE_URL,LOCK_DSN,JWT_SECRET_KEY,JWT_PUBLIC_KEY,JWT_PASSPHRASE,CORS_ALLOW_ORIGIN,MAILER_DSN,MAILER_URL,PHP_MEMORY_LIMIT,ILOVEPDF_PUBLIC_KEY,ILOVEPDF_SECRET_KEY,PROJECT1_API_KEY,PROJECT2_API_KEY,PROJECT2_API_URL" |
| UNIQUE_ID | "aWoDlnZd52lRAwAZBBEaaQAACgM" |
| USER | "transcf" |
| argc | 0 |
| argv | [] |
Sub Requests 1
ErrorController (token = de1d5b)
| Key | Value |
|---|---|
| _controller | "error_controller" |
| _stopwatch_token | "f5d2cd" |
| exception | Twig\Error\RuntimeError {#983 #message: "Impossible to access an attribute ("firstname") on a null variable." #code: 0 #file: "/home/transcf/support-consulting-international/templates/admin/baseAdmin.html.twig" #line: 577 -lineno: 577 -name: "admin/baseAdmin.html.twig" -rawMessage: "Impossible to access an attribute ("firstname") on a null variable." -sourcePath: "/home/transcf/support-consulting-international/templates/admin/baseAdmin.html.twig" -sourceCode: """ <!doctype html>\r\n <html lang="fr">\r\n <head>\r\n <meta charset="utf-8">\r\n <meta name="viewport" content="width=device-width, initial-scale=1">\r\n <title>{% block title %}{{ controller_name|default('Gestion Stock') }}{% endblock %}</title>\r\n \r\n <!-- Preload critical assets -->\r\n <link rel="preload" href="{{ asset('assets/vendor/bootstrap/css/bootstrap.min.css') }}" as="style">\r\n <link rel="preload" href="https://pro.fontawesome.com/releases/v5.10.0/css/all.css" as="style">\r\n \r\n <!-- Favicon -->\r\n <link href="{{ asset('image/logo_nav.png')}}" rel="icon" type="image/png">\r\n \r\n <!-- CSS Libraries -->\r\n <link href="{{ asset('assets/vendor/bootstrap/css/bootstrap.min.css') }}" rel="stylesheet">\r\n <link href="{{ asset('assets/css/sidebars.css')}}" rel="stylesheet">\r\n <link href="{{ asset('assets/css/portal.css') }}" rel="stylesheet">\r\n \r\n <!-- Icon Libraries with integrity checks -->\r\n <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.6.1/font/bootstrap-icons.css">\r\n <link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.10.0/css/all.css" integrity="sha384-AYmEC3Yw5cVb3ZcuHtOA93w35dYTsvhLPVnYs9eStHfGJvOvKxVfELGroGkvsg+p" crossorigin="anonymous">\r\n \r\n {% block stylesheets %}{% endblock %}\r\n \r\n <!-- Inline Critical CSS -->\r\n <style>\r\n :root {\r\n --primary: #009cde;\r\n --primary-dark: #0077a8;\r\n --secondary: #6c757d;\r\n --dark: #2c3e50;\r\n --light: #f8f9fa;\r\n --success: #28a745;\r\n --danger: #dc3545;\r\n --warning: #ffc107;\r\n --info: #17a2b8;\r\n --navbar-height: 60px;\r\n --transition: all 0.25s cubic-bezier(0.645, 0.045, 0.355, 1);\r\n }\r\n \r\n body {\r\n padding-top: var(--navbar-height);\r\n font-family: 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;\r\n line-height: 1.6;\r\n color: #333;\r\n background-color: #f5f7fa;\r\n min-height: 100vh;\r\n }\r\n \r\n /* Enhanced Navbar */\r\n .navbar {\r\n background: linear-gradient(135deg, var(--dark) 0%, var(--primary-dark) 100%);\r\n height: var(--navbar-height);\r\n box-shadow: var(--shadow-lg);\r\n padding: 0 2rem;\r\n position: fixed;\r\n top: 0;\r\n width: 100%;\r\n z-index: 1030;\r\n backdrop-filter: blur(10px);\r\n -webkit-backdrop-filter: blur(10px);\r\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .navbar-container {\r\n max-width: 1400px;\r\n margin: 0 auto;\r\n padding: 0 15px;\r\n }\r\n \r\n .navbar-brand {\r\n font-weight: 700;\r\n letter-spacing: 0.5px;\r\n display: flex;\r\n align-items: center;\r\n padding: 0.5rem 0;\r\n transition: var(--transition);\r\n }\r\n \r\n .navbar-brand img {\r\n height: 30px;\r\n width: auto;\r\n margin-right: 10px;\r\n transition: var(--transition);\r\n }\r\n \r\n .navbar-brand:hover {\r\n transform: translateY(-1px);\r\n }\r\n \r\n .nav-item {\r\n position: relative;\r\n margin: 0 2px;\r\n }\r\n \r\n .nav-link {\r\n font-weight: 500;\r\n padding: 0.75rem 1rem;\r\n color: rgba(255,255,255,0.9) !important;\r\n transition: var(--transition);\r\n border-radius: 4px;\r\n display: flex;\r\n align-items: center;\r\n }\r\n \r\n .nav-link i {\r\n margin-right: 8px;\r\n width: 20px;\r\n text-align: center;\r\n }\r\n \r\n .nav-link:hover, \r\n .nav-link:focus,\r\n .nav-link.active {\r\n color: white !important;\r\n background-color: rgba(255,255,255,0.15);\r\n transform: translateY(-1px);\r\n }\r\n \r\n /* Dropdown Enhancements */\r\n .dropdown-menu {\r\n border: none;\r\n box-shadow: 0 5px 20px rgba(0,0,0,0.15);\r\n border-radius: 8px;\r\n margin-top: 8px;\r\n padding: 0.5rem 0;\r\n min-width: 220px;\r\n border-top: 3px solid var(--primary);\r\n }\r\n \r\n .dropdown-item {\r\n padding: 0.6rem 1.5rem;\r\n transition: var(--transition);\r\n font-weight: 500;\r\n display: flex;\r\n align-items: center;\r\n }\r\n \r\n .dropdown-item i {\r\n width: 20px;\r\n margin-right: 10px;\r\n color: var(--primary);\r\n }\r\n \r\n .dropdown-item:hover, \r\n .dropdown-item:focus {\r\n background-color: rgba(0, 156, 222, 0.1);\r\n color: var(--primary);\r\n padding-left: 1.75rem;\r\n }\r\n \r\n /* User Menu Specific */\r\n .user-menu .dropdown-toggle::after {\r\n margin-left: 0.5em;\r\n vertical-align: 0.15em;\r\n }\r\n \r\n .user-menu .dropdown-menu {\r\n left: auto !important;\r\n right: 0 !important;\r\n }\r\n \r\n /* Main Content Area */\r\n main {\r\n padding: 2rem 0;\r\n min-height: calc(100vh - var(--navbar-height));\r\n }\r\n \r\n /* Buttons & Interactive Elements */\r\n .btn {\r\n transition: var(--transition);\r\n font-weight: 500;\r\n letter-spacing: 0.5px;\r\n }\r\n \r\n .btn-ease {\r\n background-color: var(--primary);\r\n border-color: var(--primary);\r\n border-radius: 30px;\r\n padding: 0.5rem 1.5rem;\r\n }\r\n \r\n .btn-ease:hover {\r\n background-color: var(--primary-dark);\r\n border-color: var(--primary-dark);\r\n transform: translateY(-2px);\r\n box-shadow: 0 4px 15px rgba(0, 156, 222, 0.3);\r\n }\r\n \r\n /* Specific Button States */\r\n .btn-download:hover {\r\n background-color: #e0b000;\r\n transform: translateY(-2px);\r\n box-shadow: 0 4px 12px rgba(224, 176, 0, 0.3);\r\n }\r\n \r\n .btn-edit:hover, \r\n .btn-add:hover {\r\n background-color: #0aa8c8;\r\n transform: translateY(-2px);\r\n box-shadow: 0 4px 12px rgba(13, 202, 240, 0.3);\r\n }\r\n \r\n .btn-save:hover {\r\n background-color: #5cd34b;\r\n transform: translateY(-2px);\r\n box-shadow: 0 4px 12px rgba(124, 247, 107, 0.3);\r\n }\r\n \r\n .btn-cancel:hover {\r\n background-color: #e0b000;\r\n transform: translateY(-2px);\r\n box-shadow: 0 4px 12px rgba(224, 176, 0, 0.3);\r\n }\r\n \r\n /* Responsive Adjustments */\r\n @media (max-width: 992px) {\r\n .navbar-collapse {\r\n background-color: var(--dark);\r\n padding: 1rem;\r\n margin-top: 0.5rem;\r\n border-radius: 8px;\r\n box-shadow: 0 5px 15px rgba(0,0,0,0.1);\r\n }\r\n \r\n .nav-item {\r\n margin: 2px 0;\r\n }\r\n \r\n .dropdown-menu {\r\n margin-top: 0;\r\n box-shadow: none;\r\n border-left: 3px solid var(--primary);\r\n border-top: none;\r\n }\r\n }\r\n \r\n .main-wrapper {\r\n min-height: calc(100vh - var(--navbar-height));\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n \r\n main {\r\n flex: 1;\r\n overflow-y: auto; /* Autorise le scroll si le contenu dépasse */\r\n padding: 2rem 0;\r\n }\r\n .nav-link:hover, .nav-link:focus, .nav-link {\r\n color: #c0c5d3ff !important;\r\n \r\n transform: translateY(-1px);\r\n }\r\n \r\n </style>\r\n </head>\r\n <body>\r\n <!-- Navigation Bar -->\r\n {# <header class="navbar navbar-expand-lg navbar-dark">\r\n <div class="navbar-container container-fluid">\r\n {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') %}\r\n <a class="navbar-brand" href="{{ path('admin')}}">\r\n <img src="{{ asset('assets/img/bnb-bnb-logo.png') }}" alt="Logo" loading="lazy">\r\n Espace Admin\r\n </a>\r\n {% else %}\r\n <a class="navbar-brand" href="{{ path('account')}}">\r\n <img src="{{ asset('assets/img/bnb-bnb-logo.png') }}" alt="Logo" loading="lazy">\r\n Espace User\r\n </a>\r\n {% endif %}\r\n \r\n <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#mainNavbar" aria-label="Toggle navigation">\r\n <span class="navbar-toggler-icon"></span>\r\n </button>\r\n \r\n <div class="collapse navbar-collapse" id="mainNavbar">\r\n <ul class="navbar-nav me-auto">\r\n <!-- Gestion Carburant -->\r\n {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_CARBURANT') %}\r\n <li class="nav-item dropdown">\r\n <a class="nav-link dropdown-toggle" href="#" id="carburantDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">\r\n <i class="fas fa-gas-pump"></i> Gestion Carburant\r\n </a>\r\n <ul class="dropdown-menu" aria-labelledby="carburantDropdown">\r\n {% if is_granted('ROLE_ADMIN') %}\r\n <li><a class="dropdown-item" href="{{ path('user_index')}}"><i class="fas fa-users"></i> Utilisateurs</a></li>\r\n {% endif %}\r\n <li><a class="dropdown-item" href="{{path('dkv_index_plus')}}"><i class="fas fa-file-excel"></i> Excel DKV</a></li>\r\n <li><a class="dropdown-item" href="{{path('transaction_total')}}"><i class="fas fa-file-excel"></i> Excel Total</a></li>\r\n <li><a class="dropdown-item" href="{{path('transaction_leclerc')}}"><i class="fas fa-file-excel"></i> Excel Leclerc</a></li>\r\n <li><a class="dropdown-item" href="{{path('app_cart_total')}}"><i class="fas fa-file-excel"></i> Excel Cartes</a></li>\r\n </ul>\r\n </li>\r\n {% endif %}\r\n \r\n <!-- Gestion Client -->\r\n {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_CLIENT') %}\r\n <li class="nav-item dropdown">\r\n <a class="nav-link dropdown-toggle" href="#" id="clientDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">\r\n <i class="fas fa-users-cog"></i> Gestion Client\r\n </a>\r\n <ul class="dropdown-menu" aria-labelledby="clientDropdown">\r\n <li><a class="dropdown-item" href="{{path('ane_import_excel')}}"><i class="fas fa-file-import"></i> Excel ANE</a></li>\r\n </ul>\r\n </li>\r\n {% endif %}\r\n \r\n <!-- Gestion Factures -->\r\n {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_FACTURES') %}\r\n <li class="nav-item dropdown">\r\n <a class="nav-link dropdown-toggle" href="#" id="facturesDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">\r\n <i class="fas fa-file-invoice-dollar"></i> Gestion Factures\r\n </a>\r\n <ul class="dropdown-menu" aria-labelledby="facturesDropdown">\r\n <li><a class="dropdown-item" href="{{path('devis_liste')}}"><i class="fas fa-file-signature"></i> Devis</a></li>\r\n <li><a class="dropdown-item" href="{{path('fiche_mission_index')}}"><i class="fas fa-clipboard-check"></i> Fiches Mission</a></li>\r\n <li><a class="dropdown-item" href="{{path('facture_index')}}"><i class="fas fa-calculator"></i> Fiches calcul</a></li>\r\n <li><a class="dropdown-item" href="{{path('facturefiche_index')}}"><i class="fas fa-file-invoice"></i> Factures</a></li>\r\n </ul>\r\n </li>\r\n {% endif %}\r\n </ul>\r\n \r\n <!-- User Menu -->\r\n <ul class="navbar-nav">\r\n <li class="nav-item dropdown user-menu">\r\n <a class="nav-link dropdown-toggle d-flex align-items-center" href="#" id="userDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">\r\n <i class="fas fa-user-circle me-2"></i>\r\n <span>{{app.user.firstname}}</span>\r\n </a>\r\n <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userDropdown">\r\n <li><a class="dropdown-item" href="{{path('account')}}"><i class="fas fa-user-cog"></i> Profil</a></li>\r\n <li><hr class="dropdown-divider"></li>\r\n <li><a class="dropdown-item" href="{{path('app_logout')}}"><i class="fas fa-sign-out-alt"></i> Déconnexion</a></li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </header> #}\r\n <header class="navbar navbar-expand-lg navbar-dark">\r\n {# <div class="navbar-container container-fluid"> #}\r\n <div class="container-fluid">\r\n {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') %}\r\n <a class="navbar-brand" href="{{ path('admin') }}">\r\n <img src="{{ asset('assets/img/bnb-bnb-logo.png') }}" alt="Logo" loading="lazy">\r\n Espace Admin\r\n </a>\r\n {% else %}\r\n <a class="navbar-brand" href="{{ path('account') }}">\r\n <img src="{{ asset('assets/img/bnb-bnb-logo.png') }}" alt="Logo" loading="lazy">\r\n Espace User\r\n </a>\r\n {% endif %}\r\n \r\n <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#mainNavbar" aria-label="Toggle navigation">\r\n <span class="navbar-toggler-icon"></span>\r\n </button>\r\n \r\n <div class="collapse navbar-collapse" id="mainNavbar">\r\n <ul class="navbar-nav me-auto">\r\n <!-- Gestion des Cartes -->\r\n {# {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_CARBURANT') %}\r\n <li class="nav-item dropdown">\r\n <a class="nav-link dropdown-toggle" href="#" id="cartesDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">\r\n <i class="fas fa-credit-card"></i> Gestion des Cartes\r\n </a>\r\n <ul class="dropdown-menu" aria-labelledby="cartesDropdown">\r\n <li><a class="dropdown-item" href="{{ path('app_carte_uta') }}"><i class="fas fa-file-excel"></i> Cartes UTA</a></li>\r\n <li><a class="dropdown-item" href="{{ path('app_cart_total') }}"><i class="fas fa-file-excel"></i> Cartes ANE + Total</a></li>\r\n </ul>\r\n </li>\r\n {% endif %} #}\r\n <!-- Gestion Carburant -->\r\n {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_CARBURANT') %}\r\n <li class="nav-item dropdown">\r\n <a class="nav-link dropdown-toggle" href="#" id="carburantDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">\r\n <i class="fas fa-gas-pump"></i> Gestion Utilisateurs\r\n </a>\r\n <ul class="dropdown-menu" aria-labelledby="carburantDropdown">\r\n {% if is_granted('ROLE_ADMIN') %}\r\n <li><a class="dropdown-item" href="{{ path('user_index') }}"><i class="fas fa-users"></i> Utilisateurs</a></li>\r\n {% endif %}\r\n \r\n \r\n </ul>\r\n </li>\r\n {% endif %}\r\n {# {% if is_granted('ROLE_COMMU') \r\n or is_granted('ROLE_COMMER') \r\n or is_granted('ROLE_ADMIN') \r\n or is_granted('ROLE_ATELIER') \r\n or is_granted('ROLE_GESTION_CARBURANT') \r\n %}\r\n <li class="nav-item dropdown">\r\n <a class="nav-link dropdown-toggle" href="#" id="analyseDataDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">\r\n <i class="fas fa-chart-line"></i> Analyse Data\r\n </a>\r\n <ul class="dropdown-menu" aria-labelledby="analyseDataDropdown">\r\n \r\n \r\n <li>\r\n <a class="dropdown-item" href="{{ path('analyse_mensuel') }}">\r\n <i class="fas fa-chart-bar"></i> Analyse Mensuel TOTAL\r\n </a>\r\n </li> \r\n \r\n <li>\r\n <a class="dropdown-item" href="{{ path('analyse_mensuel_dkv') }}" tabindex="-1" aria-disabled="true">\r\n <i class="fas fa-chart-bar"></i> Analyse Mensuel DKV \r\n </a>\r\n </li>\r\n <li>\r\n <a class="dropdown-item" href="{{ path('analyse_mensuel_leclerc') }}" tabindex="-1" aria-disabled="true">\r\n <i class="fas fa-chart-bar"></i> Analyse Mensuel LECLERC \r\n </a>\r\n </li>\r\n \r\n \r\n </ul>\r\n </li>\r\n {% endif %} #}\r\n <!-- Gestion Client -->\r\n {# {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_CLIENT') %}\r\n <li class="nav-item dropdown">\r\n <a class="nav-link dropdown-toggle" href="#" id="clientDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">\r\n <i class="fas fa-users-cog"></i> Gestion Client\r\n </a>\r\n <ul class="dropdown-menu" aria-labelledby="clientDropdown">\r\n <li><a class="dropdown-item" href="{{ path('ane_import_excel') }}"><i class="fas fa-file-import"></i> Excel ANE</a></li>\r\n </ul>\r\n </li>\r\n {% endif %} #}\r\n \r\n <!-- Gestion Factures -->\r\n {# {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_FACTURES') %}\r\n <li class="nav-item dropdown">\r\n <a class="nav-link dropdown-toggle" href="#" id="facturesDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">\r\n <i class="fas fa-file-invoice-dollar"></i> Gestion Factures\r\n </a>\r\n <ul class="dropdown-menu" aria-labelledby="facturesDropdown">\r\n <li><a class="dropdown-item" href="{{ path('devis_liste') }}"><i class="fas fa-file-signature"></i> Devis</a></li>\r\n <li><a class="dropdown-item" href="{{ path('fiche_mission_index') }}"><i class="fas fa-clipboard-check"></i> Fiches Mission</a></li>\r\n <li><a class="dropdown-item" href="{{ path('facture_index') }}"><i class="fas fa-calculator"></i> Fiches calcul</a></li>\r\n <li><a class="dropdown-item" href="{{ path('facturefiche_index') }}"><i class="fas fa-file-invoice"></i> Factures</a></li>\r\n </ul>\r\n </li>\r\n {% endif %} #}\r\n {# {% if is_granted('ROLE_ADMIN') or is_granted('ROLE_GESTION_CARBURANT') %}\r\n <li class="nav-item dropdown">\r\n <a class="nav-link dropdown-toggle" href="#" id="banqueDonneesDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">\r\n <i class="fas fa-database"></i> Banque des données\r\n </a>\r\n <ul class="dropdown-menu" aria-labelledby="banqueDonneesDropdown">\r\n <li>\r\n <a class="dropdown-item" href="{{ path('cartes_import') }}">\r\n <i class="fas fa-credit-card"></i> Cartes essence\r\n </a>\r\n </li>\r\n \r\n </ul>\r\n </li>\r\n {% endif %} #}\r\n \r\n \r\n <!-- Gestion Feuilles de Route -->\r\n {# {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_CARBURANT') %}\r\n <li class="nav-item dropdown">\r\n <a class="nav-link dropdown-toggle" href="#" id="feuillesRouteDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">\r\n <i class="fas fa-clipboard-list"></i> Feuilles de Route\r\n </a>\r\n <ul class="dropdown-menu" aria-labelledby="feuillesRouteDropdown">\r\n <li><a class="dropdown-item" href="{{ path('upload_multiple') }}"><i class="fas fa-upload"></i> Télécharger feuilles</a></li>\r\n <!-- Vous pouvez ajouter d'autres options pour le traitement par la suite -->\r\n <li><a class="dropdown-item" href="{{ path('upload_list') }}"><i class="fas fa-eye"></i> Consulter feuilles</a></li>\r\n <li><a class="dropdown-item" href="#"><i class="fas fa-check-circle"></i> Validation</a></li>\r\n <li><hr class="dropdown-divider"></li>\r\n <li><a class="dropdown-item" href="#"><i class="fas fa-chart-bar"></i> Statistiques</a></li>\r\n </ul>\r\n </li>\r\n {% endif %} #}\r\n {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_CARBURANT') %}\r\n <!-- Menu Feuilles de Route -->\r\n <li class="nav-item dropdown">\r\n <a class="nav-link dropdown-toggle" href="#" id="feuillesRouteDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">\r\n <i class="fas fa-clipboard-list"></i> Feuilles de Route\r\n </a>\r\n <ul class="dropdown-menu" aria-labelledby="feuillesRouteDropdown">\r\n <!-- Section Téléchargement -->\r\n <li class="dropdown-header">\r\n <i class="fas fa-upload"></i> Téléchargement\r\n </li>\r\n <li><a class="dropdown-item" href="{{ path('upload_multiple') }}"><i class="fas fa-file-upload"></i> Importer feuilles</a></li>\r\n \r\n <!-- Section Consultation -->\r\n <li class="dropdown-header">\r\n <i class="fas fa-eye"></i> Consultation\r\n </li>\r\n <li><a class="dropdown-item" href="{{ path('upload_list') }}"><i class="fas fa-list"></i> Liste des feuilles</a></li>\r\n \r\n <!-- NOUVELLES FONCTIONNALITÉS -->\r\n <li class="dropdown-header">\r\n <i class="fas fa-user-tie"></i> Gestion Heures\r\n </li>\r\n <li>\r\n <a class="dropdown-item" href="{{ path('timesheet_index') }}">\r\n <i class="fas fa-search"></i> Rechercher chauffeur\r\n </a>\r\n </li>\r\n <li>\r\n <a class="dropdown-item" href="{{ path('timesheet_index') }}">\r\n <i class="fas fa-file-export"></i> Télécharger heures travail\r\n </a>\r\n </li>\r\n \r\n <!-- Section Validation -->\r\n <li class="dropdown-header">\r\n <i class="fas fa-check-circle"></i> Validation\r\n </li>\r\n <li><a class="dropdown-item" href="{{ path('upload_list') }}"><i class="fas fa-check"></i> Valider feuilles</a></li>\r\n {# <li><a class="dropdown-item" href="#"><i class="fas fa-history"></i> Historique validation</a></li> #}\r\n \r\n <!-- Section Rapports -->\r\n {# <li class="dropdown-header">\r\n <i class="fas fa-chart-bar"></i> Rapports\r\n </li>\r\n <li><a class="dropdown-item" href="#"><i class="fas fa-chart-line"></i> Statistiques</a></li> #}\r\n </ul>\r\n </li>\r\n {% endif %}\r\n \r\n <!-- Menu Configuration (séparé) -->\r\n {% if is_granted('ROLE_ADMIN') or is_granted('ROLE_GESTION_HEURES') %}\r\n <li class="nav-item dropdown">\r\n <a class="nav-link dropdown-toggle" href="#" id="configDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">\r\n <i class="fas fa-cogs"></i> Configuration\r\n </a>\r\n <ul class="dropdown-menu" aria-labelledby="configDropdown">\r\n <!-- Section Forfaits -->\r\n <li class="dropdown-header">\r\n <i class="fas fa-business-time"></i> Gestion des Forfaits\r\n </li>\r\n <li>\r\n <a class="dropdown-item" href="{{ path('admin_forfait_config_index') }}">\r\n <i class="fas fa-sliders-h"></i> Configurations Forfaits\r\n </a>\r\n </li>\r\n <li>\r\n <a class="dropdown-item" href="{{ path('admin_forfait_config_new') }}">\r\n <i class="fas fa-plus-circle"></i> Nouvelle configuration\r\n </a>\r\n </li>\r\n \r\n <!-- Section Vacations -->\r\n <li class="dropdown-header">\r\n <i class="fas fa-clock"></i> Valeurs Vacations\r\n </li>\r\n \r\n <li>\r\n <a class="dropdown-item" href="#">\r\n <i class="fas fa-history"></i> Historique modifications\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n {% endif %}\r\n \r\n </ul>\r\n \r\n <!-- User Menu -->\r\n <ul class="navbar-nav">\r\n <li class="nav-item dropdown user-menu">\r\n <a class="nav-link dropdown-toggle d-flex align-items-center" href="#" id="userDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">\r\n <i class="fas fa-user-circle me-2"></i>\r\n <span>{{ app.user.firstname }}</span>\r\n </a>\r\n <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userDropdown">\r\n <li><a class="dropdown-item" href="{{ path('account') }}"><i class="fas fa-user-cog"></i> Profil</a></li>\r\n <li><hr class="dropdown-divider"></li>\r\n <li><a class="dropdown-item" href="{{ path('app_logout') }}"><i class="fas fa-sign-out-alt"></i> Déconnexion</a></li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </header>\r\n <!-- Main Content -->\r\n <main class="main-wrapper">\r\n {% block content %}{% endblock %}\r\n {% block body %}{% endblock %}\r\n </main>\r\n \r\n <!-- JavaScript Libraries -->\r\n <script src="{{ asset('assets/vendor/bootstrap/js/bootstrap.bundle.min.js') }}" defer></script>\r\n \r\n {% block javascripts %}{% endblock %}\r\n </body>\r\n </html> """ : { { Twig\Extension\CoreExtension::getAttribute(Environment $env, Source $source, $object, $item, array $arguments = [], $type = 'any', $isDefinedTest = false, $ignoreStrictCheck = false, $sandboxed = false, int $lineno = -1) … › |
| logger | Symfony\Bridge\Monolog\Logger {#257 …9} |