Attribute VB_Name = "sql"
Option Explicit

'Catálogo de Proyecto
Const Com_Vendo = 1

'Catálogo de versiones HW
Const Wavecom_1v1 = 1
Const Simcom_1v1 = 2

'Catálogo de Pruebas
Const prueba_eeprom = 1
Const prueba_ppp = 2
Const prueba_attach = 3
Const prueba_rssi = 4
Const prueba_simcom = 5
Const prueba_wavecom = 6
Const prueba_sim = 7
Const prueba_at = 8
Const prueba_leds = 9
Const prueba_registro = 10

'establece conexión de cada consola hacia la bd
Public Function conecta_bd(Index As Integer) As Integer
Comun.matriz(Index - 1).cn.CursorLocation = adUseServer
Comun.matriz(Index - 1).cn.ConnectionString = "driver={PostgreSQL ANSI};server=10.25.3.2;uid=softel;pwd=hola123;database=testerVendo"
Comun.matriz(Index - 1).cn.ConnectionTimeout = 30
Comun.matriz(Index - 1).cn.CursorLocation = adUseClient
Comun.matriz(Index - 1).cn.Open
If Comun.matriz(Index - 1).cn.State = 1 Then
    conecta_bd = 1
Else
    conecta_bd = 0
End If
End Function
'asigna el número de serie que utilizará el equipo
Public Function asigna_serie(Index As Integer) As Integer
Dim rs As New ADODB.Recordset
Dim numero As Long
Dim query As String
Dim tipo As Integer
Dim Text As String
On Error GoTo OpenErr
If Comun.matriz(Index - 1).wavecom = 1 Then
    tipo = Wavecom_1v1
Else
    tipo = Simcom_1v1
End If
query = "select max(numero_serie) as numero_serie from equipos where numero_serie like ('" & Com_Vendo & tipo & "%')"
Debug.Print query
Set rs = Comun.matriz(Index - 1).cn.Execute(query)
If Len(rs.Fields("numero_serie")) > 0 Then
    numero = rs.Fields("numero_serie")
    Comun.matriz(Index - 1).numero_serie = numero + 1
Else
    Text = Com_Vendo & tipo & "00000001"
    Comun.matriz(Index - 1).numero_serie = Text
End If
query = "insert into equipos(id_proyecto,id_version_hardware,numero_serie,imei) values(" & Com_Vendo _
    & "," & tipo & ",'" & Comun.matriz(Index - 1).numero_serie & "','unknown')"
Debug.Print query
Set rs = Comun.matriz(Index - 1).cn.Execute(query)
asigna_serie = 1
GoTo FIN
OpenErr:
    Call Form1.escribe_consola(Index, "Error sql asigna_serie: " & Error$)
    asigna_serie = 0
FIN:
End Function
'guarda el imei del equipo recien probado
Public Function guarda_imei(Index As Integer) As Integer
Dim rs As New ADODB.Recordset
Dim query As String
On Error GoTo OpenErr
query = "update equipos set imei ='" & Comun.matriz(Index - 1).imei & "' where numero_serie='" & Comun.matriz(Index - 1).numero_serie & "'"
Debug.Print query
Set rs = Comun.matriz(Index - 1).cn.Execute(query)
guarda_imei = 1
GoTo FIN
OpenErr:
    Call Form1.escribe_consola(Index, "Error sql guarda_imei: " & Error$)
    guarda_imei = 0
FIN:
End Function
'guarda resultados de una prueba
Public Function guarda_resultado(Index As Integer, id_prueba As Integer, id_tipo_prueba As Integer, valor As Integer) As Integer
Dim rs As New ADODB.Recordset
Dim query As String
On Error GoTo OpenErr
guarda_resultado = 0
query = "insert into resultados(id_prueba,id_tipo_prueba,valor) values(" & id_prueba & "," & id_tipo_prueba & "," & valor & ")"
Debug.Print query
Set rs = Comun.matriz(Index - 1).cn.Execute(query)
guarda_resultado = 1
GoTo FIN
OpenErr:
    Call Form1.escribe_consola(Index, "Error sql guarda_prueba: " & Error$)
FIN:
End Function
'guarda info de la prueba
Public Function guarda_prueba(Index As Integer) As Integer
Dim rs As New ADODB.Recordset
Dim query As String
Dim cuenta As Integer
Dim res As Integer
Dim id_prueba As Integer
On Error GoTo OpenErr
guarda_prueba = 0
query = "insert into pruebas(numero_serie,fecha) values('" & Comun.matriz(Index - 1).numero_serie _
       & "',current_timestamp(0))"
Debug.Print query
Set rs = Comun.matriz(Index - 1).cn.Execute(query)
query = "select id_prueba from pruebas where numero_serie='" & Comun.matriz(Index - 1).numero_serie _
    & "' order by fecha desc limit 1"
Debug.Print query
Set rs = Comun.matriz(Index - 1).cn.Execute(query)
cuenta = 0
While Not rs.EOF
id_prueba = rs.Fields("id_prueba")
    cuenta = 1
rs.MoveNext
Wend
If cuenta = 1 Then
    For cuenta = prueba_eeprom To prueba_registro
        Select Case cuenta
        Case prueba_eeprom
            res = guarda_resultado(Index, id_prueba, prueba_eeprom, Comun.matriz(Index - 1).eeprom)
        Case prueba_ppp
            res = guarda_resultado(Index, id_prueba, prueba_ppp, Comun.matriz(Index - 1).ppp)
        Case prueba_attach
            res = guarda_resultado(Index, id_prueba, prueba_attach, Comun.matriz(Index - 1).attach)
        Case prueba_rssi
            res = guarda_resultado(Index, id_prueba, prueba_rssi, Comun.matriz(Index - 1).rssi)
        Case prueba_simcom
            res = guarda_resultado(Index, id_prueba, prueba_simcom, Comun.matriz(Index - 1).simcom)
        Case prueba_wavecom
            res = guarda_resultado(Index, id_prueba, prueba_wavecom, Comun.matriz(Index - 1).wavecom)
        Case prueba_sim
            res = guarda_resultado(Index, id_prueba, prueba_sim, Comun.matriz(Index - 1).sim)
        Case prueba_at
            res = guarda_resultado(Index, id_prueba, prueba_at, Comun.matriz(Index - 1).comandos_at)
        Case prueba_leds
            res = guarda_resultado(Index, id_prueba, prueba_leds, Comun.matriz(Index - 1).leds)
        Case prueba_registro
            res = guarda_resultado(Index, id_prueba, prueba_leds, Comun.matriz(Index - 1).registro)
        End Select
    Next
    guarda_prueba = 1
Else
    Call Form1.escribe_consola(Index, "Error sql guarda_prueba: no obtuve id prueba")
End If
GoTo FIN
OpenErr:
    Call Form1.escribe_consola(Index, "Error sql guarda_prueba: " & Error$)
FIN:
End Function
