<?php
$pageTitle = 'Gestión de Equipos';
require_once __DIR__ . '/../../config/config.php';
requireLogin();

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

// Procesar formulario
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $action = $_POST['action'] ?? '';
    
    if ($action === 'create') {
        $codigo = sanitize($_POST['codigo']);
        $nombre = sanitize($_POST['nombre']);
        $tipo = $_POST['tipo'];
        $ubicacion = sanitize($_POST['ubicacion']);
        $marca = sanitize($_POST['marca']);
        $modelo = sanitize($_POST['modelo']);
        $serie = sanitize($_POST['serie']);
        $temp_minima = floatval($_POST['temp_minima']);
        $temp_maxima = floatval($_POST['temp_maxima']);
        
        // Verificar código único
        $stmt = $db->prepare("SELECT id FROM equipos_refrigeracion WHERE codigo = ?");
        $stmt->execute([$codigo]);
        if ($stmt->fetch()) {
            $error = "Ya existe un equipo con ese código";
        } else {
            try {
                $stmt = $db->prepare("INSERT INTO equipos_refrigeracion 
                    (codigo, nombre, tipo, ubicacion, marca, modelo, serie, temp_minima, temp_maxima)
                    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
                $stmt->execute([$codigo, $nombre, $tipo, $ubicacion, $marca, $modelo, $serie, $temp_minima, $temp_maxima]);
                $mensaje = "Equipo creado exitosamente";
            } catch (Exception $e) {
                $error = "Error al crear equipo: " . $e->getMessage();
            }
        }
    }
    elseif ($action === 'update') {
        $id = intval($_POST['id']);
        $codigo = sanitize($_POST['codigo']);
        $nombre = sanitize($_POST['nombre']);
        $tipo = $_POST['tipo'];
        $ubicacion = sanitize($_POST['ubicacion']);
        $marca = sanitize($_POST['marca']);
        $modelo = sanitize($_POST['modelo']);
        $serie = sanitize($_POST['serie']);
        $temp_minima = floatval($_POST['temp_minima']);
        $temp_maxima = floatval($_POST['temp_maxima']);
        
        try {
            $stmt = $db->prepare("UPDATE equipos_refrigeracion SET
                codigo = ?, nombre = ?, tipo = ?, ubicacion = ?, marca = ?, modelo = ?, 
                serie = ?, temp_minima = ?, temp_maxima = ?
                WHERE id = ?");
            $stmt->execute([$codigo, $nombre, $tipo, $ubicacion, $marca, $modelo, $serie, $temp_minima, $temp_maxima, $id]);
            $mensaje = "Equipo actualizado exitosamente";
        } catch (Exception $e) {
            $error = "Error al actualizar: " . $e->getMessage();
        }
    }
    elseif ($action === 'toggle') {
        $id = intval($_POST['id']);
        $stmt = $db->prepare("UPDATE equipos_refrigeracion SET activo = NOT activo WHERE id = ?");
        $stmt->execute([$id]);
        $mensaje = "Estado del equipo actualizado";
    }
    elseif ($action === 'delete') {
        $id = intval($_POST['id']);
        
        // Verificar si tiene registros
        $stmt = $db->prepare("SELECT COUNT(*) FROM registros_temperatura WHERE equipo_id = ?");
        $stmt->execute([$id]);
        $count = $stmt->fetchColumn();
        
        if ($count > 0) {
            $error = "No se puede eliminar el equipo porque tiene $count registros de temperatura. Puede desactivarlo en su lugar.";
        } else {
            try {
                $stmt = $db->prepare("DELETE FROM equipos_refrigeracion WHERE id = ?");
                $stmt->execute([$id]);
                $mensaje = "Equipo eliminado exitosamente";
            } catch (Exception $e) {
                $error = "Error al eliminar: " . $e->getMessage();
            }
        }
    }
}
// Obtener equipos
$equipos = $db->query("
    SELECT e.*, 
           (SELECT COUNT(*) FROM registros_temperatura WHERE equipo_id = e.id) as total_registros,
           (SELECT MAX(fecha) FROM registros_temperatura WHERE equipo_id = e.id) as ultimo_registro
    FROM equipos_refrigeracion e
    ORDER BY e.activo DESC, e.tipo, e.nombre
")->fetchAll();

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">Equipos</li>
            </ol>
        </nav>
        <div class="d-flex justify-content-between align-items-center">
            <h2><i class="bi bi-box-seam me-2"></i>Gestión de Equipos de Refrigeración</h2>
            <button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#modalEquipo" onclick="nuevoEquipo()">
                <i class="bi bi-plus-lg"></i> Nuevo Equipo
            </button>
        </div>
    </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; ?>

<!-- Lista de equipos -->
<div class="row">
    <?php foreach ($equipos as $eq): ?>
    <div class="col-md-6 mb-4">
        <div class="card <?= !$eq['activo'] ? 'border-secondary opacity-50' : '' ?>">
            <div class="card-header d-flex justify-content-between align-items-center
                        <?= $eq['tipo'] == 'Refrigeradora' ? 'bg-primary text-white' : 'bg-info text-white' ?>">
                <h5 class="mb-0">
                    <?= $eq['tipo'] == 'Refrigeradora' ? '🧊' : '❄️' ?>
                    <?= htmlspecialchars($eq['nombre']) ?>
                </h5>
                <div>
                    <?php if (!$eq['activo']): ?>
                    <span class="badge bg-secondary me-2">Inactivo</span>
                    <?php endif; ?>
                    <span class="badge bg-light text-dark"><?= $eq['codigo'] ?></span>
                </div>
            </div>
            <div class="card-body">
                <div class="row">
                    <div class="col-6">
                        <p class="mb-1"><strong>Tipo:</strong> <?= $eq['tipo'] ?></p>
                        <p class="mb-1"><strong>Ubicación:</strong> <?= $eq['ubicacion'] ?? 'N/A' ?></p>
                        <p class="mb-1"><strong>Marca:</strong> <?= $eq['marca'] ?? 'N/A' ?></p>
                        <p class="mb-1"><strong>Modelo:</strong> <?= $eq['modelo'] ?? 'N/A' ?></p>
                    </div>
                    <div class="col-6">
                        <p class="mb-1"><strong>Serie:</strong> <?= $eq['serie'] ?? 'N/A' ?></p>
                        <p class="mb-1"><strong>Rango:</strong> 
                            <span class="text-success fw-bold"><?= $eq['temp_minima'] ?>°C a <?= $eq['temp_maxima'] ?>°C</span>
                        </p>
                        <p class="mb-1"><strong>Registros:</strong> <?= number_format($eq['total_registros']) ?></p>
                        <p class="mb-1"><strong>Último:</strong> 
                            <?= $eq['ultimo_registro'] ? date('d/m/Y', strtotime($eq['ultimo_registro'])) : 'Nunca' ?>
                        </p>
                    </div>
                </div>
            </div>
            <div class="card-footer">
                <div class="btn-group btn-group-sm">
                    <button class="btn btn-outline-primary" onclick="editarEquipo(<?= htmlspecialchars(json_encode($eq)) ?>)">
                        <i class="bi bi-pencil"></i> Editar
                    </button>
                    <a href="historial.php?equipo_id=<?= $eq['id'] ?>" class="btn btn-outline-info">
                        <i class="bi bi-clock-history"></i> Historial
                    </a>
                    <a href="reportes.php?equipo_id=<?= $eq['id'] ?>" class="btn btn-outline-success">
                        <i class="bi bi-graph-up"></i> Reporte
                    </a>
                    <form method="POST" style="display: inline;">
                        <input type="hidden" name="action" value="toggle">
                        <input type="hidden" name="id" value="<?= $eq['id'] ?>">
                        <button type="submit" class="btn btn-outline-<?= $eq['activo'] ? 'warning' : 'success' ?>">
                            <i class="bi bi-<?= $eq['activo'] ? 'pause' : 'play' ?>"></i>
                            <?= $eq['activo'] ? 'Desactivar' : 'Activar' ?>
                        </button>
                    </form>
                    <?php if ($eq['total_registros'] == 0): ?>
                    <button type="button" class="btn btn-outline-danger" 
                            onclick="eliminarEquipo(<?= $eq['id'] ?>, '<?= htmlspecialchars($eq['nombre'], ENT_QUOTES) ?>')">
                        <i class="bi bi-trash"></i> Eliminar
                    </button>
                    <?php endif; ?>
                </div>
            </div>
        </div>
    </div>
    <?php endforeach; ?>
</div>

<?php if (empty($equipos)): ?>
<div class="alert alert-info text-center">
    <i class="bi bi-info-circle me-2"></i>
    No hay equipos registrados. Haga clic en "Nuevo Equipo" para comenzar.
</div>
<?php endif; ?>

<!-- Modal Equipo -->
<div class="modal fade" id="modalEquipo" tabindex="-1">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <form method="POST" id="formEquipo">
                <input type="hidden" name="action" id="formAction" value="create">
                <input type="hidden" name="id" id="equipoId">
                
                <div class="modal-header">
                    <h5 class="modal-title" id="modalTitle">
                        <i class="bi bi-box-seam me-2"></i>Nuevo Equipo
                    </h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                </div>
                
                <div class="modal-body">
                    <div class="row">
                        <div class="col-md-4">
                            <div class="mb-3">
                                <label class="form-label">Código *</label>
                                <input type="text" name="codigo" id="codigo" class="form-control" required
                                       placeholder="REF-001">
                            </div>
                        </div>
                        <div class="col-md-4">
                            <div class="mb-3">
                                <label class="form-label">Tipo *</label>
                                <select name="tipo" id="tipo" class="form-select" required onchange="actualizarRangos()">
                                    <option value="Refrigeradora">🧊 Refrigeradora</option>
                                    <option value="Congelador">❄️ Congelador</option>
                                </select>
                            </div>
                        </div>
                        <div class="col-md-4">
                            <div class="mb-3">
                                <label class="form-label">Ubicación</label>
                                <input type="text" name="ubicacion" id="ubicacion" class="form-control"
                                       placeholder="Laboratorio Principal">
                            </div>
                        </div>
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Nombre del Equipo *</label>
                        <input type="text" name="nombre" id="nombre" class="form-control" required
                               placeholder="Refrigeradora de Reactivos">
                    </div>
                    
                    <div class="row">
                        <div class="col-md-4">
                            <div class="mb-3">
                                <label class="form-label">Marca</label>
                                <input type="text" name="marca" id="marca" class="form-control">
                            </div>
                        </div>
                        <div class="col-md-4">
                            <div class="mb-3">
                                <label class="form-label">Modelo</label>
                                <input type="text" name="modelo" id="modelo" class="form-control">
                            </div>
                        </div>
                        <div class="col-md-4">
                            <div class="mb-3">
                                <label class="form-label">Número de Serie</label>
                                <input type="text" name="serie" id="serie" class="form-control">
                            </div>
                        </div>
                    </div>
                    
                    <div class="card bg-light">
                        <div class="card-body">
                            <h6><i class="bi bi-thermometer-half me-2"></i>Rango de Temperatura Aceptable</h6>
                            <div class="row">
                                <div class="col-md-6">
                                    <label class="form-label">Temperatura Mínima (°C) *</label>
                                    <input type="number" name="temp_minima" id="temp_minima" class="form-control" 
                                           step="0.1" required value="2">
                                </div>
                                <div class="col-md-6">
                                    <label class="form-label">Temperatura Máxima (°C) *</label>
                                    <input type="number" name="temp_maxima" id="temp_maxima" class="form-control" 
                                           step="0.1" required value="8">
                                </div>
                            </div>
                            <small class="text-muted mt-2 d-block" id="rangoSugerido">
                                Refrigeradoras: 2°C a 8°C | Congeladores: -25°C a -15°C
                            </small>
                        </div>
                    </div>
                </div>
                
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
                    <button type="submit" class="btn btn-primary">
                        <i class="bi bi-save me-1"></i> Guardar
                    </button>
                </div>
            </form>
        </div>
    </div>
</div>

<script>
function nuevoEquipo() {
    document.getElementById('formAction').value = 'create';
    document.getElementById('modalTitle').innerHTML = '<i class="bi bi-box-seam me-2"></i>Nuevo Equipo';
    document.getElementById('formEquipo').reset();
    actualizarRangos();
}

function editarEquipo(equipo) {
    document.getElementById('formAction').value = 'update';
    document.getElementById('modalTitle').innerHTML = '<i class="bi bi-pencil me-2"></i>Editar Equipo';
    document.getElementById('equipoId').value = equipo.id;
    document.getElementById('codigo').value = equipo.codigo;
    document.getElementById('nombre').value = equipo.nombre;
    document.getElementById('tipo').value = equipo.tipo;
    document.getElementById('ubicacion').value = equipo.ubicacion || '';
    document.getElementById('marca').value = equipo.marca || '';
    document.getElementById('modelo').value = equipo.modelo || '';
    document.getElementById('serie').value = equipo.serie || '';
    document.getElementById('temp_minima').value = equipo.temp_minima;
    document.getElementById('temp_maxima').value = equipo.temp_maxima;
    
    new bootstrap.Modal(document.getElementById('modalEquipo')).show();
}

function actualizarRangos() {
    const tipo = document.getElementById('tipo').value;
    const minInput = document.getElementById('temp_minima');
    const maxInput = document.getElementById('temp_maxima');
    
    // Solo actualizar si está vacío o es un nuevo equipo
    if (document.getElementById('formAction').value === 'create') {
        if (tipo === 'Refrigeradora') {
            minInput.value = 2;
            maxInput.value = 8;
        } else {
            minInput.value = -25;
            maxInput.value = -15;
        }
    }
}

function eliminarEquipo(id, nombre) {
    if (confirm('¿Está seguro de eliminar el equipo "' + nombre + '"?\n\nEsta acción no se puede deshacer.')) {
        document.getElementById('deleteEquipoId').value = id;
        document.getElementById('formDelete').submit();
    }
}
</script>

<!-- Form oculto para eliminar -->
<form method="POST" id="formDelete" style="display: none;">
    <input type="hidden" name="action" value="delete">
    <input type="hidden" name="id" id="deleteEquipoId">
</form>

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