gsa [ OPCIONAL ] $resultado = getListadoGrupos($resultInfo); } break; case "ig": { //Obtener Informacion de un grupo seleccionado //Parámetros: // Cod/Id grupo => gid $resultado = getInfoGrupo($resultInfo); } break; case "cg": { //Crear Grupo //Parámetros: // Nombre del Grupo => gn // Estado: Activo/Inactivo => gs // Listado de usuarios (U1;U2;..;Un) => ulst $resultado = crearGrupoMensaje($resultInfo); } break; case "apg": { //Gestionar Info del grupo y los participantes del Grupo //Parámetros: // Cod/Id grupo => gid // Nombre del Grupo => gn // Estado: Activo/Inactivo => gs // Listado de usuarios (U1;U2;..;Un) => ulst [ OPCIONAL ] $resultado = gestionarGrupo($resultInfo); } break; case "dg": { //Eliminar un grupo //Parámetros: // Cod/Id grupo => gid $resultado = eliminarGrupo($resultInfo); } break; case "gavu": { //Obtener avisos //Parámetros: // Usuario Id => uid // Entrada/Salida => ban [e: ENTRADA | s: SALIDA ] [ OPCIONAL - Default: 'ENTRADA'] // Estado => es [1: NO LEIDO | 2: LEIDOS ] [ OPCIONAL ] // N-primeros => n // Pagina => p // // Desde => d _____ Deber recibirse juntos o nada // Hasta => h __| // // Tipo => t [1: Avisos | 2: Mensajes | vacio: Todos] [OPCIONAL] // Orden => o Por defecto DESCENDENTE "DESC" [ 'az' | 'za' ] [OPCIONAL] $resultado = getAvisosUsuario($resultInfo); } break; // case "gavg": // { // //Obtener avisos x grupo // //Parámetros: // // Grupo Id => gid // // Estado => es [0: ACTIVOS | 1: Leidos | 2:Todos] [ OPCIONAL: Default 0 ] // $resultado = getAvisosUsuario($resultInfo); // } // break; case "smg": { //Enviar mensaje al Grupo //Parámetros: // Usuario Id => uid // Cod/Id grupo => gid // Título/Asunto => tit // Mensaje => msg $resultado = sendMensajeGrupo($resultInfo); } break; case "smug": { //Enviar mensaje al Grupo o a usuarios especificos //Parámetros: // Usuario Id => uid // Listado de usuarios (U1;U2;..;Un) => ulst // Listado de grupos (G1;G2;..;Gn) => glst // Título/Asunto => tit // Mensaje => msg // Copia a Email => em $resultado = sendMensajeParticipente($resultInfo); } break; case "srmug": { //Enviar mensaje de Respuesta al Grupo o a usuarios especificos //Parámetros: // Usuario Id => uid // Mensaje Id => mid // Título/Asunto => tit // Mensaje => msg // Copia a Email => em $resultado = sendRespMensajeParticipente($resultInfo); } break; case "cea": { //Cambiar estado del aviso //Parámetros: // Usuario Id => uid // Id Mensaje => idm // Estado => es [1: NO LEIDO | 2: LEIDOS ] [ OPCIONAL ] $resultado = changeMensajeEstado($resultInfo); } break; case "gmi": { //Obtener info del aviso //Parámetros: // Usuario Id => uid // Id Mensaje => idm $resultado = obtenerMensaje($resultInfo); } break; case "gmsi": { //Obtener info del aviso //Parámetros: // Usuario Id => uid // Id Mensaje => idm // Nodo => n $resultado = obtenerMensajeEnviado($resultInfo); } break; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Acción desconocida. El tipo de consulta no esta definido. "; } return $resultado; } //----------------END ACCTION---------- //Retorna el listado de Usuarios: Nombre, Foto (si tuviese) function getUserList() { //Usuarios activos /* $sql = "SELECT [emp_codigo] ,[emp_nombre] ,[emp_cargo] ,[emp_email] FROM empleado WHERE emp_activo = 1 order by 2";*/ /* ,t1.[emp_email] ,t1.[emp_cargo] ,t2.[emp_foto] (CASE WHEN t2.[emp_foto] IS NULL THEN '' ELSE t2.[emp_foto] END) AS emp_foto] */ /* $sql = "SELECT t1.[emp_codigo] ,t1.[emp_nombre] ,t1.[emp_email] ,t1.[emp_cargo] FROM dbo.[empleado] as t1 LEFT JOIN dbo.[empleado_foto] as t2 ON t1.[emp_codigo] = t2.[emp_codigo] WHERE t1.[emp_activo] = 1 ORDER BY t1.[emp_nombre]";*/ $usuarios_lts = false; $sql = "SELECT t1.[emp_codigo] ,rtrim(ltrim(t1.[emp_nombre])) as emp_nombre ,t1.[emp_email] ,t1.[emp_cargo] FROM dbo.[empleado] as t1 WHERE t1.[emp_activo] = 1 ORDER BY 2"; //print_r($sql);die; $usuarios = $GLOBALS['dbSQL']->Query($sql); if ( $usuarios ) { $usuarios_lts = $GLOBALS['dbSQL']->getAll(); //print_r($usuarios);die(" <<<<< "); //print_r($usuarios_lts);print_r("\n");print_r("--------------------");print_r("\n"); if( $usuarios_lts && count($usuarios_lts) > 0 ) { for($j=0;$jQuery($sql); if ( $usrfotos ) { $usrfotos = $GLOBALS['dbSQL']->getAll(); //print_r($usrfotos);die(" <<<<< "); //die("kkkkkkkk"); for($i=0;$i count($resultado) ,"users" => $resultado ); } else { $resultInfo['code'] = 0; $resultInfo['errorDes'] = "Se produjo un error al consultar el listado de usuarios"; } } //Retorna el listado de Grupos: Nombre function getGroupsList($flagActivos=false) { $where = ""; if( $flagActivos ) { $where = " WHERE avigru_estado = 1 "; } //Grupos $sql = "SELECT [avigru_id] ,rtrim(ltrim([avigru_nombre])) as avigru_nombre ,[avigru_estado] FROM avisos_grupos ".$where." order by 2"; //print_r($sql);die; $grupos = $GLOBALS['dbSQL']->Query($sql); if ( $grupos ) { $grupos = $GLOBALS['dbSQL']->getAll(); } return $grupos; } //Retorna el listado de grupos function getListadoGrupos(&$resultInfo) { $flagSoloActivos = false; if( isset($_REQUEST["gsa"]) && !empty($_REQUEST["gsa"]) && !is_null($_REQUEST["gsa"]) ) { $flagSoloActivos = true; } $resultado = getGroupsList($flagSoloActivos); if( $resultado ) { //Listar de Usuarios $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => count($resultado) ,"groups" => $resultado ); } else { $resultInfo['code'] = 0; $resultInfo['errorDes'] = "Se produjo un error al consultar el listado de grupos"; } } //Retorna el listado de usuarios de un Grupo function getUsersByGroup($idGrupo) { $where = " WHERE t0.avigru_id = " . $idGrupo; //Ususarios del GRupo $sql = "SELECT t0.[avigrupar_id] ,t0.[avigru_id] ,t0.[usu_codigo] ,t1.[emp_nombre] ,t1.[emp_email] ,t1.[emp_cargo] ,t2.[emp_foto] FROM dbo.[avisos_grupos_participantes] as t0 INNER JOIN dbo.[empleado] as t1 ON t0.[usu_codigo] = t1.[emp_codigo] LEFT JOIN dbo.[empleado_foto] as t2 ON t2.[emp_codigo] = t1.[emp_codigo] ".$where." order by 4"; //print_r($sql);die; $usuarios = $GLOBALS['dbSQL']->Query($sql); if ( $usuarios ) { $usuarios = $GLOBALS['dbSQL']->getAll(); } return $usuarios; } //Retorna informacion de un grupo function getGroupInfo(&$grupoInfo) { $id = $grupoInfo['idGrupo']; $where = " WHERE [avigru_id] = " . $grupoInfo['idGrupo']; //Grupos $sql = "SELECT [avigru_id] ,[avigru_nombre] ,[avigru_estado] FROM avisos_grupos ".$where; //print_r($sql);die; $grupo = $GLOBALS['dbSQL']->Query($sql); //$grupoInfo = false; if ( $grupo ) { // $grupoInfo = $GLOBALS['dbSQL']->getOne(); // $grupoInfo['idGrupo'] = $id; // //obtener los usuarios // $grupoInfo['ulst'] = getUsersByGroup( $grupoInfo['idGrupo'] ); // return $grupoInfo; $grupoInfo = $GLOBALS['dbSQL']->getAll(); $grupoInfo[0]['idGrupo'] = $id; //obtener los usuarios $grupoInfo[0]['ulst'] = getUsersByGroup( $grupoInfo[0]['idGrupo'] ); return $grupoInfo[0]; } else { return false; } } //Retorna informacion de un grupo selecionado function getInfoGrupo(&$resultInfo) { if( isset($_REQUEST["gid"]) && !empty($_REQUEST["gid"]) && !is_null($_REQUEST["gid"]) && trim($_REQUEST["gid"])!="" ) { $grupoInfo['idGrupo'] = $_REQUEST["gid"]; $resultado = getGroupInfo( $grupoInfo ); if( $resultado ) { //Info del grupo $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => 1 ,"group" => $resultado ); } else { $resultInfo['code'] = 0; $resultInfo['errorDes'] = "Se produjo un error al consultar el grupo"; } } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Parámetros faltantes al consultar el grupo"; } } //Asociar usuarios a un grupo function insertUsersToGroup($grupoInfo,$flagRemove=false) { //Eliminar participantes del grupo if( $flagRemove ) { $sql = 'DELETE FROM [avisos_grupos_participantes] WHERE [avigru_id] = ' . $grupoInfo['idGrupo']; $rsD = $GLOBALS['dbSQL']->Query($sql,true); } else { $rsD = true; } if ( $rsD ) { $values = ''; for($i=0;$iQuery($sql,true); if ( $rsI ) { return true; } } return false; } //Crea un grupo function insertGroup(&$grupoInfo) { //Insertar nuevo grupo $sql = 'INSERT INTO [avisos_grupos] ( [avigru_nombre] ,[avigru_estado] ) VALUES ( '. "'".$grupoInfo["gn"] ."'".' ,'. $grupoInfo["gs"].' )'; $rsI = $GLOBALS['dbSQL']->Query($sql,true); if ( $rsI ) { $idGrupo = $GLOBALS['dbSQL']->getLastId('avisos_grupos','avigru_id'); if( $idGrupo ) { $grupoInfo['idGrupo'] = $idGrupo; if( $grupoInfo['ulst'] ) { $result = insertUsersToGroup( $grupoInfo ); if( !$result ) { return 2; } } } return true; } return false; } function crearGrupoMensaje(&$resultInfo) { if( isset($_REQUEST["gn"]) && !empty($_REQUEST["gn"]) && !is_null($_REQUEST["gn"]) && trim($_REQUEST["gn"])!="" ) { $grupoInfo = array(); $grupoInfo["gn"] = $_REQUEST["gn"]; $grupoInfo["gs"] = '1'; $grupoInfo["ulst"] = false; $grupoInfo['idGrupo'] = false; if( isset($_REQUEST["gs"]) && !empty($_REQUEST["gs"]) && !is_null($_REQUEST["gs"]) && trim($_REQUEST["gs"]) !="" ) { $grupoInfo["gs"] = ($_REQUEST["gs"]==='0'?'0':'1'); } if( isset($_REQUEST["ulst"]) && !empty($_REQUEST["ulst"]) && !is_null($_REQUEST["ulst"]) && trim($_REQUEST["ulst"]) !="" ) { $pos = strpos($_REQUEST["ulst"],";"); if( $pos!==false ) { $grupoInfo["ulst"] = explode(";",$_REQUEST["ulst"]); } else { $grupoInfo["ulst"] = array($_REQUEST["ulst"]); } } $resultado = insertGroup($grupoInfo); if( $resultado!==false ) { if( $resultado === true ) { $resultInfo['code'] = 0; $resultInfo['data'] = $grupoInfo['idGrupo']; } elseif( $resultado === 1 ) { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "El nombre de Grupo ya existe"; } elseif( $resultado === 2 ) { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Error al registrar los usuarios del grupo"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al registrar el Grupo"; } } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Parámetros faltantes al registrar el grupo"; } } //Gestionar AB de Participantes del Grupo function updateGrupo($grupoInfo) { //Editar un grupo $sql = 'UPDATE dbo.[avisos_grupos] set [avigru_nombre] = \''.$grupoInfo['gn'].'\' ,[avigru_estado] = '.$grupoInfo['gs'].' WHERE [avigru_id] = '.$grupoInfo['idGrupo']; //print_r($sql);die(' <<<<< '); $rsI = $GLOBALS['dbSQL']->Query($sql,true); if ( $rsI ) { if( $grupoInfo['ulst'] ) { $result = insertUsersToGroup( $grupoInfo, true ); if( !$result ) { return 2; } } return true; } return false; } //Gestionar AB de Participantes del Grupo function gestionarGrupo(&$resultInfo) { // Cod/Id grupo => gid // Estado: Activo/Inactivo => gs // Listado de usuarios (U1;U2;..;Un) => ulst if( isset($_REQUEST["gid"]) && !empty($_REQUEST["gid"]) && !is_null($_REQUEST["gid"]) && trim($_REQUEST["gid"])!="" && isset($_REQUEST["gs"]) && !empty($_REQUEST["gs"]) && !is_null($_REQUEST["gs"]) && trim($_REQUEST["gs"])!="" && isset($_REQUEST["gs"]) && !empty($_REQUEST["gs"]) && !is_null($_REQUEST["gs"]) && trim($_REQUEST["gs"])!="" ) { $grupoInfo = array(); $grupoInfo['idGrupo'] = $_REQUEST["gid"]; $grupoInfo["gn"] = $_REQUEST["gn"]; $grupoInfo["gs"] = ($_REQUEST["gs"]==='0'?'0':'1'); $grupoInfo["ulst"] = false; if( isset($_REQUEST["ulst"]) && !empty($_REQUEST["ulst"]) && !is_null($_REQUEST["ulst"]) && trim($_REQUEST["ulst"]) !="" ) { $pos = strpos($_REQUEST["ulst"],";"); if( $pos!==false ) { $grupoInfo["ulst"] = explode(";",$_REQUEST["ulst"]); } else { $grupoInfo["ulst"] = array($_REQUEST["ulst"]); } } $resultado = updateGrupo($grupoInfo); if( $resultado!==false ) { if( $resultado === true ) { $resultInfo['code'] = 0; $resultInfo['data'] = $grupoInfo['idGrupo']; } elseif( $resultado === 1 ) { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "El nombre de Grupo ya existe"; } elseif( $resultado === 2 ) { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Error al modificar los usuarios del grupo"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al modificar el Grupo"; } } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Parámetros faltantes al modificar el grupo"; } } //Retorna informacion de un grupo function deleteGroup($grupoInfo) { $where = " WHERE [avigru_id] = " . $grupoInfo['idGrupo']; //Grupos $sql1 = "DELETE FROM dbo.[avisos_grupos_participantes] ".$where; $sql2 = "DELETE FROM dbo.[avisos_grupos] ".$where; $r1 = $GLOBALS['dbSQL']->Query($sql1,true); $r2 = $GLOBALS['dbSQL']->Query($sql2,true); //$grupoInfo = false; if ( $r1 && $r2 ) { return true; } else { return false; } } //Eliminar un grupo function eliminarGrupo(&$resultInfo) { if( isset($_REQUEST["gid"]) && !empty($_REQUEST["gid"]) && !is_null($_REQUEST["gid"]) && trim($_REQUEST["gid"])!="" ) { $grupoInfo['idGrupo'] = $_REQUEST["gid"]; $resultado = deleteGroup( $grupoInfo ); if( $resultado ) { //Info del grupo $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => 0 ,"group" => $grupoInfo['idGrupo'] ); } else { $resultInfo['code'] = 0; $resultInfo['errorDes'] = "Se produjo un error al eliminar el grupo"; } } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Parámetros faltantes al eliminar el grupo"; } } function getUsersByNodo($idMensaje) { $nodo = false; $usuariosLst = false; //Buscar mensaje padre, para obtener el nodo $sql = "SELECT * FROM dbo.avisos WHERE avi_numero = " . $idMensaje; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $aviso = $GLOBALS['dbSQL']->getOne(); if( !is_null($aviso['avi_nodo']) && trim($aviso['avi_nodo'])!="" ) { $nodo = $aviso['avi_nodo']; $sql = "SELECT usu_remite FROM dbo.avisos_auditoria WHERE avi_nodo = '" . $aviso['avi_nodo'] . "'"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { // $remitente = $GLOBALS['dbSQL']->getOne(); // //El Remitente original, ahora destinatario // $usuariosLst = $remitente['usu_remite']; $remitente = $GLOBALS['dbSQL']->getAll(); //El Remitente original, ahora destinatario $usuariosLst = $remitente[0]['usu_remite']; } } } return array($usuariosLst, $nodo); } function getUsersByNodo_old($idMensaje) { $nodo = false; $usuariosLst = array(); //Buscar mensaje padre, para obtener el nodo $sql = "SELECT * FROM dbo.avisos WHERE avi_numero = " . $idMensaje; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $aviso = $GLOBALS['dbSQL']->getOne(); if( !is_null($aviso['avi_nodo']) && trim($aviso['avi_nodo'])!="" ) { $nodo = $aviso['avi_nodo']; $sql = "SELECT DISTINCT usu_codigo FROM dbo.avisos WHERE avi_numero!= " . $idMensaje . " AND avi_nodo = '" . $aviso['avi_nodo'] . "'"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $usuarios = $GLOBALS['dbSQL']->getAll(); for($i=0;$i false ,'avigru_id' => false ,'usu_codigo' => $usuarios[$i] ,'emp_nombre' => false ); } } } //El Remitente original, ahora destinatario $usuariosLst[count($usuariosLst)] = array( 'avigrupar_id' => false ,'avigru_id' => false ,'usu_codigo' => $aviso['usu_remite'] ,'emp_nombre' => false ); } return array($usuariosLst, $nodo); } //Actualizar flag de Email Respondido function actualizarEmailRespondido( $idMsg ) { $sql = "UPDATE dbo.avisos SET avi_repondido = 1 WHERE avi_numero = " . $idMsg; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( $rs ) { return true; } return false; } function guardarAuditoria($remitente,$nodo,$lstGrupos,$lstUsuarios,$titulo,$msg) { //Insertar auditoria de avisos $sql = 'INSERT INTO dbo.[avisos_auditoria] ( [avi_nodo] ,[usu_remite] ,[aviau_lst_grupos] ,[aviau_usuarios] ,[aviau_titulo] ,[aviau_mensaje] ) VALUES ( \'' . $nodo .'\' , ' . $remitente.' ,\'' . $lstGrupos.'\' ,\'' . $lstUsuarios.'\' ,\'' . $titulo.'\' ,\'' . $msg.'\' )'; $resultado = $GLOBALS['dbSQL']->Query($sql,true); if ( $resultado ) { return true; } return false; } //Enviar Mensaje a los participantes del Grupo function sendAviso( $avisoInfo ) { $continue = true; $nodo = mb_strtoupper(randomText(10)); $nodopadre = ''; // 1. Obtener el id nuevo de avisos $sql = "SELECT (MAX(ISNULL(avi_numero,0)) + 1) as AvisoId FROM avisos"; $idAvisos = 0; $flagIsAviso = 0; //Aviso=1 (Mensaje Grupal) / Mensaje=0 (Mensaje Individual) $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $conta=0; // $idAviso = $GLOBALS['dbSQL']->getOne(); // $idAvisos = doubleval($idAviso['AvisoId']); $idAviso = $GLOBALS['dbSQL']->getAll(); $idAvisos = doubleval($idAviso[0]['AvisoId']); } else { //Error: no se pudo obtener el numerador de los avisos $continue = false; } // 2. Obtener el listado de participantes if( $continue ) { $users = array(); if( !isset($avisoInfo['idmsg']) ) { if( !isset($avisoInfo["lstGrupos"]) ) { if( $avisoInfo['idGrupo'] )//<==TODO: ACA JAMAS VA A ENTRAR!!! { $users = getUsersByGroup($avisoInfo['idGrupo']); } } else { for($i=0;$i false ,'avigru_id' => false ,'usu_codigo' => $avisoInfo["lstUsuarios"][$i] ,'emp_nombre' => false ); } } } else { //Buscar los integrantes //list($users,$nodopadre) = getUsersByNodo($avisoInfo['idmsg']); list($destinatario,$nodopadre) = getUsersByNodo($avisoInfo['idmsg']); if( !$nodopadre ){ $nodopadre = '';} else { $nodopadre = mb_strtoupper($nodopadre);} // if( !$users || // count($users)<=0 // ) if( !$destinatario ) { //Error: No se encontraron otros usuarios $continue = false; } else { // $u = ''; // for($z=0;$z<(count($users)-1);$z++) // { // if($u == '') // { // $u=$users[$z]['usu_codigo']['usu_codigo']; // } // else // { // $u.=','.$users[$z]['usu_codigo']['usu_codigo']; // } // } // $avisoInfo['auditoria']['u'] = $u; $avisoInfo['auditoria']['u'] = $destinatario; } } if( $continue ) { if( $avisoInfo['idGrupo'] ) { $flagIsAviso = 1; //Es un mensaje personalizado } if( !isset($avisoInfo['idmsg']) ) { // 3. Para cada participante del grupo insertar el aviso $values = ''; $userlst= array(); $userlstEmail=''; //print_r($users);die(' <<<<<< '); for($i=0;$i 0 && array_key_exists($users[$i]['usu_codigo'], $userlst) ) { $flagSend = false; } else { $userlst[$users[$i]['usu_codigo']] = 0; } if( $flagSend ) { $sep = ','; if( $values == '' ) { $sep = ''; } if( $userlstEmail=='' ) { $userlstEmail.=$users[$i]['usu_codigo']; } else { $userlstEmail.=','.$users[$i]['usu_codigo']; } $item = '( ' . $idAvisos .' ,\'' . $avisoInfo['tit'] .'\' ,\'' . $avisoInfo['msg'].'\' ,' . $users[$i]['usu_codigo'].' , GETDATE() ,0 ,' . $avisoInfo['idUsuario'].' ,NULL ,'. $flagIsAviso.' ,\'' . $nodo .'\' ,\'' . $nodopadre .'\' )'; $values.= ' ' . $sep . $item; $idAvisos++; } } } else { // 3. Insertar el aviso $values = ''; $userlst= array(); $userlstEmail=''; //print_r($users);die(' <<<<<< '); $userlstEmail = $destinatario; $item = '( ' . $idAvisos .' ,\'' . $avisoInfo['tit'] .'\' ,\'' . $avisoInfo['msg'].'\' ,' . $destinatario.' , GETDATE() ,0 ,' . $avisoInfo['idUsuario'].' ,NULL ,'. $flagIsAviso.' ,\'' . $nodo .'\' ,\'' . $nodopadre .'\' )'; $values = $item; $idAvisos++; } //print_r($values);die(' <<<<<< '); //Insertar los nuevos avisos en estado NO LEIDO $sql = 'INSERT INTO dbo.[avisos] ( [avi_numero] ,[avi_titulo] ,[avi_denom] ,[usu_codigo] ,[avi_fecha] ,[avi_leido] ,[usu_remite] ,[avi_prior] ,[avi_es_grupal] ,[avi_nodo] ,[avi_nodo_padre] ) VALUES ' . $values; $resultado = $GLOBALS['dbSQL']->Query($sql,true); if ( $resultado ) { //Guardar Tabla de auditoria $r = guardarAuditoria( $avisoInfo['idUsuario'], $nodo, $avisoInfo['auditoria']['g'], $avisoInfo['auditoria']['u'], $avisoInfo['tit'], $avisoInfo['msg'] ); //Actualizar Respuesta si corresponde if( isset($avisoInfo['idmsg']) ) { $r = actualizarEmailRespondido( $avisoInfo['idmsg'] ); } //Copia Email // if( false ) if( $avisoInfo['email'] ) { // $r = enviarAvisoEmail( $userlst ); $r = enviarAvisoEmail( $userlstEmail, $avisoInfo ); } return true; } } } return false; } function getEmail_Aviso_HTMLWs() { //*********************************************************** // HTML //*********************************************************** $msjHTML ='

Aviso Recibido

Remitente: {REMITENTE}

Fecha: {FECHA}

{TITULO}

Email: {EMAILREM}
  {MENSAJE}
 
[ ATENCIÓN: Este email fue generado Automáticamente por el Sistema ]
 
Generado por: LandaMed Software de Gestión Médica - Desarrollado por Landaware I+D
'; return $msjHTML; } function enviarAvisoEmail( $userlst, $avisoInfo ) { //$body = getEmail_Aviso_HTMLWs(); //Datos del remitente $sql = "SELECT emp_codigo, emp_nombre, emp_email FROM dbo.empleado WHERE emp_codigo = ". $avisoInfo['idUsuario']; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { //$remitente = $GLOBALS['dbSQL']->getOne(); $remitente = $GLOBALS['dbSQL']->getAll(); $datos = array(); $datos['info'] = array(); $datos['info'][0] = $avisoInfo['tit']; $datos['info'][1] = $avisoInfo['msg']; $datos['info'][2] = $remitente[0]['emp_nombre']; $datos['info'][3] = date("d/m/Y H:i:s"); $datos['info'][4] = $remitente[0]['emp_email']; // $body = getReplaceData( TYPE_EMAIL_AVISO, $body, $datos); $subject = "Aviso LandaMed - " . $avisoInfo['tit']; $from = "turnerolog@landaware.com.ar"; $fromN = "[Sanatorio Duarte Quirós]"; //Datos del destinatario $sql = "SELECT emp_codigo, emp_nombre, emp_email FROM dbo.empleado WHERE emp_codigo IN(".$userlst.")"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $usuarios = $GLOBALS['dbSQL']->getAll(); for($i=0;$i 1 ,"avisos" => $resultado ); } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al enviar aviso al grupo"; } } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Parámetros faltantes al enviar aviso al grupo"; } } //Enviar Mensaje a una o mas personas especificas function sendMensajeParticipente(&$resultInfo) { if( isset($_REQUEST["uid"]) && !empty($_REQUEST["uid"]) && !is_null($_REQUEST["uid"]) && trim($_REQUEST["uid"])!="" && // isset($_REQUEST["tit"]) && // !empty($_REQUEST["tit"]) && // !is_null($_REQUEST["tit"]) && // trim($_REQUEST["tit"])!="" && isset($_REQUEST["msg"]) && !empty($_REQUEST["msg"]) && !is_null($_REQUEST["msg"]) && trim($_REQUEST["msg"])!="" ) { $avisoInfo['idUsuario'] = $_REQUEST["uid"]; $avisoInfo['idUsuarios']= false; $avisoInfo['idGrupo'] = false; $avisoInfo['tit'] = $_REQUEST["tit"]; $avisoInfo['msg'] = $_REQUEST["msg"]; $avisoInfo['sub'] = ''; $avisoInfo['auditoria'] = array('g'=>false,'u'=>false); $avisoInfo['email'] = false; if( isset($_REQUEST["glst"]) && !empty($_REQUEST["glst"]) && !is_null($_REQUEST["glst"]) && trim($_REQUEST["glst"])!="" ) { $avisoInfo['idGrupo'] = $_REQUEST["glst"]; $avisoInfo['auditoria']['g'] = $_REQUEST["glst"]; $pos = strpos($_REQUEST["glst"],";"); if( $pos!==false ) { $avisoInfo["lstGrupos"] = explode(";",$_REQUEST["glst"]); } else { $avisoInfo['lstGrupos'] = array($_REQUEST["glst"]); } } if( isset($_REQUEST["ulst"]) && !empty($_REQUEST["ulst"]) && !is_null($_REQUEST["ulst"]) && trim($_REQUEST["ulst"])!="" ) { $avisoInfo['idUsuarios'] = $_REQUEST["ulst"]; $avisoInfo['auditoria']['u'] = $_REQUEST["ulst"]; $pos = strpos($_REQUEST["ulst"],";"); if( $pos!==false ) { $avisoInfo["lstUsuarios"] = explode(";",$_REQUEST["ulst"]); } else { $avisoInfo['lstUsuarios'] = array($_REQUEST["ulst"]); } } if( isset($_REQUEST["em"]) && !empty($_REQUEST["em"]) && !is_null($_REQUEST["em"]) && trim($_REQUEST["em"])!="" && $_REQUEST["em"] === 'true' ) { $avisoInfo['email'] = true; } if( $avisoInfo['idUsuarios'] || $avisoInfo['idGrupo'] ) { $resultado = sendAviso( $avisoInfo ); if( $resultado ) { //Resultado envio del mensaje $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => 1 ,"avisos" => $resultado ); } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al enviar aviso al grupo"; } } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Parámetros faltantes al enviar aviso al grupo - Destinatario/s faltantes"; } } else { $resultInfo['code'] = 3; $resultInfo['errorDes'] = "Parámetros faltantes al enviar aviso al grupo"; } } //Enviar Respuesta al Mensaje a una o mas personas especificas function sendRespMensajeParticipente(&$resultInfo) { if( isset($_REQUEST["uid"]) && !empty($_REQUEST["uid"]) && !is_null($_REQUEST["uid"]) && trim($_REQUEST["uid"])!="" && isset($_REQUEST["mid"]) && !empty($_REQUEST["mid"]) && !is_null($_REQUEST["mid"]) && trim($_REQUEST["mid"])!="" && isset($_REQUEST["tit"]) && !empty($_REQUEST["tit"]) && !is_null($_REQUEST["tit"]) && trim($_REQUEST["tit"])!="" && isset($_REQUEST["msg"]) && !empty($_REQUEST["msg"]) && !is_null($_REQUEST["msg"]) && trim($_REQUEST["msg"])!="" ) { $avisoInfo['idUsuario'] = $_REQUEST["uid"]; $avisoInfo['idUsuarios']= false; $avisoInfo['idGrupo'] = false; $avisoInfo['idmsg'] = $_REQUEST["mid"]; $avisoInfo['tit'] = $_REQUEST["tit"]; $avisoInfo['msg'] = $_REQUEST["msg"]; $avisoInfo['sub'] = ''; $avisoInfo['auditoria'] = array('g'=>false,'u'=>false); $avisoInfo['email'] = false; if( isset($_REQUEST["em"]) && !empty($_REQUEST["em"]) && !is_null($_REQUEST["em"]) && trim($_REQUEST["em"])!="" && $_REQUEST["em"] === 'true' ) { $avisoInfo['email'] = true; } if( $avisoInfo['idmsg'] ) { $resultado = sendAviso( $avisoInfo ); if( $resultado ) { //Resultado envio del mensaje $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => 1 ,"avisos" => $resultado ); } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al enviar aviso al grupo"; } } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Parámetros faltantes al enviar aviso al grupo - Destinatario/s faltantes"; } } else { $resultInfo['code'] = 3; $resultInfo['errorDes'] = "Parámetros faltantes al enviar aviso al grupo"; } } //Retorna el listado de avisos recibidos de un usuario function getAvisos($avisoInfo) { /* $avisoInfo['top'] = false; $avisoInfo['pagina'] = false; $avisoInfo['limit'] = false; */ $avisos = false; $estado = ''; if( $avisoInfo['estado'] ) { switch($avisoInfo['estado']) { case 1: { $estado = ' AND t0.avi_leido = 0'; } break; case 2: { $estado = ' AND t0.avi_leido = 1'; } break; } } //$flagIsAviso = 0; //Aviso=1 (Mensaje Grupal) / Mensaje=0 (Mensaje Individual) //// Tipo => t [1: Avisos | 2: Mensajes | vacio: Todos] [OPCIONAL] $tipo = ''; if( $avisoInfo['tipo'] ) { switch($avisoInfo['tipo']) { case 1: { $tipo = ' AND t0.avi_es_grupal = 1'; } break; case 2: { $tipo = ' AND t0.avi_es_grupal = 0'; } break; } } $where = " WHERE t0.usu_codigo = " . $avisoInfo['idUsuario']; if( !$avisoInfo['bandeja'] ) { $where = " WHERE t0.usu_codigo = " . $avisoInfo['idUsuario']; $where.= $estado; } else { $where = " WHERE t0.usu_remitente = " . $avisoInfo['idUsuario']; } $where.= $tipo; $top = false; if( $avisoInfo['top'] ) { $top = ' TOP '.$avisoInfo['top']; } $pagina = false; if( $avisoInfo['pagina'] ) { $pagina = intval($avisoInfo['pagina']); } $limit = false; if( $avisoInfo['limit'] ) { $limit = intval($avisoInfo['pagina']); } //-------------------------------------------------- $flagSSE = false; $timeago_fields = ""; if( isset($avisoInfo['sse'])&&$avisoInfo['sse'] ) { $filters = " avi_leido = 0"; $flagSSE = true; $timeago_fields = ",DATEDIFF(SECOND,avi_fecha, GETDATE()) AS timeago"; } //-------------------------------------------------- // if( $top ) { //Los N-ultimos avisos $sql = "SELECT ".$top." t0.avi_numero ,t0.avi_titulo ,t0.avi_denom ,t0.usu_codigo ,t1.emp_nombre as Usuario ,t0.avi_fecha ,t0.avi_leido ,t0.usu_remite ,t0.avi_prior ,t0.avi_es_grupal ,t2.emp_nombre as Remitente ,t0.avi_nodo ,t0.avi_nodo_padre ,t0.avi_repondido ".$timeago_fields." FROM dbo.[avisos] as t0 INNER JOIN dbo.[empleado] as t1 ON t0.[usu_codigo] = t1.[emp_codigo] INNER JOIN dbo.[empleado] as t2 ON t0.[usu_remite] = t2.[emp_codigo] ".$where." ORDER BY avi_fecha DESC "; } elseif( $pagina || $limit ) { if( $pagina ) { //N-ésima página $rdesde = 1; $rhasta = 20; if($pagina > 1) { //Calular las páginas $sql = "SELECT COUNT(avi_numero) AS TOTAL FROM dbo.[avisos] ".$where; $resultado = $GLOBALS['dbSQL']->Query($sql); if ( $resultado ) { //$r = $GLOBALS['dbSQL']->getOne(); $r = $GLOBALS['dbSQL']->getAll(); $total = intval($r[0]['TOTAL']); $tp = $total % 20; $p = $pagina-1; $rdesde = (20*$p)+$p; $rhasta = $rdesde + 20; } else { //Si falla el calculo de limites, retorna la primer página } } } else { $rdesde = $limit[0]; $rhasta = $limit[1]; } //order by avi_fecha DESC $sql = "SELECT RowConstrainedResult.* FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY avi_fecha DESC ) AS RowNum ,t0.* , t1.emp_nombre as Usuario , t2.emp_nombre as Remitente ,".str_replace("avi_fecha","t0.avi_fecha",$timeago_fields)." FROM dbo.[avisos] as t0 INNER JOIN dbo.[empleado] as t1 ON t0.[usu_codigo] = t1.[emp_codigo] INNER JOIN dbo.[empleado] as t2 ON t0.[usu_remite] = t2.[emp_codigo] ".$where." ) AS RowConstrainedResult WHERE RowNum >= ".$rdesde." AND RowNum < ".$rhasta." ORDER BY RowNum"; } else { //Todos los avisos sin limite $sql = "SELECT t0.avi_numero ,t0.avi_titulo ,t0.avi_denom ,t0.usu_codigo ,t1.emp_nombre as Usuario ,t0.avi_fecha ,t0.avi_leido ,t0.usu_remite ,t0.avi_prior ,t0.avi_es_grupal ,t2.emp_nombre as Remitente ,t0.avi_nodo ,t0.avi_nodo_padre ,t0.avi_repondido ".$timeago_fields." FROM dbo.[avisos] as t0 INNER JOIN dbo.[empleado] as t1 ON t0.[usu_codigo] = t1.[emp_codigo] INNER JOIN dbo.[empleado] as t2 ON t0.[usu_remite] = t2.[emp_codigo] ".$where." ORDER BY avi_fecha DESC "; } //print_r($sql);die; $resultado = $GLOBALS['dbSQL']->Query($sql); if ( $resultado ) { $avisos = $GLOBALS['dbSQL']->getAll(); //------------------------------------------ //Calcular timeago //------------------------------------------ if( $flagSSE ) { $lstId= ''; for($i=0;$iQuery($sql); if ( $rs ) { //$aviso = $GLOBALS['dbSQL']->getOne(); $aviso = $GLOBALS['dbSQL']->getAll(); if( !is_null($aviso[0]['aviau_lst_grupos']) && trim($aviso[0]['aviau_lst_grupos'])!="" ) { $lstGrupos = str_replace(";", ",", trim($aviso[0]['aviau_lst_grupos'])); $sql = "SELECT [avigru_id] ,[avigru_nombre] ,[avigru_estado] FROM dbo.[avisos_grupos] WHERE [avigru_id] IN ( " . $lstGrupos ." )"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $gruposlst = $GLOBALS['dbSQL']->getAll(); $grupos = array(); for($i=0;$i $gruposlst[$i]["avigru_id"] ,'grupo' => $gruposlst[$i]["avigru_nombre"] ,'usuarios' => $grupoUsuarios ); } $avisos[$k]['grupos'] = $grupos; } } if( !is_null($aviso[0]['aviau_usuarios']) && trim($aviso[0]['aviau_usuarios'])!="" ) { $lstUsuarios = str_replace(";", ",", trim($aviso[0]['aviau_usuarios'])); $sql = "SELECT [emp_codigo] ,[emp_nombre] FROM dbo.[empleado] WHERE [emp_codigo] IN ( " . $lstUsuarios ." )"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $usuarioslst = $GLOBALS['dbSQL']->getAll(); $usuarios = array(); for($i=0;$i $usuarioslst[$i]["emp_codigo"] ,'usuario' => $usuarioslst[$i]["emp_nombre"] ); } $avisos[$k]['usuarios'] = $usuarios; } } } } return true; } //Retorna el listado de avisos enviados de un usuario function getAvisosEnviados($avisoInfo) { $avisos = false; // $tipo = ''; // if( $avisoInfo['tipo'] ) // { // switch($avisoInfo['tipo']) // { // case 1: { $tipo = ' AND t0.avi_es_grupal = 1'; } break; // case 2: { $tipo = ' AND t0.avi_es_grupal = 0'; } break; // } // } $where = " WHERE t0.usu_remite = " . $avisoInfo['idUsuario']; $top = false; if( $avisoInfo['top'] ) { $top = ' TOP '.$avisoInfo['top']; } $pagina = false; if( $avisoInfo['pagina'] ) { $pagina = intval($avisoInfo['pagina']); } $limit = false; if( $avisoInfo['limit'] ) { $limit = intval($avisoInfo['pagina']); } // if( $top ) { //Los N-ultimos avisos $sql = "SELECT ".$top." t0.aviau_codigo ,t0.aviau_titulo ,t0.aviau_mensaje ,t0.usu_remite ,t1.emp_nombre as Usuario ,t0.aviau_tstamp ,t0.avi_nodo ,t0.aviau_lst_grupos ,t0.aviau_usuarios FROM dbo.[avisos_auditoria] as t0 INNER JOIN dbo.[empleado] as t1 ON t0.[usu_remite] = t1.[emp_codigo] ".$where." ORDER BY aviau_tstamp DESC "; } elseif( $pagina || $limit ) { if( $pagina ) { //N-ésima página $rdesde = 1; $rhasta = 20; if($pagina > 1) { //Calular las páginas $sql = "SELECT COUNT(aviau_codigo) AS TOTAL FROM dbo.[avisos_auditoria] ".$where; $resultado = $GLOBALS['dbSQL']->Query($sql); if ( $resultado ) { //$r = $GLOBALS['dbSQL']->getOne(); $r = $GLOBALS['dbSQL']->getAll(); $total = intval($r[0]['TOTAL']); $tp = $total % 20; $p = $pagina-1; $rdesde = (20*$p)+$p; $rhasta = $rdesde + 20; } else { //Si falla el calculo de limites, retorna la primer página } } } else { $rdesde = $limit[0]; $rhasta = $limit[1]; } //order by avi_fecha DESC $sql = "SELECT RowConstrainedResult.* FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY aviau_tstamp DESC ) AS RowNum ,t0.* , t1.emp_nombre as Remitente FROM dbo.[avisos_auditoria] as t0 INNER JOIN dbo.[empleado] as t1 ON t0.[usu_remite] = t1.[emp_codigo] ".$where." ) AS RowConstrainedResult WHERE RowNum >= ".$rdesde." AND RowNum < ".$rhasta." ORDER BY RowNum"; } else { //Todos los avisos sin limite $sql = "SELECT t0.aviau_codigo ,t0.aviau_titulo ,t0.aviau_mensaje ,t0.usu_remite ,t1.emp_nombre as Usuario ,t0.aviau_tstamp ,t0.avi_nodo ,t0.aviau_lst_grupos ,t0.aviau_usuarios FROM dbo.[avisos_auditoria] as t0 INNER JOIN dbo.[empleado] as t1 ON t0.[usu_remite] = t1.[emp_codigo] ".$where." ORDER BY aviau_tstamp DESC "; } //print_r($sql);die; $resultado = $GLOBALS['dbSQL']->Query($sql); if ( $resultado ) { $avisoslst = $GLOBALS['dbSQL']->getAll(); //print_r($avisoslst);die; $r = getUsuariosYGrupos( $avisoslst ); //print_r($avisoslst);die; /* Array ( [0] => Array ( [RowNum] => 1 [aviau_codigo] => 1 [usu_remite] => 98 [avi_nodo] => JCV0TL80KZ [aviau_lst_grupos] => 1;2 [aviau_usuarios] => 2;3;5;8 [aviau_tstamp] => 2018-05-04 12:06:47.163 [aviau_titulo] => prueba auditoria [aviau_mensaje] => prueba prueba prueba prueba prueba [Remitente] => LANDAWARE IT [grupos] => Array ( [0] => Array ( [id] => 1 [grupo] => ADMINISTRACION ) [1] => Array ( [id] => 2 [grupo] => ENFERMERIA ) ) [usuarios] => Array ( [0] => Array ( [id] => 2 [usuario] => KEMBER TOMAS ) [1] => Array ( [id] => 3 [usuario] => CAVAGNI ANDREA ) [2] => Array ( [id] => 5 [usuario] => REBAQUE GABRIELA ) [3] => Array ( [id] => 8 [usuario] => KEMBER LUCRECIA ) ) ) ) */ } return $avisoslst; } //Obtener los mensajes del usuario function getAvisosUsuario(&$resultInfo) {//print_r($_REQUEST);die; if( isset($_REQUEST["uid"]) && !empty($_REQUEST["uid"]) && !is_null($_REQUEST["uid"]) && trim($_REQUEST["uid"])!="" ) { $avisoInfo['idUsuario'] = $_REQUEST["uid"]; $avisoInfo['estado'] = false; $avisoInfo['top'] = false; $avisoInfo['pagina'] = false; $avisoInfo['limit'] = false; $avisoInfo['tipo'] = false; $avisoInfo['bandeja'] = false; $flagSalida = false; if( isset($_REQUEST["es"]) && !empty($_REQUEST["es"]) && !is_null($_REQUEST["es"]) && trim($_REQUEST["es"])!="" && is_numeric($_REQUEST["es"]) ) { $avisoInfo['estado'] = intval($_REQUEST["es"]); } if( isset($_REQUEST["n"]) && !empty($_REQUEST["n"]) && !is_null($_REQUEST["n"]) && trim($_REQUEST["n"])!="" && is_numeric($_REQUEST["n"]) ) { $avisoInfo['top'] = intval($_REQUEST["n"]); } if( isset($_REQUEST["p"]) && !empty($_REQUEST["p"]) && !is_null($_REQUEST["p"]) && trim($_REQUEST["p"])!="" && is_numeric($_REQUEST["p"]) ) { $avisoInfo['pagina'] = intval($_REQUEST["p"]); } if( isset($_REQUEST["d"]) && !empty($_REQUEST["d"]) && !is_null($_REQUEST["d"]) && trim($_REQUEST["d"])!="" && is_numeric($_REQUEST["d"]) && isset($_REQUEST["h"]) && !empty($_REQUEST["h"]) && !is_null($_REQUEST["h"]) && trim($_REQUEST["h"])!="" && is_numeric($_REQUEST["h"]) ) { $avisoInfo['limit'] = array(intval($_REQUEST["d"]),intval($_REQUEST["h"])); } if( isset($_REQUEST["t"]) && !empty($_REQUEST["t"]) && !is_null($_REQUEST["t"]) && trim($_REQUEST["t"])!="" && is_numeric($_REQUEST["t"]) ) { $avisoInfo['tipo'] = intval($_REQUEST["t"]); } if( isset($_REQUEST["ban"]) && !empty($_REQUEST["ban"]) && !is_null($_REQUEST["ban"]) && trim($_REQUEST["ban"])!="" ) { $avisoInfo['bandeja'] = $_REQUEST["ban"]; if( mb_strtolower($_REQUEST['ban']) === 's' ) { $flagSalida = true; } } if( !$flagSalida ) { $resultado = getAvisos( $avisoInfo ); } else { $resultado = getAvisosEnviados( $avisoInfo ); } if( $resultado ) { //Resultado envio del mensaje $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => 1 ,"avisos" => $resultado ); } else { $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => 0 ,"avisos" => array() ); } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros faltantes al consultar los avisos del usuario"; } } //Cambiar el estado de un mensaje de un usuario especifio function updateAvisoEstado($avisoInfo) { $avisos = false; $where = " WHERE avi_numero = " . $avisoInfo['idMensaje']; $where.= " AND usu_codigo = " . $avisoInfo['idUsuario']; $sql = "UPDATE dbo.[avisos] SET avi_leido = ".$avisoInfo['estado']." ".$where; $resultado = $GLOBALS['dbSQL']->Query($sql,true); if ( $resultado ) { $avisos = $GLOBALS['dbSQL']->getAll(); } return $avisos; } //Cambiar el estado de un mensaje function changeMensajeEstado(&$resultInfo) { if( isset($_REQUEST["uid"]) && !empty($_REQUEST["uid"]) && !is_null($_REQUEST["uid"]) && trim($_REQUEST["uid"])!="" && isset($_REQUEST["idm"]) && !empty($_REQUEST["idm"]) && !is_null($_REQUEST["idm"]) && trim($_REQUEST["idm"])!="" && isset($_REQUEST["es"]) && //!empty($_REQUEST["es"]) && !is_null($_REQUEST["es"]) && trim($_REQUEST["es"])!="" ) { $avisoInfo['idUsuario'] = $_REQUEST["uid"]; $avisoInfo['idMensaje'] = $_REQUEST["idm"]; $avisoInfo['estado'] = ($_REQUEST["es"]=="1"?'1':'0'); $resultado = updateAvisoEstado( $avisoInfo ); if( $resultado ) { //Resultado envio del mensaje $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => 1 ,"avisos" => $resultado ); } else { $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => 0 ,"avisos" => array() ); } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros faltantes al cambiar estado del mensaje"; } } //Obtener el mensaje seleccionado asociado a un usuario function getMensaje($avisoInfo) { $avisos = false; $where = " WHERE avi_numero = " . $avisoInfo['idMensaje']; $where.= " AND usu_codigo = " . $avisoInfo['idUsuario']; $sql = "SELECT * FROM dbo.[avisos] ".$where; //print_r($sql);die; $resultado = $GLOBALS['dbSQL']->Query($sql); if ( $resultado ) { //$avisos = $GLOBALS['dbSQL']->getOne(); $avisos = $GLOBALS['dbSQL']->getAll(); } //return $avisos; return $avisos[0]; } //Obtener un mensaje seleccionado function obtenerMensaje(&$resultInfo) { if( isset($_REQUEST["uid"]) && !empty($_REQUEST["uid"]) && !is_null($_REQUEST["uid"]) && trim($_REQUEST["uid"])!="" && isset($_REQUEST["idm"]) && !empty($_REQUEST["idm"]) && !is_null($_REQUEST["idm"]) && trim($_REQUEST["idm"])!="" ) { $avisoInfo['idUsuario'] = $_REQUEST["uid"]; $avisoInfo['idMensaje'] = $_REQUEST["idm"]; $resultado = getMensaje( $avisoInfo ); if( $resultado ) { //Resultado envio del mensaje $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => 1 ,"avisos" => $resultado ); } else { $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => 0 ,"avisos" => array() ); } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros faltantes al consultar el mensaje[1]"; } } //Obtener el mensaje seleccionado asociado a un usuario function getMensajeEnviado($avisoInfo) { $sql = "SELECT * FROM dbo.[avisos_auditoria] as t0 WHERE t0.usu_remite = " . $avisoInfo['idUsuario']." AND t0.avi_nodo = '" . $avisoInfo['nodo'] . "'"; //print_r($sql);die; $resultado = $GLOBALS['dbSQL']->Query($sql); if ( $resultado ) { //$avisos = $GLOBALS['dbSQL']->getOne(); $avisos = $GLOBALS['dbSQL']->getAll(); } //return $avisos; return $avisos[0]; } //Obtener un mensaje enviado seleccionado function obtenerMensajeEnviado(&$resultInfo) { if( isset($_REQUEST["uid"]) && !empty($_REQUEST["uid"]) && !is_null($_REQUEST["uid"]) && trim($_REQUEST["uid"])!="" && isset($_REQUEST["idm"]) && !empty($_REQUEST["idm"]) && !is_null($_REQUEST["idm"]) && trim($_REQUEST["idm"])!="" && isset($_REQUEST["n"]) && !empty($_REQUEST["n"]) && !is_null($_REQUEST["n"]) && trim($_REQUEST["n"])!="" ) { $avisoInfo['idUsuario'] = $_REQUEST["uid"]; $avisoInfo['idMensaje'] = $_REQUEST["idm"]; $avisoInfo['nodo'] = $_REQUEST["n"]; $resultado = getMensajeEnviado( $avisoInfo ); if( $resultado ) { //Resultado envio del mensaje $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => 1 ,"avisos" => $resultado ); } else { $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => 0 ,"avisos" => array() ); } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros faltantes al consultar el mensaje"; } } //--------------------------- //RECLAMOS //--------------------------- function registrarReclamo($idCliente,$idEstudio,&$nroRef=0,$tipo,$comentario='') { //Validar si ya existe un registro para este estudio sin resolver $continue = true; $queryMs = "SELECT COUNT(*) as total FROM estudios_reclamos WHERE img_id '".addcslashes($idEstudio)."' AND estrec_resuelto = 0"; $resultado = $GLOBALS['dbSQL']->Query($queryMs); if( $resultado ) { $reclamos = $GLOBALS['dbSQL']->getAll(); $totalReclamos = count($reclamos); if($totalReclamos>=0) { if(intval($reclamos[0][""])>0) { $continue = false; return -2; } } } //Gravar el reclamo if( $continue ) { $sql = "INSERT INTO estudios_reclamos ( cli_codigo ,img_id ,estrec_tstamp ,estrec_resuelto ,usu_codigo ,estrec_tipo ,estrec_registracion ,estrec_comentario ) VALUES ( ". addslashes($idCliente) ." ,". addslashes($idEstudio) ." ,GETDATE() ,0 ,NULL ,". addslashes($tipo) ." ,GETDATE() ,'". addslashes($comentario) ."' )"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if( $rs ) { $nroRef = $GLOBALS['dbSQL']->getLastId('estudios_reclamos','estrec_numero'); if( $nroRef ) { if( $GLOBALS['SEND_EMAIL_RECLAMO_RECIBIDO'] ) { sendEmailReclamoRecibido($nroRef); } if( $GLOBALS['SEND_WHATSAPP_RECLAMO_RECIBIDO'] ) { sendWhatsappReclamoRecibido($nroRef); } return true; } } } return -1; } function saveReclamo(&$resultInfo) { if( isset($_REQUEST["u"]) && !empty($_REQUEST["u"]) && !is_null($_REQUEST["u"]) && isset($_REQUEST["est"]) && !empty($_REQUEST["est"]) && !is_null($_REQUEST["est"]) && isset($_REQUEST["t"]) && !is_null($_REQUEST["t"]) ) { $tipo=0; if($_REQUEST["t"]==="true"){$tipo=1;} $comentario=''; if(isset($_REQUEST["cm"])){$comentario=substr($_REQUEST["cm"],0,500);} $resultado = registrarReclamo($_REQUEST["u"],$_REQUEST["est"],$nroref,$tipo,$comentario); if ( $resultado ) { //Resultado envio del mensaje $resultInfo['code'] = 0; $resultInfo['data'] = array( "res" => $resultado ,"nroref" => $nroref ); } else { $resultInfo['code'] = -1; $resultInfo['errorDes'] = "SE PRODUJO UN ERROR EN EL SISTEMA AL REGISTRAR EL RECLAMO. INTENTE MAS TARDE."; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parametros Faltantes"; } return false; } function getComReclamos() { //Paciente $flagPaciente = false; if( isset($_REQUEST["pd"])&&intval($_REQUEST["pd"])!==(-1)) { $flagPaciente = true; } //Estado $flagEstado = false; if(isset($_REQUEST["st"])&&intval($_REQUEST["st"])!==(-1)) { $flagEstado = true; } $flagFecha = false; if( isset($_REQUEST["fd"]) && !is_null($_REQUEST["fd"]) && intval($_REQUEST["fd"])!==(-1) && isset($_REQUEST["fh"]) && !is_null($_REQUEST["fh"]) && intval($_REQUEST["fh"])!==(-1) ) { $flagFecha = true; $rango = array(); $rango[0] = DateTime::createFromFormat('d/m/Y', $_REQUEST["fd"]); $rango[1] = DateTime::createFromFormat('d/m/Y', $_REQUEST["fh"]); $desde = date("Y-m-d",strtotime($rango[0]->format('Y-m-d'))); $hasta = date("Y-m-d",strtotime($rango[1]->format('Y-m-d'))); } $params = ""; if($flagEstado) { $params = " AND ( er.estrec_resuelto = '".(intval($_REQUEST["st"])==1?0:1)."')"; } if($flagPaciente) { $params.= " AND ( er.cli_codigo BETWEEN '".$_REQUEST["pd"]."' AND '".$_REQUEST["ph"]."')"; } if($flagFecha) { $params.= " AND ( LEFT(CONVERT(VARCHAR,er.estrec_registracion, 120), 10) BETWEEN LEFT(CONVERT(VARCHAR,'".$desde."', 120), 10) AND LEFT(CONVERT(VARCHAR,'".$hasta."', 120), 10) )"; } //print_r($sql);die; $sql = " SELECT TT.* FROM ( SELECT er.estrec_numero ,er.cli_codigo ,er.img_id ,er.estrec_tstamp ,er.estrec_resuelto ,cimg.usu_codigo ,emp.emp_nombre ,c.cli_nombre ,CONVERT(VARCHAR(20),er.estrec_tstamp,120) AS fechatmsp ,CONVERT(VARCHAR(20),er.estrec_registracion,103) AS fechareg ,CONVERT(VARCHAR(20),er.estrec_resolucion,113) AS fechasol ,CONVERT(varchar, er.estrec_registracion, 8) as horareg ,'' AS tipo ,'' AS imgname ,'' AS archivo ,med.med_nombre as medname FROM estudios_reclamos as er INNER JOIN clientes AS c ON er.cli_codigo = c.cli_codigo INNER JOIN cli_fichaestudios AS cimg ON cimg.est_numero = er.img_id LEFT JOIN empleado AS emp ON emp.emp_codigo = cimg.usu_codigo INNER JOIN medicos as med ON med.med_codigo = cimg.med_codigo WHERE er.estrec_tipo = 0 ".$params." UNION SELECT er.estrec_numero ,er.cli_codigo ,er.img_id ,er.estrec_tstamp ,er.estrec_resuelto ,er.usu_codigo ,emp.emp_nombre ,c.cli_nombre ,CONVERT(VARCHAR(20),er.estrec_tstamp,113) AS fechatmsp ,CONVERT(VARCHAR(20),er.estrec_registracion,103) AS fechareg ,CONVERT(VARCHAR(20),er.estrec_resolucion,113) AS fechasol ,CONVERT(varchar, er.estrec_registracion, 8) as horareg ,'' AS tipo ,img_titulo AS imgname ,img_path AS archivo ,med.med_nombre as medname FROM estudios_reclamos as er INNER JOIN clientes AS c ON er.cli_codigo = c.cli_codigo LEFT JOIN empleado AS emp ON emp.emp_codigo = er.usu_codigo INNER JOIN cli_imagenes AS dimg ON dimg.img_id = er.img_id INNER JOIN medicos as med ON med.med_codigo = dimg.med_codigo WHERE er.estrec_tipo = 1 ".$params." )AS TT ORDER BY TT.fechareg"; //print_r($sql);die; $resultado = $GLOBALS['dbSQL']->Query($sql); if ( !$resultado ) { return false; } $resultado = $GLOBALS['dbSQL']->getAll(); if( count($resultado) > 0 ) { $total = count($resultado); $rs['reclamos'] = $resultado; $rs['total'] = $total; } else { $rs['reclamos'] = array(); $rs['total'] = 0; } return $rs; } function getComLstReclamos(&$resultInfo) { $resultado = getComReclamos(); if( $resultado ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => $resultado['total'] ,"lstReclamos" => ($resultado&&isset($resultado['reclamos'])?$resultado['reclamos']:'') ); } else { $resultInfo['code'] = 0; $resultInfo['errorDes'] = "Se produjo un error al consultar los turnos"; } } function getComentarioReclamo($id) { $sql = "SELECT estrec_comentario FROM estudios_reclamos WHERE estrec_numero = '".addslashes($id)."'"; $resultado = $GLOBALS['dbSQL']->Query($sql); //print_r($rs);die; if ( !$resultado ) { return false; } $reclamo = $GLOBALS['dbSQL']->getAll(); if( count($resultado) > 0 ) { return $reclamo[0]["estrec_comentario"]; } return ''; } function getReclamoComentario(&$resultInfo) { if( isset($_REQUEST["idit"]) && !empty($_REQUEST["idit"]) && !is_null($_REQUEST["idit"]) ) { $resultado = getComentarioReclamo($_REQUEST["idit"]); if ( $resultado ) { //Resultado envio del mensaje $resultInfo['code'] = 0; $resultInfo['data'] = array("comentario" => $resultado); } else { $resultInfo['code'] = -1; $resultInfo['errorDes'] = "SE PRODUJO UN ERROR EN EL SISTEMA AL CONSULTAR EL COMENTARIO DEL RECLAMO. INTENTE MAS TARDE."; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parametros Faltantes"; } return false; } function resolverReclamo($id) { $sql = "UPDATE estudios_reclamos SET estrec_resuelto = (CASE WHEN estrec_resuelto = 1 THEN 0 ELSE 1 END) WHERE estrec_numero = '". addslashes($id) ."'"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if( $rs ) { return true; } return false; } function updateReclamoEstado(&$resultInfo) { if( isset($_REQUEST["idit"]) && !empty($_REQUEST["idit"]) && !is_null($_REQUEST["idit"]) ) { $resultado = resolverReclamo($_REQUEST["idit"]); if ( $resultado ) { //Resultado envio del mensaje $resultInfo['code'] = 0; $resultInfo['data'] = array("res" => ($resultado?1:0)); } else { $resultInfo['code'] = -1; $resultInfo['errorDes'] = "SE PRODUJO UN ERROR EN EL SISTEMA AL RESOLVER EL RECLAMO. INTENTE MAS TARDE."; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parametros Faltantes"; } return false; } function sendEmailReclamoRecibido($idReclamo) { try { $continue=false; $sql = "SELECT c.cli_dni AS DNI , rec.cli_codigo AS cod , c.cli_nombre AS PACIENTE , c.cli_email AS EMAIL , (CASE WHEN c.cli_tel IS NULL THEN '' ELSE c.cli_tel END) AS Telefono , (CASE WHEN c.cli_tel_cod_area IS NULL THEN '' ELSE c.cli_tel_cod_area END) AS TelArea , (CASE WHEN c.cli_tel_numero IS NULL THEN '' ELSE c.cli_tel_numero END) AS TelNro , c.cli_bloqueado as bloqueado ,CONCAT('ESTUDIO:', (CASE WHEN rec.estrec_tipo = 0 THEN CONCAT(CONVERT(VARCHAR(20),cimg.est_fecha,103),'-',t_e.tit_abrev,'. ',med_e.med_nombre) ELSE CONCAT(CONVERT(VARCHAR(20),dimg.img_fecha,103),'-',t_i.tit_abrev,'. ',med_i.med_nombre) END) ) AS ESTUDIO ,(CASE WHEN rec.estrec_tipo = 1 THEN dimg.img_path ELSE '' END) AS FILENAME FROM clientes AS c INNER JOIN estudios_reclamos AS rec ON rec.cli_codigo = c.cli_codigo LEFT JOIN cli_fichaestudios AS cimg ON cimg.est_numero = rec.img_id LEFT JOIN medicos as med_e ON med_e.med_codigo = cimg.med_codigo LEFT JOIN tbl_titulos as t_e ON med_e.tit_codigo = t_e.tit_codigo LEFT JOIN cli_imagenes AS dimg ON dimg.img_id = rec.img_id LEFT JOIN medicos as med_i ON med_i.med_codigo = dimg.med_codigo LEFT JOIN tbl_titulos as t_i ON med_i.tit_codigo = t_i.tit_codigo WHERE rec.estrec_numero = '".$idReclamo."'"; //print_r($sql); debug($sql); $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $clienteInfo = $GLOBALS['dbSQL']->getAll(); if( count($clienteInfo)>0 ) { $nombre = strtoupper($clienteInfo[0]["PACIENTE"]); $email = strtolower($clienteInfo[0]["EMAIL"]); $estudio= strtoupper($clienteInfo[0]["ESTUDIO"]); $file = strtoupper($clienteInfo[0]["FILENAME"]); if( intval($clienteInfo[0]["bloqueado"])!=1 && ( $clienteInfo[0]["Telefono"]!='' || ($clienteInfo[0]["TelArea"]!=''&& $clienteInfo[0]["TelNro"]!='') ) ) { if( trim($clienteInfo[0]["Telefono"])!='' ) { $telefono = $clienteInfo[0]["Telefono"]; } else { $telefono = $clienteInfo[0]["TelArea"].$clienteInfo[0]["TelNro"]; } $continue=true; } } } if($continue) { $sql = "INSERT INTO mensajes (men_fechaenvio ,men_fecha ,men_hora ,men_destinatario ,men_paciente ,men_medico ,men_obs ,men_texto ,men_procesado ,men_fechaproceso ,men_tipo ,men_token ) VALUES ( GETDATE() ,GETDATE() ,'".$idReclamo."' ,'".$email."' ,'".$nombre."' ,'' ,'' ,'".$estudio."' ,0 ,NULL ,11 ,'".$file."' )"; //die($sql); //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql); } return true; } catch ( Exception $e ) { $resultInfo['code'] = CODE_RESULT_ERROR_FATAL; $resultInfo['errorDes'] = "Error:".($e->__toString()); logTrace(debug_backtrace(),$e->__toString()); return false; } } function sendWhatsappReclamoRecibido($idReclamo) { try { $continue=false; $sql = "SELECT c.cli_dni AS DNI , rec.cli_codigo AS cod , c.cli_nombre AS PACIENTE , c.cli_email AS EMAIL , (CASE WHEN c.cli_tel IS NULL THEN '' ELSE c.cli_tel END) AS Telefono , (CASE WHEN c.cli_tel_cod_area IS NULL THEN '' ELSE c.cli_tel_cod_area END) AS TelArea , (CASE WHEN c.cli_tel_numero IS NULL THEN '' ELSE c.cli_tel_numero END) AS TelNro , c.cli_bloqueado as bloqueado ,CONCAT('ESTUDIO:', (CASE WHEN rec.estrec_tipo = 0 THEN CONCAT(CONVERT(VARCHAR(20),cimg.est_fecha,103),'-',t_e.tit_abrev,'. ',med_e.med_nombre) ELSE CONCAT(CONVERT(VARCHAR(20),dimg.img_fecha,103),'-',t_i.tit_abrev,'. ',med_i.med_nombre) END) ) AS ESTUDIO ,(CASE WHEN rec.estrec_tipo = 1 THEN dimg.img_path ELSE '' END) AS FILENAME FROM clientes AS c INNER JOIN estudios_reclamos AS rec ON rec.cli_codigo = c.cli_codigo LEFT JOIN cli_fichaestudios AS cimg ON cimg.est_numero = rec.img_id LEFT JOIN medicos as med_e ON med_e.med_codigo = cimg.med_codigo LEFT JOIN tbl_titulos as t_e ON med_e.tit_codigo = t_e.tit_codigo LEFT JOIN cli_imagenes AS dimg ON dimg.img_id = rec.img_id LEFT JOIN medicos as med_i ON med_i.med_codigo = dimg.med_codigo LEFT JOIN tbl_titulos as t_i ON med_i.tit_codigo = t_i.tit_codigo WHERE rec.estrec_numero = '".$idReclamo."'"; //print_r($sql); debug($sql); $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $clienteInfo = $GLOBALS['dbSQL']->getAll(); if( count($clienteInfo)>0 ) { $nombre = strtoupper($clienteInfo[0]["PACIENTE"]); $email = strtolower($clienteInfo[0]["EMAIL"]); $estudio= strtoupper($clienteInfo[0]["ESTUDIO"]); $file = strtoupper($clienteInfo[0]["FILENAME"]); if( intval($clienteInfo[0]["bloqueado"])!=1 && ( $clienteInfo[0]["Telefono"]!='' || ($clienteInfo[0]["TelArea"]!=''&& $clienteInfo[0]["TelNro"]!='') ) ) { if( trim($clienteInfo[0]["Telefono"])!='' ) { $telefono = $clienteInfo[0]["Telefono"]; } else { $telefono = $clienteInfo[0]["TelArea"].$clienteInfo[0]["TelNro"]; } $continue=true; } } } if($continue) { $sql = "INSERT INTO mensajes_whatsapp ( men_fechaenvio ,tur_numero ,men_fecha ,men_hora ,men_destinatario ,men_tel ,men_paciente ,esp_denom ,men_medico ,men_obs ,men_texto ,men_procesado ,men_tipo ,tur_token ) VALUES ( GETDATE() ,'".$idReclamo."' ,GETDATE() ,0 ,'".$email."' ,'".$telefono."' ,'".$nombre."' ,'' ,'' ,'' ,'".$estudio."' ,0 ,11 ,'".$file."' )"; //die($sql); //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql); } return true; } catch ( Exception $e ) { $resultInfo['code'] = CODE_RESULT_ERROR_FATAL; $resultInfo['errorDes'] = "Error:".($e->__toString()); logTrace(debug_backtrace(),$e->__toString()); return false; } } ?>