<?php
require 'conexion2.php'; // Asegúrate de tener la conexión a la base de datos

// Establecer la zona horaria
date_default_timezone_set('America/Caracas'); // Cambia a tu zona horaria

if (isset($_POST['cedula'])) {
    $cedula = $_POST['cedula'];

    // Obtener información del usuario
    $stmt = $db->prepare("SELECT * FROM personas WHERE cedula = ?");
    $stmt->execute([$cedula]);
    $usuario = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($usuario) {
        // Verificar el último registro del día
        $stmt = $db->prepare("
            SELECT * FROM asistencia 
            WHERE persona_id = ? 
			AND DATE(fecha_entrada) = CURDATE()
            ORDER BY id DESC 
            LIMIT 1
        ");
        $stmt->execute([$usuario['id']]);
        $ultimoRegistro = $stmt->fetch(PDO::FETCH_ASSOC);

        // Lógica para registrar entrada o salida
        $mensaje = '';
        $diferenciaMinutos = null;

        if ($ultimoRegistro) {
            // Verificar la diferencia de tiempo solo si hay un registro anterior
            $fechaUltimoRegistro = new DateTime($ultimoRegistro['fecha_entrada']);
            $fechaActual = new DateTime();
            $diferencia = $fechaActual->diff($fechaUltimoRegistro);
            $diferenciaMinutos = ($diferencia->days * 24 * 60) + ($diferencia->h * 60) + $diferencia->i;
        }

        if (!$ultimoRegistro) {
            // Si no hay registros, registrar entrada
            $stmt = $db->prepare("INSERT INTO asistencia (persona_id, entrada, fecha_entrada) VALUES (?, 'entrada', NOW())");
            $stmt->execute([$usuario['id']]);
            $mensaje = "Se registró una entrada para la cédula $cedula.";
        } elseif ($ultimoRegistro['salida'] === null) {
            // Si el último registro fue una entrada, verificar tiempo antes de permitir salida
            if ($diferenciaMinutos < 10) {
                echo json_encode([
                    'success' => false,
                    'message' => 'Debe esperar al menos 10 minutos antes de registrar una salida.',
                ]);
                exit;
            }

            // Registrar salida
            $stmt = $db->prepare("UPDATE asistencia SET salida = 'salida', fecha_salida = NOW() WHERE id = ?");
            $stmt->execute([$ultimoRegistro['id']]);
            $mensaje = "Se registró una salida para la cédula $cedula.";
        } else {
            // Si el último registro fue una salida, verificar tiempo antes de permitir nueva entrada
            if ($diferenciaMinutos < 10) {
                echo json_encode([
                    'success' => false,
                    'message' => 'Debe esperar al menos 10 minutos antes de registrar una nueva entrada.',
                ]);
                exit;
            }

            // Registrar nueva entrada
            $stmt = $db->prepare("INSERT INTO asistencia (persona_id, entrada, fecha_entrada) VALUES (?, 'entrada', NOW())");
            $stmt->execute([$usuario['id']]);
            $mensaje = "Se registró una entrada para la cédula $cedula.";
        }

        // Mostrar información del usuario y mensaje
        echo json_encode([
            'success' => true,
            'message' => $mensaje,
            'usuario' => [
                'nombre' => $usuario['nombre'],
                'cedula' => $usuario['cedula'],
                // 'foto' => $usuario['foto'], // Asegúrate de que este campo esté en la tabla
				 'foto' => $usuario['foto'] ? $usuario['foto'] : '', // Limpiar si no hay foto
                'ultimoRegistro' => $ultimoRegistro ? ($ultimoRegistro['salida'] ? 'Salida' : 'Entrada') : 'Ninguno'
            ]
        ]);
    } else {
        // Mensaje cuando la cédula no se encuentra
        echo json_encode([
            'success' => false,
            'message' => 'Cédula no encontrada.'
        ]);
    }
}
?>
