<?php
$pageTitle = "Gestión de Lote de Control";
require_once __DIR__ . '/../../config/config.php';
requirePermiso('control_calidad');

$db = Database::getInstance()->getConnection();
$action = $_GET['action'] ?? 'new';
$id = $_GET['id'] ?? null;
$lote = null;

if ($action === 'edit' && $id) {
    $stmt = $db->prepare("SELECT * FROM cc_lotes WHERE id = ?");
    $stmt->execute([$id]);
    $lote = $stmt->fetch(PDO::FETCH_ASSOC);
    if (!$lote) {
        setAlert('danger', 'Lote no encontrado');
        header('Location: list.php');
        exit;
    }
}

// Procesar formulario
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $codigo = trim($_POST['codigo']);
    $nombre = trim($_POST['nombre']);
    $fabricante = trim($_POST['fabricante']);
    $nivel = $_POST['nivel'];
    $fecha_recepcion = $_POST['fecha_recepcion'] ?: null;
    $fecha_apertura = $_POST['fecha_apertura'] ?: null;
    $fecha_vencimiento = $_POST['fecha_vencimiento'];
    $temperatura = trim($_POST['temperatura']);
    $estado = $_POST['estado'];
    $observaciones = trim($_POST['observaciones']);
    
    try {
        if ($action === 'edit' && $id) {
            $stmt = $db->prepare("UPDATE cc_lotes SET 
                codigo = ?, nombre = ?, fabricante = ?, nivel = ?,
                fecha_recepcion = ?, fecha_apertura = ?, fecha_vencimiento = ?,
                temperatura_almacenamiento = ?, estado = ?, observaciones = ?
                WHERE id = ?");
            $stmt->execute([$codigo, $nombre, $fabricante, $nivel, 
                $fecha_recepcion, $fecha_apertura, $fecha_vencimiento,
                $temperatura, $estado, $observaciones, $id]);
            setAlert('success', 'Lote actualizado correctamente');
        } else {
            $stmt = $db->prepare("INSERT INTO cc_lotes 
                (codigo, nombre, fabricante, nivel, fecha_recepcion, fecha_apertura, 
                fecha_vencimiento, temperatura_almacenamiento, estado, observaciones)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
            $stmt->execute([$codigo, $nombre, $fabricante, $nivel, 
                $fecha_recepcion, $fecha_apertura, $fecha_vencimiento,
                $temperatura, $estado, $observaciones]);
            $newId = $db->lastInsertId();
            setAlert('success', 'Lote creado correctamente. Ahora configure los parámetros.');
            header("Location: parametros.php?lote_id=$newId");
            exit;
        }
        header('Location: list.php');
        exit;
    } catch (PDOException $e) {
        if (strpos($e->getMessage(), 'Duplicate entry') !== false) {
            setAlert('danger', 'El código de lote ya existe');
        } else {
            setAlert('danger', 'Error al guardar: ' . $e->getMessage());
        }
    }
}

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"><?= $action === 'edit' ? 'Editar' : 'Nuevo' ?> Lote</li>
            </ol>
        </nav>
        <h2><i class="bi bi-box-seam me-2"></i><?= $action === 'edit' ? 'Editar' : 'Nuevo' ?> Lote de Control</h2>
    </div>
</div>

<div class="card">
    <div class="card-body">
        <form method="POST" class="needs-validation" novalidate>
            <div class="row">
                <div class="col-md-4 mb-3">
                    <label class="form-label">Código del Lote <span class="text-danger">*</span></label>
                    <input type="text" name="codigo" class="form-control" required
                           value="<?= htmlspecialchars($lote['codigo'] ?? '') ?>"
                           placeholder="Ej: CTRL-HEM-001">
                    <div class="form-text">Código único de identificación del lote</div>
                </div>
                <div class="col-md-4 mb-3">
                    <label class="form-label">Nombre del Control <span class="text-danger">*</span></label>
                    <input type="text" name="nombre" class="form-control" required
                           value="<?= htmlspecialchars($lote['nombre'] ?? '') ?>"
                           placeholder="Ej: Control Normal Hematología">
                </div>
                <div class="col-md-4 mb-3">
                    <label class="form-label">Fabricante</label>
                    <input type="text" name="fabricante" class="form-control"
                           value="<?= htmlspecialchars($lote['fabricante'] ?? '') ?>"
                           placeholder="Ej: Bio-Rad, Randox, etc.">
                </div>
            </div>
            
            <div class="row">
                <div class="col-md-3 mb-3">
                    <label class="form-label">Nivel <span class="text-danger">*</span></label>
                    <select name="nivel" class="form-select" required>
                        <option value="Normal" <?= ($lote['nivel'] ?? '') === 'Normal' ? 'selected' : '' ?>>Normal</option>
                        <option value="Bajo" <?= ($lote['nivel'] ?? '') === 'Bajo' ? 'selected' : '' ?>>Bajo</option>
                        <option value="Alto" <?= ($lote['nivel'] ?? '') === 'Alto' ? 'selected' : '' ?>>Alto</option>
                        <option value="Patológico" <?= ($lote['nivel'] ?? '') === 'Patológico' ? 'selected' : '' ?>>Patológico</option>
                    </select>
                </div>
                <div class="col-md-3 mb-3">
                    <label class="form-label">Fecha de Recepción</label>
                    <input type="date" name="fecha_recepcion" class="form-control"
                           value="<?= $lote['fecha_recepcion'] ?? '' ?>">
                </div>
                <div class="col-md-3 mb-3">
                    <label class="form-label">Fecha de Apertura</label>
                    <input type="date" name="fecha_apertura" class="form-control"
                           value="<?= $lote['fecha_apertura'] ?? '' ?>">
                </div>
                <div class="col-md-3 mb-3">
                    <label class="form-label">Fecha de Vencimiento <span class="text-danger">*</span></label>
                    <input type="date" name="fecha_vencimiento" class="form-control" required
                           value="<?= $lote['fecha_vencimiento'] ?? '' ?>">
                </div>
            </div>
            
            <div class="row">
                <div class="col-md-4 mb-3">
                    <label class="form-label">Temperatura de Almacenamiento</label>
                    <input type="text" name="temperatura" class="form-control"
                           value="<?= htmlspecialchars($lote['temperatura_almacenamiento'] ?? '') ?>"
                           placeholder="Ej: 2-8°C">
                </div>
                <div class="col-md-4 mb-3">
                    <label class="form-label">Estado</label>
                    <select name="estado" class="form-select">
                        <option value="Activo" <?= ($lote['estado'] ?? 'Activo') === 'Activo' ? 'selected' : '' ?>>Activo</option>
                        <option value="Agotado" <?= ($lote['estado'] ?? '') === 'Agotado' ? 'selected' : '' ?>>Agotado</option>
                        <option value="Vencido" <?= ($lote['estado'] ?? '') === 'Vencido' ? 'selected' : '' ?>>Vencido</option>
                        <option value="Descartado" <?= ($lote['estado'] ?? '') === 'Descartado' ? 'selected' : '' ?>>Descartado</option>
                    </select>
                </div>
            </div>
            
            <div class="mb-3">
                <label class="form-label">Observaciones</label>
                <textarea name="observaciones" class="form-control" rows="3"
                          placeholder="Instrucciones de uso, condiciones especiales, etc."><?= htmlspecialchars($lote['observaciones'] ?? '') ?></textarea>
            </div>
            
            <hr>
            <div class="d-flex justify-content-between">
                <a href="list.php" class="btn btn-outline-secondary">
                    <i class="bi bi-arrow-left me-1"></i> Cancelar
                </a>
                <button type="submit" class="btn btn-primary">
                    <i class="bi bi-check-lg me-1"></i> <?= $action === 'edit' ? 'Actualizar' : 'Guardar y Configurar Parámetros' ?>
                </button>
            </div>
        </form>
    </div>
</div>

<script>
// Validación del formulario
(function() {
    'use strict';
    const forms = document.querySelectorAll('.needs-validation');
    Array.from(forms).forEach(form => {
        form.addEventListener('submit', event => {
            if (!form.checkValidity()) {
                event.preventDefault();
                event.stopPropagation();
            }
            form.classList.add('was-validated');
        }, false);
    });
})();
</script>

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