Action link per l’aggiunta di articoli in anagrafica

' Action link per l'aggiunta di articoli in anagrafica
' Lo snippet segue il seguente JSON di esempio
'
'{
'  "Token": "ec161f8b-ba19-4dac-aab0-2ee16ab94391",
'  "Articoli": [
'	{
'	  "ID": "ACITAR",
'	  "Descrizione": "ACIDO TARTARICO",
'	  "Tipo": "ENO",
'	  "StatoFisico": "Confezionato",
'	  "CatMIPAAF": "107",
'	  "Formato": 0,
'	  "UM": "Kg",
'	  "Categoria": "",
'	  "Vendibile": false,
'	  "IDComm": "",
'	  "IDCED": "",
'	  "EANBottiglia": "",
'	  "EANCartone": "",
'	  "Inattivo": false,
'	  "GestLotti": true,
'	  "Esistenza": 0,
'	  "Disponibilita": 0
'	}
'  ]
'}


Dim nomeActionLink As String = "Action Link ARTICOLI"

Dim OK As Boolean = True
Dim esito As String = ""
Dim erroreRequest As String = ""
Dim errcode As Integer
Dim jsonr As String
Dim res As New Newtonsoft.Json.Linq.JObject

Try
  'OTTENGO LA RICHIESTA IN JSON
  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

  Dim objtmp As Newtonsoft.Json.Linq.JObject = Newtonsoft.Json.Linq.JObject.Parse(jsonr)

  Dim token As String = CType(objtmp("Token"), Newtonsoft.Json.Linq.JValue).Value

  Dim tokenIsValid As Boolean = qwlib.WebUtils.CheckToken2(token)

  If tokenIsValid Then
    ' copia il json in una directory locale
    Dim path As String = "C:\dati\Json\Articoli.json"

    Dim writer As New System.IO.StreamWriter(path)

    writer.WriteLine("" & jsonr)
    writer.Close()

    '------------------------------------------------------------------------------------------------------------------'
    Dim parsedJson As Newtonsoft.Json.Linq.JObject = Newtonsoft.Json.Linq.JObject.Parse(jsonr)

    Dim artic As New QWTable

    artic.DataBase = DB

    If Not parsedJson.SelectToken("Articoli") Is Nothing Then
      For i As Integer = 0 To parsedJson.SelectToken("Articoli").Count - 1
        Dim erroreSalvataggio As String = ""

        artic.SQL = "select * "
        artic.SQL += "from ARTIC "
        artic.SQL += "where CODICE = " & Chr(39) & parsedJson.SelectToken("Articoli[" & i & "].ID").ToString & Chr(39)
        artic.Active = True

        'SE NON ESISTE UN RECORD CON QUEL CODICE ARTICOLO, NE CREO UNO NUOVO
        If Not artic.RowSet.First() Then
          artic.BeginAppend()

          artic.Replace("CODICE", SqlStr(parsedJson.SelectToken("Articoli[" & i & "].ID").ToString))
          artic.Replace("UNMIS", SqlStr(parsedJson.SelectToken("Articoli[" & i & "].UM").ToString))
        End If

        'SALVO LE INFORMAZIONI DEL JSON NELLE VARIE COLONNE DI ARTIC
        artic.Replace("DESCRIZION", SqlStr(parsedJson.SelectToken("Articoli[" & i & "].Descrizione").ToString))

        OK = artic.SaveRecord(erroreSalvataggio)

        If Not OK Then
          esito += erroreSalvataggio & vbCrLf
          WriteLog(nomeActionLink & vbCrLf & erroreSalvataggio)
        End If

        artic.Active = False
      Next
    Else
      esito += "Non ci sono Articoli !" & vbCrLf
      WriteLog(nomeActionLink & vbCrLf & esito)
    End If

    artic.Dispose()
    '-----------------------------------------------------------------------------------------------------------'
  Else
    errcode = 1
    esito += "Token non valido !" & vbCrLf
  End If

  If Not String.IsNullOrEmpty(esito) Then
    OK = False
  End If
Catch e As Exception
  OK = False
  errcode = -1
  erroreRequest = e.Message & vbCrLf & e.StackTrace
  WriteLog(nomeActionLink & vbCrLf & erroreRequest)
End Try

Dim ret_obj = New With {.ResultCode = errcode, .Result = IIf(OK, "OK", "KO"), .ErrResult = esito & vbCrLf & vbCrLf & erroreRequest}

Return Newtonsoft.Json.JsonConvert.SerializeObject(ret_obj)