$url,'uri' => 'urn:webservices')); $resultado = $soapClient->agendaTurnos($params); $resinfo = json_decode($resultado ,true); // print_r("--------RESULTADO-------");print_r("\n"); // print_r($resultado);print_r("\n"); // print_r($resinfo); // print_r("-----**************------");print_r("\n"); return true; //------------------------------------------------------------------------------ } catch (SoapFault $exception) { //or any other handling you like //var_dump(get_class($exception)); var_dump($exception); } catch ( Exception $e ) { //Error al consultar el WS print_r("Error al consultar el web service");print_r("\n"); print_r($e->__toString());print_r("\n"); return false; } } function isTurnosNubeInProgress() { $sql = " SELECT COUNT(*) as total FROM dbo.[mensajes_in_process] WHERE [msgprc_estado] IS NULL AND msgprc_type = 'TUR_CLOUD'"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $rs = $GLOBALS['dbSQL']->getAll(); if(intval($rs[0]["total"])>=1) { return true; // Hay un proceso activo de envio de mensajes } } return false; //No hay un preoceso activo de envio de mensajes } function openTurnosNubeProgress() { $sql = " INSERT INTO dbo.[mensajes_in_process] (msgprc_estado,msgprc_tstamp_init,msgprc_type) VALUES (NULL,GETDATE(),'TUR_CLOUD')"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( $rs ) { return true; } return false; } function closeTurnosNubeProgress() { $sql = " UPDATE dbo.[mensajes_in_process] SET msgprc_estado = 1, msgprc_tstamp = GETDATE() WHERE msgprc_estado IS NULL AND msgprc_type = 'TUR_CLOUD'"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( $rs ) { return true; } return false; } function updateTurnosClousState($id,$flag) { try { $sql = " UPDATE dbo.[recibos] SET rec_cloud_process = 1 ,rec_clod_error = ".(!$flag?1:0)." WHERE [rec_numero] = ".$id; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( $rs ) { return true; } return false; } catch (Exception $e) { //print_r("updateEmailMessagesState >>>>>> Error:".($e->__toString())); return false; } } function getPraInfo($nom,$pracod) { $itemInfo = array(); $sql = "SELECT inos_cod AS pcod ,inos_denom AS pname FROM nomenclador WHERE nom_codigo = '".$nom."' AND inos_cod = '".$pracod."'"; //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $practicaInfo = $GLOBALS['dbSQL']->getAll(); if(is_array($practicaInfo)&&count($practicaInfo)>0) { $itemInfo = array("pcod"=>$practicaInfo[0]["pcod"],"pname"=>$practicaInfo[0]["pname"]); } } return $itemInfo; } function processTurnosNubeQueue() { closeTurnosNubeProgress(); if(!isTurnosNubeInProgress()) { //Set in progress try { openTurnosNubeProgress(); $sql = " SELECT DISTINCT med_codigo, med_dni, med_mp, med_nombre, (CASE WHEN me.esp_denom IS NULL THEN '' ELSE me.esp_denom END) as esp, (CASE WHEN mt.tit_denom IS NULL THEN '' ELSE mt.tit_denom END) as tit, (SELECT COUNT(*) FROM turnos AS t WHERE t.med_codigo = m.med_codigo AND t.cli_codigo > 1 AND LEFT(CONVERT(VARCHAR,tur_fecha, 120), 10) BETWEEN LEFT(CONVERT(VARCHAR, GETDATE()), 120), 10) AND LEFT(CONVERT(VARCHAR,(DATEADD(day, ".$GLOBALS['TUENOS_NUBE_UMBRAL'].", GETDATE())), 120), 10)) AS TotTurnos FROM medicos as m LEFT JOIN especial AS me ON me.esp_codigo = m.esp_codigo LEFT JOIN tbl_titulos AS mt ON mt.tit_codigo = m.tit_codigo WHERE med_bloqueado = 0 ORDER BY med_codigo"; //print_r($sql);print_r("\n");die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $medicos = $GLOBALS['dbSQL']->getAll(); $lstTurnos = array(); for($i=0;$i0) { //BUSCAR LOS TURNOS DEL MEDICO DE LOS PROXIMOS N-DIAS $sql = "SELECT t.tur_numero as tn ,FORMAT(tur_fecha, 'dd/MM/yyyy') as tf ,tur_hora as th ,LTRIM(RTRIM(c.cli_nombre)) as cn ,t.inos_cod as pc ,LTRIM(RTRIM(n.inos_denom)) as pn ,(CASE WHEN c.cli_tel IS NULL THEN '' ELSE LTRIM(RTRIM(c.cli_tel)) END) as ct ,(CASE WHEN c.cli_email IS NULL THEN '' ELSE LTRIM(RTRIM(c.cli_email)) END) as ce ,tur_atendido as ta ,tur_visado as tv ,(CASE WHEN tur_multiple IS NULL THEN '' ELSE tur_multiple END) as tm ,t.cli_codigo as ccod ,t.nom_codigo as ncod ,ob.obs_denom as ob FROM turnos as t INNER JOIN clientes as c ON c.cli_codigo = t.cli_codigo INNER JOIN nomenclador as n ON n.nom_codigo = t.nom_codigo AND n.inos_cod = t.inos_cod INNER JOIN obrasoc as ob ON ob.obs_codigo = t.obs_codigo WHERE LEFT(CONVERT(VARCHAR,tur_fecha, 120), 10) = LEFT(CONVERT(VARCHAR,(DATEADD(day, ".$GLOBALS['TUENOS_NUBE_UMBRAL'].", GETDATE())), 120), 10) AND t.med_codigo = " . $medicos[$i]["med_codigo"]." AND t.cli_codigo <> 1 ORDER BY t.tur_fecha, tur_hora"; $rsMT = $GLOBALS['dbSQL']->Query($sql); if ( $rsMT ) { $turnosMedico = $GLOBALS['dbSQL']->getAll(); //print_r("med[".$medicos[$i]["med_codigo"]." turnos[".count($turnosMedico)."]]");print_r("\n"); if(is_array($turnosMedico)&&count($turnosMedico)>0) { $klst = ''; for($k=0;$kQuery($sqlMedico); if ( $rsM ) { $turnosMedicoEnviados = $GLOBALS['dbSQL']->getAll(); if(is_array($turnosMedicoEnviados)&&count($turnosMedicoEnviados)>0) { $flagInsert = false; } } } //Buscar si hay turnos para el medico $sqlTurnos = " SELECT turcl_numero FROM turnos_cloud_send WHERE med_codigo = " . $medicos[$i]["med_codigo"]." AND tur_base = '".$tk."'"; //print_r($sqlTurnos);print_r("\n");//die; $rsT = $GLOBALS['dbSQL']->Query($sqlTurnos); if ( false && $rsT ) //DESACTIVE LA EXCLUSION DE ENVIO REPETITIVO //if ( $rsT ) //DESACTIVE LA EXCLUSION DE ENVIO REPETITIVO { $turnosMedicoEnviados = $GLOBALS['dbSQL']->getAll(); if(is_array($turnosMedicoEnviados)&&count($turnosMedicoEnviados)>0) { $medicos[$i]["excluido"] = true; } } $flagContinue = true; if( $flagInsert ) { $sql = " DELETE FROM turnos_cloud_send WHERE med_codigo = ".$medicos[$i]["med_codigo"]; $rsU = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsU ) { //print_r($sql);print_r("\n"); //Error print_r("--e05--");print_r("\n"); $flagContinue = false; } if( $flagContinue ) { //No existe un rgistro del medico en la tabla de envios $sql = " INSERT turnos_cloud_send (med_codigo,tur_base) VALUES (".$medicos[$i]["med_codigo"].",'".$tk."')"; $rsI = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsI ) { //Error //print_r($sql);print_r("\n"); print_r("--e03--");print_r("\n"); $flagContinue = false; } } } else { //Existe un registro y debo actualizar el registro if(!$medicos[$i]["excluido"]) { $sql = " UPDATE turnos_cloud_send SET tur_base = '".$tk."' WHERE med_codigo = ".$medicos[$i]["med_codigo"]; $rsU = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsU ) { //print_r($sql);print_r("\n"); //Error print_r("--e02--");print_r("\n"); $flagContinue = false; } } else { print_r("--e01--");print_r("\n"); $flagContinue = false; } } print_r("med[".$medicos[$i]["med_codigo"]."] excluido[".$medicos[$i]["excluido"]."] turnos[".count($turnosMedico)."] flagInsert[".$flagInsert."] flagContinue[".$flagContinue."]");print_r("\n"); if($flagContinue) { $item = array( "med" =>$medicos[$i]["med_codigo"] ,"mlinf"=>trim($medicos[$i]["med_dni"]).";".trim($medicos[$i]["med_mp"]).";".trim($medicos[$i]["med_nombre"]).";".trim($medicos[$i]["esp"]).";".trim($medicos[$i]["tit"]).";".$medicos[$i]["TotTurnos"] ,"tlst" =>$medicos[$i]["turlst"] ); $x = array_push($lstTurnos,$item); } } } } } //print_r($lstTurnos);print_r("\n");die; if(is_array($lstTurnos)&&count($lstTurnos)>0) { print_r("--LISTADO DE TURNOS A ENVIAR----");print_r("\n"); print_r($lstTurnos);print_r("\n"); $resinfo=false; $res = callWebServiceTurnosNube($lstTurnos,$resinfo); } } closeTurnosNubeProgress(); } catch (Exception $e) { closeTurnosNubeProgress(); } } else { print_r("Envio en progreso. Se cancela hilo de ejecucion"); } } function reProcessTurnosNubeQueue($medico,$fechaI,$fechaF) { closeTurnosNubeProgress(); if(!isTurnosNubeInProgress()) { //Set in progress try { openTurnosNubeProgress(); $sql = " SELECT med_codigo, med_dni, med_mp, med_nombre, (CASE WHEN me.esp_denom IS NULL THEN '' ELSE me.esp_denom END) as esp, (CASE WHEN mt.tit_denom IS NULL THEN '' ELSE mt.tit_denom END) as tit, (SELECT COUNT(*) FROM turnos AS t WHERE t.med_codigo = m.med_codigo AND t.cli_codigo > 1 AND LEFT(CONVERT(VARCHAR,tur_fecha, 120), 10) BETWEEN LEFT(CONVERT(VARCHAR, '".$fechaI."', 120), 10) AND LEFT(CONVERT(VARCHAR,'".$fechaF."', 120), 10)) AS TotTurnos FROM medicos as m LEFT JOIN especial AS me ON me.esp_codigo = m.esp_codigo LEFT JOIN tbl_titulos AS mt ON mt.tit_codigo = m.tit_codigo WHERE med_bloqueado = 0 AND med_codigo = ".$medico; print_r($sql);print_r("\n");//die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $medicos = $GLOBALS['dbSQL']->getAll(); $lstTurnos = array(); for($i=0;$i0) { //BUSCAR LOS TURNOS DEL MEDICO DE LOS PROXIMOS N-DIAS $sql = "SELECT t.tur_numero as tn ,FORMAT(tur_fecha, 'dd/MM/yyyy') as tf ,tur_hora as th ,LTRIM(RTRIM(c.cli_nombre)) as cn ,t.inos_cod as pc ,LTRIM(RTRIM(n.inos_denom)) as pn ,(CASE WHEN c.cli_tel IS NULL THEN '' ELSE LTRIM(RTRIM(c.cli_tel)) END) as ct ,(CASE WHEN c.cli_email IS NULL THEN '' ELSE LTRIM(RTRIM(c.cli_email)) END) as ce ,tur_atendido as ta ,tur_visado as tv ,(CASE WHEN tur_multiple IS NULL THEN '' ELSE tur_multiple END) as tm ,t.cli_codigo as ccod ,t.nom_codigo as ncod ,ob.obs_denom as ob FROM turnos as t INNER JOIN clientes as c ON c.cli_codigo = t.cli_codigo INNER JOIN nomenclador as n ON n.nom_codigo = t.nom_codigo AND n.inos_cod = t.inos_cod INNER JOIN obrasoc as ob ON ob.obs_codigo = t.obs_codigo WHERE LEFT(CONVERT(VARCHAR,tur_fecha, 120), 10) = LEFT(CONVERT(VARCHAR,'".$fechaI."', 120), 10) AND t.med_codigo = " . $medicos[$i]["med_codigo"]." AND t.cli_codigo <> 1 ORDER BY t.tur_fecha, tur_hora"; print_r($sql);print_r("\n"); $rsMT = $GLOBALS['dbSQL']->Query($sql); if ( $rsMT ) { $turnosMedico = $GLOBALS['dbSQL']->getAll(); //print_r("med[".$medicos[$i]["med_codigo"]." turnos[".count($turnosMedico)."]]");print_r("\n"); if(is_array($turnosMedico)&&count($turnosMedico)>0) { $klst = ''; for($k=0;$kQuery($sqlMedico); if ( $rsM ) { $turnosMedicoEnviados = $GLOBALS['dbSQL']->getAll(); if(is_array($turnosMedicoEnviados)&&count($turnosMedicoEnviados)>0) { $flagInsert = false; } } } //Buscar si hay turnos para el medico $sqlTurnos = " SELECT turcl_numero FROM turnos_cloud_send WHERE med_codigo = " . $medicos[$i]["med_codigo"]." AND tur_base = '".$tk."'"; //print_r($sqlTurnos);print_r("\n");//die; $rsT = $GLOBALS['dbSQL']->Query($sqlTurnos); if ( false && $rsT ) //DESACTIVE LA EXCLUSION DE ENVIO REPETITIVO //if ( $rsT ) //DESACTIVE LA EXCLUSION DE ENVIO REPETITIVO { $turnosMedicoEnviados = $GLOBALS['dbSQL']->getAll(); if(is_array($turnosMedicoEnviados)&&count($turnosMedicoEnviados)>0) { $medicos[$i]["excluido"] = true; } } $flagContinue = true; if( $flagInsert ) { $sql = " DELETE FROM turnos_cloud_send WHERE med_codigo = ".$medicos[$i]["med_codigo"]; $rsU = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsU ) { //print_r($sql);print_r("\n"); //Error print_r("--e05--");print_r("\n"); $flagContinue = false; } if( $flagContinue ) { //No existe un rgistro del medico en la tabla de envios $sql = " INSERT turnos_cloud_send (med_codigo,tur_base) VALUES (".$medicos[$i]["med_codigo"].",'".$tk."')"; $rsI = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsI ) { //Error //print_r($sql);print_r("\n"); print_r("--e03--");print_r("\n"); $flagContinue = false; } } } else { //Existe un registro y debo actualizar el registro if(!$medicos[$i]["excluido"]) { $sql = " UPDATE turnos_cloud_send SET tur_base = '".$tk."' WHERE med_codigo = ".$medicos[$i]["med_codigo"]; $rsU = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsU ) { //print_r($sql);print_r("\n"); //Error print_r("--e02--");print_r("\n"); $flagContinue = false; } } else { print_r("--e01--");print_r("\n"); $flagContinue = false; } } print_r("med[".$medicos[$i]["med_codigo"]."] excluido[".$medicos[$i]["excluido"]."] turnos[".count($turnosMedico)."] flagInsert[".$flagInsert."] flagContinue[".$flagContinue."]");print_r("\n"); if($flagContinue) { $item = array( "med" =>$medicos[$i]["med_codigo"] ,"mlinf"=>trim($medicos[$i]["med_dni"]).";".trim($medicos[$i]["med_mp"]).";".trim($medicos[$i]["med_nombre"]).";".trim($medicos[$i]["esp"]).";".trim($medicos[$i]["tit"]).";".$medicos[$i]["TotTurnos"] ,"tlst" =>$medicos[$i]["turlst"] ); $x = array_push($lstTurnos,$item); } } } } } //print_r($lstTurnos);print_r("\n");die; if(is_array($lstTurnos)&&count($lstTurnos)>0) { print_r("--LISTADO DE TURNOS A ENVIAR----");print_r("\n"); print_r($lstTurnos);print_r("\n"); $resinfo=false; $res = callWebServiceTurnosNube($lstTurnos,$resinfo); } } closeTurnosNubeProgress(); } catch (Exception $e) { closeTurnosNubeProgress(); } } else { print_r("Envio en progreso. Se cancela hilo de ejecucion"); } } function reProcessTurnosNubeQueueAll($fechaI,$fechaF) {//print_r("-----");die; closeTurnosNubeProgress(); if(!isTurnosNubeInProgress()) { //Set in progress try { openTurnosNubeProgress(); $lstEmailsQueue = array(); //ARRAY DE EMAILS A ENVIAR $sql = " SELECT med_codigo, med_dni, med_mp, med_nombre, (CASE WHEN me.esp_denom IS NULL THEN '' ELSE me.esp_denom END) as esp, (CASE WHEN mt.tit_denom IS NULL THEN '' ELSE mt.tit_denom END) as tit, ( SELECT COUNT(*) FROM turnos AS t WHERE t.med_codigo = m.med_codigo AND t.cli_codigo > 1 AND LEFT(CONVERT(VARCHAR,tur_fecha, 120), 10) BETWEEN LEFT(CONVERT(VARCHAR, '".$fechaI."', 120), 10) AND LEFT(CONVERT(VARCHAR,'".$fechaF."', 120), 10)) AS TotTurnos FROM medicos as m LEFT JOIN especial AS me ON me.esp_codigo = m.esp_codigo LEFT JOIN tbl_titulos AS mt ON mt.tit_codigo = m.tit_codigo WHERE med_bloqueado = 0"; $sql = " SELECT med_codigo, med_dni, med_mp, med_nombre, (CASE WHEN me.esp_denom IS NULL THEN '' ELSE me.esp_denom END) as esp, (CASE WHEN mt.tit_denom IS NULL THEN '' ELSE mt.tit_denom END) as tit, ( SELECT COUNT(*) FROM turnos AS t WHERE t.med_codigo = m.med_codigo AND t.cli_codigo > 1 AND CAST(tur_fecha AS DATE) BETWEEN CAST('".$fechaI."' AS DATE) AND CAST('".$fechaF."' AS DATE) ) AS TotTurnos, med_email FROM medicos as m LEFT JOIN especial AS me ON me.esp_codigo = m.esp_codigo LEFT JOIN tbl_titulos AS mt ON mt.tit_codigo = m.tit_codigo WHERE med_bloqueado = 0"; print_r($sql);print_r("\n");//die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { //print_r("-----");die; $medicos = $GLOBALS['dbSQL']->getAll(); $lstTurnos = array(); print_r("----MEDICOS----");print_r("\n");//die; print_r($medicos);print_r("\n");//die; for($i=0;$i0) { //BUSCAR LOS TURNOS DEL MEDICO DE LOS PROXIMOS N-DIAS $sql = "SELECT t.tur_numero as tn ,FORMAT(tur_fecha, 'dd/MM/yyyy') as tf ,tur_hora as th ,LTRIM(RTRIM(c.cli_nombre)) as cn ,t.inos_cod as pc ,LTRIM(RTRIM(n.inos_denom)) as pn ,(CASE WHEN c.cli_tel IS NULL THEN '' ELSE LTRIM(RTRIM(c.cli_tel)) END) as ct ,(CASE WHEN c.cli_email IS NULL THEN '' ELSE LTRIM(RTRIM(c.cli_email)) END) as ce ,tur_atendido as ta ,tur_visado as tv ,(CASE WHEN tur_multiple IS NULL THEN '' ELSE tur_multiple END) as tm ,t.cli_codigo as ccod ,t.nom_codigo as ncod ,ob.obs_denom as ob FROM turnos as t INNER JOIN clientes as c ON c.cli_codigo = t.cli_codigo INNER JOIN nomenclador as n ON n.nom_codigo = t.nom_codigo AND n.inos_cod = t.inos_cod INNER JOIN obrasoc as ob ON ob.obs_codigo = t.obs_codigo WHERE LEFT(CONVERT(VARCHAR,tur_fecha, 120), 10) = LEFT(CONVERT(VARCHAR,'".$fechaI."', 120), 10) AND t.cli_codigo <> 1 AND t.med_codigo = ".$medicos[$i]["med_codigo"]." ORDER BY t.tur_fecha, tur_hora"; $sql = "SELECT t.tur_numero as tn ,FORMAT(tur_fecha, 'dd/MM/yyyy') as tf ,tur_hora as th ,LTRIM(RTRIM(c.cli_nombre)) as cn ,t.inos_cod as pc ,LTRIM(RTRIM(n.inos_denom)) as pn ,(CASE WHEN c.cli_tel IS NULL THEN '' ELSE LTRIM(RTRIM(c.cli_tel)) END) as ct ,(CASE WHEN c.cli_email IS NULL THEN '' ELSE LTRIM(RTRIM(c.cli_email)) END) as ce ,tur_atendido as ta ,tur_visado as tv ,(CASE WHEN tur_multiple IS NULL THEN '' ELSE tur_multiple END) as tm ,t.cli_codigo as ccod ,t.nom_codigo as ncod ,ob.obs_denom as ob FROM turnos as t INNER JOIN clientes as c ON c.cli_codigo = t.cli_codigo INNER JOIN nomenclador as n ON n.nom_codigo = t.nom_codigo AND n.inos_cod = t.inos_cod INNER JOIN obrasoc as ob ON ob.obs_codigo = t.obs_codigo WHERE CAST(tur_fecha AS DATE) = CAST('".$fechaI."' AS DATE) AND t.cli_codigo <> 1 AND t.med_codigo = ".$medicos[$i]["med_codigo"]." ORDER BY t.tur_fecha, tur_hora"; print_r("----MEDICO[".$medicos[$i]["med_codigo"]."]----");print_r("\n");//die; print_r($sql);print_r("\n");//die; $rsMT = $GLOBALS['dbSQL']->Query($sql); if ( $rsMT ) { $turnosMedico = $GLOBALS['dbSQL']->getAll(); //print_r("med[".$medicos[$i]["med_codigo"]." turnos[".count($turnosMedico)."]]");print_r("\n"); print_r("----TURNOS DEL MEDICO[".$medicos[$i]["med_codigo"]."]----");print_r("\n");//die; print_r($turnosMedico);print_r("\n");//die; if(is_array($turnosMedico)&&count($turnosMedico)>0) { $klst = ''; for($k=0;$k$medicos[$i]["med_codigo"] ,"mlinf"=>trim($medicos[$i]["med_dni"]).";".trim($medicos[$i]["med_mp"]).";".trim($medicos[$i]["med_nombre"]).";".trim($medicos[$i]["esp"]).";".trim($medicos[$i]["tit"]).";".$medicos[$i]["TotTurnos"] ,"tlst" =>$medicos[$i]["turlst"] ); $x = array_push($lstTurnos,$item); $sesion = md5($medicos[$i]["med_codigo"].$fechaI.date("H:i:s")); if( !is_null($medicos[$i]["med_email"]) && !empty($medicos[$i]["med_email"]) && trim($medicos[$i]["med_email"])!="" && ValidarEmail(trim($medicos[$i]["med_email"])) ) { $params = array(); $params['id'] = $medicos[$i]["med_codigo"]; $params['sesion'] = ''; $params['tipo'] = 40; //$row['men_tipo']; $params['email'] = trim($medicos[$i]["med_email"]); //'gustavojuarez@gmail.com';// //$params['email'] = 'juarezgustavoa@gmail.com';// $params['mednombre']= encodeDataB64(htmlentities(trim($medicos[$i]['med_nombre']))); $params['medico'] = $medicos[$i]['med_codigo']; $params['subject'] = "AGENDA DEL PROFESIONAL"; $params["customer"] = $GLOBALS['WS_WHATSAPP_CUSTOMER']; $params['template'] = 26; $params['sesion'] = $sesion; $xx = array_push($lstEmailsQueue, $params); $flagEmailValido = 1; } else { $flagEmailValido = 0; } //GRABAR AUDITORIA DEL MEDICO $sql = " INSERT turnos_cloud_send ( med_codigo, tur_base, turcl_sesion, turcl_email_flag, turcl_total_turnos ) VALUES ( ".$medicos[$i]["med_codigo"]." ,'".(isset($klst)?encodeDataB64($klst):'')."' ,'".$sesion."' ,'".$flagEmailValido."' ,".count($turnosMedico)." )"; $rsI = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsI ) { //Error //print_r($sql);print_r("\n"); ///print_r("--e03--");print_r("\n"); } //-------------------------------- if(false)//DEACTIVE LA LOGICA VIEJA { $tk = md5($klst); //Buscar si existe un registro para el medico if(false) //DEACTIVE ESTE CONTROL PARA ASEGURARME QUE SIEMPRE SE ENVIE { $sqlMedico = " SELECT turcl_numero FROM turnos_cloud_send WHERE med_codigo = " . $medicos[$i]["med_codigo"]; $rsM = $GLOBALS['dbSQL']->Query($sqlMedico); if ( $rsM ) { $turnosMedicoEnviados = $GLOBALS['dbSQL']->getAll(); if(is_array($turnosMedicoEnviados)&&count($turnosMedicoEnviados)>0) { $flagInsert = false; } } } //Buscar si hay turnos para el medico $sqlTurnos = " SELECT turcl_numero FROM turnos_cloud_send WHERE med_codigo = " . $medicos[$i]["med_codigo"]." AND tur_base = '".$tk."'"; //print_r($sqlTurnos);print_r("\n");//die; $rsT = $GLOBALS['dbSQL']->Query($sqlTurnos); if ( false && $rsT ) //DESACTIVE LA EXCLUSION DE ENVIO REPETITIVO //if ( $rsT ) //DESACTIVE LA EXCLUSION DE ENVIO REPETITIVO { $turnosMedicoEnviados = $GLOBALS['dbSQL']->getAll(); if(is_array($turnosMedicoEnviados)&&count($turnosMedicoEnviados)>0) { $medicos[$i]["excluido"] = true; } } $flagContinue = true; if( $flagInsert ) { $sql = " DELETE FROM turnos_cloud_send WHERE med_codigo = ".$medicos[$i]["med_codigo"]; $rsU = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsU ) { //print_r($sql);print_r("\n"); //Error print_r("--e05--");print_r("\n"); $flagContinue = false; } if( $flagContinue ) { //No existe un rgistro del medico en la tabla de envios $sql = " INSERT turnos_cloud_send (med_codigo,tur_base) VALUES (".$medicos[$i]["med_codigo"].",'".$tk."')"; $rsI = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsI ) { //Error //print_r($sql);print_r("\n"); print_r("--e03--");print_r("\n"); $flagContinue = false; } } } else { //Existe un registro y debo actualizar el registro if(!$medicos[$i]["excluido"]) { $sql = " UPDATE turnos_cloud_send SET tur_base = '".$tk."' WHERE med_codigo = ".$medicos[$i]["med_codigo"]; $rsU = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsU ) { //print_r($sql);print_r("\n"); //Error print_r("--e02--");print_r("\n"); $flagContinue = false; } } else { print_r("--e01--");print_r("\n"); $flagContinue = false; } } print_r("med[".$medicos[$i]["med_codigo"]."] excluido[".$medicos[$i]["excluido"]."] turnos[".count($turnosMedico)."] flagInsert[".$flagInsert."] flagContinue[".$flagContinue."]");print_r("\n"); if($flagContinue) { $item = array( "med" =>$medicos[$i]["med_codigo"] ,"mlinf"=>trim($medicos[$i]["med_dni"]).";".trim($medicos[$i]["med_mp"]).";".trim($medicos[$i]["med_nombre"]).";".trim($medicos[$i]["esp"]).";".trim($medicos[$i]["tit"]).";".$medicos[$i]["TotTurnos"] ,"tlst" =>$medicos[$i]["turlst"] ); $x = array_push($lstTurnos,$item); } } } } } } print_r("--LISTADO FINAL DE TURNOS----");print_r("\n"); print_r($lstTurnos);print_r("\n");//die; if(is_array($lstTurnos)&&count($lstTurnos)>0) { print_r("--LISTADO DE TURNOS A ENVIAR----");print_r("\n"); print_r($lstTurnos);print_r("\n"); $resinfo=false; $res = callWebServiceTurnosNube($lstTurnos,$resinfo); //-------------------------------- //NUEVA LOGICA ENVIAR EL EMAIL DESPUES DE CREAR LOS ARCHIVOS EN LA NUBE //-------------------------------- for($i=0;$iQuery($sql,true); if ( !$rsU ) { //print_r($sql);print_r("\n"); //Error print_r("--e02--");print_r("\n"); } } } //-------------------------------- } } else { print_r("--FALLO CURSOR---");//die; } closeTurnosNubeProgress(); } catch (Exception $e) { closeTurnosNubeProgress(); } } else { print_r("Envio en progreso. Se cancela hilo de ejecucion"); } } function reProcessTurnosNubeOnErrorAll($fechaI,$fechaF) {//print_r("-----");die; closeTurnosNubeProgress(); if(!isTurnosNubeInProgress()) { //Set in progress try { openTurnosNubeProgress(); $lstEmailsQueue = array(); //ARRAY DE EMAILS A ENVIAR $sql = " SELECT m.med_codigo, m.med_dni, m.med_mp, m.med_nombre, (CASE WHEN me.esp_denom IS NULL THEN '' ELSE me.esp_denom END) as esp, (CASE WHEN mt.tit_denom IS NULL THEN '' ELSE mt.tit_denom END) as tit, ( SELECT COUNT(*) FROM turnos AS t WHERE t.med_codigo = m.med_codigo AND t.cli_codigo > 1 AND CAST(tur_fecha AS DATE) BETWEEN CAST('".$fechaI."' AS DATE) AND CAST('".$fechaF."' AS DATE) ) AS TotTurnos, m.med_email, ts.turcl_sesion FROM medicos as m INNER JOIN turnos_cloud_send AS ts ON ts.med_codigo = m.med_codigo LEFT JOIN especial AS me ON me.esp_codigo = m.esp_codigo LEFT JOIN tbl_titulos AS mt ON mt.tit_codigo = m.tit_codigo WHERE m.med_bloqueado = 0 AND ISNULL(ts.turcl_resultado,0) = 0 AND CAST(ts.turcl_tmstp AS DATE) = CAST('".$fechaI."' AS DATE)"; print_r($sql);print_r("\n");//die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { //print_r("-----");die; $medicos = $GLOBALS['dbSQL']->getAll(); $lstTurnos = array(); print_r("----MEDICOS----");print_r("\n");//die; print_r($medicos);print_r("\n");//die; for($i=0;$i0) { $sesion = md5($medicos[$i]["med_codigo"].$fechaI.date("H:i:s")); if( !is_null($medicos[$i]["med_email"]) && !empty($medicos[$i]["med_email"]) && trim($medicos[$i]["med_email"])!="" && ValidarEmail(trim($medicos[$i]["med_email"])) ) { $params = array(); $params['id'] = $medicos[$i]["med_codigo"]; $params['sesion'] = ''; $params['tipo'] = 40; //$row['men_tipo']; $params['email'] = trim($medicos[$i]["med_email"]); //'gustavojuarez@gmail.com';// //$params['email'] = 'juarezgustavoa@gmail.com';// $params['mednombre']= encodeDataB64(htmlentities(trim($medicos[$i]['med_nombre']))); $params['medico'] = $medicos[$i]['med_codigo']; $params['subject'] = "AGENDA DEL PROFESIONAL"; $params["customer"] = $GLOBALS['WS_WHATSAPP_CUSTOMER']; $params['template'] = 26; $params['sesion'] = $sesion; $xx = array_push($lstEmailsQueue, $params); $flagEmailValido = 1; } else { $flagEmailValido = 0; } $sql = " UPDATE turnos_cloud_send SET turcl_email_flag = ".$flagEmailValido.", turcl_tmstp_email_reprocesado = GETDATE() WHERE turcl_sesion = '".$medicos[$i]["turcl_sesion"]."'"; $rsU = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsU ) { print_r("--e02--");print_r("\n"); print_r($sql);print_r("\n"); //Error print_r("----------");print_r("\n"); } } } print_r("--LISTADO FINAL DE MEDICOS----");print_r("\n"); print_r($lstEmailsQueue);print_r("\n");//die; if(is_array($lstEmailsQueue)&&count($lstEmailsQueue)>0) { for($i=0;$iQuery($sql,true); if ( !$rsU ) { //Error print_r("--e03--");print_r("\n"); print_r($sql);print_r("\n"); } } } } } else { print_r("--FALLO CURSOR---");//die; } closeTurnosNubeProgress(); } catch (Exception $e) { closeTurnosNubeProgress(); } } else { print_r("Envio en progreso. Se cancela hilo de ejecucion"); } } function isTurneroNubeEmailInProgress() { $sql = " SELECT COUNT(*) as total FROM dbo.[mensajes_in_process] WHERE [msgprc_estado] IS NULL AND msgprc_type = 'AGENDTNUBE'"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $rs = $GLOBALS['dbSQL']->getAll(); if(intval($rs[0]["total"])>=1) { return true; // Hay un proceso activo de envio de mensajes } } return false; //No hay un preoceso activo de envio de mensajes } function openTurneroNubeEmailProgress() { $sql = " INSERT INTO dbo.[mensajes_in_process] (msgprc_estado,msgprc_tstamp_init,msgprc_type) VALUES (NULL,GETDATE(),'AGENDTNUBE')"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( $rs ) { return true; } return false; } function closeTurneroNubeEmailProgress() { $sql = " UPDATE dbo.[mensajes_in_process] SET msgprc_estado = 1, msgprc_tstamp = GETDATE() WHERE msgprc_estado IS NULL AND msgprc_type = 'AGENDTNUBE'"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( $rs ) { return true; } return false; } function processTurneroNubeEmail() { //testEmailAlertaMs(); //closeTurneroNubeEmailProgress(); if(!isTurneroNubeEmailInProgress()) { //Set in progress try { openTurneroNubeEmailProgress(); // $sql = " SELECT TOP 10 med_codigo,med_nombre,med_email // FROM medicos // WHERE med_bloqueado = 0 // AND med_turnos = 0 // AND med_email IS NOT NULL"; $sql = " SELECT m.med_codigo,med_nombre,med_email FROM medicos as m INNER JOIN turnos_cloud_send as tn ON tn.med_codigo = m.med_codigo WHERE med_bloqueado = 0 AND med_email IS NOT NULL AND tn.tur_base IS NOT NULL"; //print_r($sql);print_r("\n");die; // print_r("----------------");print_r("\n"); // print_r($params); // print_r("----------------");print_r("\n"); // die(" <<<<<"); $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $conta=0; $rs = $GLOBALS['dbSQL']->getAll(); $lstEmailsQueue = array(); //------------------------------------- $continue = true; $totalEmails = count($rs); if( $continue ) { foreach($rs as $row) { if(trim($row['med_email'])!="") { $params = array(); $params['id'] = $row['med_codigo']; $params['sesion'] = ''; $params['tipo'] = 40; //$row['men_tipo']; $params['email'] = 'gustavojuarez@gmail.com';//$row['med_email'] $params['mednombre']= encodeDataB64(htmlentities($row['med_nombre'])); $params['medico'] = $row['med_codigo']; $params["customer"]= $GLOBALS['WS_WHATSAPP_CUSTOMER']; $params['template']= 26; $conta++; array_push($lstEmailsQueue, $params); } } if($conta>0) { //print_r($lstEmailsQueue);print_r("\n");die; for($i=0;$i