<?php
// controlador/procesar_pago.php

// Forzar mostrar errores en pantalla
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

if (session_status() === PHP_SESSION_NONE) { session_start(); }

// Subir un nivel (../) para salir de controlador e ingresar a modelo
require_once "../modelo/Db.php"; 

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Instanciamos tu clase nativa clsbdd
    $bd = new clsbdd();

    $bas_id = intval($_POST['bas_id']);
    $pag_monto = floatval($_POST['pag_monto']);
    $pag_comprobante = $bd->esc(trim($_POST['pag_comprobante']));
    
    // 1. Procesar la subida del archivo adjunto
    $ruta_final = null;
    if (isset($_FILES['comprobante_file']) && $_FILES['comprobante_file']['error'] === UPLOAD_ERR_OK) {
        $file_tmp = $_FILES['comprobante_file']['tmp_name'];
        $file_name = $_FILES['comprobante_file']['name'];
        $ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
        
        // Evitamos sobreescrituras generando un nombre único
        $nuevo_nombre = "COMP_" . $bas_id . "_" . time() . "." . $ext;
        
        // La carpeta assets está en la raíz de /stage/, por ende subimos un nivel
        $directorio = "../assets/comprobantes_pagres/";
        
        if (!is_dir($directorio)) {
            mkdir($directorio, 0755, true);
        }
        
        if (move_uploaded_file($file_tmp, $directorio . $nuevo_nombre)) {
            $ruta_final = "assets/comprobantes_pagres/" . $nuevo_nombre;
        }
    }

    if (!$ruta_final) {
        header("Location: ../index.php?page=padres/ficha_alumno&res=error_archivo");
        exit();
    }
    
    // 2. Buscar la deuda pendiente más antigua vinculada a este alumno
    $sql_cxc = "SELECT cxc_id FROM bas_cuentas_cobrar 
                WHERE bas_id = $bas_id AND cxc_estado = 'PENDIENTE' 
                ORDER BY cxc_fecha_emision ASC LIMIT 1";
                
    $res_cxc = $bd->ejecutar($sql_cxc);
    $cxc_id = null;
    
    if ($res_cxc && $res_cxc->num_rows > 0) {
        $cxc = $res_cxc->fetch_assoc();
        $cxc_id = intval($cxc['cxc_id']);
    }

    if ($cxc_id) {
        // CORRECCIÓN: Dejamos únicamente las columnas reales de tu esquema de tabla bas_pagos
        $sql_insert = "INSERT INTO bas_pagos (
                            cxc_id, 
                            pag_monto, 
                            pag_metodo, 
                            pag_comprobante, 
                            pag_adjunto_ruta, 
                            pag_estado, 
                            pag_fecha
                       ) VALUES (
                            $cxc_id, 
                            $pag_monto, 
                            'TRANSFERENCIA', 
                            '$pag_comprobante', 
                            '$ruta_final', 
                            'PENDIENTE', 
                            NOW()
                       )";
        
        if ($bd->ejecutar($sql_insert)) {
            header("Location: ../index.php?page=padres/ficha_alumno&res=pago_enviado");
        } else {
            echo "Error al insertar el pago en la base de datos.";
        }
    } else {
        header("Location: ../index.php?page=padres/ficha_alumno&res=sin_cuentas");
    }
    exit();
}