<?php
session_start();

// ==============================================
// CONFIGURACIÓN INICIAL Y SEGURIDAD
// ==============================================

error_reporting(E_ALL);
ini_set('display_errors', 1);

// Verificación de sesión (comentado para demo)
/*
if (!isset($_SESSION['rol'])) {
    header("Location: ../indexUsuario.php");
    exit();
}

$rol = $_SESSION['rol'];
if ($rol != "administrador") {
    header("Location: ../indexUsuario.php");
    exit();
}
*/

// Para demo, usar valores por defecto
$nombre = $_SESSION['nombre'] ?? 'Admin';
$apellido = $_SESSION['apellido'] ?? 'Usuario';

// ==============================================
// MANEJO DEL ARCHIVO DE SERVICIOS
// ==============================================

$archivo_servicios = __DIR__ . '/servicios.json';
error_log("Ruta del archivo: " . $archivo_servicios);
$servicios = [];

// Función para registrar eventos
function registrarEvento($mensaje, $tipo = 'INFO') {
    $log = "[" . date('Y-m-d H:i:s') . "] [$tipo] " . $mensaje . PHP_EOL;
    file_put_contents(__DIR__ . '/servicios.log', $log, FILE_APPEND);
}

// Verificación y creación del archivo de servicios
try {
    if (!file_exists($archivo_servicios)) {
        registrarEvento("Archivo de servicios no encontrado. Creando nuevo archivo...");
        if (file_put_contents($archivo_servicios, '[]') === false) {
            throw new Exception("No se pudo crear el archivo de servicios");
        }
        chmod($archivo_servicios, 0644);
        registrarEvento("Archivo creado exitosamente con permisos 0644");
    }

    // Verificación de permisos
    if (!is_writable($archivo_servicios)) {
        registrarEvento("Archivo no tiene permisos de escritura. Intentando corregir...", "WARNING");
        if (!chmod($archivo_servicios, 0644)) {
            throw new Exception("No se pueden cambiar los permisos del archivo a 0644");
        }
    }

    // Carga segura de servicios
    registrarEvento("Cargando contenido del archivo de servicios...");
    $contenido = file_get_contents($archivo_servicios);
    if ($contenido === false) {
        throw new Exception("Error al leer el archivo de servicios");
    }

    $servicios = json_decode($contenido, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        throw new Exception("Error en formato JSON: " . json_last_error_msg());
    }

    if (!is_array($servicios)) {
        $servicios = [];
    }
    
    registrarEvento("Servicios cargados correctamente. Total: " . count($servicios));

} catch (Exception $e) {
    registrarEvento("Error inicial: " . $e->getMessage(), "ERROR");
    $_SESSION['error'] = $e->getMessage();
}

// ==============================================
// PROCESAMIENTO DE FORMULARIOS
// ==============================================

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    registrarEvento("Inicio de procesamiento de formulario POST", "DEBUG");
    
    try {
        $accion = $_POST['accion'] ?? '';
        registrarEvento("Acción recibida: " . $accion, "DEBUG");

        if (empty($accion)) {
            throw new Exception("Acción no especificada");
        }

        switch ($accion) {
            case 'agregar':
                $nuevoServicio = [
                    'id' => uniqid('srv_', true),
                    'nombre' => trim($_POST['nombre'] ?? ''),
                    'descripcion' => trim($_POST['descripcion'] ?? ''),
                    'precio' => (float) str_replace(['.', ','], ['', '.'], $_POST['precio'] ?? '0'),
                    'fecha_creacion' => date('Y-m-d H:i:s'),
                    'creado_por' => $nombre . ' ' . $apellido
                ];

                // Validación profesional
                $errores = [];
                if (empty($nuevoServicio['nombre'])) {
                    $errores[] = "El nombre del servicio es obligatorio";
                } elseif (strlen($nuevoServicio['nombre']) > 100) {
                    $errores[] = "El nombre no puede exceder 100 caracteres";
                }

                if (!is_numeric($nuevoServicio['precio']) || $nuevoServicio['precio'] <= 0) {
                    $errores[] = "El precio debe ser un número positivo mayor a cero";
                }

                if (empty($nuevoServicio['descripcion'])) {
                    $errores[] = "La descripción es obligatoria";
                }

                if (!empty($errores)) {
                    throw new Exception(implode("<br>", $errores));
                }

                $servicios[] = $nuevoServicio;
                registrarEvento("Nuevo servicio preparado: " . json_encode($nuevoServicio), "DEBUG");
                break;

            case 'editar':
                $id = $_POST['id'] ?? '';
                $index = -1;
                
                // Buscar el servicio por ID
                foreach ($servicios as $i => $servicio) {
                    if ($servicio['id'] === $id) {
                        $index = $i;
                        break;
                    }
                }
                
                if ($index === -1) {
                    throw new Exception("Servicio no encontrado");
                }

                $servicioEditado = [
                    'nombre' => trim($_POST['nombre'] ?? ''),
                    'descripcion' => trim($_POST['descripcion'] ?? ''),
                    'precio' => (float) str_replace(['.', ','], ['', '.'], $_POST['precio'] ?? '0'),
                    'fecha_modificacion' => date('Y-m-d H:i:s'),
                    'modificado_por' => $nombre . ' ' . $apellido
                ];

                // Validación
                if (empty($servicioEditado['nombre'])) {
                    throw new Exception("El nombre del servicio es obligatorio");
                }

                if (!is_numeric($servicioEditado['precio']) || $servicioEditado['precio'] <= 0) {
                    throw new Exception("El precio debe ser un número positivo mayor a cero");
                }

                if (empty($servicioEditado['descripcion'])) {
                    throw new Exception("La descripción es obligatoria");
                }

                // Mantener datos existentes y actualizar solo los modificados
                $servicios[$index] = array_merge($servicios[$index], $servicioEditado);
                registrarEvento("Servicio editado - ID: $id - Datos: " . json_encode($servicioEditado), "DEBUG");
                break;

            case 'eliminar':
                $id = $_POST['id'] ?? '';
                $index = -1;
                
                // Buscar el servicio por ID
                foreach ($servicios as $i => $servicio) {
                    if ($servicio['id'] === $id) {
                        $index = $i;
                        break;
                    }
                }
                
                if ($index === -1) {
                    throw new Exception("Servicio no encontrado");
                }

                $eliminado = array_splice($servicios, $index, 1);
                registrarEvento("Servicio eliminado - ID: $id - Datos: " . json_encode($eliminado), "DEBUG");
                break;

            default:
                throw new Exception("Acción no reconocida: " . htmlspecialchars($accion));
        }

        // Guardado seguro con bloqueo
        registrarEvento("Preparando para guardar " . count($servicios) . " servicios", "DEBUG");
        
        $json_data = json_encode($servicios, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
        if ($json_data === false) {
            throw new Exception("Error al codificar JSON: " . json_last_error_msg());
        }

        $resultado = file_put_contents($archivo_servicios, $json_data, LOCK_EX);
        if ($resultado === false) {
            $error = error_get_last();
            throw new Exception("Error al guardar: " . ($error['message'] ?? 'Error desconocido'));
        }

        registrarEvento("Archivo guardado exitosamente. Bytes escritos: $resultado", "INFO");

        // Mensajes de éxito contextuales
        $mensajesExito = [
            'agregar' => "Servicio agregado correctamente",
            'editar' => "Servicio actualizado correctamente",
            'eliminar' => "Servicio eliminado correctamente"
        ];
        
        $_SESSION['mensaje'] = "✅ " . ($mensajesExito[$accion] ?? "Operación completada");
        
    } catch (Exception $e) {
        registrarEvento("Error durante procesamiento: " . $e->getMessage(), "ERROR");
        $_SESSION['error'] = "⚠️ Error: " . $e->getMessage();
    }

    header("Location: servicios.php");
    exit();
}

// ==============================================
// PREPARACIÓN PARA LA VISTA
// ==============================================

// Preparar mensajes para la vista
$mensaje = $_SESSION['mensaje'] ?? '';
$error = $_SESSION['error'] ?? '';
unset($_SESSION['mensaje'], $_SESSION['error']);
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Administrar Servicios - Jaziz Biológico</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"/>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css" rel="stylesheet"/>
    <style>
        :root {
            --primary-color: #1e40af;
            --primary-dark: #1e3a8a;
            --success-color: #059669;
            --danger-color: #dc2626;
            --warning-color: #d97706;
            --info-color: #0284c7;
            --gray-50: #f9fafb;
            --gray-100: #f3f4f6;
            --gray-200: #e5e7eb;
            --gray-300: #d1d5db;
            --gray-500: #6b7280;
            --gray-600: #4b5563;
            --gray-700: #374151;
            --gray-800: #1f2937;
            --gray-900: #111827;
        }

        * {
            box-sizing: border-box;
        }

        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
            background-color: var(--gray-100);
            margin: 0;
            padding: 0;
            line-height: 1.6;
        }

        .main-container {
            display: flex;
            min-height: 100vh;
        }

        /* Sidebar Styles */
        .sidebar {
            width: 280px;
            background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-dark) 100%);
            color: white;
            position: fixed;
            height: 100vh;
            left: 0;
            top: 0;
            transform: translateX(-100%);
            transition: transform 0.3s ease;
            z-index: 1000;
            overflow-y: auto;
        }

        .sidebar.open {
            transform: translateX(0);
        }

        .sidebar-logo {
            padding: 2rem 1.5rem;
            text-align: center;
            border-bottom: 1px solid rgba(255, 255, 255, 0.1);
        }

        .sidebar-logo img {
            max-width: 160px;
            height: auto;
        }

        .sidebar-nav {
            padding: 1rem 0;
        }

        .sidebar-nav a {
            display: flex;
            align-items: center;
            padding: 0.875rem 1.5rem;
            color: rgba(255, 255, 255, 0.8);
            text-decoration: none;
            transition: all 0.3s ease;
            border-left: 3px solid transparent;
        }

        .sidebar-nav a:hover,
        .sidebar-nav a.active {
            background-color: rgba(255, 255, 255, 0.1);
            color: white;
            border-left-color: white;
        }

        .sidebar-nav a i {
            margin-right: 0.75rem;
            font-size: 1.1rem;
            width: 20px;
        }

        /* Main Content */
        .main-content {
            flex: 1;
            margin-left: 0;
            transition: margin-left 0.3s ease;
            width: 100%;
        }

        /* Header */
        .header {
            background: white;
            padding: 1rem 1.5rem;
            border-bottom: 1px solid var(--gray-200);
            display: flex;
            justify-content: space-between;
            align-items: center;
            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
        }

        .header-left {
            display: flex;
            align-items: center;
            gap: 1rem;
        }

        .menu-toggle {
            background: none;
            border: none;
            font-size: 1.5rem;
            color: var(--gray-600);
            cursor: pointer;
            padding: 0.5rem;
            border-radius: 0.375rem;
            transition: background-color 0.2s;
        }

        .menu-toggle:hover {
            background-color: var(--gray-100);
        }

        .header-title {
            font-size: 1.5rem;
            font-weight: 600;
            color: var(--gray-800);
            margin: 0;
        }

        .header-right {
            display: flex;
            align-items: center;
            gap: 1rem;
        }

        .user-info {
            display: flex;
            align-items: center;
            gap: 0.5rem;
        }

        .user-avatar {
            width: 32px;
            height: 32px;
            border-radius: 50%;
            background-color: var(--gray-300);
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .logout-btn {
            background: none;
            border: 1px solid var(--danger-color);
            color: var(--danger-color);
            padding: 0.5rem 1rem;
            border-radius: 0.375rem;
            text-decoration: none;
            font-size: 0.875rem;
            transition: all 0.2s;
        }

        .logout-btn:hover {
            background-color: var(--danger-color);
            color: white;
        }

        /* Content Area */
        .content {
            padding: 2rem;
            max-width: 1200px;
            margin: 0 auto;
            width: 100%;
        }

        /* Alerts */
        .alert {
            padding: 1rem;
            border-radius: 0.5rem;
            margin-bottom: 1.5rem;
            border-left: 4px solid;
            display: flex;
            align-items: center;
            gap: 0.75rem;
        }

        .alert-success {
            background-color: #ecfdf5;
            border-left-color: var(--success-color);
            color: #065f46;
        }

        .alert-error {
            background-color: #fef2f2;
            border-left-color: var(--danger-color);
            color: #991b1b;
        }

        .alert-close {
            margin-left: auto;
            background: none;
            border: none;
            font-size: 1.25rem;
            cursor: pointer;
            color: inherit;
            opacity: 0.7;
        }

        .alert-close:hover {
            opacity: 1;
        }

        /* Cards */
        .card {
            background: white;
            border-radius: 0.75rem;
            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
            margin-bottom: 2rem;
            overflow: hidden;
            width: 100%;
        }

        .card-header {
            background: var(--primary-color);
            color: white;
            padding: 1.25rem 1.5rem;
            font-weight: 600;
            font-size: 1.125rem;
        }

        .card-body {
            padding: 1.5rem;
        }

        /* Forms */
        .form-group {
            margin-bottom: 1.5rem;
        }

        .form-label {
            display: block;
            margin-bottom: 0.5rem;
            font-weight: 500;
            color: var(--gray-700);
        }

        .form-control {
            width: 100%;
            padding: 0.75rem;
            border: 1px solid var(--gray-300);
            border-radius: 0.5rem;
            font-size: 1rem;
            transition: border-color 0.2s, box-shadow 0.2s;
        }

        .form-control:focus {
            outline: none;
            border-color: var(--primary-color);
            box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.1);
        }

        .form-control.is-invalid {
            border-color: var(--danger-color);
        }

        .invalid-feedback {
            color: var(--danger-color);
            font-size: 0.875rem;
            margin-top: 0.25rem;
        }

        .input-group {
            display: flex;
        }

        .input-group-text {
            background-color: var(--gray-50);
            border: 1px solid var(--gray-300);
            border-right: none;
            padding: 0.75rem;
            border-radius: 0.5rem 0 0 0.5rem;
            color: var(--gray-500);
        }

        .input-group .form-control {
            border-radius: 0 0.5rem 0.5rem 0;
        }

        /* Buttons */
        .btn {
            display: inline-flex;
            align-items: center;
            gap: 0.5rem;
            padding: 0.75rem 1.5rem;
            border: none;
            border-radius: 0.5rem;
            font-weight: 500;
            text-decoration: none;
            cursor: pointer;
            transition: all 0.2s;
            font-size: 0.875rem;
        }

        .btn-primary {
            background-color: var(--primary-color);
            color: white;
        }

        .btn-primary:hover {
            background-color: var(--primary-dark);
        }

        .btn-success {
            background-color: var(--success-color);
            color: white;
        }

        .btn-success:hover {
            background-color: #047857;
        }

        .btn-danger {
            background-color: var(--danger-color);
            color: white;
        }

        .btn-danger:hover {
            background-color: #b91c1c;
        }

        .btn-secondary {
            background-color: var(--gray-500);
            color: white;
        }

        .btn-secondary:hover {
            background-color: var(--gray-600);
        }

        .btn-sm {
            padding: 0.5rem 1rem;
            font-size: 0.8rem;
        }

        /* Grid */
        .row {
            display: flex;
            flex-wrap: wrap;
            margin: -0.75rem;
        }

        .col {
            flex: 1;
            padding: 0.75rem;
        }

        .col-md-6 {
            flex: 0 0 50%;
            max-width: 50%;
            padding: 0.75rem;
        }

        .col-md-4 {
            flex: 0 0 33.333333%;
            max-width: 33.333333%;
            padding: 0.75rem;
        }

        /* Service Cards */
        .services-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
            gap: 1.5rem;
            margin-top: 1.5rem;
        }

        .service-card {
            background: white;
            border-radius: 0.75rem;
            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
            padding: 1.5rem;
            transition: transform 0.2s, box-shadow 0.2s;
        }

        .service-card:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
        }

        .service-header {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            margin-bottom: 1rem;
        }

        .service-title {
            font-size: 1.25rem;
            font-weight: 600;
            color: var(--gray-800);
            margin: 0;
        }

        .price-badge {
            background-color: var(--success-color);
            color: white;
            padding: 0.375rem 0.75rem;
            border-radius: 9999px;
            font-weight: 600;
            font-size: 0.875rem;
        }

        .service-description {
            color: var(--gray-600);
            margin-bottom: 1rem;
            line-height: 1.6;
        }

        .service-meta {
            font-size: 0.75rem;
            color: var(--gray-500);
            border-top: 1px solid var(--gray-200);
            padding-top: 1rem;
            margin-bottom: 1rem;
        }

        .service-actions {
            display: flex;
            gap: 0.75rem;
        }

        .edit-form {
            background-color: var(--gray-50);
            padding: 1.5rem;
            border-radius: 0.5rem;
            margin-top: 1rem;
            display: none;
        }

        .edit-form.show {
            display: block;
        }

        /* Empty State */
        .empty-state {
            text-align: center;
            padding: 3rem 2rem;
            background: white;
            border-radius: 0.75rem;
            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
            width: 100%;
        }

        .empty-state-icon {
            width: 64px;
            height: 64px;
            background-color: var(--info-color);
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            margin: 0 auto 1rem;
            color: white;
            font-size: 2rem;
        }

        .empty-state h3 {
            color: var(--gray-800);
            margin-bottom: 0.5rem;
        }

        .empty-state p {
            color: var(--gray-600);
        }

        /* Overlay */
        .overlay {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background-color: rgba(0, 0, 0, 0.5);
            z-index: 999;
            display: none;
        }

        .overlay.show {
            display: block;
        }

        /* Responsive */
        @media (min-width: 1024px) {
            .sidebar {
                position: fixed;
                transform: translateX(0);
            }

            .main-content {
                margin-left: 280px;
            }

            .menu-toggle {
                display: none;
            }
        }

        @media (max-width: 1023px) {
            .content {
                padding: 1.5rem;
            }
            
            .card-body {
                padding: 1rem;
            }
            
            .services-grid {
                grid-template-columns: 1fr;
            }
            
            .service-card {
                padding: 1rem;
            }
            
            .service-actions {
                flex-direction: column;
            }
            
            .btn {
                width: 100%;
                justify-content: center;
            }
        }

        @media (max-width: 768px) {
            .content {
                padding: 1rem;
            }
            
            .col-md-6,
            .col-md-4 {
                flex: 0 0 100%;
                max-width: 100%;
            }
            
            .header {
                padding: 0.75rem;
            }
            
            .user-info span {
                display: none;
            }
            
            .empty-state {
                padding: 2rem 1rem;
            }
        }

        @media (max-width: 480px) {
            .content {
                padding: 0.75rem;
            }
            
            .card-header {
                padding: 1rem;
            }
            
            .service-header {
                flex-direction: column;
                gap: 0.5rem;
            }
            
            .price-badge {
                align-self: flex-start;
            }
        }

        /* Loading */
        .loading {
            display: flex;
            align-items: center;
            justify-content: center;
            min-height: 200px;
        }

        .spinner {
            width: 40px;
            height: 40px;
            border: 4px solid var(--gray-200);
            border-top: 4px solid var(--primary-color);
            border-radius: 50%;
            animation: spin 1s linear infinite;
        }

        @keyframes spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }

        /* Estilos para el menú móvil */
        .navbar-toggler {
            border: none;
            background-color: #3498db;
            padding: 0.5rem 0.7rem;
            border-radius: 5px;
        }

        .navbar-toggler-icon {
            background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255,1)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E");
            background-size: cover;
            width: 24px;
            height: 24px;
        }

        #navbar-nav-icons {
            background: #3498db;
            border-color: #2980b9;
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
            border-radius: 5px;
            margin-top: 5px;
            padding: 5px 0;
        }

        #navbar-nav-icons .nav-item a {
            color: white !important;
            font-weight: 500;
            transition: background-color 0.3s ease, color 0.3s ease;
            padding: 0.75rem 1.5rem;
        }

        #navbar-nav-icons .nav-item a:hover,
        #navbar-nav-icons .nav-item a:focus {
            background-color: #ecf0f1;
            color: #1a1a1a !important;
        }
        #sidebar-container {
            background-color: #0b1c58 !important;
        }

        /* Avatar icono para cerrar sesión móvil */
        .avatar {
            width: 32px;
            height: 32px;
            object-fit: cover;
            border-radius: 50%;
            margin-right: 8px;
            vertical-align: middle;
        }

        .btn-cerrarsesion {
            font-weight: 400;
            font-size: 0.85rem;
            color: #ddd;
            margin-left: 5px;
        }

        .btn-cerrarsesion:hover {
            color: #fff;
            text-decoration: underline;
        }

        @media (max-width: 991.98px) {
            #sidebar-container {
                display: none;
            }
            
            .navbar-collapse {
                background-color: #ffffff;
                border-radius: 10px;
                margin-top: 10px;
                padding: 1rem;
            }
            
            .container-fluid {
                padding-left: 15px !important;
                padding-right: 15px !important;
            }
        }

        @media (min-width: 992px) {
            .navbar-toggler {
                display: none;
            }
            
            .navbar-collapse {
                display: none !important;
            }
        }
    </style>
</head>

<body>
    <div class="overlay" id="overlay"></div>
    
    <div class="main-container">
        <!-- Sidebar - Hidden on mobile -->
        <div id="sidebar-container" class="bg-primary text-white d-flex flex-column d-none d-lg-block">
            <div class="logo text-center p-3">
                <img id="logo" src="../imagenes/logo-jaziz_sf.png" alt="Logo Jaziz Biológico" style="max-width: 180px;" />
            </div>
            <div class="menu flex-grow-1">
               <a href="reporte.php" class="d-block text-light p-3"><i class="bi bi-file-earmark-text-fill me-2 lead"></i>Reportes</a>

                <a href="calendario.php" class="d-block text-light p-3"><i class="bi bi-calendar me-2 lead"></i>Calendario</a>
                
                <a href="usuarios.php" class="d-block text-light p-3"><i class="bi bi-people-fill me-2 lead"></i>Usuarios y empresa</a>
                
                <a href="mecanismo.php" class="d-block text-light p-3"><i class="bi bi-gear-fill me-2 lead"></i>Mecanismos</a>
                
                <a href="sustancias.php" class="d-block text-light p-3"><i class="bi bi-droplet-half me-2 lead"></i>Sustancias</a>
                
                <a href="crear_qr.php" class="d-block text-light p-3"><i class="bi bi-qr-code me-2 lead"></i>generador de QR</a>
                
                <a href="tipo_plagas.php" class="d-block text-light p-3"><i class="bi bi-bug-fill me-2 lead"></i>Tipo de plagas</a>
                
                <a href="facturas-electronica.php" class="d-block text-light p-3"><i class="bi bi-receipt me-2 lead"></i>Facturas eletronica</a>
                
                <a href="servicios.php" class="d-block text-white p-3 active"><i class="bi bi-tools me-2 lead"></i> Servicios</a>
            </div>
        </div>

        <!-- Main Content -->
        <div class="main-content">
            <!-- Mobile Menu - Only shown on mobile -->
            <nav class="navbar navbar-expand-lg border-bottom d-lg-none">
                <div class="container-fluid">
                    <span class="navbar-brand"></span>
                    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" 
                            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
                        <span class="navbar-toggler-icon"></span>
                    </button>
                    
                    <div class="collapse navbar-collapse" id="navbarSupportedContent">
                        <ul class="navbar-nav me-auto mb-2 mb-lg-0" id="navbar-nav-icons">
            
                            <li class="nav-item">
                               <a href="reporte.php" class="d-block text-light p-3"><i class="bi bi-file-earmark-text-fill me-2 lead"></i>Reportes</a>
                            </li>
                            <li class="nav-item">
                                <a href="calendario.php" class="d-block text-light p-3"><i class="bi bi-calendar me-2 lead"></i>Calendario</a>
                            </li>
                            <li class="nav-item">
                                <a href="usuarios.php" class="d-block text-light p-3"><i class="bi bi-people-fill me-2 lead"></i>Usuarios y empresa</a>
                            </li>
                            <li class="nav-item">
                                <a href="mecanismo.php" class="d-block text-light p-3"><i class="bi bi-gear-fill me-2 lead"></i>Mecanismos</a>
                            </li>
                            <li class="nav-item">
                                <a href="sustancias.php" class="d-block text-light p-3"><i class="bi bi-droplet-half me-2 lead"></i>Sustancias</a>
                            </li>
                            <li class="nav-item">
                                <a href="crear_qr.php" class="d-block text-light p-3"><i class="bi bi-qr-code me-2 lead"></i>generador de QR</a>
                            </li>
                             <li class="nav-item">
                                <a href="tipo_plagas.php" class="d-block text-light p-3"><i class="bi bi-bug-fill me-2 lead"></i>Tipo de plagas</a>
                            </li>
                             <li class="nav-item">
                                <a href="facturas-electronica.php" class="d-block text-light p-3"><i class="bi bi-receipt me-2 lead"></i>Facturas eletronica</a>
                            </li>
                            <li class="nav-item">
                                <a href="servicios.php" class="d-block text-dark p-3 active"><i class="bi bi-tools me-2 lead"></i>Servicios</a>
                            </li>
                        </ul>
                        
                        <ul class="navbar-nav ms-auto mb-2 mb-lg-0">
                            <li class="nav-item dropdown">
                                <a class="nav-link" href="../modelo/salir.php" role="button" aria-expanded="false">
                                    <img src="../imagenes/avatar.png" alt="imagen de usuario" class="img-fluid rounded-circle me-2 avatar">
                                    <span class="nombreUsuario"><?php echo htmlspecialchars($nombre . " " . $apellido) ?></span> 
                                    <span class="btn-cerrarsesion">(Cerrar Sesión)</span>
                                </a>
                            </li>
                        </ul>
                    </div>
                </div>
            </nav>

            <!-- Barra de navegación para desktop -->
            <nav class="navbar navbar-expand-lg border-bottom mb-3 d-none d-lg-flex">
                <div class="container-fluid">
                    <span class="navbar-brand h4">Administrar Servicios</span>
                    <ul class="navbar-nav ms-auto">
                        <li class="nav-item d-flex align-items-center">
                            <img src="../imagenes/avatar.png" alt="Avatar" class="avatar rounded-circle me-2"/>
                            <span><?php echo htmlspecialchars($nombre . ' ' . $apellido); ?> | </span>
                            <a href="../modelo/salir.php" class="ms-2 btn btn-sm btn-outline-danger">Cerrar Sesión</a>
                        </li>
                    </ul>
                </div>
            </nav>

            <!-- Content -->
            <main class="content">
                <!-- Alerts -->
                <?php if ($mensaje): ?>
                    <div class="alert alert-success" id="successAlert">
                        <i class="bi bi-check-circle-fill"></i>
                        <span><?php echo htmlspecialchars($mensaje); ?></span>
                        <button class="alert-close" onclick="closeAlert('successAlert')">
                            <i class="bi bi-x"></i>
                        </button>
                    </div>
                <?php endif; ?>

                <?php if ($error): ?>
                    <div class="alert alert-error" id="errorAlert">
                        <i class="bi bi-exclamation-triangle-fill"></i>
                        <span><?php echo htmlspecialchars($error); ?></span>
                        <button class="alert-close" onclick="closeAlert('errorAlert')">
                            <i class="bi bi-x"></i>
                        </button>
                    </div>
                <?php endif; ?>

                <!-- Add Service Form -->
                <div class="card">
                    <div class="card-header">
                        <i class="bi bi-plus-circle"></i>
                        Agregar Nuevo Servicio
                    </div>
                    <div class="card-body">
                        <form id="serviceForm" method="post" novalidate>
                            <input type="hidden" name="accion" value="agregar">
                            
                            <div class="row">
                                <div class="col-md-6">
                                    <div class="form-group">
                                        <label for="nombre" class="form-label">Nombre del Servicio*</label>
                                        <input type="text" class="form-control" id="nombre" name="nombre" 
                                               placeholder="Ej: Limpieza profunda" maxlength="100" required>
                                        <div class="invalid-feedback"></div>
                                    </div>
                                </div>
                                <div class="col-md-6">
                                    <div class="form-group">
                                        <label for="precio" class="form-label">Precio*</label>
                                        <div class="input-group">
                                            <span class="input-group-text">$</span>
                                            <input type="number" class="form-control" id="precio" name="precio" 
                                                   placeholder="0.00" step="0.01" min="0.01" required>
                                        </div>
                                        <div class="invalid-feedback"></div>
                                    </div>
                                </div>
                            </div>
                            
                            <div class="form-group">
                                <label for="descripcion" class="form-label">Descripción*</label>
                                <textarea class="form-control" id="descripcion" name="descripcion" rows="3" 
                                          placeholder="Describa el servicio en detalle..." required></textarea>
                                <div class="invalid-feedback"></div>
                            </div>
                            
                            <button type="submit" class="btn btn-success">
                                <i class="bi bi-plus-circle"></i>
                                Agregar Servicio
                            </button>
                        </form>
                    </div>
                </div>

                <!-- Services List -->
                <div class="card">
                    <div class="card-header">
                        <i class="bi bi-list-ul"></i>
                        Listado de Servicios Existentes
                        <span style="float: right; font-weight: normal; font-size: 0.9rem;">
                            Total: <?php echo count($servicios); ?> servicio<?php echo count($servicios) !== 1 ? 's' : ''; ?>
                        </span>
                    </div>
                    <div class="card-body">
                        <?php if (empty($servicios)): ?>
                            <div class="empty-state">
                                <div class="empty-state-icon">
                                    <i class="bi bi-file-earmark-text"></i>
                                </div>
                                <h3>No hay servicios registrados</h3>
                                <p>Comience agregando su primer servicio usando el formulario de arriba.</p>
                            </div>
                        <?php else: ?>
                            <div class="services-grid">
                                <?php foreach ($servicios as $index => $servicio): ?>
                                    <div class="service-card">
                                        <div class="service-header">
                                            <h3 class="service-title"><?php echo htmlspecialchars($servicio['nombre']); ?></h3>
                                            <span class="price-badge">$<?php echo number_format($servicio['precio'], 2); ?></span>
                                        </div>
                                        
                                        <p class="service-description"><?php echo nl2br(htmlspecialchars($servicio['descripcion'])); ?></p>
                                        
                                        <div class="service-meta">
                                            <?php if (isset($servicio['fecha_creacion'])): ?>
                                                <div>Creado: <?php echo htmlspecialchars($servicio['fecha_creacion']); ?> 
                                                <?php if (isset($servicio['creado_por'])): ?>
                                                    por <?php echo htmlspecialchars($servicio['creado_por']); ?>
                                                <?php endif; ?>
                                                </div>
                                            <?php endif; ?>
                                            <?php if (isset($servicio['fecha_modificacion'])): ?>
                                                <div>Modificado: <?php echo htmlspecialchars($servicio['fecha_modificacion']); ?> 
                                                <?php if (isset($servicio['modificado_por'])): ?>
                                                    por <?php echo htmlspecialchars($servicio['modificado_por']); ?>
                                                <?php endif; ?>
                                                </div>
                                            <?php endif; ?>
                                        </div>
                                        
                                        <div class="service-actions">
                                            <button class="btn btn-primary btn-sm" onclick="toggleEdit('<?php echo $servicio['id']; ?>')">
                                                <i class="bi bi-pencil"></i>
                                                Editar
                                            </button>
                                            <form method="post" style="display: inline;" onsubmit="return confirm('¿Está seguro de eliminar este servicio?')">
                                                <input type="hidden" name="accion" value="eliminar">
                                                <input type="hidden" name="id" value="<?php echo htmlspecialchars($servicio['id']); ?>">
                                                <button type="submit" class="btn btn-danger btn-sm">
                                                    <i class="bi bi-trash"></i>
                                                    Eliminar
                                                </button>
                                            </form>
                                        </div>
                                        
                                        <!-- Edit Form -->
                                        <div class="edit-form" id="edit-form-<?php echo $servicio['id']; ?>">
                                            <form method="post">
                                                <input type="hidden" name="accion" value="editar">
                                                <input type="hidden" name="id" value="<?php echo htmlspecialchars($servicio['id']); ?>">
                                                
                                                <div class="form-group">
                                                    <label class="form-label">Nombre*</label>
                                                    <input type="text" name="nombre" class="form-control" 
                                                           value="<?php echo htmlspecialchars($servicio['nombre']); ?>" required>
                                                </div>
                                                
                                                <div class="form-group">
                                                    <label class="form-label">Descripción*</label>
                                                    <textarea name="descripcion" class="form-control" rows="3" required><?php echo htmlspecialchars($servicio['descripcion']); ?></textarea>
                                                </div>
                                                
                                                <div class="form-group">
                                                    <label class="form-label">Precio*</label>
                                                    <div class="input-group">
                                                        <span class="input-group-text">$</span>
                                                        <input type="number" step="0.01" min="0.01" name="precio" class="form-control"
                                                               value="<?php echo number_format($servicio['precio'], 2); ?>" required>
                                                    </div>
                                                </div>
                                                
                                                <div style="display: flex; gap: 0.75rem;">
                                                    <button type="submit" class="btn btn-success btn-sm">
                                                        <i class="bi bi-save"></i>
                                                        Guardar
                                                    </button>
                                                    <button type="button" class="btn btn-secondary btn-sm" onclick="toggleEdit('<?php echo $servicio['id']; ?>')">
                                                        <i class="bi bi-x"></i>
                                                        Cancelar
                                                    </button>
                                                </div>
                                            </form>
                                        </div>
                                    </div>
                                <?php endforeach; ?>
                            </div>
                        <?php endif; ?>
                    </div>
                </div>
            </main>
        </div>
    </div>

    <!-- Bootstrap JS Bundle -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
    <script>
        // DOM Elements
        const menuToggle = document.getElementById('menuToggle');
        const sidebar = document.getElementById('sidebar');
        const overlay = document.getElementById('overlay');
        const serviceForm = document.getElementById('serviceForm');

        // Mobile menu toggle
        if (menuToggle) {
            menuToggle.addEventListener('click', function() {
                sidebar.classList.toggle('open');
                overlay.classList.toggle('show');
            });
        }

        // Close sidebar when clicking overlay
        if (overlay) {
            overlay.addEventListener('click', function() {
                sidebar.classList.remove('open');
                overlay.classList.remove('show');
            });
        }

        // Close sidebar on window resize if desktop
        window.addEventListener('resize', function() {
            if (window.innerWidth >= 1024) {
                if (sidebar) sidebar.classList.remove('open');
                if (overlay) overlay.classList.remove('show');
            }
        });

        // Form validation
        if (serviceForm) {
            serviceForm.addEventListener('submit', function(e) {
                e.preventDefault();
                
                const nombre = document.getElementById('nombre');
                const descripcion = document.getElementById('descripcion');
                const precio = document.getElementById('precio');
                
                let isValid = true;
                clearErrors();

                // Validaciones...
                if (!nombre.value.trim()) {
                    showError(nombre, 'El nombre del servicio es obligatorio');
                    isValid = false;
                }

                if (!descripcion.value.trim()) {
                    showError(descripcion, 'La descripción es obligatoria');
                    isValid = false;
                }

                if (!precio.value || isNaN(parseFloat(precio.value)) || parseFloat(precio.value) <= 0) {
                    showError(precio, 'El precio debe ser un número positivo mayor a cero');
                    isValid = false;
                }

                if (isValid) {
                    // Forzar el envío del formulario
                    this.submit();
                }
            });
        }

        // Helper functions
        function showError(input, message) {
            if (!input) return;
            input.classList.add('is-invalid');
            const feedback = input.parentNode.querySelector('.invalid-feedback');
            if (feedback) {
                feedback.textContent = message;
            }
        }

        function clearErrors() {
            const invalidInputs = document.querySelectorAll('.is-invalid');
            invalidInputs.forEach(input => {
                input.classList.remove('is-invalid');
            });
        }

        function closeAlert(alertId) {
            const alert = document.getElementById(alertId);
            if (alert) {
                alert.style.display = 'none';
            }
        }

        function toggleEdit(serviceId) {
            const editForm = document.getElementById('edit-form-' + serviceId);
            if (editForm) {
                editForm.classList.toggle('show');
            }
        }

        // Auto-hide alerts after 5 seconds
        setTimeout(function() {
            const alerts = document.querySelectorAll('.alert');
            alerts.forEach(alert => {
                alert.style.opacity = '0';
                setTimeout(() => {
                    alert.style.display = 'none';
                }, 300);
            });
        }, 5000);

        // Real-time validation
        const nombreInput = document.getElementById('nombre');
        const descripcionInput = document.getElementById('descripcion');
        const precioInput = document.getElementById('precio');

        if (nombreInput) {
            nombreInput.addEventListener('input', function() {
                if (this.classList.contains('is-invalid') && this.value.trim()) {
                    this.classList.remove('is-invalid');
                }
            });
        }

        if (descripcionInput) {
            descripcionInput.addEventListener('input', function() {
                if (this.classList.contains('is-invalid') && this.value.trim()) {
                    this.classList.remove('is-invalid');
                }
            });
        }

        if (precioInput) {
            precioInput.addEventListener('input', function() {
                if (this.classList.contains('is-invalid') && this.value && !isNaN(parseFloat(this.value)) && parseFloat(this.value) > 0) {
                    this.classList.remove('is-invalid');
                }
            });
        }

        // Función para cerrar el menú móvil al hacer clic en un enlace
        document.querySelectorAll('#navbarSupportedContent .nav-link').forEach(link => {
            link.addEventListener('click', function() {
                if (window.innerWidth < 992) { // Solo para móviles
                    const bsCollapse = new bootstrap.Collapse(document.getElementById('navbarSupportedContent'));
                    bsCollapse.hide();
                }
            });
        });

        // Mostrar información de depuración en consola
        console.log('=== Información de depuración ===');
        console.log('Usuario: <?= htmlspecialchars($nombre . " " . $apellido) ?>');
        console.log('Total servicios: <?= count($servicios) ?>');
    </script>
</body>
</html> a comoda el resposi que la informacion que de sentrada y el movil qeu tambien quede sentrada