<?php

namespace App\Middlewares;

class AuthMiddleware {

    public function handle() 
    {
        session_start();

        // Si no hay sesión iniciada, redirigir al login
        if (!isset($_SESSION['user_id'])) {
            $_SESSION['message'] = "Debes iniciar sesión para acceder.";
            $_SESSION['message_type'] = "danger";
            header("Location: " . BASE_HEADER);
            exit;
        }

        // Rutas que están exentas del control de tipo de persona o selección de rol
        $allowedRoutes = [
            '/mesadepartesvirtual/select-role',
            '/mesadepartesvirtual/set-role',
            '/mesadepartesvirtual/select-person-type',
            '/mesadepartesvirtual/set-person-type'
        ];

        $currentRoute = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

        // Si está en una de las rutas exentas, permitir el acceso sin redirección
        if (in_array($currentRoute, $allowedRoutes)) {
            return;
        }

        // Si es comunidad y no tiene tipo de persona, redirigir a seleccionar
        if ($_SESSION['role'] === 'COMUNITY' && !isset($_SESSION['person_type_id'])) {
            header("Location: " . BASE_HEADER . "select-person-type");
            exit;
        }
    }

    public static function redirectIfAuthenticated()
    {
        session_start();
        if (isset($_SESSION['user_id']) && isset($_SESSION['role'])) {
            // Si es COMUNITY pero no tiene person_type, mandarlo a seleccionar
            if ($_SESSION['role'] === 'COMUNITY' && !isset($_SESSION['person_type_id'])) {
                header("Location: " . BASE_HEADER . "select-person-type");
                exit;
            }
            header("Location: " . BASE_HEADER . "dashboard");
            exit;
        }
    }
}