<?php
$pageTitle = 'Registrar Temperatura';
require_once __DIR__ . '/../../config/config.php';
requireLogin();

$db = getDB();
$mensaje = '';
$error = '';

// Procesar registro
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $equipo_id = intval($_POST['equipo_id']);
    $fecha = $_POST['fecha'];
    $hora = $_POST['hora'];
    $temperatura = floatval($_POST['temperatura']);
    $observaciones = sanitize($_POST['observaciones'] ?? '');
    $accion_correctiva = sanitize($_POST['accion_correctiva'] ?? '');
    
    // Obtener rangos del equipo
    $stmt = $db->prepare("SELECT * FROM equipos_refrigeracion WHERE id = ?");
    $stmt->execute([$equipo_id]);
    $equipo = $stmt->fetch();
    
    if (!$equipo) {
        $error = "Equipo no encontrado";
    } else {
        // Determinar estado
        $estado = 'Normal';
        if ($temperatura < $equipo['temp_minima']) {
            $diferencia = $equipo['temp_minima'] - $temperatura;
            $estado = $diferencia > 5 ? 'Critico' : 'Bajo';
        } elseif ($temperatura > $equipo['temp_maxima']) {
            $diferencia = $temperatura - $equipo['temp_maxima'];
            $estado = $diferencia > 5 ? 'Critico' : 'Alto';
        }
        
        try {
            $stmt = $db->prepare("INSERT INTO registros_temperatura 
                (equipo_id, fecha, hora, temperatura, estado, accion_correctiva, operador_id, observaciones)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
            $stmt->execute([
                $equipo_id, $fecha, $hora, $temperatura, $estado,
                $accion_correctiva ?: null, $_SESSION['user_id'], $observaciones ?: null
            ]);
            
            $mensaje = "Temperatura registrada exitosamente. Estado: $estado";
            
            // Si es crítico, mostrar alerta especial
            if ($estado == 'Critico') {
                $error = "¡ALERTA CRÍTICA! La temperatura está fuera del rango seguro. Se requiere acción correctiva inmediata.";
            }
            
        } catch (Exception $e) {
            $error = "Error al registrar: " . $e->getMessage();
        }
    }
}

// Obtener equipos activos
$equipos = $db->query("SELECT * FROM equipos_refrigeracion WHERE activo = 1 ORDER BY tipo, nombre")->fetchAll();

// Preseleccionar equipo si viene en URL
$equipoSeleccionado = intval($_GET['equipo_id'] ?? 0);

require_once __DIR__ . '/../../includes/header.php';
?>

<div class="row mb-4">
    <div class="col-12">
        <nav aria-label="breadcrumb">
            <ol class="breadcrumb">
                <li class="breadcrumb-item"><a href="list.php">Control de Temperatura</a></li>
                <li class="breadcrumb-item active">Registrar</li>
            </ol>
        </nav>
        <h2><i class="bi bi-journal-plus me-2"></i>Registrar Temperatura</h2>
    </div>
</div>

<?php if ($mensaje): ?>
<div class="alert alert-success alert-dismissible fade show">
    <i class="bi bi-check-circle me-2"></i><?= htmlspecialchars($mensaje) ?>
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if ($error): ?>
<div class="alert alert-danger alert-dismissible fade show">
    <i class="bi bi-exclamation-triangle me-2"></i><?= htmlspecialchars($error) ?>
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<div class="row">
    <div class="col-md-6">
        <div class="card">
            <div class="card-header bg-primary text-white">
                <h5 class="mb-0"><i class="bi bi-thermometer-half me-2"></i>Nuevo Registro</h5>
            </div>
            <div class="card-body">
                <form method="POST" id="formRegistro">
                    <div class="mb-3">
                        <label class="form-label">Equipo *</label>
                        <select name="equipo_id" id="equipo_id" class="form-select form-select-lg" required>
                            <option value="">-- Seleccione equipo --</option>
                            <?php foreach ($equipos as $eq): ?>
                            <option value="<?= $eq['id'] ?>" 
                                    data-min="<?= $eq['temp_minima'] ?>" 
                                    data-max="<?= $eq['temp_maxima'] ?>"
                                    data-tipo="<?= $eq['tipo'] ?>"
                                    <?= $equipoSeleccionado == $eq['id'] ? 'selected' : '' ?>>
                                <?= $eq['tipo'] == 'Refrigeradora' ? '🧊' : '❄️' ?>
                                <?= htmlspecialchars($eq['nombre']) ?> 
                                (<?= $eq['temp_minima'] ?>°C a <?= $eq['temp_maxima'] ?>°C)
                            </option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    
                    <div class="row mb-3">
                        <div class="col-md-6">
                            <label class="form-label">Fecha *</label>
                            <input type="date" name="fecha" class="form-control" 
                                   value="<?= date('Y-m-d') ?>" required>
                        </div>
                        <div class="col-md-6">
                            <label class="form-label">Hora *</label>
                            <input type="time" name="hora" class="form-control" 
                                   value="<?= date('H:i') ?>" required>
                        </div>
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Temperatura (°C) *</label>
                        <div class="input-group input-group-lg">
                            <input type="number" name="temperatura" id="temperatura" 
                                   class="form-control form-control-lg text-center fs-3" 
                                   step="0.1" required placeholder="0.0"
                                   style="font-weight: bold;">
                            <span class="input-group-text">°C</span>
                        </div>
                        <div id="rangoInfo" class="form-text"></div>
                        <div id="estadoPreview" class="mt-2"></div>
                    </div>
                    
                    <div class="mb-3" id="accionCorrectiva" style="display: none;">
                        <label class="form-label text-danger">
                            <i class="bi bi-exclamation-triangle me-1"></i>
                            Acción Correctiva (Requerida si hay desviación)
                        </label>
                        <textarea name="accion_correctiva" class="form-control" rows="2"
                                  placeholder="Describa la acción tomada..."></textarea>
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Observaciones</label>
                        <textarea name="observaciones" class="form-control" rows="2"
                                  placeholder="Notas adicionales..."></textarea>
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Operador</label>
                        <input type="text" class="form-control" value="<?= htmlspecialchars($_SESSION['nombre']) ?>" readonly>
                    </div>
                    
                    <div class="d-grid">
                        <button type="submit" class="btn btn-primary btn-lg">
                            <i class="bi bi-save me-1"></i> Guardar Registro
                        </button>
                    </div>
                </form>
            </div>
        </div>
    </div>
    
    <div class="col-md-6">
        <!-- Información del equipo seleccionado -->
        <div class="card mb-3" id="infoEquipo" style="display: none;">
            <div class="card-header">
                <h5 class="mb-0"><i class="bi bi-info-circle me-2"></i>Información del Equipo</h5>
            </div>
            <div class="card-body">
                <div id="equipoDetalle"></div>
            </div>
        </div>
        
        <!-- Últimos registros del equipo -->
        <div class="card">
            <div class="card-header">
                <h5 class="mb-0"><i class="bi bi-clock-history me-2"></i>Últimos Registros</h5>
            </div>
            <div class="card-body">
                <div id="ultimosRegistros">
                    <p class="text-muted text-center">Seleccione un equipo para ver sus registros</p>
                </div>
            </div>
        </div>
        
        <!-- Guía de rangos -->
        <div class="card mt-3">
            <div class="card-header">
                <h5 class="mb-0"><i class="bi bi-lightbulb me-2"></i>Guía de Rangos</h5>
            </div>
            <div class="card-body">
                <div class="row">
                    <div class="col-6">
                        <div class="d-flex align-items-center mb-2">
                            <i class="bi bi-box fs-3 text-primary me-2"></i>
                            <div>
                                <strong>Refrigeradora</strong><br>
                                <span class="text-success">2°C a 8°C</span>
                            </div>
                        </div>
                    </div>
                    <div class="col-6">
                        <div class="d-flex align-items-center mb-2">
                            <i class="bi bi-snow fs-3 text-info me-2"></i>
                            <div>
                                <strong>Congelador</strong><br>
                                <span class="text-success">-25°C a -15°C</span>
                            </div>
                        </div>
                    </div>
                </div>
                <hr>
                <small class="text-muted">
                    <strong>Estados:</strong><br>
                    <span class="badge bg-success">Normal</span> Dentro del rango<br>
                    <span class="badge bg-warning">Alto/Bajo</span> Fuera del rango (≤5°C)<br>
                    <span class="badge bg-danger">Crítico</span> Muy fuera del rango (>5°C)
                </small>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const equipoSelect = document.getElementById('equipo_id');
    const tempInput = document.getElementById('temperatura');
    const rangoInfo = document.getElementById('rangoInfo');
    const estadoPreview = document.getElementById('estadoPreview');
    const accionCorrectiva = document.getElementById('accionCorrectiva');
    const infoEquipo = document.getElementById('infoEquipo');
    const equipoDetalle = document.getElementById('equipoDetalle');
    const ultimosRegistros = document.getElementById('ultimosRegistros');
    
    function evaluarTemperatura() {
        const option = equipoSelect.selectedOptions[0];
        if (!option || !option.value) return;
        
        const min = parseFloat(option.dataset.min);
        const max = parseFloat(option.dataset.max);
        const temp = parseFloat(tempInput.value);
        
        rangoInfo.innerHTML = `<i class="bi bi-info-circle"></i> Rango aceptable: <strong>${min}°C a ${max}°C</strong>`;
        
        if (isNaN(temp)) {
            estadoPreview.innerHTML = '';
            accionCorrectiva.style.display = 'none';
            return;
        }
        
        let estado, clase, icono;
        if (temp >= min && temp <= max) {
            estado = 'Normal';
            clase = 'success';
            icono = 'check-circle-fill';
            accionCorrectiva.style.display = 'none';
        } else if (temp < min) {
            const dif = min - temp;
            if (dif > 5) {
                estado = 'CRÍTICO - Muy bajo';
                clase = 'danger';
                icono = 'x-octagon-fill';
            } else {
                estado = 'Bajo';
                clase = 'warning';
                icono = 'exclamation-triangle-fill';
            }
            accionCorrectiva.style.display = 'block';
        } else {
            const dif = temp - max;
            if (dif > 5) {
                estado = 'CRÍTICO - Muy alto';
                clase = 'danger';
                icono = 'x-octagon-fill';
            } else {
                estado = 'Alto';
                clase = 'warning';
                icono = 'exclamation-triangle-fill';
            }
            accionCorrectiva.style.display = 'block';
        }
        
        estadoPreview.innerHTML = `
            <div class="alert alert-${clase} mb-0">
                <i class="bi bi-${icono} me-2"></i>
                <strong>Estado: ${estado}</strong>
                ${estado !== 'Normal' ? '<br><small>Se requiere documentar acción correctiva</small>' : ''}
            </div>
        `;
    }
    
    async function cargarUltimosRegistros(equipoId) {
        if (!equipoId) {
            ultimosRegistros.innerHTML = '<p class="text-muted text-center">Seleccione un equipo</p>';
            infoEquipo.style.display = 'none';
            return;
        }
        
        try {
            const response = await fetch(`get_registros.php?equipo_id=${equipoId}&limit=5`);
            const data = await response.json();
            
            if (data.registros && data.registros.length > 0) {
                let html = '<div class="list-group list-group-flush">';
                data.registros.forEach(r => {
                    const clase = r.estado === 'Normal' ? 'success' : (r.estado === 'Critico' ? 'danger' : 'warning');
                    html += `
                        <div class="list-group-item d-flex justify-content-between align-items-center">
                            <div>
                                <small class="text-muted">${r.fecha} ${r.hora}</small><br>
                                <strong class="text-${clase}">${r.temperatura}°C</strong>
                            </div>
                            <span class="badge bg-${clase}">${r.estado}</span>
                        </div>
                    `;
                });
                html += '</div>';
                ultimosRegistros.innerHTML = html;
            } else {
                ultimosRegistros.innerHTML = '<p class="text-muted text-center">No hay registros previos</p>';
            }
            
            if (data.equipo) {
                equipoDetalle.innerHTML = `
                    <p><strong>Tipo:</strong> ${data.equipo.tipo}</p>
                    <p><strong>Ubicación:</strong> ${data.equipo.ubicacion || 'N/A'}</p>
                    <p><strong>Marca/Modelo:</strong> ${data.equipo.marca || 'N/A'} ${data.equipo.modelo || ''}</p>
                    <p><strong>Rango:</strong> <span class="text-success">${data.equipo.temp_minima}°C a ${data.equipo.temp_maxima}°C</span></p>
                `;
                infoEquipo.style.display = 'block';
            }
        } catch (error) {
            console.error('Error:', error);
        }
    }
    
    equipoSelect.addEventListener('change', function() {
        evaluarTemperatura();
        cargarUltimosRegistros(this.value);
    });
    
    tempInput.addEventListener('input', evaluarTemperatura);
    
    // Cargar datos si hay equipo preseleccionado
    if (equipoSelect.value) {
        cargarUltimosRegistros(equipoSelect.value);
        evaluarTemperatura();
    }
});
</script>

<?php require_once __DIR__ . '/../../includes/footer.php'; ?>
