' Il seguente codice può essere usato come esempio per realizzare un action link che restituire un flusso JSON che contiene il risultato di una query
' Come si può vedere, viene usato un oggetto List che contiene un oggetto Dictionary il cui primo elemento è il nome del campo e il secondo il valore
' L'oggetto List viene poi serializzato nell'ultima riga.
' L'action link accetta due parametri nel payload: Data_Inizio_Evento e Data_Fine_Evento
dim ret_obj
Dim obj As Newtonsoft.Json.linq.JObject
Dim jsonr as string
Page.Request.InputStream.Seek(0,System.IO.SeekOrigin.Begin)
Using receiveStream As System.IO.Stream = Page.Request.InputStream
Using readStream As System.IO.StreamReader = New System.IO.StreamReader(receiveStream, System.Text.Encoding.UTF8)
jsonr = readStream.ReadToEnd()
End Using
End Using
If empty(jsonr)
ret_obj=New With {.Result = "KO",.Reason="Parametri non definiti"}
return newtonsoft.Json.jsonconvert.SerializeObject(ret_obj)
End If
obj=Newtonsoft.Json.linq.JObject.Parse(jsonr)
dim Data_Inizio_Evento as Date
if not obj("Data_Inizio_Evento") is nothing
Data_Inizio_Evento=ctype(obj("Data_Inizio_Evento"),Newtonsoft.Json.Linq.JValue).Value
Else
ret_obj=New With {.Result = "KO",.Reason="Parametro Data_Inizio_Evento non specificato"}
return newtonsoft.Json.jsonconvert.SerializeObject(ret_obj)
End If
dim Data_Fine_Evento as Date
if not obj("Data_Fine_Evento") is nothing
Data_Fine_Evento=ctype(obj("Data_Fine_Evento"),Newtonsoft.Json.Linq.JValue).Value
Else
ret_obj=New With {.Result = "KO",.Reason="Parametro Data_Fine_Evento non specificato"}
return newtonsoft.Json.jsonconvert.SerializeObject(ret_obj)
End If
Dim q As New QWTable
q.Database = DB
q.SQL = "select
TIPO_CONT+NUMERO as idQuestionario,
CUSTOM22 as Codice_Evento,
CUSTOM2 as Tipo_evento,
CUSTOM16 as Tipo_Location,
DATE4 as Data_Fine_Pubblicazione,
CUSTOM15 as Cooperativa,
CUSTOM9 as EAN_Prodotto,
left(CUSTOM10,7) as Codice_Prodotto,
Substring(CUSTOM10,11,200) as Descrizione_Prodotto,
CUSTOM20 as Fornitore,
CUSTOM4 as Codice_Segmento_Clsmkt,
CUSTOM11 as Mondo,
CUSTOM5 as Reparto,
CUSTOM6 as Categoria,
CUSTOM7 as Subcategoria,
CUSTOM8 as Segmento,
CUSTOM14 as Numero_Questionario
from DOCUMENT where TIPO='QUESTAS' and CUSTOM2 in ('ADS COOPERATIVE','ADS ONLINE','ADS AGENZIE') and DATE4 between :DA_DATA and :A_DATA"
q.params("DA_DATA")=Data_Inizio_Evento
q.params("A_DATA")=Data_Fine_Evento
q.RequestLive=false
q.active = True
Dim rows As New System.Collections.Generic.List(Of System.Collections.Generic.Dictionary(Of String, Object))()
Dim row As System.Collections.Generic.Dictionary(Of String, Object)
While not q.rowset.endofset
dim numdoc as string
UnPackCode("IS",q.rowset.fields("Numero_Questionario").value,numdoc)
row = New System.Collections.Generic.Dictionary(Of String, Object)()
dim i as integer
dim field as string
dim val as object
for i=1 to q.rowset.fields.size
field=q.Rowset.fields(i).fieldname
if field<>"Numero_Questionario"
val=q.rowset.fields(i).value
row.Add(field, val)
End If
next
rows.add(row)
q.rowset.next()
End While
SCDOMQ.active=false
q.active=false
Write_LogDoc(DB.QWSession,"**","ACTIONLINK",1,"BI - Questionari da data inizio evento: "+dtoc(Data_Inizio_Evento)+" a data fine evento: "+dtoc(Data_Fine_Evento),"###")
return newtonsoft.Json.jsonconvert.SerializeObject(rows)