mirror of
https://github.com/KeymonSoft/Kelloggs_v4.git
synced 2026-04-22 04:10:07 +00:00
- VERSION 5.10.01
- Se agregó el mandaPendientes en el boton de "Guardar" de "Cliente"
This commit is contained in:
@@ -9,6 +9,41 @@ Version=12.8
|
||||
' Propósito: Gestionar el GUID del dispositivo y verificar/ligar el dispositivo
|
||||
' a un almacén y ruta en el servidor de forma segura.
|
||||
'-----------------------------------------------------------------------------------
|
||||
' Ejemplo de uso:
|
||||
' ==== En config.properties ====
|
||||
' sql.verify_device=Select nvl(CAT_RU_IDTELEFONO, 0) As CAT_RU_IDTELEFONO from kelloggs.CAT_RUTAS where cat_ru_idalmacen = ? And cat_ru_ruta = ?
|
||||
' sql.registarMovil=update kelloggs.CAT_RUTAS set CAT_RU_IDTELEFONO = ? where cat_ru_idalmacen = ? And cat_ru_ruta = ?
|
||||
' ==== En Class_Globals ====
|
||||
' Dim linker As C_deviceLinker '<<<< Class_Globals
|
||||
' ==== En B4XPage_Created ====
|
||||
' linker.Initialize(Me, "Linker", True) '<<<<<< B4XPage_Created
|
||||
' ==== En donde se quiera llamar ====
|
||||
' linker.VerifyDevice(Subs.traeAlmacen, Subs.traeRuta)
|
||||
' Sub Linker_Response(Status As String) ' << AÑADE ESTE SUB [New Query]
|
||||
' If Starter.Logger Then LogColor($"Respuesta de DeviceLinker para la verificación del dispositivo: ${Status}"$, Colors.Magenta) '
|
||||
' Select Status
|
||||
' Case "OK"
|
||||
' Log("########################################################")
|
||||
' ToastMessageShow("Dispositivo verificado y vinculado correctamente.", False)
|
||||
' ' Aquí puedes añadir lógica adicional si la verificación es exitosa, por ejemplo, habilitar ciertos botones o continuar con el flujo normal.
|
||||
' Case "REGISTRO_COMPLETO"
|
||||
' Log("########################################################")
|
||||
' ToastMessageShow("¡Registro completo!", False)
|
||||
' Case "SIN_REGISTRO"
|
||||
' Log("########################################################")
|
||||
' ToastMessageShow("¡Dispositivo sin registro!", False)
|
||||
' linker.linkDevice(Subs.traeAlmacen, e_ruta.text) '<<<<<<<<< Si no esta registrado lo registramos.
|
||||
' Case "REGISTRANDO"
|
||||
' ToastMessageShow("¡Registro en proceso!", True)
|
||||
' Case "YA_REGISTRADO"
|
||||
' Log("########################################################")
|
||||
' ToastMessageShow("¡¡El dispositivo ya esta registrado con otra ruta!!", True)
|
||||
' Case Else ' Otros estados que tu servidor pueda devolver (ej. "UNAUTHORIZED", "PENDING_APPROVAL")
|
||||
' Log("########################################################")
|
||||
' ToastMessageShow($"Verificación del dispositivo: ${Status}"$, True)
|
||||
' ' Puedes decidir si bloquear la funcionalidad o mostrar un mensaje específico según el estado.
|
||||
' End Select
|
||||
' End Sub
|
||||
|
||||
Sub Class_Globals
|
||||
' Configuración del servidor y comandos
|
||||
@@ -47,7 +82,8 @@ Public Sub Initialize (PageObject As Object, NameOfEvent As String, AppLogger As
|
||||
' 'Me' indica que el evento JobDone de esta clase se encargará de las respuestas de reqManager.
|
||||
' reqManager.Initialize(Me, Starter.DBReqServer)
|
||||
' reqManager.Initialize(Me, "http://keymon.net:9010/DB2") 'Servidor de pruebas
|
||||
reqManager.Initialize(Me, "http://keymon.net:1781") 'Servidor productivo
|
||||
' reqManager.Initialize(Me, "http://keymon.net:1781") 'Servidor productivo
|
||||
reqManager.Initialize(Me, Starter.DBReqServer) 'Servidor productivo
|
||||
|
||||
If logger Then Log("DBRequestManager para DeviceLinker inicializado.")
|
||||
If logger Then Log("DeviceLinker inicializado y listo para operar.")
|
||||
@@ -56,8 +92,9 @@ End Sub
|
||||
' Verifica y liga el dispositivo con un almacén y una ruta en el servidor.
|
||||
' Almacen: El identificador del almacén.
|
||||
' Ruta: El identificador de la ruta.
|
||||
Public Sub VerifyAndLinkDevice(Almacen_ As String, Ruta_ As String)
|
||||
Public Sub verifyDevice(Almacen_ As String, Ruta_ As String)
|
||||
Dim DeviceId_ As String = GetDeviceGUID ' Obtenemos o generamos el GUID del dispositivo.
|
||||
LogColor(DeviceId_, Colors.red)
|
||||
almacen = Almacen_
|
||||
ruta = Ruta_
|
||||
deviceId = DeviceId_
|
||||
@@ -65,7 +102,7 @@ Public Sub VerifyAndLinkDevice(Almacen_ As String, Ruta_ As String)
|
||||
If logger Then LogColor("Error: GUID del dispositivo no pudo ser obtenido o generado.", Colors.Red)
|
||||
' Enviar una respuesta de error al callback si no se pudo obtener el GUID.
|
||||
If SubExists(CallBack, EventName & "_Response") Then ' [New Query]
|
||||
CallSub2(CallBack, EventName & "_Response", "GUID_ERROR")
|
||||
CallSub2(CallBack, EventName & "_Response", "GUID_ERROR") ' Dispara el evento Linker_Response("GUID_ERROR")
|
||||
End If
|
||||
Return
|
||||
End If
|
||||
@@ -77,11 +114,27 @@ Public Sub VerifyAndLinkDevice(Almacen_ As String, Ruta_ As String)
|
||||
cmd.Name = "verify_device"
|
||||
' Pasamos el almacén, la ruta y el GUID del dispositivo como parámetros.
|
||||
cmd.Parameters = Array As Object(Almacen_, Ruta_) ', DeviceId_
|
||||
Log($"Enviamos almacen: ${Almacen_} y ruta: ${Ruta_}"$)
|
||||
|
||||
' Ejecutamos el comando en el servidor. 'Me' indica que DBRequestManager_JobDone en esta clase manejará la respuesta.
|
||||
reqManager.ExecuteQuery(cmd, 0, "verify_device")
|
||||
End Sub
|
||||
|
||||
Sub linkDevice(Almacen_ As String, Ruta_ As String)
|
||||
Dim deviceId As String = GetDeviceGUID ' Obtenemos o generamos el GUID del dispositivo.
|
||||
Log("########################################################")
|
||||
Log("REGISTRANDO")
|
||||
Dim cmd As DBCommand ' Creamos un comando para enviar al servidor.
|
||||
cmd.Initialize
|
||||
cmd.Name = "registarMovil"
|
||||
' Pasamos el almacén, la ruta y el GUID del dispositivo como parámetros.
|
||||
cmd.Parameters = Array As Object(deviceId, Almacen_, Ruta_)
|
||||
reqManager.ExecuteCommand(cmd, "registramosGUID")
|
||||
If SubExists(CallBack, EventName & "_Response") Then
|
||||
CallSub2(CallBack, EventName & "_Response", "REGISTRANDO") ' Dispara el evento Linker_Response("REGISTRANDO")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
' Obtiene el GUID único del dispositivo desde B4XKeyStore.
|
||||
' Si no existe, lo genera y lo guarda utilizando Subs.GUID.
|
||||
Private Sub GetDeviceGUID As String
|
||||
@@ -115,7 +168,7 @@ Public Sub JobDone(Job As HttpJob) ' El nombre del sub debe ser 'JobDone' o el q
|
||||
LogColor("############################################", Colors.red)
|
||||
' Enviar una respuesta de error HTTP al callback.
|
||||
If SubExists(CallBack, EventName & "_Response") Then
|
||||
CallSub2(CallBack, EventName & "_Response", "HTTP_ERROR")
|
||||
CallSub2(CallBack, EventName & "_Response", "HTTP_ERROR") ' Dispara el evento Linker_Response("HTTP_ERROR")
|
||||
End If
|
||||
Else 'If Job Success then ...
|
||||
lastJobDoneError = ""
|
||||
@@ -147,45 +200,50 @@ Public Sub JobDone(Job As HttpJob) ' El nombre del sub debe ser 'JobDone' o el q
|
||||
Log($"|${deviceId}|${CAT_RU_IDTELEFONO}|"$)
|
||||
' If deviceId <> CAT_RU_IDTELEFONO Then Status = "YA_REGISTRADO" ' Ya existe OTRO registro.
|
||||
If CAT_RU_IDTELEFONO = 0 Or CAT_RU_IDTELEFONO.Length < 5 Then
|
||||
Log(">>> NUEVO")
|
||||
' Status = "REGISTRO_NUEVO"
|
||||
Dim cmd As DBCommand ' Creamos un comando para enviar al servidor.
|
||||
cmd.Initialize
|
||||
cmd.Name = "registarMovil"
|
||||
' Pasamos el almacén, la ruta y el GUID del dispositivo como parámetros.
|
||||
cmd.Parameters = Array As Object(deviceId, almacen, ruta)
|
||||
reqManager.ExecuteCommand(cmd, "registramosGUID")
|
||||
Status = "SIN_REGISTRO"
|
||||
' Log("########################################################")
|
||||
' Log("REGISTRANDO")
|
||||
' Dim cmd As DBCommand ' Creamos un comando para enviar al servidor.
|
||||
' cmd.Initialize
|
||||
' cmd.Name = "registarMovil"
|
||||
' ' Pasamos el almacén, la ruta y el GUID del dispositivo como parámetros.
|
||||
' cmd.Parameters = Array As Object(deviceId, almacen, ruta)
|
||||
' reqManager.ExecuteCommand(cmd, "registramosGUID")
|
||||
If SubExists(CallBack, EventName & "_Response") Then
|
||||
CallSub2(CallBack, EventName & "_Response", "REGISTRO_NUEVO")
|
||||
CallSub2(CallBack, EventName & "_Response", "SIN_REGISTRO")
|
||||
End If
|
||||
else if CAT_RU_IDTELEFONO = deviceId Then
|
||||
else if CAT_RU_IDTELEFONO = deviceId Then
|
||||
Status = "OK"
|
||||
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("LIGADO"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("LIGADO", 1))
|
||||
Log("OK")
|
||||
LogColor("######### GUARDAMOS ###########", Colors.red)
|
||||
Else
|
||||
Status = "YA_REGISTRADO"
|
||||
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("LIGADO"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("LIGADO", 0))
|
||||
Log("YA_REGISTRADO")
|
||||
LogColor("######### GUARDAMOS ###########", Colors.red)
|
||||
End If
|
||||
' Invocamos el callback en el módulo principal con el estado.
|
||||
If SubExists(CallBack, EventName & "_Response") Then
|
||||
CallSub2(CallBack, EventName & "_Response", Status)
|
||||
End If
|
||||
Next
|
||||
' Else
|
||||
' If logger Then LogColor($"El servidor respondió con éxito, pero no encontró registros.${CRLF}Quiere decir que la ruta NO esta registrada en el servidor."$, Colors.Red)
|
||||
' Dim cmd As DBCommand ' Creamos un comando para enviar al servidor.
|
||||
' cmd.Initialize
|
||||
' cmd.Name = "registarMovil"
|
||||
' ' Pasamos el almacén, la ruta y el GUID del dispositivo como parámetros.
|
||||
' cmd.Parameters = Array As Object(almacen, ruta, deviceId)
|
||||
' reqManager.ExecuteCommand(cmd, "registramosGUID")
|
||||
' If SubExists(CallBack, EventName & "_Response") Then
|
||||
' CallSub2(CallBack, EventName & "_Response", "NO_REGISTRADO")
|
||||
' End If
|
||||
Else
|
||||
Status = "NO_EXISTE_RUTA"
|
||||
End If
|
||||
If SubExists(CallBack, EventName & "_Response") Then
|
||||
CallSub2(CallBack, EventName & "_Response", Status) ' Dispara el evento Linker_Response("OK") o Linker_Response("YA_REGISTRADO")
|
||||
End If
|
||||
End If
|
||||
|
||||
If result.Tag = "registramosGUID" Then
|
||||
Log("########################################################")
|
||||
Log("REGISTRO_COMPLETO")
|
||||
LogColor("######### GUARDAMOS ###########", Colors.red)
|
||||
Subs.logJobDoneResultados(result)
|
||||
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("LIGADO"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("LIGADO", 1))
|
||||
If SubExists(CallBack, EventName & "_Response") Then
|
||||
CallSub2(CallBack, EventName & "_Response", "REGISTRO_NUEVO")
|
||||
CallSub2(CallBack, EventName & "_Response", "REGISTRO_COMPLETO") ' Dispara el evento Linker_Response("REGISTRO_COMPLETO")
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
Reference in New Issue
Block a user