<?php
$pageTitle = 'Perfiles de Exámenes';
require_once __DIR__ . '/../../config/config.php';
requireLogin();
requirePermiso('examenes', 'ver');

$db = getDB();

// Procesar acciones
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $accion = $_POST['accion'] ?? '';
    
    if ($accion === 'guardar_perfil') {
        $id = intval($_POST['id'] ?? 0);
        $codigo = sanitize($_POST['codigo']);
        $nombre = sanitize($_POST['nombre']);
        $descripcion = sanitize($_POST['descripcion']);
        $precio_perfil = !empty($_POST['precio_perfil']) ? floatval($_POST['precio_perfil']) : null;
        $examenes = $_POST['examenes_perfil'] ?? [];
        
        try {
            $db->beginTransaction();
            
            if ($id) {
                // Actualizar
                $stmt = $db->prepare("UPDATE perfiles_examenes SET codigo = ?, nombre = ?, descripcion = ?, precio_perfil = ? WHERE id = ?");
                $stmt->execute([$codigo, $nombre, $descripcion, $precio_perfil, $id]);
            } else {
                // Crear
                $stmt = $db->prepare("INSERT INTO perfiles_examenes (codigo, nombre, descripcion, precio_perfil) VALUES (?, ?, ?, ?)");
                $stmt->execute([$codigo, $nombre, $descripcion, $precio_perfil]);
                $id = $db->lastInsertId();
            }
            
            // Actualizar exámenes del perfil
            $db->prepare("DELETE FROM perfil_examenes_detalle WHERE perfil_id = ?")->execute([$id]);
            
            if (!empty($examenes)) {
                $stmt = $db->prepare("INSERT INTO perfil_examenes_detalle (perfil_id, examen_id) VALUES (?, ?)");
                foreach ($examenes as $examen_id) {
                    $stmt->execute([$id, $examen_id]);
                }
            }
            
            $db->commit();
            showAlert('Perfil guardado exitosamente', 'success');
        } catch (Exception $e) {
            $db->rollBack();
            showAlert('Error al guardar: ' . $e->getMessage(), 'danger');
        }
    }
    
    if ($accion === 'eliminar') {
        $id = intval($_POST['id']);
        try {
            $db->prepare("DELETE FROM perfiles_examenes WHERE id = ?")->execute([$id]);
            showAlert('Perfil eliminado', 'success');
        } catch (Exception $e) {
            showAlert('Error al eliminar: ' . $e->getMessage(), 'danger');
        }
    }
    
    if ($accion === 'toggle') {
        $id = intval($_POST['id']);
        $db->prepare("UPDATE perfiles_examenes SET activo = NOT activo WHERE id = ?")->execute([$id]);
    }
}

// Obtener perfiles con conteo de exámenes
$perfiles = $db->query("
    SELECT p.*, 
           COUNT(ped.id) as num_examenes,
           (SELECT COALESCE(p.precio_perfil, SUM(e.precio)) 
            FROM perfil_examenes_detalle ped2 
            JOIN examenes e ON ped2.examen_id = e.id 
            WHERE ped2.perfil_id = p.id) as precio_calculado
    FROM perfiles_examenes p
    LEFT JOIN perfil_examenes_detalle ped ON p.id = ped.perfil_id
    GROUP BY p.id
    ORDER BY p.nombre
")->fetchAll();

// Obtener exámenes agrupados por categoría
$examenes = $db->query("
    SELECT e.*, c.nombre as categoria_nombre
    FROM examenes e
    LEFT JOIN categorias_examenes c ON e.categoria_id = c.id
    WHERE e.activo = 1
    ORDER BY c.nombre, e.nombre
")->fetchAll();

$examenesPorCategoria = [];
foreach ($examenes as $ex) {
    $cat = $ex['categoria_nombre'] ?: 'Sin categoría';
    $examenesPorCategoria[$cat][] = $ex;
}

// Obtener perfil para editar si se solicita
$perfilEditar = null;
$examenesDelPerfil = [];
if (isset($_GET['editar'])) {
    $stmt = $db->prepare("SELECT * FROM perfiles_examenes WHERE id = ?");
    $stmt->execute([$_GET['editar']]);
    $perfilEditar = $stmt->fetch();
    
    if ($perfilEditar) {
        $stmt = $db->prepare("SELECT examen_id FROM perfil_examenes_detalle WHERE perfil_id = ?");
        $stmt->execute([$perfilEditar['id']]);
        $examenesDelPerfil = $stmt->fetchAll(PDO::FETCH_COLUMN);
    }
}

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

<div class="row mb-4">
    <div class="col">
        <h2><i class="bi bi-collection me-2"></i>Perfiles de Exámenes</h2>
        <p class="text-muted">Agrupe exámenes para facilitar la selección en órdenes</p>
    </div>
    <div class="col-auto">
        <a href="list.php" class="btn btn-outline-secondary">
            <i class="bi bi-arrow-left me-1"></i> Volver a Exámenes
        </a>
    </div>
</div>

<div class="row">
    <!-- Formulario -->
    <div class="col-md-5">
        <div class="card">
            <div class="card-header">
                <h5 class="mb-0">
                    <i class="bi bi-<?= $perfilEditar ? 'pencil' : 'plus-circle' ?> me-2"></i>
                    <?= $perfilEditar ? 'Editar Perfil' : 'Nuevo Perfil' ?>
                </h5>
            </div>
            <div class="card-body">
                <form method="POST">
                    <input type="hidden" name="accion" value="guardar_perfil">
                    <input type="hidden" name="id" value="<?= $perfilEditar['id'] ?? '' ?>">
                    
                    <div class="row mb-3">
                        <div class="col-md-4">
                            <label class="form-label">Código *</label>
                            <input type="text" name="codigo" class="form-control" required
                                   value="<?= htmlspecialchars($perfilEditar['codigo'] ?? '') ?>"
                                   placeholder="PERF-XXX">
                        </div>
                        <div class="col-md-8">
                            <label class="form-label">Nombre del Perfil *</label>
                            <input type="text" name="nombre" class="form-control" required
                                   value="<?= htmlspecialchars($perfilEditar['nombre'] ?? '') ?>"
                                   placeholder="Ej: Perfil Hepático">
                        </div>
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Descripción</label>
                        <textarea name="descripcion" class="form-control" rows="2"
                                  placeholder="Descripción breve del perfil..."><?= htmlspecialchars($perfilEditar['descripcion'] ?? '') ?></textarea>
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Precio del Perfil (opcional)</label>
                        <div class="input-group">
                            <span class="input-group-text"><?= CURRENCY ?></span>
                            <input type="number" name="precio_perfil" class="form-control" step="0.01"
                                   value="<?= $perfilEditar['precio_perfil'] ?? '' ?>"
                                   placeholder="Dejar vacío para sumar precios individuales">
                        </div>
                        <small class="text-muted">Si no especifica precio, se sumará el precio de cada examen</small>
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Exámenes del Perfil *</label>
                        <div class="border rounded p-2" style="max-height: 300px; overflow-y: auto;">
                            <?php foreach ($examenesPorCategoria as $cat => $exs): ?>
                            <div class="mb-2">
                                <strong class="text-primary"><?= htmlspecialchars($cat) ?></strong>
                                <div class="ms-3">
                                    <?php foreach ($exs as $ex): ?>
                                    <div class="form-check">
                                        <input class="form-check-input" type="checkbox" 
                                               name="examenes_perfil[]" value="<?= $ex['id'] ?>"
                                               id="perfex<?= $ex['id'] ?>"
                                               <?= in_array($ex['id'], $examenesDelPerfil) ? 'checked' : '' ?>>
                                        <label class="form-check-label" for="perfex<?= $ex['id'] ?>">
                                            <?= htmlspecialchars($ex['nombre']) ?>
                                            <small class="text-muted">(<?= formatMoney($ex['precio']) ?>)</small>
                                        </label>
                                    </div>
                                    <?php endforeach; ?>
                                </div>
                            </div>
                            <?php endforeach; ?>
                        </div>
                    </div>
                    
                    <div class="d-grid gap-2">
                        <button type="submit" class="btn btn-primary">
                            <i class="bi bi-save me-1"></i> Guardar Perfil
                        </button>
                        <?php if ($perfilEditar): ?>
                        <a href="perfiles.php" class="btn btn-outline-secondary">Cancelar</a>
                        <?php endif; ?>
                    </div>
                </form>
            </div>
        </div>
    </div>
    
    <!-- Lista de perfiles -->
    <div class="col-md-7">
        <div class="card">
            <div class="card-header">
                <h5 class="mb-0"><i class="bi bi-list-ul me-2"></i>Perfiles Existentes</h5>
            </div>
            <div class="card-body">
                <?php if (empty($perfiles)): ?>
                <div class="text-center text-muted py-4">
                    <i class="bi bi-inbox fs-1"></i>
                    <p>No hay perfiles creados</p>
                </div>
                <?php else: ?>
                <div class="table-responsive">
                    <table class="table table-hover">
                        <thead>
                            <tr>
                                <th>Código</th>
                                <th>Nombre</th>
                                <th>Exámenes</th>
                                <th>Precio</th>
                                <th>Estado</th>
                                <th>Acciones</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach ($perfiles as $p): ?>
                            <tr class="<?= $p['activo'] ? '' : 'table-secondary' ?>">
                                <td><code><?= htmlspecialchars($p['codigo']) ?></code></td>
                                <td>
                                    <strong><?= htmlspecialchars($p['nombre']) ?></strong>
                                    <?php if ($p['descripcion']): ?>
                                    <br><small class="text-muted"><?= htmlspecialchars($p['descripcion']) ?></small>
                                    <?php endif; ?>
                                </td>
                                <td>
                                    <span class="badge bg-info"><?= $p['num_examenes'] ?> exámenes</span>
                                </td>
                                <td>
                                    <?php if ($p['precio_perfil']): ?>
                                    <span class="text-success"><?= formatMoney($p['precio_perfil']) ?></span>
                                    <br><small class="text-muted">Precio fijo</small>
                                    <?php else: ?>
                                    <?= formatMoney($p['precio_calculado'] ?? 0) ?>
                                    <br><small class="text-muted">Suma individual</small>
                                    <?php endif; ?>
                                </td>
                                <td>
                                    <form method="POST" class="d-inline">
                                        <input type="hidden" name="accion" value="toggle">
                                        <input type="hidden" name="id" value="<?= $p['id'] ?>">
                                        <button type="submit" class="btn btn-sm btn-<?= $p['activo'] ? 'success' : 'secondary' ?>">
                                            <?= $p['activo'] ? 'Activo' : 'Inactivo' ?>
                                        </button>
                                    </form>
                                </td>
                                <td>
                                    <a href="?editar=<?= $p['id'] ?>" class="btn btn-sm btn-outline-primary">
                                        <i class="bi bi-pencil"></i>
                                    </a>
                                    <form method="POST" class="d-inline" onsubmit="return confirm('¿Eliminar este perfil?')">
                                        <input type="hidden" name="accion" value="eliminar">
                                        <input type="hidden" name="id" value="<?= $p['id'] ?>">
                                        <button type="submit" class="btn btn-sm btn-outline-danger">
                                            <i class="bi bi-trash"></i>
                                        </button>
                                    </form>
                                </td>
                            </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
                <?php endif; ?>
            </div>
        </div>
    </div>
</div>

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