<?php
// Confirmar sesión
session_start();

if (!isset($_SESSION['loggedin'])) {
    header('Location: index.php');
    exit;
}

include_once('conexion.php');

// Obtener la cantidad total de conos producidos (de la tabla prdhvo)
$sql_total_conos = "SELECT SUM(numcns) AS total_conos FROM prdhvo";
$resultado_total_conos = mysqli_query($conexion, $sql_total_conos);
$fila_total_conos = mysqli_fetch_assoc($resultado_total_conos);
$total_conos_producidos = $fila_total_conos['total_conos'];

// Obtener la cantidad total de conos asignados (de la tabla controlconos)
$sql_total_asignados = "SELECT SUM(numcon) AS total_asignado FROM controlconos";
$resultado_total_asignados = mysqli_query($conexion, $sql_total_asignados);
$fila_total_asignados = mysqli_fetch_assoc($resultado_total_asignados);
$total_conos_asignados = $fila_total_asignados['total_asignado'];

// Calcular los conos disponibles (producción - asignación)
$total_conos_disponibles = $total_conos_producidos - $total_conos_asignados;

// Si se envía el formulario, procesar los datos
if (isset($_POST['guardar'])) {
    $idusu = $_POST['idusu'];  // Vendedor
    $feccon = $_POST['feccon'];  // Fecha
    $numcon = $_POST['numcon'];  // Array de número de conos
    $kilcon = $_POST['kilcon'];  // Array de peso de los conos
    $precio = 50; // Precio predeterminado

    // Calcular total de conos a asignar
    $total_a_asignar = array_sum($numcon);

    // Validar que la cantidad de conos no exceda el total disponible
    if (($total_conos_asignados + $total_a_asignar) > $total_conos_producidos) {
        $mensaje_error = "No se pueden asignar más conos. El total de conos asignados supera el inventario disponible.";
    } else {
        // Validar que todos los campos estén completos
        $valido = true;
        $total_peso = 0;
        for ($i = 0; $i < count($numcon); $i++) {
            if (empty($numcon[$i]) || empty($kilcon[$i])) {
                $valido = false;
                break;
            }
            $total_peso += floatval($kilcon[$i]);
        }

        if ($valido) {
            // Iniciar transacción
            mysqli_autocommit($conexion, FALSE);

            $todo_bien = true;
            for ($i = 0; $i < count($numcon); $i++) {
                $num = intval($numcon[$i]);
                $kil = floatval($kilcon[$i]);

                $sql_insert = "INSERT INTO controlconos (idusu, feccon, numcon, kilcon, precio) 
                               VALUES ('$idusu', '$feccon', '$num', '$kil', '$precio')";
                
                if (!mysqli_query($conexion, $sql_insert)) {
                    $todo_bien = false;
                    break;
                }
            }

            if ($todo_bien) {
                // Actualizar el campo kildsp en la tabla usuario sumándole el peso total de los conos
                $sql_update = "UPDATE usuario 
                               SET kildsp = kildsp + $total_peso 
                               WHERE idusu = '$idusu'";
                
                if (mysqli_query($conexion, $sql_update)) {
                    mysqli_commit($conexion);
                    // Redirigir a control.php después de guardar
                    header("Location: control.php");
                    exit();
                } else {
                    mysqli_rollback($conexion);
                    $mensaje_error = "Error al actualizar el campo de kilos disponibles: " . mysqli_error($conexion);
                }
            } else {
                mysqli_rollback($conexion);
                $mensaje_error = "Error al registrar los controles: " . mysqli_error($conexion);
            }
        } else {
            $mensaje_error = "Todos los campos de conos y peso deben estar completos.";
        }
    }
}
?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Registrar Control de Conos</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <style>
        /* Contenedor general centrado para la tabla */
        #nuevo {
            max-width: 600px; /* Ancho máximo para la sección de la tabla */
            margin: 0 auto; /* Centrado */
            padding: 0 10px; /* Espacio lateral */
        }

        .tabla-conos {
            width: 100%; /* La tabla ocupa el 100% del contenedor #nuevo */
            border-collapse: collapse;
            margin-top: 8px;
            font-size: 14px;
        }
        .tabla-conos th, .tabla-conos td {
            border: 1px solid #ddd;
            padding: 4px 8px;
            text-align: left;
        }
        .tabla-conos input {
            width: 100%;
            padding: 2px 4px;
            margin: 0;
            box-sizing: border-box;
            height: 24px;
            font-size: 13px;
        }
        .btn-fila {
            background: none;
            border: none;
            font-size: 16px;
            cursor: pointer;
            padding: 0 4px;
            margin: 0;
            line-height: 1;
        }
        .btn-agregar {
            color: green;
        }
        .btn-eliminar {
            color: red;
        }
        .btn-agregar:hover, .btn-eliminar:hover {
            opacity: 0.7;
        }

        /* --- Nuevas reglas para ancho de columnas --- */
        .tabla-conos th:nth-child(1),
        .tabla-conos td:nth-child(1) { /* Columna de Número de Conos */
            width: 100px; /* Ancho fijo */
        }
        .tabla-conos th:nth-child(2),
        .tabla-conos td:nth-child(2) { /* Columna de Peso (kg) */
            width: 100px; /* Ancho fijo */
        }
        .tabla-conos th:nth-child(3),
        .tabla-conos td:nth-child(3) { /* Columna de Acciones */
            width: 80px; /* Ancho fijo para los botones */
            text-align: center; /* Centrado para los botones */
        }
        /* ------------------------------------------ */

        .btn {
            margin-top: 10px;
        }
    </style>
</head>
<body class="loggedin">
    <nav class="navtop">
        <h1 style="color:white;">Registrar Control de Conos</h1>
        <table width="35%" border="0" style="width: 200px;">
            <tr>
                <td><a href="control.php" style="color:white;">Ver Control</a></td>
                <td><a target="_top" href="inicio.php" style="color:white;"><i class="fas fa-user-circle"></i>Cerrar</a></td>
            </tr>
        </table>
    </nav>

    <br><br>

    <div id="nuevo">
        <!-- Mostrar los conos disponibles -->
        <p><strong>Conos disponibles: </strong><?php echo $total_conos_disponibles; ?> conos.</p>

        <?php if (isset($mensaje_error)): ?>
            <div style="color: red; padding: 8px; border: 1px solid red; margin: 10px 0; background-color: #ffe6e6; font-size: 14px;">
                <?php echo $mensaje_error; ?>
            </div>
        <?php endif; ?>

        <form method="post" action="" id="form-control">
            <table align="center">
                <tr>
                    <td><strong>Fecha de Registro</strong></td>
                    <td><input type="date" name="feccon" value="<?php echo date('Y-m-d'); ?>" required style="padding: 4px; font-size: 14px;"></td>
                </tr>
                <tr>
                    <td><strong>Vendedor</strong></td>
                    <td>
                        <select name="idusu" required style="padding: 4px; font-size: 14px;">
                            <option value="">Seleccione un vendedor</option>
                            <?php
                            $sql = "SELECT idusu, nomusu FROM usuario";
                            $resultado = mysqli_query($conexion, $sql);
                            while ($fila = mysqli_fetch_assoc($resultado)) {
                                echo "<option value='" . $fila['idusu'] . "'>" . $fila['nomusu'] . "</option>";
                            }
                            ?>
                        </select>
                    </td>
                </tr>
            </table>

            <br>

            <table class="tabla-conos" id="tabla-conos">
                <thead>
                    <tr>
                        <th>Número de Conos</th>
                        <th>Peso (kg)</th>
                        <th>Acciones</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td><input type="number" name="numcon[]" value="1" min="1" step="1" required></td>
                        <td><input type="number" name="kilcon[]" value="1" min="0.01" step="0.01" required></td>
                        <td>
                            <button type="button" class="btn-fila btn-agregar" onclick="agregarFila()">+</button>
                            <button type="button" class="btn-fila btn-eliminar" onclick="eliminarFila(this)" disabled>-</button>
                        </td>
                    </tr>
                </tbody>
            </table>

            <br>

            <table align="center">
                <tr>
                    <td colspan="2">
                        <button type="submit" name="guardar" class="btn"><strong>Guardar Control</strong></button>
                    </td>
                </tr>
            </table>
        </form>
    </div>

    <script>
        function agregarFila() {
            const tabla = document.getElementById('tabla-conos').getElementsByTagName('tbody')[0];
            const nuevaFila = tabla.insertRow();

            nuevaFila.innerHTML = `
                <td><input type="number" name="numcon[]" value="1" min="1" step="1" required></td>
                <td><input type="number" name="kilcon[]" value="1" min="0.01" step="0.01" required></td>
                <td>
                    <button type="button" class="btn-fila btn-agregar" onclick="agregarFila()">+</button>
                    <button type="button" class="btn-fila btn-eliminar" onclick="eliminarFila(this)">-</button>
                </td>
            `;
        }

        function eliminarFila(boton) {
            const tabla = document.getElementById('tabla-conos').getElementsByTagName('tbody')[0];
            const fila = boton.parentNode.parentNode;
            
            // No permitir eliminar la última fila
            if (tabla.rows.length === 1) {
                alert('Debe haber al menos una fila');
                return;
            }
            
            tabla.deleteRow(fila.rowIndex - 1);
        }
    </script>
</body>
</html>