<?php
$pageTitle = "Reglas de Control Westgard";
require_once __DIR__ . '/../../config/config.php';
requirePermiso('control_calidad');

$db = Database::getInstance()->getConnection();
$mensaje = '';
$error = '';

// Procesar formulario
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $accion = $_POST['accion'] ?? '';
    
    if ($accion == 'actualizar') {
        try {
            $db->beginTransaction();
            
            foreach ($_POST['reglas'] as $id => $data) {
                $stmt = $db->prepare("UPDATE cc_reglas SET activa = ?, descripcion = ? WHERE id = ?");
                $stmt->execute([
                    isset($data['activa']) ? 1 : 0,
                    $data['descripcion'],
                    $id
                ]);
            }
            
            $db->commit();
            $mensaje = "Reglas actualizadas exitosamente.";
        } catch (Exception $e) {
            $db->rollBack();
            $error = "Error al actualizar: " . $e->getMessage();
        }
    }
    
    if ($accion == 'agregar') {
        try {
            $stmt = $db->prepare("INSERT INTO cc_reglas (codigo, nombre, tipo, descripcion, activa) VALUES (?, ?, ?, ?, 1)");
            $stmt->execute([
                $_POST['codigo'],
                $_POST['nombre'],
                $_POST['tipo'],
                $_POST['descripcion']
            ]);
            $mensaje = "Regla agregada exitosamente.";
        } catch (Exception $e) {
            $error = "Error al agregar: " . $e->getMessage();
        }
    }
}

// Obtener reglas
$reglas = $db->query("SELECT * FROM cc_reglas ORDER BY id")->fetchAll(PDO::FETCH_ASSOC);

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 Calidad</a></li>
                <li class="breadcrumb-item active">Reglas de Control</li>
            </ol>
        </nav>
        <h2><i class="bi bi-shield-check me-2"></i>Reglas de Control Westgard</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-8">
        <!-- Tabla de reglas -->
        <div class="card">
            <div class="card-header">
                <h5 class="mb-0"><i class="bi bi-list-check me-2"></i>Reglas Configuradas</h5>
            </div>
            <div class="card-body">
                <form method="POST">
                    <input type="hidden" name="accion" value="actualizar">
                    
                    <div class="table-responsive">
                        <table class="table table-hover">
                            <thead class="table-dark">
                                <tr>
                                    <th style="width: 50px;">Activa</th>
                                    <th style="width: 80px;">Código</th>
                                    <th style="width: 150px;">Nombre</th>
                                    <th style="width: 100px;">Tipo</th>
                                    <th>Descripción</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($reglas as $r): ?>
                                <tr>
                                    <td class="text-center">
                                        <div class="form-check">
                                            <input type="checkbox" class="form-check-input" 
                                                   name="reglas[<?= $r['id'] ?>][activa]"
                                                   <?= $r['activa'] ? 'checked' : '' ?>>
                                        </div>
                                    </td>
                                    <td>
                                        <span class="badge bg-<?= $r['tipo'] == 'rechazo' ? 'danger' : 'warning' ?> fs-6">
                                            <?= htmlspecialchars($r['codigo']) ?>
                                        </span>
                                    </td>
                                    <td><strong><?= htmlspecialchars($r['nombre']) ?></strong></td>
                                    <td>
                                        <span class="badge bg-<?= $r['tipo'] == 'rechazo' ? 'danger' : 'warning' ?>">
                                            <?= ucfirst($r['tipo']) ?>
                                        </span>
                                    </td>
                                    <td>
                                        <input type="text" class="form-control form-control-sm"
                                               name="reglas[<?= $r['id'] ?>][descripcion]"
                                               value="<?= htmlspecialchars($r['descripcion']) ?>">
                                    </td>
                                </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                    
                    <button type="submit" class="btn btn-primary">
                        <i class="bi bi-save me-1"></i> Guardar Cambios
                    </button>
                </form>
            </div>
        </div>
    </div>
    
    <div class="col-md-4">
        <!-- Información de reglas -->
        <div class="card mb-4">
            <div class="card-header bg-info text-white">
                <h5 class="mb-0"><i class="bi bi-info-circle me-2"></i>Información</h5>
            </div>
            <div class="card-body">
                <h6>Reglas de Westgard</h6>
                <p class="small">Las reglas de Westgard son criterios estadísticos utilizados para aceptar o rechazar una corrida analítica basándose en los resultados del control de calidad.</p>
                
                <h6 class="mt-3">Tipos de Reglas:</h6>
                <ul class="small">
                    <li><span class="badge bg-warning">Advertencia</span> - Indica un posible problema</li>
                    <li><span class="badge bg-danger">Rechazo</span> - El resultado debe rechazarse</li>
                </ul>
            </div>
        </div>
        
        <!-- Explicación de cada regla -->
        <div class="card">
            <div class="card-header bg-secondary text-white">
                <h5 class="mb-0"><i class="bi bi-book me-2"></i>Guía de Reglas</h5>
            </div>
            <div class="card-body" style="max-height: 400px; overflow-y: auto;">
                <div class="mb-3">
                    <strong class="text-warning">1-2s (Advertencia)</strong>
                    <p class="small mb-0">Un control excede ±2 desviaciones estándar. Se usa como regla de aviso inicial.</p>
                </div>
                <hr>
                <div class="mb-3">
                    <strong class="text-danger">1-3s (Rechazo)</strong>
                    <p class="small mb-0">Un control excede ±3 desviaciones estándar. Indica error aleatorio significativo.</p>
                </div>
                <hr>
                <div class="mb-3">
                    <strong class="text-danger">2-2s (Rechazo)</strong>
                    <p class="small mb-0">Dos controles consecutivos exceden +2s o -2s en la misma dirección. Indica error sistemático.</p>
                </div>
                <hr>
                <div class="mb-3">
                    <strong class="text-danger">R-4s (Rechazo)</strong>
                    <p class="small mb-0">Un control excede +2s y otro excede -2s (rango >4s). Indica error aleatorio.</p>
                </div>
                <hr>
                <div class="mb-3">
                    <strong class="text-danger">4-1s (Rechazo)</strong>
                    <p class="small mb-0">Cuatro controles consecutivos exceden +1s o -1s en la misma dirección. Indica error sistemático.</p>
                </div>
                <hr>
                <div class="mb-3">
                    <strong class="text-danger">10x (Rechazo)</strong>
                    <p class="small mb-0">Diez controles consecutivos caen en el mismo lado de la media. Indica sesgo sistemático.</p>
                </div>
                <hr>
                <div class="mb-3">
                    <strong class="text-warning">7T (Advertencia)</strong>
                    <p class="small mb-0">Siete controles consecutivos con tendencia ascendente o descendente. Indica deriva del sistema.</p>
                </div>
            </div>
        </div>
        
        <!-- Agregar nueva regla -->
        <div class="card mt-4">
            <div class="card-header">
                <h5 class="mb-0"><i class="bi bi-plus-circle me-2"></i>Agregar Regla</h5>
            </div>
            <div class="card-body">
                <form method="POST">
                    <input type="hidden" name="accion" value="agregar">
                    
                    <div class="mb-2">
                        <input type="text" name="codigo" class="form-control form-control-sm" 
                               placeholder="Código (ej: 6x)" required>
                    </div>
                    <div class="mb-2">
                        <input type="text" name="nombre" class="form-control form-control-sm" 
                               placeholder="Nombre" required>
                    </div>
                    <div class="mb-2">
                        <select name="tipo" class="form-select form-select-sm" required>
                            <option value="advertencia">Advertencia</option>
                            <option value="rechazo">Rechazo</option>
                        </select>
                    </div>
                    <div class="mb-2">
                        <textarea name="descripcion" class="form-control form-control-sm" rows="2"
                                  placeholder="Descripción"></textarea>
                    </div>
                    <button type="submit" class="btn btn-sm btn-success w-100">
                        <i class="bi bi-plus me-1"></i> Agregar
                    </button>
                </form>
            </div>
        </div>
    </div>
</div>

<!-- Diagrama visual -->
<div class="card mt-4">
    <div class="card-header">
        <h5 class="mb-0"><i class="bi bi-diagram-3 me-2"></i>Diagrama de Decisión Westgard</h5>
    </div>
    <div class="card-body text-center">
        <div class="p-4 bg-light rounded">
            <div class="row justify-content-center">
                <div class="col-md-8">
                    <svg viewBox="0 0 600 400" class="w-100">
                        <!-- Fondo -->
                        <rect x="0" y="0" width="600" height="400" fill="#f8f9fa"/>
                        
                        <!-- Inicio -->
                        <ellipse cx="300" cy="30" rx="60" ry="20" fill="#0d6efd"/>
                        <text x="300" y="35" text-anchor="middle" fill="white" font-size="12">Control QC</text>
                        
                        <!-- Flecha 1 -->
                        <line x1="300" y1="50" x2="300" y2="70" stroke="#333" stroke-width="2" marker-end="url(#arrow)"/>
                        
                        <!-- 1-2s check -->
                        <rect x="230" y="70" width="140" height="40" fill="#ffc107" rx="5"/>
                        <text x="300" y="95" text-anchor="middle" fill="#000" font-size="11">¿Viola regla 1-2s?</text>
                        
                        <!-- No - Aceptado -->
                        <line x1="230" y1="90" x2="140" y2="90" stroke="#28a745" stroke-width="2"/>
                        <line x1="140" y1="90" x2="140" y2="120" stroke="#28a745" stroke-width="2" marker-end="url(#arrow)"/>
                        <text x="185" y="85" font-size="10" fill="#28a745">No</text>
                        <rect x="90" y="120" width="100" height="30" fill="#28a745" rx="5"/>
                        <text x="140" y="140" text-anchor="middle" fill="white" font-size="11">ACEPTADO</text>
                        
                        <!-- Sí - Continuar -->
                        <line x1="300" y1="110" x2="300" y2="140" stroke="#ffc107" stroke-width="2" marker-end="url(#arrow)"/>
                        <text x="310" y="130" font-size="10" fill="#ffc107">Sí</text>
                        
                        <!-- 1-3s check -->
                        <rect x="230" y="140" width="140" height="40" fill="#dc3545" rx="5"/>
                        <text x="300" y="165" text-anchor="middle" fill="white" font-size="11">¿Viola regla 1-3s?</text>
                        
                        <!-- Sí - Rechazado -->
                        <line x1="370" y1="160" x2="460" y2="160" stroke="#dc3545" stroke-width="2"/>
                        <line x1="460" y1="160" x2="460" y2="190" stroke="#dc3545" stroke-width="2" marker-end="url(#arrow)"/>
                        <text x="410" y="155" font-size="10" fill="#dc3545">Sí</text>
                        <rect x="410" y="190" width="100" height="30" fill="#dc3545" rx="5"/>
                        <text x="460" y="210" text-anchor="middle" fill="white" font-size="11">RECHAZADO</text>
                        
                        <!-- No - Continuar -->
                        <line x1="300" y1="180" x2="300" y2="210" stroke="#333" stroke-width="2" marker-end="url(#arrow)"/>
                        <text x="310" y="200" font-size="10">No</text>
                        
                        <!-- 2-2s, R-4s check -->
                        <rect x="220" y="210" width="160" height="40" fill="#dc3545" rx="5"/>
                        <text x="300" y="235" text-anchor="middle" fill="white" font-size="11">¿Viola 2-2s o R-4s?</text>
                        
                        <!-- Sí - Rechazado -->
                        <line x1="380" y1="230" x2="460" y2="230" stroke="#dc3545" stroke-width="2"/>
                        <line x1="460" y1="230" x2="460" y2="220" stroke="#dc3545" stroke-width="2"/>
                        <text x="410" y="225" font-size="10" fill="#dc3545">Sí</text>
                        
                        <!-- No - Continuar -->
                        <line x1="300" y1="250" x2="300" y2="280" stroke="#333" stroke-width="2" marker-end="url(#arrow)"/>
                        <text x="310" y="270" font-size="10">No</text>
                        
                        <!-- 4-1s, 10x check -->
                        <rect x="220" y="280" width="160" height="40" fill="#dc3545" rx="5"/>
                        <text x="300" y="305" text-anchor="middle" fill="white" font-size="11">¿Viola 4-1s o 10x?</text>
                        
                        <!-- Sí - Rechazado -->
                        <line x1="380" y1="300" x2="460" y2="300" stroke="#dc3545" stroke-width="2"/>
                        <line x1="460" y1="300" x2="460" y2="220" stroke="#dc3545" stroke-width="2"/>
                        <text x="410" y="295" font-size="10" fill="#dc3545">Sí</text>
                        
                        <!-- No - Advertencia -->
                        <line x1="300" y1="320" x2="300" y2="350" stroke="#28a745" stroke-width="2" marker-end="url(#arrow)"/>
                        <text x="310" y="340" font-size="10">No</text>
                        <rect x="230" y="350" width="140" height="30" fill="#ffc107" rx="5"/>
                        <text x="300" y="370" text-anchor="middle" fill="#000" font-size="11">ADVERTENCIA 1-2s</text>
                        
                        <!-- Arrow marker -->
                        <defs>
                            <marker id="arrow" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto">
                                <path d="M0,0 L0,6 L9,3 z" fill="#333"/>
                            </marker>
                        </defs>
                    </svg>
                </div>
            </div>
            <p class="text-muted mt-3 small">
                Flujo de decisión multi-regla de Westgard para evaluación de control de calidad
            </p>
        </div>
    </div>
</div>

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