Desarrollo de API
Budget: $30 – $250 USD
Requiero desarrollar la siguiente API:
ENTRADA
Usuario
Contraseña
Numero de Teléfono
PROCESO
Valida usuario y contraseña
REALIZA PROCESO
GRABA CONSULTA
SALIDA
CallerID o 1000000000 Si el Numero de Teléfono No es Válido
RED (FIJO o MOVIL)
GRABA CONSULTA con los siguientes datos:
Fecha y Hora de Consulta
Usuario
Contraseña
Numero de Teléfono
CallerID
IP desde donde se llamo la API
EL PROCESO ACTUALMENTE ESTA EN PHP:
#!/usr/bin/php -q
<?php
// Parametros de acceso a la base de datos.
$db['user'] = 'r;
$db['pass'] = 'C';
$db['name'] = 'a';
$db['host'] = 'localhost';
// ***************** No cambiar nada a partir de este punto
require_once "phpagi.php";
$AGI = new AGI();
// Coneccion a la base de datos
$conexion = mysqli_connect($db['host'],$db['user'],$db['pass']) or die("Connection error: " . mysqli_connect_error());
// Nos quedamos solo con los ultimos 10 digitos para asegurar que quitamos cualquier prefijo
$Telefono = substr($argv[1],-10);
// Definimos codigos de area de 2 digitos para conocer cual es el codigo de area y cual es el numero local
$areas = array('55','81','33','56');
if (in_array(substr($Telefono,0,2),$areas)) {
$area = substr($Telefono,0,2);
$local= substr($Telefono,2);
$serie= substr($local,0,4);
}
else {
$area = substr($Telefono,0,3);
$local= substr($Telefono,3);
$serie= substr($local,0,3);
}
// Ejecuta consulta
$query = "SELECT movil FROM ".$db['name'].".ift WHERE SUBSTRING('$Telefono',7) BETWEEN inicial AND final AND area = $area AND serie = $serie;";
// $AGI->verbose($query);
$result = mysqli_query($conexion,$query);
if ($result->num_rows==0){
$AGI->set_variable('COMPLETO',"52" . $Telefono);
// $AGI->verbose("Numero NO Valido");
}
else
{
$row = mysqli_fetch_array($result);
$row['movil']==0 ? $AGI->set_variable('RED','FIJO'):$AGI->set_variable('RED','MOVIL');
$query = "SELECT numDID FROM ".$db['name'].".NIR WHERE numNIR = $area;";
// $AGI->verbose($query);
$result = mysqli_query($conexion,$query);
if ($result->num_rows==0) {
$AGI->set_variable('COMPLETO',"52" . $Telefono);
// $AGI->verbose("LADA NO Valida");
}
else
{
$row = mysqli_fetch_array($result);
$AGI->set_variable('COMPLETO',"52" . $row['numDID']);
// $AGI->verbose("Numero Valido");
// Husos Horarios
$query = "SELECT HOUR(now())+DIF AS Hora FROM ".$db['name'].".HuHo WHERE NIR = $area;";
// $AGI->verbose($query);
$result = mysqli_query($conexion,$query);
if ($result->num_rows==0) {
$AGI->set_variable('COMPLETO',"52" . $Telefono);
// $AGI->verbose("LADA NO Valida");
}
else
{
$row = mysqli_fetch_array($result);
if ($row['Hora']<7 || $row['Hora']>21) {
$AGI->set_variable('COMPLETO',"529999999999");
// $AGI->verbose("LADA NO Valida");
}
else
{
// Termina Husos Horarios
// $num_aleatorio = rand(90000001,99999999);
$num_aleatorio = rand(9001,9999);
$query = "UPDATE ".$db['name'].".NIR INNER JOIN ".$db['name'].".DID ON NIR.numNIR = DID.numNIR SET numDID = numDID+$num_aleatorio ";
$query = $query . " WHERE numDID+$num_aleatorio>numTelIni And numDID+$num_aleatorio<=numTelFin AND NIR.numNIR=$area;";
$result = mysqli_query($conexion,$query);
if (mysqli_affected_rows($conexion)==0) {
// $AGI->verbose("REGISTRO NO ACTUALIZO");
$query = "SELECT FLOOR(numTelIni + RAND() * (numTelFin - numTelIni +1)) numTelIni FROM ".$db['name'].".NIR INNER JOIN ".$db['name'].".DID ON NIR.numNIR = DID.numNIR ";
$query = $query . " WHERE numTelIni>numDID AND NIR.numNIR=$area LIMIT 1;";
// $AGI->verbose($query);
$result = mysqli_query($conexion,$query);
if ($result->num_rows==0) {
// $AGI->verbose("CAMBIA DE SEGMENTO DE NUMEROS NO VALIDOS");
$query = "UPDATE ".$db['name'].".NIR INNER JOIN ".$db['name'].".DID ON NIR.numNIR = DID.numNIR AND minDID = numTelIni ";
$query = $query . " SET numDID = FLOOR(numTelIni + RAND() * (numTelFin - numTelIni +1)) WHERE NIR.numNIR=$area;";
// $AGI->verbose($query);
$result = mysqli_query($conexion,$query);
}
else
{
// $AGI->verbose("COMIENZA CON EL PRIMER NUMERO NO VALIDO");
$row = mysqli_fetch_array($result);
$query = "UPDATE ".$db['name'].".NIR SET numDID = " . $row['numTelIni'] . " WHERE numNIR=$area;";
// $AGI->verbose($query);
$result = mysqli_query($conexion,$query);
}
}
}
}
}
}
mysqli_close($conexion);
exit;
?>
ENTRADA
Usuario
Contraseña
Numero de Teléfono
PROCESO
Valida usuario y contraseña
REALIZA PROCESO
GRABA CONSULTA
SALIDA
CallerID o 1000000000 Si el Numero de Teléfono No es Válido
RED (FIJO o MOVIL)
GRABA CONSULTA con los siguientes datos:
Fecha y Hora de Consulta
Usuario
Contraseña
Numero de Teléfono
CallerID
IP desde donde se llamo la API
EL PROCESO ACTUALMENTE ESTA EN PHP:
#!/usr/bin/php -q
<?php
// Parametros de acceso a la base de datos.
$db['user'] = 'r;
$db['pass'] = 'C';
$db['name'] = 'a';
$db['host'] = 'localhost';
// ***************** No cambiar nada a partir de este punto
require_once "phpagi.php";
$AGI = new AGI();
// Coneccion a la base de datos
$conexion = mysqli_connect($db['host'],$db['user'],$db['pass']) or die("Connection error: " . mysqli_connect_error());
// Nos quedamos solo con los ultimos 10 digitos para asegurar que quitamos cualquier prefijo
$Telefono = substr($argv[1],-10);
// Definimos codigos de area de 2 digitos para conocer cual es el codigo de area y cual es el numero local
$areas = array('55','81','33','56');
if (in_array(substr($Telefono,0,2),$areas)) {
$area = substr($Telefono,0,2);
$local= substr($Telefono,2);
$serie= substr($local,0,4);
}
else {
$area = substr($Telefono,0,3);
$local= substr($Telefono,3);
$serie= substr($local,0,3);
}
// Ejecuta consulta
$query = "SELECT movil FROM ".$db['name'].".ift WHERE SUBSTRING('$Telefono',7) BETWEEN inicial AND final AND area = $area AND serie = $serie;";
// $AGI->verbose($query);
$result = mysqli_query($conexion,$query);
if ($result->num_rows==0){
$AGI->set_variable('COMPLETO',"52" . $Telefono);
// $AGI->verbose("Numero NO Valido");
}
else
{
$row = mysqli_fetch_array($result);
$row['movil']==0 ? $AGI->set_variable('RED','FIJO'):$AGI->set_variable('RED','MOVIL');
$query = "SELECT numDID FROM ".$db['name'].".NIR WHERE numNIR = $area;";
// $AGI->verbose($query);
$result = mysqli_query($conexion,$query);
if ($result->num_rows==0) {
$AGI->set_variable('COMPLETO',"52" . $Telefono);
// $AGI->verbose("LADA NO Valida");
}
else
{
$row = mysqli_fetch_array($result);
$AGI->set_variable('COMPLETO',"52" . $row['numDID']);
// $AGI->verbose("Numero Valido");
// Husos Horarios
$query = "SELECT HOUR(now())+DIF AS Hora FROM ".$db['name'].".HuHo WHERE NIR = $area;";
// $AGI->verbose($query);
$result = mysqli_query($conexion,$query);
if ($result->num_rows==0) {
$AGI->set_variable('COMPLETO',"52" . $Telefono);
// $AGI->verbose("LADA NO Valida");
}
else
{
$row = mysqli_fetch_array($result);
if ($row['Hora']<7 || $row['Hora']>21) {
$AGI->set_variable('COMPLETO',"529999999999");
// $AGI->verbose("LADA NO Valida");
}
else
{
// Termina Husos Horarios
// $num_aleatorio = rand(90000001,99999999);
$num_aleatorio = rand(9001,9999);
$query = "UPDATE ".$db['name'].".NIR INNER JOIN ".$db['name'].".DID ON NIR.numNIR = DID.numNIR SET numDID = numDID+$num_aleatorio ";
$query = $query . " WHERE numDID+$num_aleatorio>numTelIni And numDID+$num_aleatorio<=numTelFin AND NIR.numNIR=$area;";
$result = mysqli_query($conexion,$query);
if (mysqli_affected_rows($conexion)==0) {
// $AGI->verbose("REGISTRO NO ACTUALIZO");
$query = "SELECT FLOOR(numTelIni + RAND() * (numTelFin - numTelIni +1)) numTelIni FROM ".$db['name'].".NIR INNER JOIN ".$db['name'].".DID ON NIR.numNIR = DID.numNIR ";
$query = $query . " WHERE numTelIni>numDID AND NIR.numNIR=$area LIMIT 1;";
// $AGI->verbose($query);
$result = mysqli_query($conexion,$query);
if ($result->num_rows==0) {
// $AGI->verbose("CAMBIA DE SEGMENTO DE NUMEROS NO VALIDOS");
$query = "UPDATE ".$db['name'].".NIR INNER JOIN ".$db['name'].".DID ON NIR.numNIR = DID.numNIR AND minDID = numTelIni ";
$query = $query . " SET numDID = FLOOR(numTelIni + RAND() * (numTelFin - numTelIni +1)) WHERE NIR.numNIR=$area;";
// $AGI->verbose($query);
$result = mysqli_query($conexion,$query);
}
else
{
// $AGI->verbose("COMIENZA CON EL PRIMER NUMERO NO VALIDO");
$row = mysqli_fetch_array($result);
$query = "UPDATE ".$db['name'].".NIR SET numDID = " . $row['numTelIni'] . " WHERE numNIR=$area;";
// $AGI->verbose($query);
$result = mysqli_query($conexion,$query);
}
}
}
}
}
}
mysqli_close($conexion);
exit;
?>