<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
class Inicio extends Conectar
{

  ///////////////////////////////////////////////////////////////////////
  public  function __construct()
  {
    parent::__construct();
  }



  ///////////////////////////////////////////////////////////////////////
  public function data($fecha)
{
    $date1 = $fecha;
    $date2 = date('Y-m-d H:i:s', strtotime($date1 . ' + 1 day')); // Agrega un día para obtener el final del rango
    $sql = $this->consultas("SELECT codigo FROM reporte2 WHERE fecha >= '$date1' AND fecha < '$date2'");
     
    echo json_encode($sql);
    exit;
}




  ///////////////////////////////////////////////////////////////////////
  public function envio_act_n()
  {
    $sql  = $this->consultas("select * from reporte2 where codigo='" . $_POST['codigo'] . "' and tipo ='".$_POST['tipo']."'  ");
    if (count($sql)) {
        
    } else {
     
      $asgru = $this->datab->prepare("insert into reporte2 (tipo,cantidad,estado,codigo,fecha,precio,id_vendedora,cantidad_entrada) values(?,?,?,?,now(),?,?,?)");
      $asgru->bindValue(1, $_POST['tipo']);
      $asgru->bindValue(2, $_POST['cantidad']);
      $asgru->bindValue(3, $_POST['estado']);
      $asgru->bindValue(4, $_POST['codigo']);
      $asgru->bindValue(5, $_POST['precio']);
      $asgru->bindValue(6, $_POST['id_vendedora']);
      $asgru->bindValue(7, $_POST['cantidad']);
      $asgru->execute();
    }
    
    exit;
  }



  ///////////////////////////////////////////////////////////////////////
  public function anulados()
  {




    $sql  = $this->consultas("select * from reporte2 where codigo='" . $_POST['codigo'] . "' ");

    foreach ($sql as  $value) {

      // echo $value['tipo'] . '==' . $value['cantidad'];
      // echo "<br>";

      $stmt = $this->datab->prepare("UPDATE reporte2  set 
cantidad_anulado=?, 
precio_anulado=? 
where id=?	
");
      $stmt->bindValue(1, $value['cantidad']);
      $stmt->bindValue(2, $value['precio']);
      $stmt->bindValue(3, $value['id']);
      $stmt->execute();
    }

    exit;
  }




  ///////////////////////////////////////////////////////////////////////

  public function mostrar_anulados()
  {
    $date1 = $_SESSION['fechax'];
    $date2 = date('Y-m-d H:i:s', strtotime($date1 . ' + 1 day')); // Agrega un día para obtener el final del rango
    $sql  = $this->consultas("SELECT SUM(precio_anulado*cantidad_anulado) AS precio_anulado, SUM(cantidad_anulado) AS canti_anulado, fecha FROM reporte2 WHERE fecha >= '$date1' AND fecha < '$date2'");
    return $sql;
  }
  

  ///////////////////////////////////////////////////////////////////////
  public function cambio_clave()
  {
    $clave_encriptada = password_hash($_POST['clave'], PASSWORD_DEFAULT);
    $stmt = $this->datab->prepare("UPDATE admin  set 
clave=? 
where id='1'	
");
    $stmt->bindValue(1, $clave_encriptada);
    $stmt->execute();
    header("Location:" . ruta . '?pagina=cambio_clave&exito=1');
  }





  ///////////////////////////////////////////////////////////////////////
  public function actializar_ingreso()
  {


    $sql  = $this->consultas("select * from reporte2 where codigo='" . $_POST['codigo'] . "' ");

    foreach ($sql as  $value) {

      // echo $value['tipo'] . '==' . $value['cantidad'];
      // echo "<br>";

      $stmt = $this->datab->prepare("UPDATE reporte2  set 
cantidad_entrada=? 
where id=?	
");
      $stmt->bindValue(1, $value['cantidad']);
      $stmt->bindValue(2, $value['id']);
      $stmt->execute();
    }
    exit;
  }

  ///////////////////////////////////////////////////////////////////////
  public function mostrar_reporte() {
    $date1 = $_SESSION['fechax'];
    $date2 = date('Y-m-d', strtotime($date1)); // Solo toma la parte de la fecha (año, mes, día)
    
    // Si la hora es 00:00:00, filtrar solo por fecha, de lo contrario, filtrar por hora y fecha
    if (date('H:i:s', strtotime($date1)) == '00:00:00') {
        $date3 = date('Y-m-d', strtotime($date1 . '+1 day')); // Añade un día y solo toma la parte de la fecha (año, mes, día)
        $whereClause = "reporte2.fecha >= '$date2' AND reporte2.fecha < '$date3'";
    } else {
        $date3 = date('Y-m-d H:00:00', strtotime($date1 . '+1 hour')); // Añade una hora y toma la parte de fecha y hora
        $whereClause = "reporte2.fecha BETWEEN '$date1' AND '$date3'";
    }
    
    $su = 'sum(reporte2.precio * reporte2.cantidad)';


    
    $sql = $this->consultas("SELECT $su AS precio_sub, 
                                     SUM(reporte2.cantidad) AS canti,  
                                     SUM(reporte2.cantidad_entrada) AS canti_entrada,
                                     reporte2.tipo, 
                                     reporte2.cantidad, 
                                     reporte2.precio, 
                                     reporte2.estado,
                                     SUM(reporte2.cantidad * boletos.numero_personas) AS  total_personas
                                   
                              FROM reporte2
                              LEFT JOIN boletos ON reporte2.tipo = boletos.tipo
                              WHERE reporte2.tipo != 'Vinos'
                                AND reporte2.tipo != 'FULLDAY'
                                AND reporte2.tipo != 'Full Day 2024'
                                AND reporte2.tipo != 'Full Day Premium 2024'
                                AND reporte2.tipo != 'Fullday Castillo Adulto'
                                AND $whereClause
                              GROUP BY reporte2.tipo");

    return $sql;
}


  ///////////////////////////////////////////////////////////////////////
  public function pro_reporte()
  {

    $x = '0';
    $asgru = $this->datab->prepare("insert into reporte2 (tipo,cantidad,estado,codigo,fecha,precio,id_vendedora,cantidad_entrada) values(?,?,?,?,now(),?,?,?)");
    $asgru->bindValue(1, $_POST['tipo']);
    $asgru->bindValue(2, $_POST['cantidad']);
    $asgru->bindValue(3, $_POST['estado']);
    $asgru->bindValue(4, $_POST['codigo']);
    $asgru->bindValue(5, $_POST['precio']);
    $asgru->bindValue(6, $_POST['id_vendedora']);
    $asgru->bindValue(7, $x);
    $asgru->execute();



    exit;
  }




  ///////////////////////////////////////////////////////////////////////
  public function mostrar_ventas()
  {
    $sql  = $this->consultas("select * from ventas ");
    return $sql;
  }


  ///////////////////////////////////////////////////////////////////////
  public function agregar_envio()
  {

    // echo "<pre>";
    // print_r($_POST);
    // echo "</pre>";
    // exit;
  }



  ///////////////////////////////////////////////////////////////////////
  public function valida_cupon($codigo)
  {


    $sql  = $this->consultas("select * from ventas where DATE_FORMAT(fecha, '%Y-%m-%d') = CURDATE() and codigo = '" . $codigo . "' and estado = 1  ");
    return $sql;
  }

  ///////////////////////////////////////////////////////////////////////
  public function mostrar_ventas_producto_codigo($codigo)
  {
    $sql  = $this->consultas("select * from venta_boletos where codigo = '" . $codigo . "'   ");
    return $sql;
  }

  ///////////////////////////////////////////////////////////////////////
  public function mostrar_vendedor_id($id)
  {
    $sql  = $this->consultas("select * from vendedores where id = '" . $id . "'  ");
    return $sql;
  }




  ///////////////////////////////////////////////////////////////////////
  public function procesar_valida_cupon()
  {
    $estado = "2";
    $stmt = $this->datab->prepare("UPDATE ventas set 
		estado=?
		where codigo=?
		");
    $stmt->bindValue(1, $estado);
    $stmt->bindValue(2, $_POST['codigo']);
    $stmt->execute();

    header("Location:" . ruta . '?pagina=procesar_cupon&exito=1');
    exit;
  }




  ///////////////////////////////////////////////////////////////////////
  public function procesar_cupon()
  {

    $sql  = $this->consultas("select * from ventas where codigo = '" . $_POST['codigo'] . "' and estado = 1 ");


    if (count($sql)) {
      header("Location:" . ruta . '?pagina=valida_cupon&codigo=' . $_POST['codigo']);
      exit;
    } else {
      header("Location:" . ruta . '?pagina=procesar_cupon&error=1');
      exit;
    }
  }


  ///////////////////////////////////////////////////////////////////////
  public function mostrar_cupones_comercios()
  {
    $sql  = $this->consultas("select * from ventas where DATE_FORMAT(fecha, '%Y-%m-%d') = CURDATE() and estado = 2");
    return $sql;
  }



  ///////////////////////////////////////////////////////////////////////
  ///////////////////////////////////////////////////////////////////////

}
