<?php
namespace App\Controller\Inicio;
use App\Controller\AbstractBaseController;
use App\Entity\Usuario;
use App\Repository\AlertaRepository;
use App\Repository\FestivoRepository;
use App\Repository\NotificacionRepository;
use App\Repository\ProyectoRepository;
use App\Repository\ProyectoUsuarioRepository;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class InicioController extends AbstractBaseController
{
#[Route('/', name: 'app_index', methods: ['GET'])]
#[Route('/', name: 'index', methods: ['GET'])]
public function index(
Request $request,
ProyectoUsuarioRepository $proyectoUsuarioRepository,
ProyectoRepository $proyectoRepository,
FestivoRepository $festivoRepository,
AlertaRepository $alertaRepository,
NotificacionRepository $notificacionRepository,
$ex = null,
$cod = null,
$msg = null
): RedirectResponse|Response {
/** @var Usuario $usuario */
$usuario = $this->getUser();
if (!$usuario) {
return $this->redirectToRoute('login');
}
$proyectosActivos = [];
$this->initSessions();
$proyectosUsuario = $proyectoUsuarioRepository->findProyectosActivosByUsuario($usuario);
if ($usuario->getRol() === 'ROLE_ADMIN') {
$proyectosActivos = $proyectoRepository->findActiveProjects();
}
$festivosActuales = $festivoRepository->findByCurrentYear();
$alertas = $alertaRepository->findAllBetweenDates();
$ultimasNotificacionesSolicitud = $notificacionRepository->findUltimasSolicitudesNoLeidasByUsuario($usuario);
if ($request->query->get('excepcion')) {
$ex = $request->query->get('excepcion');
$cod = $request->query->get('codigo');
$msg = $request->query->get('mensaje');
}
return $this->render('inicio/index.html.twig', [
'festivosActuales' => $festivosActuales,
'ultimasNotificacionesSolicitud' => $ultimasNotificacionesSolicitud,
'proyectos' => $proyectosUsuario,
'proyectosActivos' => $proyectosActivos,
'alertas' => $alertas,
'excepcion' => $ex,
'codigo' => $cod,
'mensaje' => $msg,
]);
}
private function initSessions(): void
{
if (!isset($_SESSION['tipo_fecha'])) {
$_SESSION['tipo_fecha'] = 1;
}
if (!isset($_SESSION['fecha_inicio'])) {
$_SESSION['fecha_inicio'] = (new \DateTime('now'))->format('01-m-Y');
}
if (!isset($_SESSION['fecha_fin'])) {
$_SESSION['fecha_fin'] = (new \DateTime('now'))->format('t-m-Y');
}
if (!isset($_SESSION['fecha_inicio_itinerancia'])) {
$_SESSION['fecha_inicio_itinerancia'] = (new \DateTime('now'))->format('01-m-Y');
}
if (!isset($_SESSION['fecha_fin_itinerancia'])) {
$_SESSION['fecha_fin_itinerancia'] = (new \DateTime('now'))->format('t-m-Y');
}
if (!isset($_SESSION['estado_marcaje'])) {
$_SESSION['estado_marcaje'] = 'Pendientes';
}
if (!isset($_SESSION['estado_itinerancia'])) {
$_SESSION['estado_itinerancia'] = 'Todos';
}
if (!isset($_SESSION['estado_solicitud'])) {
$_SESSION['estado_solicitud'] = 'Pendientes';
}
if (!isset($_SESSION['buscar_proyecto'])) {
$_SESSION['buscar_proyecto'] = '';
}
if (!isset($_SESSION['buscar_usuario'])) {
$_SESSION['buscar_usuario'] = '';
}
if (!isset($_SESSION['buscar_usuario2'])) {
$_SESSION['buscar_usuario2'] = '';
}
if (!isset($_SESSION['tipo_calendario'])) {
$_SESSION['tipo_calendario'] = '';
}
}
}