<?php
if (strlen(session_id()) < 1)
    session_start();

require_once "../config/Conexion.php";
require_once "../modelos/OdontPresupuesto.php";
require_once "../modelos/OdontCuota.php";

$presupuesto = new OdontPresupuesto();
$cuota = new OdontCuota();

$idpresupuesto = isset($_POST["idpresupuesto"]) ? limpiarCadena($_POST["idpresupuesto"]) : "";
$idpersona = isset($_POST["idpersona"]) ? limpiarCadena($_POST["idpersona"]) : "";
$idusuario = $_SESSION["idusuario"];
$fecha_vencimiento = isset($_POST["fecha_vencimiento"]) ? limpiarCadena($_POST["fecha_vencimiento"]) : "";
$observaciones = isset($_POST["observaciones"]) ? limpiarCadena($_POST["observaciones"]) : "";
$subtotal = isset($_POST["subtotal"]) ? limpiarCadena($_POST["subtotal"]) : "";
$descuento_total = isset($_POST["descuento_total"]) ? limpiarCadena($_POST["descuento_total"]) : "";
$total = isset($_POST["total"]) ? limpiarCadena($_POST["total"]) : "";
$idforma_pago = isset($_POST["idforma_pago"]) ? limpiarCadena($_POST["idforma_pago"]) : "";
$tiene_cuotas = isset($_POST["tiene_cuotas"]) ? 1 : 0;

switch ($_GET["op"]) {
    case 'guardaryeditar':
        if (empty($idpresupuesto)) {
            $rspta = $presupuesto->insertar($idpersona, $idusuario, $fecha_vencimiento, $subtotal, $descuento_total, $total, $observaciones, $_POST["idprocedimiento"], $_POST["cantidad"], $_POST["precio_unitario"], $_POST["descuento"], $_POST["diente"], $_POST["cara"], $_POST["subtotal_detalle"]);

            if ($rspta) {
                // Actualizar forma de pago y saldo pendiente
                $sql_update = "UPDATE odont_presupuesto SET idforma_pago = '$idforma_pago', tiene_cuotas = '$tiene_cuotas', saldo_pendiente = '$total' WHERE idpresupuesto = '$rspta'";
                ejecutarConsulta($sql_update);

                // Si tiene cuotas, crear el plan
                if ($tiene_cuotas == 1) {
                    $numero_cuotas = isset($_POST["numero_cuotas"]) ? limpiarCadena($_POST["numero_cuotas"]) : "";
                    $monto_cuota = isset($_POST["monto_cuota"]) ? limpiarCadena($_POST["monto_cuota"]) : "";
                    $fecha_inicio = isset($_POST["fecha_inicio_cuotas"]) ? limpiarCadena($_POST["fecha_inicio_cuotas"]) : "";
                    $periodicidad = isset($_POST["periodicidad"]) ? limpiarCadena($_POST["periodicidad"]) : "Mensual";

                    $cuota->crearPlanCuotas($rspta, $numero_cuotas, $monto_cuota, $fecha_inicio, $periodicidad);
                }

                echo "Presupuesto registrado correctamente";
            } else {
                echo "No se pudieron registrar todos los datos del presupuesto";
            }
        } else {
            $rspta = $presupuesto->editar($idpresupuesto, $idpersona, $idusuario, $fecha_vencimiento, $subtotal, $descuento_total, $total, $observaciones, $_POST["idprocedimiento"], $_POST["cantidad"], $_POST["precio_unitario"], $_POST["descuento"], $_POST["diente"], $_POST["cara"], $_POST["subtotal_detalle"]);

            if ($rspta) {
                // Actualizar forma de pago
                $sql_update = "UPDATE odont_presupuesto SET idforma_pago = '$idforma_pago', saldo_pendiente = '$total' WHERE idpresupuesto = '$idpresupuesto'";
                ejecutarConsulta($sql_update);

                echo "Presupuesto actualizado";
            } else {
                echo "No se pudo actualizar el presupuesto";
            }
        }
        break;

    case 'anular':
        $rspta = $presupuesto->anular($idpresupuesto);
        echo $rspta ? "Presupuesto anulado" : "Presupuesto no se puede anular";
        break;

    case 'aprobar':
        $rspta = $presupuesto->aprobar($idpresupuesto);
        echo $rspta ? "Presupuesto arobado" : "Presupuesto no se puede aprobar";
        break;

    case 'mostrar':
        $rspta = $presupuesto->mostrar($idpresupuesto);
        echo json_encode($rspta);
        break;

    case 'listarDetalle':
        //Recibimos el idpresupuesto
        $id = $_GET['id'];
        $rspta = $presupuesto->listarDetalle($id);
        $data = array();
        while ($reg = $rspta->fetch_object()) {
            $data[] = $reg;
        }
        echo json_encode($data);
        break;

    case 'listar':
        $rspta = $presupuesto->listar();
        $data = array();

        while ($reg = $rspta->fetch_object()) {
            // Botones según estado
            $botones = '';

            if ($reg->estado == 'Aprobado') {
                $btnPago = '';
                // Verificar estado de pago directamente
                // Solo si el estado es 'Pagado' mostramos el check
                if ($reg->estado_pago == 'Pagado') {
                    $btnPago = '<button class="btn btn-success btn-sm" onclick="abrirModalPago(' . $reg->idpresupuesto . ',\'' . addslashes($reg->paciente) . '\',' . $reg->total . ')" title="TOTALMENTE PAGADO"><i class="fa fa-check-circle"></i></button> ';
                } else {
                    $btnPago = '<button class="btn btn-success btn-sm" onclick="abrirModalPago(' . $reg->idpresupuesto . ',\'' . addslashes($reg->paciente) . '\',' . $reg->total . ')" title="Registrar Pago"><i class="fa fa-money"></i></button> ';
                }

                $botones = '<button class="btn btn-info btn-sm" onclick="verPDF(' . $reg->idpresupuesto . ')" title="Ver PDF"><i class="fa fa-file-pdf-o"></i></button> ' .
                    $btnPago .
                    '<button class="btn btn-warning btn-sm" onclick="mostrar(' . $reg->idpresupuesto . ')" title="Ver"><i class="fa fa-eye"></i></button>';
            } elseif ($reg->estado == 'Rechazado') {
                $botones = '<button class="btn btn-warning btn-sm" onclick="mostrar(' . $reg->idpresupuesto . ')" title="Ver"><i class="fa fa-eye"></i></button>';
            } else {
                // Pendiente o Borrador
                $botones = '<button class="btn btn-warning btn-sm" onclick="mostrar(' . $reg->idpresupuesto . ')" title="Editar"><i class="fa fa-pencil"></i></button> ' .
                    '<button class="btn btn-danger btn-sm" onclick="anular(' . $reg->idpresupuesto . ')" title="Anular"><i class="fa fa-close"></i></button> ' .
                    '<button class="btn btn-success btn-sm" onclick="aprobar(' . $reg->idpresupuesto . ')" title="Aprobar"><i class="fa fa-check"></i></button> ' .
                    '<button class="btn btn-info btn-sm" onclick="verPDF(' . $reg->idpresupuesto . ')" title="Ver PDF"><i class="fa fa-file-pdf-o"></i></button>';
            }

            $data[] = array(
                "0" => $botones,
                "1" => $reg->fecha_emision,
                "2" => $reg->paciente,
                "3" => $reg->total,
                "4" => ($reg->estado == 'Aprobado') ? '<span class="label bg-green">Aprobado</span>' :
                    (($reg->estado == 'Rechazado') ? '<span class="label bg-red">Anulado</span>' :
                        '<span class="label bg-blue">Pendiente</span>')
            );
        }
        $results = array(
            "sEcho" => 1,
            "iTotalRecords" => count($data),
            "iTotalDisplayRecords" => count($data),
            "aaData" => $data
        );
        echo json_encode($results);
        break;

    case 'selectPaciente':
        require_once "../modelos/Persona.php";
        $persona = new Persona();
        $rspta = $persona->listarP();
        while ($reg = $rspta->fetch_object()) {
            echo '<option value=' . $reg->idpersona . '>' . $reg->paciente . '</option>';
        }
        break;
}
?>