diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/ATEZ/VERAG_OUT_ATEZ_IN/cATEZ_NCTS_IN.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/ATEZ/VERAG_OUT_ATEZ_IN/cATEZ_NCTS_IN.vb index 016aba99..e4bee8bb 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/ATEZ/VERAG_OUT_ATEZ_IN/cATEZ_NCTS_IN.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/ATEZ/VERAG_OUT_ATEZ_IN/cATEZ_NCTS_IN.vb @@ -5,6 +5,7 @@ Imports System.Threading Imports System.Web.Routing Imports System.Windows.Forms Imports System.Windows.Forms.VisualStyles.VisualStyleElement +Imports Newtonsoft.Json.Linq Public Class cATEZ_NCTS_DATA @@ -34,7 +35,7 @@ Public Class cATEZ_NCTS_DATA Public Property AvisoId As Integer Public Property SendungsId As Integer Public Property atezId As String - Public Property json As String + 'Public Property json As String Public Property dakosy_ref As String Public Property selectedDocuments As String Public Property fehlerbeschreibung As String @@ -71,7 +72,7 @@ Public Class cATEZ_NCTS_DATA list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("atezId", atezId)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("status", status)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("erstellung", erstellung)) - list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("json", json)) + 'list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("json", json)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("dakosy_ref", dakosy_ref)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("selectedDocuments", selectedDocuments)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("fehlerbeschreibung", fehlerbeschreibung)) @@ -213,13 +214,17 @@ Public Class cATEZ_NCTS_DATA Return Nothing End Function + Public Function delete() As Boolean + Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL + Dim v = SQL.doSQL("delete FROM tblATEZ_NCTS WHERE id='" & Id & "'", "FMZOLL") + End Function + End Class Public Class cATEZ_NCTS_TransitCustomsOffice Public Property Id As Integer - Public Property AtezNCTS_Id As Integer Public Property TransitCustomsOffice As String @@ -240,6 +245,7 @@ Public Class cATEZ_NCTS_TransitCustomsOffice Me.AtezNCTS_Id = AtezNCTS_Id Me.TransitCustomsOffice = TransitCustomsOffice SAVE() + End Sub Sub New(Id) @@ -247,10 +253,15 @@ Public Class cATEZ_NCTS_TransitCustomsOffice LOAD() End Sub + Sub New() + + End Sub + + Public Function SAVE(Optional errHinweis = "") As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() - Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblATEZ_NCTS_TransitCustomsOffice WITH(updlock,serializable) WHERE Id=@Id) " & + Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblATEZ_NCTS_TransitCustomsOffice WITH(updlock,serializable) WHERE AtezNCTS_Id = @AtezNCTS_Id AND TransitCustomsOffice = @TransitCustomsOffice ) " & " BEGIN " & getUpdateCmd() & " END " & " Else " & " BEGIN " & getInsertCmd() & " END " & @@ -273,7 +284,7 @@ Public Class cATEZ_NCTS_TransitCustomsOffice End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' - Return (" UPDATE [tblATEZ_NCTS_TransitCustomsOffice] SET " & str & " WHERE Id=@Id ") + Return (" UPDATE [tblATEZ_NCTS_TransitCustomsOffice] SET " & str & " WHERE AtezNCTS_Id = @AtezNCTS_Id AND TransitCustomsOffice = @TransitCustomsOffice ") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) @@ -340,6 +351,14 @@ Public Class cATEZ_NCTS_TransitCustomsOffice Next End Sub + + + Public Shared Function delete(ATEZid As Integer) As Boolean + Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL + Dim v = SQL.doSQL("delete FROM tblATEZ_NCTS_TransitCustomsOffice WHERE AtezNCTS_Id='" & ATEZid & "'", "FMZOLL") + End Function + + End Class Public Class cATEZ_NCTS_Routen @@ -373,6 +392,10 @@ Public Class cATEZ_NCTS_Routen LOAD() End Sub + Sub New() + + End Sub + Public Function SAVE(Optional errHinweis = "") As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() @@ -466,6 +489,12 @@ Public Class cATEZ_NCTS_Routen Next End Sub + Public Shared Function delete(ATEZid As Integer) As Boolean + Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL + Dim v = SQL.doSQL("delete FROM tblATEZ_NCTS_Routen WHERE AtezNCTS_Id='" & ATEZid & "'", "FMZOLL") + End Function + + End Class @@ -510,6 +539,8 @@ Public Class cATEZ_NCTS_IN Dim sbRequestBody As New Chilkat.StringBuilder json.EmitSb(sbRequestBody) + 'DEBUG-Mode -> no request will be sent! + 'rest.DebugMode = True Dim sbResponseBody As New Chilkat.StringBuilder Dim ResponseStr = rest.FullRequestSb(method, myuri, sbRequestBody, sbResponseBody) @@ -569,11 +600,15 @@ Public Class cATEZ_NCTS_IN Dim sbRequestBody As New Chilkat.StringBuilder jsonData.EmitSb(sbRequestBody) - 'Debug.WriteLine(sbRequestBody) + + Debug.WriteLine(sbRequestBody) 'DEBUG-Mode -> no request will be sent! 'rest.DebugMode = True + rest.PercentDoneOnSend = True + rest.IdleTimeoutMs = 30000 + Dim sbResponseBody As New Chilkat.StringBuilder success = rest.FullRequestSb("POST", "/api/integrations/verag", sbRequestBody, sbResponseBody) @@ -615,6 +650,7 @@ Public Class cATEZ_NCTS_IN Shared Function setJson(ncts As cATEZ_NCTS_DATA) + jsonData.Clear() Dim success As Boolean success = jsonData.UpdateString("VERAG_LRN", ncts.VERAG_LRN) @@ -636,6 +672,8 @@ Public Class cATEZ_NCTS_IN success = jsonData.UpdateString("Carrier.Adress.Street", ncts.Carrier_Adress_Street) success = jsonData.UpdateString("Guarantee.GRN", ncts.Guarantee_GRN) + + Dim Route_LIST As New List(Of VERAG_PROG_ALLGEMEIN.cATEZ_NCTS_Routen) VERAG_PROG_ALLGEMEIN.cATEZ_NCTS_Routen.LOAD_LIST_ByNCTS(Route_LIST, ncts.Id) @@ -656,8 +694,7 @@ Public Class cATEZ_NCTS_IN i = i + 1 Next - ncts.json = jsonData.Emit() - + Debug.WriteLine(jsonData.Emit()) Return success @@ -681,7 +718,6 @@ Public Class cATEZ_NCTS_IN i = i + 1 End If Next - jsonData.Emit() Return success diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Digicast/cDigicustAPI.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Digicast/cDigicustAPI.vb new file mode 100644 index 00000000..9ef67502 --- /dev/null +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Digicast/cDigicustAPI.vb @@ -0,0 +1,330 @@ +Imports System.Data.SqlClient +Imports System.Net +Imports System.Reflection +Imports System.Threading +Imports Chilkat +Imports Newtonsoft.Json.Linq +Imports VERAG_PROG_ALLGEMEIN.cCreditSafeAPI + +Public Class cDigicust + + Public Property session_Id As Integer + Public Property token As String + Public Property datetime As DateTime + Public Property refresh_token As String + Public Property token_validuntil As DateTime + + Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL + + Public hasEntry As Boolean + + Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) + Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) + + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("session_Id", session_Id, , True, True)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("token", token)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("datetime", datetime)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("refresh_token", refresh_token)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("token_validuntil", token_validuntil)) + + Return list + End Function + + Sub New() + LOAD() + End Sub + + Sub New(token As String, refreshtoken As String, timestamp As DateTime) + token = Me.token + refreshtoken = Me.refresh_token + token_validuntil = timestamp + SAVE() + End Sub + + + Public Function SAVE(Optional errHinweis = "") As Boolean + Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() + + Dim sqlstr = " BEGIN " & getInsertCmd() & " END " & + " commit tran " + + Dim IdTMP = session_Id + IdTMP = SQL.doSQLVarListID(IdTMP, sqlstr, "FMZOLL", , list, , errHinweis) + If session_Id <= 0 Then session_Id = IdTMP + Return session_Id > 0 + End Function + + + Public Function getInsertCmd() As String + Try + Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() + Dim str As String = "" + Dim values As String = "" + For Each i In list + If Not i.isPrimaryParam Then + str &= "[" & i.Text & "]," + values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," + End If + Next + str = str.Substring(0, str.Length - 1) 'wg. ',' + values = values.Substring(0, values.Length - 1) 'wg. ',' + Return (" INSERT INTO tblDigicust_Sessions (" & str & ") VALUES(" & values & ") ") + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + Return "" + End Function + + + Public Sub LOAD() + Try + hasEntry = False + Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() + Using cmd As New SqlCommand("SELECT TOP(1) * FROM tblDigicust_Sessions where token_validuntil >= GetDate() order by datetime desc ", conn) + Dim dr = cmd.ExecuteReader() + + If dr.Read Then + For Each li In getParameterList() + Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable) + + If dr.Item(li.Text) Is DBNull.Value Then + propInfo.SetValue(Me, Nothing) + Else + propInfo.SetValue(Me, dr.Item(li.Text)) + End If + + Next + hasEntry = True + End If + dr.Close() + End Using + End Using + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + + End Try + End Sub + +End Class + + + +Public Class cDigicustAPI + + 'Test + 'Shared API_STRING As String = "https://connect.sandbox.creditsafe.com" + 'PROD + Shared API_STRING As String = "https://api.digicust.com" + Shared token As String = "" + Shared refresh_token As String = "" + Public dataTable As New DataTable() + + + Shared Function SendRequestAuthentificationToken(ByVal myuri As String, ByVal contentType As String, ByVal method As String) As String + + Try + Dim session = New cDigicust() + + If Not IsDBNull(session.token) AndAlso session.token IsNot Nothing Then Return "token filled" + + VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() + + Dim rest As New Chilkat.Rest + Dim success As Boolean + Dim bTls As Boolean = True + Dim port As Integer = 443 + Dim bAutoReconnect As Boolean = True + success = rest.Connect(API_STRING, port, bTls, bAutoReconnect) + If (success <> True) Then + Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason) + Debug.WriteLine(rest.LastErrorText) + Return rest.LastErrorText + + End If + + Dim json As New Chilkat.JsonObject + success = json.UpdateString("username", "edv@verag.ag") + success = json.UpdateString("password", "hbG&%RhpE6kjV@r") + + rest.AddHeader("Content-Type", contentType) + + Dim sbRequestBody As New Chilkat.StringBuilder + json.EmitSb(sbRequestBody) + + + Dim sbResponseBody As New Chilkat.StringBuilder + Dim ResponseStr = rest.FullRequestSb(method, myuri, sbRequestBody, sbResponseBody) + If (rest.ResponseStatusCode <> 200) Then + Return rest.ResponseStatusCode & " " & rest.ResponseStatusText + End If + + Dim jsonResp = New Chilkat.JsonObject() + jsonResp.LoadSb(sbResponseBody) + token = jsonResp.StringOf("access_token") + refresh_token = jsonResp.StringOf("refresh_token") + Dim now As DateTime = DateTime.Now() + now = now.AddSeconds(jsonResp.IntOf("expires_in")) + session = New cDigicust(token, refresh_token, now.ToString("yyyy-MM-dd HH:mm:ss")) + '"yyyyMMdd HH:mm:ss" + + Return rest.ResponseStatusCode & " " & rest.ResponseStatusText + + Catch ex As WebException + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + End Function + Shared Function authenticate(ByRef token As String) As String + + Dim myUri As String = "/generic/api/auth/authenticate" + Dim response = SendRequestAuthentificationToken(myUri, "application/json", "POST") + + Return response + + + End Function + + Shared Function SendRequestWithAuthHeader(acceptContentType As String, ByRef failureDesc As String) As String + Try + + VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() + + Dim rest As New Chilkat.Rest + Dim success As Boolean + + + Dim bTls As Boolean = True + Dim port As Integer = 443 + Dim bAutoReconnect As Boolean = True + success = rest.Connect(API_STRING, port, bTls, bAutoReconnect) + If (success <> True) Then + Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason) + Debug.WriteLine(rest.LastErrorText) + failureDesc = rest.LastErrorText + Return failureDesc + End If + + + rest.AddHeader("Content-Type", "application/json") + rest.AddHeader("Authorization", "Bearer " & token) + rest.AddHeader("Accept", acceptContentType) + + Dim sbRequestBody As New Chilkat.StringBuilder + 'jsonData.EmitSb(sbRequestBody) + 'Debug.WriteLine(sbRequestBody) + + 'DEBUG-Mode -> no request will be sent! + 'rest.DebugMode = True + + Dim sbResponseBody As New Chilkat.StringBuilder + success = rest.FullRequestSb("POST", "/api/integrations/verag", sbRequestBody, sbResponseBody) + + If (rest.LastMethodSuccess <> True) Then + Debug.WriteLine(rest.LastErrorText) + failureDesc = rest.LastErrorText + Return failureDesc + + Else + If (rest.ResponseStatusCode <> 200) Then + If rest.ResponseStatusCode = 500 Then + Dim jsonResultFailure As New Chilkat.JsonObject + jsonResultFailure.LoadSb(sbResponseBody) + jsonResultFailure.Emit() + failureDesc = jsonResultFailure.StringOf("code") & "-" & jsonResultFailure.StringOf("message") + Return failureDesc + Else + + failureDesc = rest.ResponseStatusCode & "-" & rest.ResponseStatusText + Return failureDesc + End If + + Else + + Dim jsonResult As New Chilkat.JsonObject + success = jsonResult.LoadSb(sbResponseBody) + jsonResult.Emit() + Return jsonResult.StringOf("atezId") + + End If + + End If + + + Catch ex As WebException + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + End Function + + Shared Sub uploadginCase() + + Dim rest As New Chilkat.Rest + Dim success As Boolean + + ' URL: https://api.digicust.com/upload/api/{customerId}/{projectId}/new + Dim bTls As Boolean = True + Dim port As Integer = 443 + Dim bAutoReconnect As Boolean = True + success = rest.Connect("api.digicust.com", port, bTls, bAutoReconnect) + If (success <> True) Then + Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason) + Debug.WriteLine(rest.LastErrorText) + Exit Sub + End If + + + + rest.PartSelector = "1" + Dim fileStream1 As New Chilkat.Stream + fileStream1.SourceFile = " path to file1.pdf" + rest.AddHeader("Content-Disposition", "form-data; name=""files[]""; filename="" path to file1.pdf""") + rest.AddHeader("Content-Type", "application/pdf") + rest.SetMultipartBodyStream(fileStream1) + + rest.PartSelector = "2" + Dim fileStream2 As New Chilkat.Stream + fileStream2.SourceFile = " path to file2.pdf" + rest.AddHeader("Content-Disposition", "form-data; name=""files[]""; filename="" path to file2.pdf""") + rest.AddHeader("Content-Type", "application/pdf") + rest.SetMultipartBodyStream(fileStream2) + + rest.PartSelector = "3" + rest.AddHeader("Content-Disposition", "form-data; name=""classifications""") + rest.SetMultipartBodyString("[{""fileName"":""file1.pdf"",""documentType"":""invoice""},{""fileName"":""file2.pdf"",""documentType"":""waybill""}]") + + rest.PartSelector = "4" + rest.AddHeader("Content-Disposition", "form-data; name=""executionStrategyId""") + rest.SetMultipartBodyString("{executionStrategyId}") + + rest.PartSelector = "5" + rest.AddHeader("Content-Disposition", "form-data; name=""reference""") + rest.SetMultipartBodyString("{reference}") + + rest.PartSelector = "6" + rest.AddHeader("Content-Disposition", "form-data; name=""documents""") + rest.SetMultipartBodyString("[{""priority"":""afterNormalization"",""annotatedAggregated"":{}}]") + + + rest.PartSelector = "0" + + rest.AddHeader("Content-Type", "multipart/form-data") + rest.AddHeader("Authorization", "Bearer " & token) + rest.AddHeader("Expect", "100-continue") + + Dim strResponseBody As String = rest.FullRequestMultipart("POST", "/upload/api/{customerId}/{projectId}/new") + If (rest.LastMethodSuccess <> True) Then + Debug.WriteLine(rest.LastErrorText) + Exit Sub + End If + + Dim respStatusCode As Integer = rest.ResponseStatusCode + Debug.WriteLine("response status code = " & respStatusCode) + If (respStatusCode >= 400) Then + Debug.WriteLine("Response Status Code = " & respStatusCode) + Debug.WriteLine("Response Header:") + Debug.WriteLine(rest.ResponseHeader) + Debug.WriteLine("Response Body:") + Debug.WriteLine(strResponseBody) + Exit Sub + End If + + End Sub +End Class diff --git a/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj b/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj index ac14ba65..d8b8e12e 100644 --- a/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj +++ b/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj @@ -367,6 +367,7 @@ + @@ -760,6 +761,9 @@ + + OpenApiCodeGenerator + Always @@ -1206,9 +1210,18 @@ 3.8.0 + + 2.0.1 + 13.0.3 + + 7.2.4 + + + 110.2.0 +