<?php

class grid_pla_actualizacion_de_datos_total
{
   var $Db;
   var $Erro;
   var $Ini;
   var $Lookup;

   var $nm_data;

   //----- 
   function __construct($sc_page)
   {
      $this->sc_page = $sc_page;
      $this->nm_data = new nm_data("es");
      if (isset($_SESSION['sc_session'][$this->sc_page]['grid_pla_actualizacion_de_datos']['campos_busca']) && !empty($_SESSION['sc_session'][$this->sc_page]['grid_pla_actualizacion_de_datos']['campos_busca']))
      { 
          $Busca_temp = $_SESSION['sc_session'][$this->Ini->sc_page]['grid_pla_actualizacion_de_datos']['campos_busca'];
          if ($_SESSION['scriptcase']['charset'] != "UTF-8")
          {
              $Busca_temp = NM_conv_charset($Busca_temp, $_SESSION['scriptcase']['charset'], "UTF-8");
          }
          $this->fecha = (isset($Busca_temp['fecha'])) ? $Busca_temp['fecha'] : ""; 
          $tmp_pos = (is_string($this->fecha)) ? strpos($this->fecha, "##@@") : false;
          if ($tmp_pos !== false && !is_array($this->fecha))
          {
              $this->fecha = substr($this->fecha, 0, $tmp_pos);
          }
          $fecha_2 = (isset($Busca_temp['fecha_input_2'])) ? $Busca_temp['fecha_input_2'] : ""; 
          $this->fecha_2 = $fecha_2; 
          $this->cedula = (isset($Busca_temp['cedula'])) ? $Busca_temp['cedula'] : ""; 
          $tmp_pos = (is_string($this->cedula)) ? strpos($this->cedula, "##@@") : false;
          if ($tmp_pos !== false && !is_array($this->cedula))
          {
              $this->cedula = substr($this->cedula, 0, $tmp_pos);
          }
          $this->id_nacionalidad = (isset($Busca_temp['id_nacionalidad'])) ? $Busca_temp['id_nacionalidad'] : ""; 
          $tmp_pos = (is_string($this->id_nacionalidad)) ? strpos($this->id_nacionalidad, "##@@") : false;
          if ($tmp_pos !== false && !is_array($this->id_nacionalidad))
          {
              $this->id_nacionalidad = substr($this->id_nacionalidad, 0, $tmp_pos);
          }
          $this->talla_camisa = (isset($Busca_temp['talla_camisa'])) ? $Busca_temp['talla_camisa'] : ""; 
          $tmp_pos = (is_string($this->talla_camisa)) ? strpos($this->talla_camisa, "##@@") : false;
          if ($tmp_pos !== false && !is_array($this->talla_camisa))
          {
              $this->talla_camisa = substr($this->talla_camisa, 0, $tmp_pos);
          }
          $this->talla_zapatos = (isset($Busca_temp['talla_zapatos'])) ? $Busca_temp['talla_zapatos'] : ""; 
          $tmp_pos = (is_string($this->talla_zapatos)) ? strpos($this->talla_zapatos, "##@@") : false;
          if ($tmp_pos !== false && !is_array($this->talla_zapatos))
          {
              $this->talla_zapatos = substr($this->talla_zapatos, 0, $tmp_pos);
          }
      } 
   }

   //---- 
   function quebra_geral_sc_free_total($res_limit=false, $res_export=false)
   {
      global $nada, $nm_lang , $periodo, $estado_civil, $sexo;
      if ($_SESSION['sc_session'][$this->Ini->sc_page]['grid_pla_actualizacion_de_datos']['contr_total_geral'] == "OK") 
      { 
          return; 
      } 
      $_SESSION['sc_session'][$this->Ini->sc_page]['grid_pla_actualizacion_de_datos']['tot_geral'] = array() ;  
      if (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_mssql))
      { 
          $nm_comando = "select count(*) from (SELECT     id,     fecha,     cedula,     nombre,     periodo,     predio,     id_predio,     celular_personal,     celular_empresa,     telefono_emergencia1,     telefono_emergencia2,     direccion,     correo_electronico,     fecha_nacimiento,     estado_civil,     sexo,     nacionalidad,     id_nacionalidad,     talla_camisa,     talla_zapatos,     acepta_terminos,     firma,     enviar,     id_periodo FROM ( select      a.id,     a.fecha,     a.cedula,     b.nombre,     a.periodo,     a.predio id_predio,     d.descripcion predio,     a.celular_personal,     a.celular_empresa,     a.telefono_emergencia1,     a.telefono_emergencia2,     a.direccion,     a.correo_electronico,     a.fecha_nacimiento,     a.estado_civil,     a.sexo,     a.nacionalidad id_nacionalidad,     c.nacionalidad,     a.talla_camisa,     a.talla_zapatos,     a.acepta_terminos,     a.firma,     if(isnull(e.id),'NO','SI') enviar,     a.periodo id_periodo     from pla_actualizacion_de_datos a     left join gen_persona b on a.cedula=b.cedula     left join gen_paises c on c.pais=a.nacionalidad     left join pre_predio d on d.codigo=a.predio     left join pla_actualizacion_enviar e on e.periodo=a.periodo and e.id=a.id     where a.periodo=" . $_SESSION['hhpact'] . "  ) a) nm_sel_esp " . $_SESSION['sc_session'][$this->Ini->sc_page]['grid_pla_actualizacion_de_datos']['where_pesq']; 
      } 
      else 
      { 
          $nm_comando = "select count(*) from (SELECT     id,     fecha,     cedula,     nombre,     periodo,     predio,     id_predio,     celular_personal,     celular_empresa,     telefono_emergencia1,     telefono_emergencia2,     direccion,     correo_electronico,     fecha_nacimiento,     estado_civil,     sexo,     nacionalidad,     id_nacionalidad,     talla_camisa,     talla_zapatos,     acepta_terminos,     firma,     enviar,     id_periodo FROM ( select      a.id,     a.fecha,     a.cedula,     b.nombre,     a.periodo,     a.predio id_predio,     d.descripcion predio,     a.celular_personal,     a.celular_empresa,     a.telefono_emergencia1,     a.telefono_emergencia2,     a.direccion,     a.correo_electronico,     a.fecha_nacimiento,     a.estado_civil,     a.sexo,     a.nacionalidad id_nacionalidad,     c.nacionalidad,     a.talla_camisa,     a.talla_zapatos,     a.acepta_terminos,     a.firma,     if(isnull(e.id),'NO','SI') enviar,     a.periodo id_periodo     from pla_actualizacion_de_datos a     left join gen_persona b on a.cedula=b.cedula     left join gen_paises c on c.pais=a.nacionalidad     left join pre_predio d on d.codigo=a.predio     left join pla_actualizacion_enviar e on e.periodo=a.periodo and e.id=a.id     where a.periodo=" . $_SESSION['hhpact'] . "  ) a) nm_sel_esp " . $_SESSION['sc_session'][$this->Ini->sc_page]['grid_pla_actualizacion_de_datos']['where_pesq']; 
      } 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_comando;
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = '';
      if (!$rt = $this->Db->Execute($nm_comando)) 
      { 
         $this->Erro->mensagem (__FILE__, __LINE__, "banco", $this->Ini->Nm_lang['lang_errm_dber'], $this->Db->ErrorMsg()); 
         exit ; 
      }
      $_SESSION['sc_session'][$this->Ini->sc_page]['grid_pla_actualizacion_de_datos']['tot_geral'][0] = "" . $this->Ini->Nm_lang['lang_msgs_totl'] . ""; 
      $_SESSION['sc_session'][$this->Ini->sc_page]['grid_pla_actualizacion_de_datos']['tot_geral'][1] = $rt->fields[0] ; 
      $rt->Close(); 
      $_SESSION['sc_session'][$this->Ini->sc_page]['grid_pla_actualizacion_de_datos']['contr_total_geral'] = "OK";
   } 

   function Ajust_statistic($comando)
   {
      if ((isset($this->Ini->nm_bases_vfp) && in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_vfp)) || (isset($this->Ini->nm_bases_odbc) && in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_odbc)))
      {
          $comando = str_replace(array('count(distinct ','varp(','stdevp(','variance(','stddev('), array('sum(','sum(','sum(','sum(','sum('), $comando);
      }
      if ($this->Ini->nm_tp_variance == "P")
      {
          if (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_access))
          { 
              $comando = str_replace(array('count(distinct ','varp(','stdevp('), array('count(','var(','stdev('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_sqlite) && $this->Ini->sqlite_version == "old")
          {
              $comando = str_replace(array('variance(','stddev('), array('sum(','sum('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_ibase) && $this->Ini->Ibase_version == "old")
          {
              $comando = str_replace(array('variance(','stddev('), array('sum(','sum('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_postgres))
          {
              $comando = str_replace(array('variance(','stddev('), array('var_pop(','stddev_pop('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_ibase))
          {
                  $comando = str_replace(array('variance(','stddev('), array('var_pop(','stddev_pop('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_informix))
          {
              $comando = str_replace(array('variance(','stddev('), array('sum(','sum('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_sybase))
          {
              $comando = str_replace(array('variance(','stddev('), array('var_pop(','stddev_pop('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_oracle))
          {
              $comando = str_replace(array('variance(','stddev('), array('var_pop(','stddev_pop('), $comando);
          }
      }
      if ($this->Ini->nm_tp_variance == "A")
      {
          if (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_access))
          { 
              $comando = str_replace(array('count(distinct ','varp(','stdevp('), array('count(','var(','stdev('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_sqlite) && $this->Ini->sqlite_version == "old")
          {
              $comando = str_replace(array('variance(','stddev('), array('sum(','sum('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_mysql))
          {
              $comando = str_replace(array('variance(','stddev('), array('var_samp(','stddev_samp('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_postgres))
          {
              $comando = str_replace(array('variance(','stddev('), array('var_samp(','stddev_samp('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_ibase) && $this->Ini->Ibase_version == "old")
          {
              $comando = str_replace(array('variance(','stddev('), array('sum(','sum('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_ibase))
          {
                  $comando = str_replace(array('variance(','stddev('), array('var_samp(','stddev_samp('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_oracle))
          {
              $comando = str_replace(array('variance(','stddev('), array('var_samp(','stddev_samp('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_mssql))
          { 
              $comando = str_replace(array('varp(','stdevp('), array('var(','stdev('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_informix))
          {
              $comando = str_replace('stddev(', 'stdev(', $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_db2))
          {
              $comando = str_replace(array('variance(','stddev('), array('variance_samp(','stddev_samp('), $comando);
          }
          elseif (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_sybase))
          {
              $comando = str_replace(array('variance(','stddev('), array('var_samp(','stddev_samp('), $comando);
          }
      }
      return $comando;
   }

   function nm_conv_data_db($dt_in, $form_in, $form_out)
   {
       $dt_out = $dt_in;
       if (strtoupper($form_in) == "DB_FORMAT") {
           if ($dt_out == "null" || $dt_out == "")
           {
               $dt_out = "";
               return $dt_out;
           }
           $form_in = "AAAA-MM-DD";
       }
       if (strtoupper($form_out) == "DB_FORMAT") {
           if (empty($dt_out))
           {
               $dt_out = "null";
               return $dt_out;
           }
           $form_out = "AAAA-MM-DD";
       }
       if (strtoupper($form_out) == "SC_FORMAT_REGION") {
           $this->nm_data->SetaData($dt_in, strtoupper($form_in));
           $prep_out  = (strpos(strtolower($form_in), "dd") !== false) ? "dd" : "";
           $prep_out .= (strpos(strtolower($form_in), "mm") !== false) ? "mm" : "";
           $prep_out .= (strpos(strtolower($form_in), "aa") !== false) ? "aaaa" : "";
           $prep_out .= (strpos(strtolower($form_in), "yy") !== false) ? "aaaa" : "";
           return $this->nm_data->FormataSaida($this->nm_data->FormatRegion("DT", $prep_out));
       }
       else {
           nm_conv_form_data($dt_out, $form_in, $form_out);
           return $dt_out;
       }
   }
   function nm_gera_mask(&$nm_campo, $nm_mask)
   { 
      $trab_campo = $nm_campo;
      $trab_mask  = $nm_mask;
      $tam_campo  = strlen($nm_campo);
      $trab_saida = "";
      $str_highlight_ini = "";
      $str_highlight_fim = "";
      if(substr($nm_campo, 0, 23) == '<div class="highlight">' && substr($nm_campo, -6) == '</div>')
      {
           $str_highlight_ini = substr($nm_campo, 0, 23);
           $str_highlight_fim = substr($nm_campo, -6);

           $trab_campo = substr($nm_campo, 23, -6);
           $tam_campo  = strlen($trab_campo);
      }      $mask_num = false;
      for ($x=0; $x < strlen($trab_mask); $x++)
      {
          if (substr($trab_mask, $x, 1) == "#")
          {
              $mask_num = true;
              break;
          }
      }
      if ($mask_num )
      {
          $ver_duas = explode(";", $trab_mask);
          if (isset($ver_duas[1]) && !empty($ver_duas[1]))
          {
              $cont1 = count(explode("#", $ver_duas[0])) - 1;
              $cont2 = count(explode("#", $ver_duas[1])) - 1;
              if ($tam_campo >= $cont2)
              {
                  $trab_mask = $ver_duas[1];
              }
              else
              {
                  $trab_mask = $ver_duas[0];
              }
          }
          $tam_mask = strlen($trab_mask);
          $xdados = 0;
          for ($x=0; $x < $tam_mask; $x++)
          {
              if (substr($trab_mask, $x, 1) == "#" && $xdados < $tam_campo)
              {
                  $trab_saida .= substr($trab_campo, $xdados, 1);
                  $xdados++;
              }
              elseif ($xdados < $tam_campo)
              {
                  $trab_saida .= substr($trab_mask, $x, 1);
              }
          }
          if ($xdados < $tam_campo)
          {
              $trab_saida .= substr($trab_campo, $xdados);
          }
          $nm_campo = $str_highlight_ini . $trab_saida . $str_highlight_ini;
          return;
      }
      for ($ix = strlen($trab_mask); $ix > 0; $ix--)
      {
           $char_mask = substr($trab_mask, $ix - 1, 1);
           if ($char_mask != "x" && $char_mask != "z")
           {
               $trab_saida = $char_mask . $trab_saida;
           }
           else
           {
               if ($tam_campo != 0)
               {
                   $trab_saida = substr($trab_campo, $tam_campo - 1, 1) . $trab_saida;
                   $tam_campo--;
               }
               else
               {
                   $trab_saida = "0" . $trab_saida;
               }
           }
      }
      if ($tam_campo != 0)
      {
          $trab_saida = substr($trab_campo, 0, $tam_campo) . $trab_saida;
          $trab_mask  = str_repeat("z", $tam_campo) . $trab_mask;
      }
   
      $iz = 0; 
      for ($ix = 0; $ix < strlen($trab_mask); $ix++)
      {
           $char_mask = substr($trab_mask, $ix, 1);
           if ($char_mask != "x" && $char_mask != "z")
           {
               if ($char_mask == "." || $char_mask == ",")
               {
                   $trab_saida = substr($trab_saida, 0, $iz) . substr($trab_saida, $iz + 1);
               }
               else
               {
                   $iz++;
               }
           }
           elseif ($char_mask == "x" || substr($trab_saida, $iz, 1) != "0")
           {
               $ix = strlen($trab_mask) + 1;
           }
           else
           {
               $trab_saida = substr($trab_saida, 0, $iz) . substr($trab_saida, $iz + 1);
           }
      }
      $nm_campo = $str_highlight_ini . $trab_saida . $str_highlight_ini;
   } 

/*----- Scriptcase Locale: PHP Method: crear_funciones_js ------*/

function crear_funciones_js()
{
$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'on';
  
?>
<script>
function scAjaxProcOn(bForce){
if (null == bForce) {
bForce = false;
}
if (document.getElementById("id_div_process")){
if ($ && $.blockUI && !bForce) {
$.blockUI({
message: $("#id_div_process_block"),
overlayCSS: { backgroundColor: sc_ajaxBg },
css: {
borderColor: sc_ajaxBordC,
borderStyle: sc_ajaxBordS,
borderWidth: sc_ajaxBordW
}
});
}
else{
document.getElementById("id_div_process").style.display = "";
document.getElementById("id_fatal_error").style.display = "none";
if (null != scCenterElement){
scCenterElement(document.getElementById("id_div_process"));
}
}
}
} 

function scAjaxProcOff(bForce){
if (null == bForce){
bForce = false;
}
if (document.getElementById("id_div_process")){
if ($ && $.unblockUI && !bForce){
$.unblockUI();
} else {
document.getElementById("id_div_process").style.display = "none";
}
}
} 
</script>
<?php



$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: crear_funciones_js ------*/


/*----- Scriptcase Locale: PHP Method: marcar_para_envio ------*/

function marcar_para_envio($elid, $marcar, $elperiodo)
{
$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'on';
  
$strsql="delete from pla_actualizacion_enviar where id='".$elid."' and periodo='".$elperiodo."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $this->quitarmarca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $this->quitarmarca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $this->quitarmarca = false;
          $this->quitarmarca_erro = $this->Db->ErrorMsg();
      } 

if ($this->quitarmarca ===false){
	return array("error"=>"Error #4:".$this->quitarmarca_erro .' '.$strsql);
}
if (0==$marcar){
	return array("error"=>"");
}
$strsql="insert into pla_actualizacion_enviar (id,periodo) values (".$elid.",".$elperiodo.")";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $this->ponermarca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $this->ponermarca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $this->ponermarca = false;
          $this->ponermarca_erro = $this->Db->ErrorMsg();
      } 

if ($this->ponermarca ===false){
	return array("error"=>"Error #12:".$this->ponermarca_erro .' '.$strsql);
}
return array("error"=>"");
$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: marcar_para_envio ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function base64_to_jpeg ------*/

function base64_to_jpeg($base64_string, $output_file) {
$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'on';
  
    $ifp = fopen( $output_file, 'wb' ); 
	if ($ifp===false){
		return;
	} 
    $data = explode( ',', $base64_string );

	
    fwrite( $ifp, base64_decode( $data[ 1 ] ) );

    fclose( $ifp ); 

    return $output_file; 

$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function base64_to_jpeg ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapiconectar ------*/

function rwspapiconectar($id_elservidor,$linea,$patroot,$elusuario){
$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'on';
  
   $msj=$this->elservidor($id_elservidor);
	if (''<>$msj['error']){
		return $msj;
	}
	$elservidor=$msj['elservidor'];
	
    $api = new WhatsAppAPI($elservidor);
	try {
		$connection_response = $api->createConnection($linea, 2);  
		$imggg='data:image/jsignature;base30,'.$connection_response["qrPath"];
		
		$archivoo=$patroot.'qr_con_'.$linea.'.png';
		
		$this->base64_to_jpeg($imggg, $archivoo);
		if (file_exists($archivoo)){
			$error='';
		} else {
			$error="No pude generar imagen QR del archivo:".$archivoo.' servidor:'.$elservidor;
		}
		if (''==$error){
			$elerrorsql=$this->rwspapi_asignar_cfg($id_elservidor,$linea,$patroot,$elusuario);
		}
		$datos=array("error"=>$error,
		"msjstatus"=>"Connection created successfully!",
		"status"=>$connection_response["status"],
		"response: "=>$connection_response["response"],
		"qrpath"=>$connection_response["qrPath"],
		"sessionpath"=>$connection_response["sessionPath"],
		"elerrorsql"=>$elerrorsql,
		"archivo"=>$archivoo);

		
	} catch (Exception $e) {
		$datos=array("error"=>'Error en la funcion '.$e->getMessage().' servidor:'.$elservidor);
	} 
	return $datos;

$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapiconectar ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapidesconectar ------*/

function rwspapidesconectar($id_elservidor,$linea,$elusuario){
$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'on';
  
	
   $msj=$this->elservidor($id_elservidor);
	if (''<>$msj['error']){
		return $msj;
	}
	$elservidor=$msj['elservidor'];
	$api = new WhatsAppAPI($elservidor);
 try {
     $logout_response = $api->logout($linea);
	 if ($logout_response['status']){
	  $strsql="update whatsapp_rwsp_api_cfg set status=0,fecha='".date('Y-m-d H:i:s')."'  
				            where usuario='".$elusuario."' and linea='".$linea."' and server='".$id_elservidor."'";
	    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $this->insxvghsk = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $this->insxvghsk[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $this->insxvghsk = false;
          $this->insxvghsk_erro = $this->Db->ErrorMsg();
      } 

	   if ($this->insxvghsk ===false){
		   $elerrorsql="Error #68:".$this->insxvghsk_erro .' '.$strsql;
	   }	 
		return array("error"=>"","status"=>1); 
	 }
      return array("error"=>'Error en desconexion:'.$logout_response['MESSAGE'].' '.' srv:'.$elservidor.':'.$linea,"status"=>0);
 } catch (Exception $e) {
     return array("error"=>$e->getMessage().' srv:'.$elservidor.':'.$linea,"status"=>2);
 }
$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapidesconectar ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapienviar_mensaje ------*/

function rwspapienviar_mensaje($id_elservidor,$linea,$destino,$mensaje,$archivos){
$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'on';
  

	if (strlen($destino)<11){
		$destino='506'.$destino;
	}
	$listaarcs=explode( ';', $archivos );
	$strfiles='';
    $arc_name='';
	$arc_ubic='';
	for ($i=0;$i<22;$i++){
		if (file_exists($listaarcs[1])){
			$arc_name=$listaarcs[0];
			$arc_ubic=$listaarcs[1];
		}
	}
   $msj=$this->elservidor($id_elservidor);
	if (''<>$msj['error']){
		return $msj;
	}
	$elservidor=$msj['elservidor'];
	
	$api = new WhatsAppAPI($elservidor);
	try {
		if (''==$arc_name){
		 $response = $api->sendMessage(
			 $linea,
			 $destino,
			 $mensaje,
			 "texto");
		} else {
		 $response = $api->sendMessage(
			 $linea,
			 $destino,
			 $mensaje,
			 "archivo",
			 $arc_name,
		  	 $arc_ubic);
		}
	  if ($response['status']){
		  return array("error"=>'','status'=>1,"elerrorsql"=>'');
	  } else {
		  return array("error"=>' rwsp-api.#136.rwspapienviar_mensaje'.json_encode($response));
	  }
	 } catch (Exception $e) {
		 return array("error"=>$e->getMessage().$elservidor.' rwsp-api.#139.rwspapienviar_mensaje origen:'.$linea.' destino:'.$destino);
	 }

	

$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapienviar_mensaje ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapi_validar_numero ------*/

function rwspapi_validar_numero($id_elservidor,$linea,$destino){
$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'on';
  
   $msj=$this->elservidor($id_elservidor);
	if (''<>$msj['error']){
		return $msj;
	}
	$elservidor=$msj['elservidor'];
	if (strlen($destino)<11){
		$destino='506'.$destino;
	}
	$api = new WhatsAppAPI($elservidor);
   return $api->validateNumber($destino, $linea);	

$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapi_validar_numero ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapicargar_grupos ------*/

function rwspapicargar_grupos($id_elservidor,$linea){
$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'on';
  
   $msj=$this->elservidor($id_elservidor);
	if (''<>$msj['error']){
		return $msj;
	}
	$elservidor=$msj['elservidor'];
	$api = new WhatsAppAPI($elservidor);
	try {
		 $response = $api->getGroups($linea);
	  if ($response['status']){
		  return array("error"=>'','status'=>1,"grupos"=>$response['groups']);
	  } else {
		  return array("error"=>' rwsp-api.#136.rwspapicargar_grupos'.json_encode($response));
	  }
	 } catch (Exception $e) {
		 return array("error"=>$e->getMessage().$elservidor.' rwsp-api.#139.rwspapicargar_grupos origen:'.$linea.' destino:'.$destino);
	 }
    
	

$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapicargar_grupos ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function elservidor ------*/

function elservidor($id_elservidor){
$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'on';
  
	$strsql="SELECT id, concat(ip_servidor,':',puerto)
               FROM whatsapp_rwsp_api_servidores 
               where id='".$id_elservidor."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $this->datasrevidro = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $this->datasrevidro[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $this->datasrevidro = false;
          $this->datasrevidro_erro = $this->Db->ErrorMsg();
      } 

	if ($this->datasrevidro ===false){
		return array("error"=>"Error:".$this->datasrevidro_erro .' '.$strsql);
	} else {
		if (count($this->datasrevidro )==0){
			return array("error"=>"Error rwsp-api.#154.elservidor en el id del servidor:".$id_elservidor);
		} else {
			$elservidor=$this->datasrevidro[0][1];
		}
	}
	return array("error"=>"","elservidor"=>$elservidor);
$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function elservidor ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapi_asignar_cfg ------*/

function rwspapi_asignar_cfg($id_elservidor,$linea,$patroot,$elusuario){
$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'on';
  
	   $strsql="select linea from whatsapp_rwsp_api_cfg where usuario='".$elusuario."' and linea='".$linea."'";
	    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $this->datasevyz = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $this->datasevyz[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $this->datasevyz = false;
          $this->datasevyz_erro = $this->Db->ErrorMsg();
      } 

		$elerrorsql='';
	   if ($this->datasevyz ===false){
		   $elerrorsql="Error #56:".$this->datasevyz_erro .' '.$strsql;
	   } else {
		  if (count($this->datasevyz )==0){
			 $strsql="insert into whatsapp_rwsp_api_cfg (usuario,linea,SERVER,STATUS,fecha) VALUES
				   ('".$elusuario."','".$linea."','".$id_elservidor."',1,'".date('Y-m-d H:i:s')."')";
		  } else {
			  $strsql="update whatsapp_rwsp_api_cfg set status=1,fecha='".date('Y-m-d H:i:s')."'  
						where usuario='".$elusuario."' and linea='".$linea."' and server='".$id_elservidor."'";
		  }
		    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $this->insvghsk = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $this->insvghsk[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $this->insvghsk = false;
          $this->insvghsk_erro = $this->Db->ErrorMsg();
      } 

		   if ($this->insvghsk ===false){
			   $elerrorsql="Error rwsp-api.#68.rwspapi_asignar_cfg:".$this->insvghsk_erro .' '.$strsql;
		   }
	   }	
	return $elerrorsql;
$_SESSION['scriptcase']['grid_pla_actualizacion_de_datos']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapi_asignar_cfg ------*/

}

?>
