<?php
require("../clases/Gasto.class.php");
require("../clases/Desembolso.class.php");

$obj  = new Gasto();
$objD = new Desembolso();

$t = $_REQUEST["text"]; // R = Registrar, M = Modificar, E = Eliminar


// =========================================================
//  REGISTRAR GASTO
// =========================================================
if ($t == "R") {

    $iddesembolso = $_REQUEST["iddesembolso"];
    $idtipogasto  = $_REQUEST["idtipogasto"];
    $fecha        = $_REQUEST["fecha"];
    $proveedor    = $_REQUEST["proveedor"];
    $idtipodoc    = $_REQUEST["idtipodoc"];
    $num_doc      = $_REQUEST["num_doc"];
    $concepto     = $_REQUEST["concepto"];
    $monto        = $_REQUEST["monto"];
    
    $nombreArchivo = null;

    if(isset($_FILES['archivo']) && $_FILES['archivo']['error'] == 0){
        
        $maxSize = 5 * 1024 * 1024; // 5MB

        if ($_FILES['archivo']['size'] > $maxSize) {
            die("El archivo no debe superar los 5 MB");
        }
    
        $ext = pathinfo($_FILES['archivo']['name'], PATHINFO_EXTENSION);
        $ext = strtolower($ext);
    
        // Validar extensión permitida
        $permitidos = ['jpg','jpeg','png','gif','pdf'];
    
        if(in_array($ext, $permitidos)){
    
            // Crear nombre único
            $nombreArchivo = "archivo_".time()."_".rand(100,999).".".$ext;
    
            // Carpeta donde se guardarán
            $ruta = "../uploads/gastos/".$nombreArchivo;
    
            // Crear carpeta si no existe
            if(!file_exists("../uploads/gastos/")){
                mkdir("../uploads/gastos/", 0777, true);
            }
    
            move_uploaded_file($_FILES['archivo']['tmp_name'], $ruta);
        }else {
                die("Tipo de archivo no permitido");
              }
    }

     $lista_gastos = $obj->ListarPorDesembolso($iddesembolso);
     for($i=0;$i<count($lista_gastos);$i++)
     {
         $gastos = $gastos + $lista_gastos[$i]["monto"];
     }
    // Validación: monto no puede superar el desembolso
    if ($objD->BuscarPorCodigo($iddesembolso)) {
        $monto_desembolso = $objD->getMonto();
        if ($monto+$gastos > $monto_desembolso) {
            echo "<script>
                    alert('El monto del gasto no puede ser mayor al monto del desembolso.');
                    location.href='../mangasto.php?iddesembolso=$iddesembolso';
                  </script>";
            exit;
        }
    }

    if ($obj->Crear($iddesembolso, $idtipogasto, $fecha, $proveedor, $idtipodoc, $num_doc, $concepto, $monto,$nombreArchivo)) {
        echo "<script>location.href='../mangasto.php?iddesembolso=$iddesembolso';</script>";
    } else {
        echo "No se pudo registrar el gasto";
    }
}



// =========================================================
//  MODIFICAR GASTO
// =========================================================
if ($t == "M") {

    $idgasto      = $_REQUEST["idgasto"];
    $iddesembolso = $_REQUEST["iddesembolso"];
    $idtipogasto  = $_REQUEST["idtipogasto"];
    $fecha        = $_REQUEST["fecha"];
    $proveedor    = $_REQUEST["proveedor"];
    $idtipodoc    = $_REQUEST["idtipodoc"];
    $num_doc      = $_REQUEST["num_doc"];
    $concepto     = $_REQUEST["concepto"];
    $monto        = $_REQUEST["monto"];
    
    if($obj->BuscarPorCodigo($idgasto)){
        
        $archivo = $obj->getArchivo();
    }
    
    $nombreArchivo = null;

    if(isset($_FILES['archivo']) && $_FILES['archivo']['error'] == 0){
    
        $ext = pathinfo($_FILES['archivo']['name'], PATHINFO_EXTENSION);
        $ext = strtolower($ext);
    
        // Validar extensión permitida
        $permitidos = ['jpg','jpeg','png','gif','pdf'];
    
        if(in_array($ext, $permitidos)){
    
            // Crear nombre único
            $nombreArchivo = "archivo_".time()."_".rand(100,999).".".$ext;
    
            // Carpeta donde se guardarán
            $ruta = "../uploads/gastos/".$nombreArchivo;
    
            // Crear carpeta si no existe
            if(!file_exists("../uploads/gastos/")){
                mkdir("../uploads/gastos/", 0777, true);
            }
    
            move_uploaded_file($_FILES['archivo']['tmp_name'], $ruta);
        }
    }

    // Validación igual que en registrar
    if ($objD->BuscarPorCodigo($iddesembolso)) {
        $monto_desembolso = $objD->getMonto();
        if ($monto > $monto_desembolso) {
            echo "<script>
                    alert('El monto del gasto no puede ser mayor al monto del desembolso.');
                    location.href='../mangasto.php?iddesembolso=$iddesembolso';
                  </script>";
            exit;
        }
    }
    if($nombreArchivo == "" || $nombreArchivo == null){
         $nombreArchivo = $archivo;
     }


    if ($obj->Actualizar($idgasto, $iddesembolso, $idtipogasto, $fecha, $proveedor, $idtipodoc, $num_doc, $concepto, $monto,$nombreArchivo)) {
        echo "<script>location.href='../mangasto.php?iddesembolso=$iddesembolso';</script>";
    } else {
        echo "No se pudo actualizar el gasto";
    }
}



// =========================================================
//  ELIMINAR GASTO
// =========================================================
if ($t == "E") {

    $idgasto = $_REQUEST["id"];
    $iddesembolso = $_REQUEST["idd"];

    if ($obj->Eliminar($idgasto)) {
        echo "<script>location.href='../mangasto.php?iddesembolso=$iddesembolso';</script>";
    } else {
        echo "No se pudo eliminar el gasto";
    }
}

?>

