Primer Commit

This commit is contained in:
LuisAngelSalinasl
2025-08-04 18:51:41 -06:00
commit 8fcbb98114
8990 changed files with 1407288 additions and 0 deletions

229
php/funciones.php Normal file
View File

@@ -0,0 +1,229 @@
<?php
include(__DIR__."/../rutasApi.php");
function generarCodigoCupon($longitud = 8) {
$caracteres = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$codigo = '';
for ($i = 0; $i < $longitud; $i++) {
$codigo .= $caracteres[rand(0, strlen($caracteres) - 1)];
}
return $codigo;
}
function crearCupon($post) {
global $ruta,$api_key_definition,$api_key;
$datosCupon = array(
'codigo' => $post["codigo"],
'descuento' => $post["descuento"],
'curso_id' => $post["curso_id"],
'fecha_inicio' => $post["fecha_inicio"],
'fecha_fin' => $post["fecha_fin"],
'usos_maximos' => $post["usos_maximos"],
'activo' => "1",
);
$url = $ruta . "/ttl/registerCuopon";
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url, //URL A LA QUE SE CONECTA
CURLOPT_RETURNTRANSFER => true, //DEVUELVE EL RESULTADO COMO UNA CADENA DEL TIPO CURL_EXEC
CURLOPT_FOLLOWLOCATION => true, //SIGUE EL ENCABEZADO QUE LE ENVÍE EL SERVIDOR
CURLOPT_ENCODING => "", // PERMITE DECODIFICAR LA RESPUESTA Y PUEDE SER"IDENTITY", "DEFLATE", Y "GZIP", SI ESTÁ VACÍO RECIBE TODOS LOS DISPONIBLES.
CURLOPT_MAXREDIRS => 10, // SI USAMOS CURLOPT_FOLLOWLOCATION LE DICE EL MÁXIMO DE ENCABEZADOS A SEGUIR
CURLOPT_TIMEOUT => 0, // TIEMPO MÁXIMO PARA EJECUTAR
CURLOPT_CONNECTTIMEOUT => 0, // TIEMPO MÁXIMO PARA CONECTAR
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, // USA LA VERSIÓN DECLARADA
CURLOPT_CUSTOMREQUEST => "POST", // EL TIPO DE PETICIÓN, PUEDE SER PUT, POST, GET O DELETE DEPENDIENDO DEL SERVICIO
CURLOPT_POSTFIELDS => $datosCupon, //DATOS A ENVIAR EN EL CUERPO DE LA PETICIÓN
CURLOPT_HTTPHEADER => array(
"$api_key_definition: $api_key"
), //CONFIGURA LAS CABECERAS ENVIADAS AL SERVICIO
));
return $result = curl_exec($curl);
}
function validarCupon($codigo, $curso_id = null) {
global $pdo;
$sql = "SELECT * FROM cupones WHERE codigo = ? AND activo = TRUE
AND fecha_inicio <= CURDATE() AND fecha_fin >= CURDATE()
AND (usos_actuales < usos_maximos OR usos_maximos = 0)";
if ($curso_id) {
$sql .= " AND (curso_id = ? OR curso_id IS NULL)";
}
$stmt = $pdo->prepare($sql);
$params = $curso_id ? [$codigo, $curso_id] : [$codigo];
$stmt->execute($params);
return $stmt->fetch(PDO::FETCH_ASSOC);
}
function registrarUsoCupon($cupon_id, $ip_cliente = null) {
global $pdo;
// Registrar el uso
$stmt = $pdo->prepare("INSERT INTO uso_cupones (cupon_id, ip_cliente) VALUES (?, ?)");
$stmt->execute([$cupon_id, $ip_cliente]);
// Incrementar el contador de usos
$stmt = $pdo->prepare("UPDATE cupones SET usos_actuales = usos_actuales + 1 WHERE id = ?");
$stmt->execute([$cupon_id]);
return true;
}
function obtenerCursos() {
global $ruta,$api_key_definition,$api_key;
$url = $ruta . "/ttl/getCourses";
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url, //URL A LA QUE SE CONECTA
CURLOPT_RETURNTRANSFER => true, //DEVUELVE EL RESULTADO COMO UNA CADENA DEL TIPO CURL_EXEC
CURLOPT_FOLLOWLOCATION => true, //SIGUE EL ENCABEZADO QUE LE ENVÍE EL SERVIDOR
CURLOPT_ENCODING => "", // PERMITE DECODIFICAR LA RESPUESTA Y PUEDE SER"IDENTITY", "DEFLATE", Y "GZIP", SI ESTÁ VACÍO RECIBE TODOS LOS DISPONIBLES.
CURLOPT_MAXREDIRS => 10, // SI USAMOS CURLOPT_FOLLOWLOCATION LE DICE EL MÁXIMO DE ENCABEZADOS A SEGUIR
CURLOPT_TIMEOUT => 0, // TIEMPO MÁXIMO PARA EJECUTAR
CURLOPT_CONNECTTIMEOUT => 0, // TIEMPO MÁXIMO PARA CONECTAR
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, // USA LA VERSIÓN DECLARADA
CURLOPT_CUSTOMREQUEST => "GET", // EL TIPO DE PETICIÓN, PUEDE SER PUT, POST, GET O DELETE DEPENDIENDO DEL SERVICIO
CURLOPT_POSTFIELDS => array(), //DATOS A ENVIAR EN EL CUERPO DE LA PETICIÓN
CURLOPT_HTTPHEADER => array(
"$api_key_definition: $api_key"
), //CONFIGURA LAS CABECERAS ENVIADAS AL SERVICIO
));
$result = curl_exec($curl);
return json_decode($result,true);
}
function obtenerCupones() {
global $ruta,$api_key_definition,$api_key;
$url = $ruta . "/ttl/getCoupons";
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url, //URL A LA QUE SE CONECTA
CURLOPT_RETURNTRANSFER => true, //DEVUELVE EL RESULTADO COMO UNA CADENA DEL TIPO CURL_EXEC
CURLOPT_FOLLOWLOCATION => true, //SIGUE EL ENCABEZADO QUE LE ENVÍE EL SERVIDOR
CURLOPT_ENCODING => "", // PERMITE DECODIFICAR LA RESPUESTA Y PUEDE SER"IDENTITY", "DEFLATE", Y "GZIP", SI ESTÁ VACÍO RECIBE TODOS LOS DISPONIBLES.
CURLOPT_MAXREDIRS => 10, // SI USAMOS CURLOPT_FOLLOWLOCATION LE DICE EL MÁXIMO DE ENCABEZADOS A SEGUIR
CURLOPT_TIMEOUT => 0, // TIEMPO MÁXIMO PARA EJECUTAR
CURLOPT_CONNECTTIMEOUT => 0, // TIEMPO MÁXIMO PARA CONECTAR
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, // USA LA VERSIÓN DECLARADA
CURLOPT_CUSTOMREQUEST => "GET", // EL TIPO DE PETICIÓN, PUEDE SER PUT, POST, GET O DELETE DEPENDIENDO DEL SERVICIO
CURLOPT_POSTFIELDS => array(), //DATOS A ENVIAR EN EL CUERPO DE LA PETICIÓN
CURLOPT_HTTPHEADER => array(
"$api_key_definition: $api_key"
), //CONFIGURA LAS CABECERAS ENVIADAS AL SERVICIO
));
$result = curl_exec($curl);
return json_decode($result,true);
}
function editarCupon($post)
{
global $ruta,$api_key_definition,$api_key;
$datosCupon = array(
'codigo' => $post["codigo"],
'descuento' => $post["descuento"],
'curso_id' => $post["curso_id"],
'fecha_inicio' => $post["fecha_inicio"],
'fecha_fin' => $post["fecha_fin"],
'usos_maximos' => $post["usos_maximos"],
'activo' => $post["activo"],
);
$url = $ruta . "/ttl/editCuopon";
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url, //URL A LA QUE SE CONECTA
CURLOPT_RETURNTRANSFER => true, //DEVUELVE EL RESULTADO COMO UNA CADENA DEL TIPO CURL_EXEC
CURLOPT_FOLLOWLOCATION => true, //SIGUE EL ENCABEZADO QUE LE ENVÍE EL SERVIDOR
CURLOPT_ENCODING => "", // PERMITE DECODIFICAR LA RESPUESTA Y PUEDE SER"IDENTITY", "DEFLATE", Y "GZIP", SI ESTÁ VACÍO RECIBE TODOS LOS DISPONIBLES.
CURLOPT_MAXREDIRS => 10, // SI USAMOS CURLOPT_FOLLOWLOCATION LE DICE EL MÁXIMO DE ENCABEZADOS A SEGUIR
CURLOPT_TIMEOUT => 0, // TIEMPO MÁXIMO PARA EJECUTAR
CURLOPT_CONNECTTIMEOUT => 0, // TIEMPO MÁXIMO PARA CONECTAR
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, // USA LA VERSIÓN DECLARADA
CURLOPT_CUSTOMREQUEST => "POST", // EL TIPO DE PETICIÓN, PUEDE SER PUT, POST, GET O DELETE DEPENDIENDO DEL SERVICIO
CURLOPT_POSTFIELDS => $datosCupon, //DATOS A ENVIAR EN EL CUERPO DE LA PETICIÓN
CURLOPT_HTTPHEADER => array(
"$api_key_definition: $api_key"
), //CONFIGURA LAS CABECERAS ENVIADAS AL SERVICIO
));
return $result = curl_exec($curl);
}
function eliminarCupon($post)
{
global $ruta,$api_key_definition,$api_key;
$datosCupon = array(
'codigo' => $post["codigo"]
);
$url = $ruta . "/ttl/deleteCuopon";
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url, //URL A LA QUE SE CONECTA
CURLOPT_RETURNTRANSFER => true, //DEVUELVE EL RESULTADO COMO UNA CADENA DEL TIPO CURL_EXEC
CURLOPT_FOLLOWLOCATION => true, //SIGUE EL ENCABEZADO QUE LE ENVÍE EL SERVIDOR
CURLOPT_ENCODING => "", // PERMITE DECODIFICAR LA RESPUESTA Y PUEDE SER"IDENTITY", "DEFLATE", Y "GZIP", SI ESTÁ VACÍO RECIBE TODOS LOS DISPONIBLES.
CURLOPT_MAXREDIRS => 10, // SI USAMOS CURLOPT_FOLLOWLOCATION LE DICE EL MÁXIMO DE ENCABEZADOS A SEGUIR
CURLOPT_TIMEOUT => 0, // TIEMPO MÁXIMO PARA EJECUTAR
CURLOPT_CONNECTTIMEOUT => 0, // TIEMPO MÁXIMO PARA CONECTAR
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, // USA LA VERSIÓN DECLARADA
CURLOPT_CUSTOMREQUEST => "POST", // EL TIPO DE PETICIÓN, PUEDE SER PUT, POST, GET O DELETE DEPENDIENDO DEL SERVICIO
CURLOPT_POSTFIELDS => $datosCupon, //DATOS A ENVIAR EN EL CUERPO DE LA PETICIÓN
CURLOPT_HTTPHEADER => array(
"$api_key_definition: $api_key"
), //CONFIGURA LAS CABECERAS ENVIADAS AL SERVICIO
));
return $result = curl_exec($curl);
}
if (isset($_GET['accion']) && $_GET['accion'] == 'obtener_codigo') {
// Llamar a la función para generar el código
$codigoGenerado = generarCodigoCupon();
// Retornar el código generado como respuesta
echo $codigoGenerado;
}
elseif(isset($_POST['accion']) && $_POST['accion'] == 'editar_codigo')
{
$codigoGenerado = editarCupon($_POST);
// Retornar el código generado como respuesta
echo $codigoGenerado;
}
elseif(isset($_POST['accion']) && $_POST['accion'] == 'elimnar_codigo')
{
$codigoGenerado = eliminarCupon($_POST);
// Retornar el código generado como respuesta
echo $codigoGenerado;
}
elseif(isset($_POST['accion']) && $_POST['accion'] == 'anadir_codigo')
{
$codigoGenerado = crearCupon($_POST);
// Retornar el código generado como respuesta
echo $codigoGenerado;
}