<?php
// require_once "contenedor_storage.php";

class ConsultasChat extends Conexion1 {
public $mysqli;  public $data;
public function __construct() {$this->mysqli = parent::conectar();$this->data = array();} 
// ----------------------------------------------------------
// ----------------------------------------------------------
// ----------------------------------------------------------
// ----------------------------------------------------------
// ----------------------------------------------------------

public function chat_mensajes($idEmisor,$codigo,$pagina){
$lim=$pagina; $ancho=18; $limite=($lim)*$ancho;
$resultado=$this->mysqli->query("SELECT * FROM chat WHERE codigo='$codigo' ORDER BY fecha DESC LIMIT $limite,$ancho;");
if ($resultado->num_rows !=0) {while ( $fila = $resultado->fetch_assoc() ) {$this->data[] = $fila;}return array_reverse($this->data);}
return NULL;}


public function ingreso_mensaje($idEmisor,$idReceptor,$archivo,$mensaje,$codigo,$control,$fotoEmisor,$nombreEmisor,$folio,$idAgente,$nombreReceptor,$fotoReceptor,$idEmpresa){
date_default_timezone_set("America/Bogota"); $hoy = date("Y-m-d H:i:s"); 
$a=$this->mysqli->query("INSERT INTO chat(id_empresa, mensaje, codigo, archivo, idReceptor, idEmisor, controlVista, fotoEmisor, nombreEmisor,folio, idAgente, fotoReceptor, nombreReceptor, fecha) VALUES('$idEmpresa','$mensaje','$codigo','$archivo','$idReceptor','$idEmisor','$control','$fotoEmisor','$nombreEmisor','$folio','$idAgente','$fotoReceptor','$nombreReceptor','$hoy');");   
if($a){return $this->chat_mensajes($idEmisor,$codigo,0);}else{return NULL;}}

public function eliminar_mensaje($idChat){
$a=$this->mysqli->query("UPDATE chat SET eliminado='si' WHERE id_chat=$idChat;"); if($a){return 1;}return NULL;}

public function visto_mensaje($idReceptor,$codigo){
$a=$this->mysqli->query("UPDATE chat SET visto='1' WHERE idReceptor='$idReceptor' AND codigo='$codigo';"); if($a){return  $this->chat_mensajes("",$codigo,0);}return NULL;}

// ----------------------------------------------------------
// ----------------------------------------------------------
// ----------------------------------------------------------
// ----------------------------------------------------------

public function agregar_usuario_sala($codigo,$folio,$info,$idAgente){
$a=$this->mysqli->query("SELECT * FROM salas_chat WHERE codigo='$codigo' AND folio='$folio';"); $repetido=0;
if($a->num_rows==0){$infoJson[0]=json_decode($info,true); $jsonPaso=json_encode($infoJson);
$b=$this->mysqli->query("INSERT INTO salas_chat(codigo, folio, info, idAgente) VALUES('$codigo','$folio','$jsonPaso','$idAgente')");}else{ 
$info33=$a->fetch_assoc(); if($info33["info"]==""){$infoJson[0]=json_decode($info,true); $jsonPaso=json_encode($infoJson);
$b=$this->mysqli->query("UPDATE salas_chat SET info='$jsonPaso' WHERE codigo='$codigo' AND folio='$folio';");}else{
$info2=json_decode($info33["info"],true);  $auxCompara=json_decode($info,true);
for($m=0;$m<sizeof($info2);$m++){if($info2[$m]["id"]==$auxCompara["id"]){$repetido++;}}
if($repetido==0){$info2[sizeof($info2)]=$auxCompara; $infoJson=$info2;$jsonPaso=json_encode($infoJson);
$b=$this->mysqli->query("UPDATE salas_chat SET info='$jsonPaso' WHERE codigo='$codigo' AND folio='$folio';");}}} if($repetido==0){
if($b){$paso["paso"]="paso"; $paso["lista"]=$this->consulta_sala($codigo,$folio);}else{$paso["paso"]="no paso";}}else{$paso["paso"]="repetido";}
return json_encode($paso);}

public function consulta_sala($codigo,$folio){
$a=$this->mysqli->query("SELECT * FROM salas_chat WHERE codigo='$codigo' AND folio='$folio';"); 
if($a->num_rows==0){$paso["paso"]="no paso";}else{$paso["paso"]="paso"; $paso["lista"]=$a->fetch_assoc();}
return json_encode($paso);}

public function eliminar_usuario_sala($id,$codigo,$folio){
$a=$this->mysqli->query("SELECT info FROM salas_chat WHERE codigo='$codigo' AND folio='$folio';"); $paso["paso"]="no paso";
if($a->num_rows!=0){$info=$a->fetch_assoc(); $info2=json_decode($info["info"],true); $tam=sizeof($info2);
for($i=0;$i<$tam;$i++){if($id==$info2[$i]["id"]){unset($info2[$i]);}}  if(sizeof($info2)==0){$infoNuevo='';}else{$conteo=0;
for($k=0;$k<$tam;$k++){ if(isset($info2[$k]["id"])){$infoAux[$conteo]=$info2[$k]; $conteo++; } } $infoNuevo=json_encode($infoAux);}
$this->mysqli->query("UPDATE salas_chat SET info='$infoNuevo' WHERE codigo='$codigo' AND folio='$folio';"); $paso["paso"]="paso"; 
$paso["lista"]=$this->consulta_sala($codigo,$folio);} return json_encode($paso);}

public function consulta_usuarios_chat($id,$pagina,$busqueda){ $lim=$pagina; $ancho=12; $limite=($lim-1)*$ancho;
if($busqueda==""){$c="SELECT * FROM usuarios WHERE (perfil='Administrador' OR perfil='Vendedor' OR perfil='Oficina' OR perfil='soporte') AND id_usuario != '$id' ORDER BY fecha DESC LIMIT $limite,$ancho;";}else{
$c="SELECT * FROM usuarios WHERE (perfil='Administrador' OR perfil='Vendedor' OR perfil='Oficina' OR perfil='soporte') AND id_usuario !='$id' AND (JSON_UNQUOTE(JSON_EXTRACT(usuario,'$.nombre')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuario,'$.cedula')) LIKE '%$busqueda%' OR perfil LIKE '%$busqueda%') ORDER BY fecha DESC LIMIT 0,20;";}
$a=$this->mysqli->query($c); $paso["paso"]="no paso";
if($a->num_rows!=0){while($reto=$a->fetch_assoc()){$bb[]=$reto;} $paso["paso"]="paso"; $paso["lista"]=$bb;} return json_encode($paso);}

// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
public function cambiar_estado($estadoNuevo,$id){
$a=$this->mysqli->query("UPDATE usuarios SET estadoConexion='$estadoNuevo' WHERE id_usuario='$id';"); $paso["paso"]="no paso";
if($a){$paso["paso"]="paso"; $lista["estado"]=$estadoNuevo; $lista["id"]=$id; $paso["lista"]=$lista;} return json_encode($paso);}

public function ultimo_estado($id){ $a=$this->mysqli->query("SELECT estadoConexion FROM usuarios WHERE id_usuario='$id';"); $paso["paso"]="no paso";
if($a->num_rows!=0){$a1=$a->fetch_assoc();  $paso["paso"]="paso"; $paso["lista"]=$a1["estadoConexion"];} return json_encode($paso);}

public function ultimos_mensajes($idReceptor){
$a=$this->mysqli->query("SELECT * FROM chat WHERE idReceptor='$idReceptor' OR idEmisor='$idReceptor' ORDER BY fecha DESC;");$paso["paso"]="no paso";
if($a->num_rows!=0){ while($fila=$a->fetch_assoc()){$aA[]=$fila;}
$aAB = []; foreach ($aA as $articulo) {$idEm = $articulo['idEmisor']; $idRe = $articulo['idReceptor']; $fecha = $articulo['fecha'];
$id1 = min($idEm, $idRe); $id2 = max($idEm, $idRe); $llave = $id1 . '-' . $id2;
if (!isset($aAB[$llave]) || $fecha > $aAB[$llave]['fecha']) { $aAB[$llave] = $articulo;}} $aA = array_values($aAB);
$paso["paso"]="paso"; $paso["lista"]=$aA; } return json_encode($paso);}

public function consultaCorreosCompara($correo){
$res=$this->mysqli->query("SELECT id_usuario FROM usuarios WHERE email='$correo' OR email_empresa='$correo';"); if($res->num_rows!=0){return 1;} return NULL;	}
// ----------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------

}




?>
