<?php
//Incluímos inicialmente la conexión a la base de datos
require "../config/Conexion.php";

class OdontPresupuesto
{
    //Implementamos nuestro constructor
    public function __construct()
    {
    }

    //Implementamos un método para insertar registros
    public function insertar($idpersona, $idusuario, $fecha_vencimiento, $subtotal, $descuento_total, $total, $observaciones, $idprocedimiento, $cantidad, $precio_unitario, $descuento, $diente, $cara, $subtotal_detalle)
    {
        $sql = "INSERT INTO odont_presupuesto (idpersona, idusuario, fecha_emision, fecha_vencimiento, subtotal, descuento_total, total, estado, observaciones)
		VALUES ('$idpersona', '$idusuario', current_timestamp(), '$fecha_vencimiento', '$subtotal', '$descuento_total', '$total', 'Pendiente', '$observaciones')";
        //Devuelve id registrado
        $idpresupuestonew = ejecutarConsulta_retornarID($sql);

        $num_elementos = 0;
        $sw = true;

        if (is_array($idprocedimiento)) {
            while ($num_elementos < count($idprocedimiento)) {
                $sql_detalle = "INSERT INTO odont_detalle_presupuesto(idpresupuesto, idprocedimiento, diente, cara, cantidad, precio_unitario, descuento, subtotal, estado_detalle) 
                VALUES ('$idpresupuestonew', '$idprocedimiento[$num_elementos]', '$diente[$num_elementos]', '$cara[$num_elementos]', '$cantidad[$num_elementos]', '$precio_unitario[$num_elementos]', '$descuento[$num_elementos]', '$subtotal_detalle[$num_elementos]', 'Pendiente')";
                ejecutarConsulta($sql_detalle) or $sw = false;
                $num_elementos = $num_elementos + 1;
            }
        }

        return $sw;
    }

    //Implementamos un método para editar registros
    public function editar($idpresupuesto, $idpersona, $idusuario, $fecha_vencimiento, $subtotal, $descuento_total, $total, $observaciones, $idprocedimiento, $cantidad, $precio_unitario, $descuento, $diente, $cara, $subtotal_detalle)
    {
        $sql = "UPDATE odont_presupuesto SET idpersona='$idpersona', fecha_vencimiento='$fecha_vencimiento', subtotal='$subtotal', descuento_total='$descuento_total', total='$total', observaciones='$observaciones' WHERE idpresupuesto='$idpresupuesto'";
        ejecutarConsulta($sql);

        //Eliminamos el detalle anterior
        $sqldel = "DELETE FROM odont_detalle_presupuesto WHERE idpresupuesto='$idpresupuesto'";
        ejecutarConsulta($sqldel);

        $num_elementos = 0;
        $sw = true;

        if (is_array($idprocedimiento)) {
            while ($num_elementos < count($idprocedimiento)) {
                $sql_detalle = "INSERT INTO odont_detalle_presupuesto(idpresupuesto, idprocedimiento, diente, cara, cantidad, precio_unitario, descuento, subtotal, estado_detalle) 
                VALUES ('$idpresupuesto', '$idprocedimiento[$num_elementos]', '$diente[$num_elementos]', '$cara[$num_elementos]', '$cantidad[$num_elementos]', '$precio_unitario[$num_elementos]', '$descuento[$num_elementos]', '$subtotal_detalle[$num_elementos]', 'Pendiente')";
                ejecutarConsulta($sql_detalle) or $sw = false;
                $num_elementos = $num_elementos + 1;
            }
        }
        return $sw;
    }

    //Implementamos un método para anular/rechazar
    public function anular($idpresupuesto)
    {
        $sql = "UPDATE odont_presupuesto SET estado='Rechazado' WHERE idpresupuesto='$idpresupuesto'";
        return ejecutarConsulta($sql);
    }

    // Aprobar presupuesto
    public function aprobar($idpresupuesto)
    {
        $sql = "UPDATE odont_presupuesto SET estado='Aprobado' WHERE idpresupuesto='$idpresupuesto'";
        return ejecutarConsulta($sql);
    }

    //Implementar un método para mostrar los datos de un registro a modificar
    public function mostrar($idpresupuesto)
    {
        $sql = "SELECT p.idpresupuesto, p.idpersona, CONCAT(per.apaterno, ' ', per.amaterno, ' ', per.nombre) as paciente, per.num_documento, per.email, per.telefono, per.direccion, p.idusuario, p.fecha_emision, p.fecha_vencimiento, p.subtotal, p.descuento_total, p.total, p.estado, p.observaciones 
        FROM odont_presupuesto p 
        INNER JOIN persona per ON p.idpersona=per.idpersona 
        WHERE p.idpresupuesto='$idpresupuesto'";
        return ejecutarConsultaSimpleFila($sql);
    }

    public function listarDetalle($idpresupuesto)
    {
        $sql = "SELECT dp.iddetalle, dp.idpresupuesto, dp.idprocedimiento, proc.nombre as procedimiento, dp.diente, dp.cara, dp.cantidad, dp.precio_unitario, dp.descuento, dp.subtotal, dp.estado_detalle
        FROM odont_detalle_presupuesto dp 
        INNER JOIN odont_procedimiento proc ON dp.idprocedimiento=proc.idprocedimiento 
        WHERE dp.idpresupuesto='$idpresupuesto'";
        return ejecutarConsulta($sql);
    }

    //Implementar un método para listar los registros
    public function listar()
    {
        $sql = "SELECT p.idpresupuesto, p.fecha_emision, p.idpersona, CONCAT(per.apaterno, ' ', per.amaterno, ' ', per.nombre) as paciente, p.total, p.estado, p.saldo_pendiente, p.estado_pago 
        FROM odont_presupuesto p 
        INNER JOIN persona per ON p.idpersona=per.idpersona 
        ORDER BY p.idpresupuesto DESC";
        return ejecutarConsulta($sql);
    }
}
