<?php
//Incluimos conexion a la base de trader_cdlrisefall3methods
date_default_timezone_set('America/Lima');
require "../config/Conexion.php";

Class Ingreso
{
  //Implementando nuestro constructor
  public function __construct()
  {


  }
      public function insertar($idusuario,$idcontrato,$nrorecibo,$metodo_pago,$monto,$descripcion,$fecha) {
        $sql = "INSERT INTO ingreso (idcontrato,idusuario,descripcion,monto,nrorecibo,fecha,metodo_pago) 
                VALUES ('$idcontrato', '$idusuario','$descripcion','$monto','$nrorecibo','$fecha','$metodo_pago')";
        return ejecutarConsulta($sql);
    }

    public function insertaregreso($idusuario,$idempleado,$nrorecibo,$metodo_pago,$monto,$descripcion,$fecha) {
        $sql = "INSERT INTO egreso (idempleado,idusuario,descripcion,monto,nrorecibo,fecha,metodo_pago) 
                VALUES ('$idempleado', '$idusuario','$descripcion','$monto','$nrorecibo','$fecha','$metodo_pago')";
        return ejecutarConsulta($sql);
    }

    // Método para editar
    public function editar($idingreso,$idusuario,$idcontrato,$nrorecibo,$metodo_pago,$monto,$descripcion,$fecha) {
        $sql = "UPDATE ingreso SET 
                descripcion = '$descripcion', 
                idusuario = '$idusuario'                 
                WHERE idingreso = '$idingreso'";
        return ejecutarConsulta($sql);
    }

     public function editaregreso($idegreso,$idusuario,$idempleado,$nrorecibo,$metodo_pago,$monto,$descripcion,$fecha) {
        $sql = "UPDATE egreso SET 
                descripcion = '$descripcion',
                monto = '$monto', 
                metodo_pago = '$metodo_pago', 
                nrorecibo = '$nrorecibo',
                idempleado = '$idempleado',
                fecha = '$fecha', 
                idusuario = '$idusuario'                 
                WHERE idegreso = '$idegreso'";
        return ejecutarConsulta($sql);
    }

    public function listaringreso($ano,$mes)
    {
      $sql="SELECT c.idingreso,c.descripcion,c.monto,c.nrorecibo,c.fecha,c.metodo_pago,u.nombre as usuario,e.nombre as persona,t.tipo_contrato,t.nrocontrato 
            FROM ingreso c 
            JOIN contrato t ON c.idcontrato=t.idcontrato
            JOIN persona e ON t.idcliente=e.idpersona
            JOIN usuario u on c.idusuario=u.idusuario 
            WHERE YEAR(c.fecha)='$ano' and MONTH(c.fecha)='$mes' ";
      return ejecutarConsulta($sql);
    }

    public function listarEgreso($ano,$mes)
    {
      $sql="SELECT c.idegreso,c.descripcion,c.monto,c.nrorecibo,c.fecha,c.metodo_pago,u.nombre as usuario,e.nombre as empleado
            FROM egreso c 
            JOIN persona e ON c.idempleado=e.idpersona
            JOIN usuario u on c.idusuario=u.idusuario 
            WHERE YEAR(c.fecha)='$ano' and MONTH(c.fecha)='$mes' ";
      return ejecutarConsulta($sql);
    }

    public function mostrar($idingreso)
    {
      $sql="SELECT * FROM ingreso where idingreso='$idingreso'";
      return ejecutarConsultaSimpleFila($sql);

    }

    public function mostraregreso($idegreso)
    {
      $sql="SELECT * FROM egreso where idegreso='$idegreso'";
      return ejecutarConsultaSimpleFila($sql);

    }

    //Implementamos un metodo para eliminar registro
    public function eliminar($idingreso)
    {
      $sql="DELETE FROM ingreso where idingreso='$idingreso'";
      return ejecutarConsulta($sql);
    }

    public function cantidadTotal($ano, $mes)
    {
    $sql = "SELECT
               SUM(CASE WHEN i.metodo_pago = 1 THEN i.monto ELSE 0 END) AS total_efectivo,
               SUM(CASE WHEN i.metodo_pago IN (2, 3) THEN i.monto ELSE 0 END) AS total_transferencia
            FROM ingreso i
            WHERE YEAR(i.fecha) = '$ano' AND MONTH(i.fecha) = '$mes'";
    
    return ejecutarConsultaSimpleFila($sql);
    }

    public function cantidadTotalEgreso($ano, $mes)
    {
    $sql = "SELECT
               SUM(CASE WHEN i.metodo_pago = 1 THEN i.monto ELSE 0 END) AS total_efectivo,
               SUM(CASE WHEN i.metodo_pago IN (2) THEN i.monto ELSE 0 END) AS total_transferencia
            FROM egreso i
            WHERE YEAR(i.fecha) = '$ano' AND MONTH(i.fecha) = '$mes'";
    
    return ejecutarConsultaSimpleFila($sql);
    }

  public function grafico_venta()
    {
      $queryVentas="SELECT MONTH(fecha) AS mes,SUM(monto) AS total_ventas
      FROM ingreso  
      WHERE YEAR(fecha) = YEAR(CURDATE())
      GROUP BY MONTH(fecha) ORDER BY mes";
      $resultVentas = ejecutarConsulta($queryVentas);

      // Consulta para los egresos
    $queryEgresos = "SELECT MONTH(fecha) AS mes, SUM(monto) AS total_egresos
                     FROM egreso  
                     WHERE YEAR(fecha) = YEAR(CURDATE())
                     GROUP BY MONTH(fecha) ORDER BY mes";
    $resultEgresos = ejecutarConsulta($queryEgresos);

      $ventas = array_fill(0, 12, 0);
      $egresos = array_fill(0, 12, 0);

         // Asignar resultados de ventas al mes correspondiente
        while ($row = $resultVentas->fetch_assoc()) {
            $mes = (int)$row['mes'];
            $ventas[$mes - 1] = (float)$row['total_ventas'];
        }

        // Asignar resultados de egresos al mes correspondiente
        while ($row = $resultEgresos->fetch_assoc()) {
            $mes = (int)$row['mes'];
            $egresos[$mes - 1] = (float)$row['total_egresos'];
        }

        // Respuesta JSON
        return [
            "ventas" => $ventas,
            "egresos" => $egresos
        ];
    }

    

  }

 ?>