$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; }