diff --git a/GUIs.Test.GraphQLTest/App.config b/GUIs.Test.GraphQLTest/App.config index 5534e287..5b172ccb 100644 --- a/GUIs.Test.GraphQLTest/App.config +++ b/GUIs.Test.GraphQLTest/App.config @@ -1,6 +1,33 @@  + + +
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GUIs.Test.GraphQLTest/Config.vb b/GUIs.Test.GraphQLTest/Config.vb new file mode 100644 index 00000000..1ab7de40 --- /dev/null +++ b/GUIs.Test.GraphQLTest/Config.vb @@ -0,0 +1,8 @@ +Public Class Config + Public Property ConnectionString As String = "Server=SERVER;Database=DATABASE;User Id=sa;Password=dd" + Public Property CertificateFile As String = "C:\Path\To\Cert.pfx" + Public Property CertificatePass As String = "CertificatePassword" + Public Property Email As String = "foo.bar@wisag.de" + Public Property Password As String = "Password" + Public Property BaseUrl As String = "https://data.api.wisag.de:8443" +End Class diff --git a/GUIs.Test.GraphQLTest/Form1.vb b/GUIs.Test.GraphQLTest/Form1.vb deleted file mode 100644 index 4c2a939b..00000000 --- a/GUIs.Test.GraphQLTest/Form1.vb +++ /dev/null @@ -1,46 +0,0 @@ -Imports System.IO -Imports DigitalData.Modules.Interfaces -Imports DigitalData.Modules.Logging - -Public Class Form1 - Private _LogConfig As LogConfig - Private _Interface As GraphQLInterface - - Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load - _LogConfig = New LogConfig(LogConfig.PathType.CurrentDirectory) - End Sub - - Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click - Try - _Interface = New GraphQLInterface(_LogConfig, - txtBaseUrl.Text, - txtUsername.Text, - txtPassword.Text, - txtCertFile.Text, - txtCertPass.Text) - - Dim oLoginResponse = _Interface.Login() - _Interface.SaveCookies(oLoginResponse.Cookies.Item(0)) - - Dim oDataResponse = _Interface.GetData(txtQuery.Text, "Nls") - Dim oResult As String - - Using oStream = oDataResponse.GetResponseStream() - Using oReader As New StreamReader(oStream) - oResult = oReader.ReadToEnd() - End Using - End Using - - File.WriteAllText("E:\JenneJ\WISAG\results.json", oResult) - - Dim oObj = Newtonsoft.Json.JsonConvert.DeserializeObject(oResult) - Dim oJson = Newtonsoft.Json.JsonConvert.SerializeObject(oObj, Newtonsoft.Json.Formatting.Indented) - - txtResults.Text = oJson - - Dim oLogoutResponse = _Interface.Logout() - Catch ex As Exception - MsgBox(ex.Message, MsgBoxStyle.Critical) - End Try - End Sub -End Class diff --git a/GUIs.Test.GraphQLTest/GUIs.Test.GraphQLTest.vbproj b/GUIs.Test.GraphQLTest/GUIs.Test.GraphQLTest.vbproj index eefb6998..08f44e28 100644 --- a/GUIs.Test.GraphQLTest/GUIs.Test.GraphQLTest.vbproj +++ b/GUIs.Test.GraphQLTest/GUIs.Test.GraphQLTest.vbproj @@ -84,11 +84,12 @@ - + + Form - - Form1.vb + + frmMain.vb Form @@ -108,8 +109,8 @@ - - Form1.vb + + frmMain.vb VbMyResourcesResXFileCodeGenerator @@ -132,6 +133,14 @@ + + {44982f9b-6116-44e2-85d0-f39650b1ef99} + Config + + + {EAF0EA75-5FA7-485D-89C7-B2D843B03A96} + Database + {AB6F09BF-E794-4F6A-94BB-C97C0BA84D64} Interfaces @@ -141,5 +150,8 @@ Logging + + + \ No newline at end of file diff --git a/GUIs.Test.GraphQLTest/My Project/Application.Designer.vb b/GUIs.Test.GraphQLTest/My Project/Application.Designer.vb index bfc32831..3a0a94ec 100644 --- a/GUIs.Test.GraphQLTest/My Project/Application.Designer.vb +++ b/GUIs.Test.GraphQLTest/My Project/Application.Designer.vb @@ -32,7 +32,7 @@ Namespace My _ Protected Overrides Sub OnCreateMainForm() - Me.MainForm = Global.GUIs.Test.GraphQLTest.Form1 + Me.MainForm = Global.GUIs.Test.GraphQLTest.frmMain End Sub End Class End Namespace diff --git a/GUIs.Test.GraphQLTest/My Project/Settings.Designer.vb b/GUIs.Test.GraphQLTest/My Project/Settings.Designer.vb index d6fe46e5..fb6cb655 100644 --- a/GUIs.Test.GraphQLTest/My Project/Settings.Designer.vb +++ b/GUIs.Test.GraphQLTest/My Project/Settings.Designer.vb @@ -1,10 +1,10 @@ '------------------------------------------------------------------------------ ' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.42000 ' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. ' '------------------------------------------------------------------------------ @@ -13,57 +13,129 @@ Option Explicit On Namespace My - - _ + + _ Partial Friend NotInheritable Class MySettings Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) - -#Region "My.Settings Auto-Save Functionality" + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) + +#Region "Automatische My.Settings-Speicherfunktion" #If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean + Private Shared addedHandler As Boolean - Private Shared addedHandlerLockObject As New Object + Private Shared addedHandlerLockObject As New Object - _ - Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub + _ + Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub #End If #End Region - + Public Shared ReadOnly Property [Default]() As MySettings Get - + #If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If #End If Return defaultInstance End Get End Property + + _ + Public Property ConnectionString() As String + Get + Return CType(Me("ConnectionString"),String) + End Get + Set + Me("ConnectionString") = value + End Set + End Property + + _ + Public Property CertificateFile() As String + Get + Return CType(Me("CertificateFile"),String) + End Get + Set + Me("CertificateFile") = value + End Set + End Property + + _ + Public Property CertificatePass() As String + Get + Return CType(Me("CertificatePass"),String) + End Get + Set + Me("CertificatePass") = value + End Set + End Property + + _ + Public Property Email() As String + Get + Return CType(Me("Email"),String) + End Get + Set + Me("Email") = value + End Set + End Property + + _ + Public Property Password() As String + Get + Return CType(Me("Password"),String) + End Get + Set + Me("Password") = value + End Set + End Property + + _ + Public Property BaseUrl() As String + Get + Return CType(Me("BaseUrl"),String) + End Get + Set + Me("BaseUrl") = value + End Set + End Property End Class End Namespace Namespace My - - _ + + _ Friend Module MySettingsProperty - - _ + + _ Friend ReadOnly Property Settings() As Global.GUIs.Test.GraphQLTest.My.MySettings Get Return Global.GUIs.Test.GraphQLTest.My.MySettings.Default diff --git a/GUIs.Test.GraphQLTest/My Project/Settings.settings b/GUIs.Test.GraphQLTest/My Project/Settings.settings index 85b890b3..122a7383 100644 --- a/GUIs.Test.GraphQLTest/My Project/Settings.settings +++ b/GUIs.Test.GraphQLTest/My Project/Settings.settings @@ -1,7 +1,24 @@  - - - - - - + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GUIs.Test.GraphQLTest/Form1.Designer.vb b/GUIs.Test.GraphQLTest/frmMain.Designer.vb similarity index 52% rename from GUIs.Test.GraphQLTest/Form1.Designer.vb rename to GUIs.Test.GraphQLTest/frmMain.Designer.vb index c3c65c59..c9b8db46 100644 --- a/GUIs.Test.GraphQLTest/Form1.Designer.vb +++ b/GUIs.Test.GraphQLTest/frmMain.Designer.vb @@ -1,5 +1,5 @@  _ -Partial Class Form1 +Partial Class frmMain Inherits System.Windows.Forms.Form 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. @@ -22,7 +22,6 @@ Partial Class Form1 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. _ Private Sub InitializeComponent() - Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1)) Me.Button1 = New System.Windows.Forms.Button() Me.txtBaseUrl = New System.Windows.Forms.TextBox() Me.txtUsername = New System.Windows.Forms.TextBox() @@ -35,55 +34,64 @@ Partial Class Form1 Me.Label4 = New System.Windows.Forms.Label() Me.Label5 = New System.Windows.Forms.Label() Me.txtResults = New System.Windows.Forms.TextBox() - Me.txtQuery = New System.Windows.Forms.TextBox() + Me.txtConnectionString = New System.Windows.Forms.TextBox() + Me.Label6 = New System.Windows.Forms.Label() + Me.ComboBox1 = New System.Windows.Forms.ComboBox() + Me.Label7 = New System.Windows.Forms.Label() + Me.TabControl1 = New System.Windows.Forms.TabControl() + Me.TabPage1 = New System.Windows.Forms.TabPage() + Me.btnLogin = New System.Windows.Forms.Button() + Me.ProgressBar1 = New System.Windows.Forms.ProgressBar() + Me.TabControl1.SuspendLayout() + Me.TabPage1.SuspendLayout() Me.SuspendLayout() ' 'Button1 ' - Me.Button1.Location = New System.Drawing.Point(15, 407) + Me.Button1.Location = New System.Drawing.Point(826, 300) Me.Button1.Name = "Button1" - Me.Button1.Size = New System.Drawing.Size(318, 31) + Me.Button1.Size = New System.Drawing.Size(96, 31) Me.Button1.TabIndex = 0 Me.Button1.Text = "Run!" Me.Button1.UseVisualStyleBackColor = True ' 'txtBaseUrl ' - Me.txtBaseUrl.Location = New System.Drawing.Point(86, 6) + Me.txtBaseUrl.Location = New System.Drawing.Point(106, 6) Me.txtBaseUrl.Name = "txtBaseUrl" - Me.txtBaseUrl.Size = New System.Drawing.Size(247, 20) + Me.txtBaseUrl.Size = New System.Drawing.Size(338, 20) Me.txtBaseUrl.TabIndex = 1 - Me.txtBaseUrl.Text = "https://data.api.wisag.de:8090" + Me.txtBaseUrl.Text = "https://data.api.wisag.de:8443" ' 'txtUsername ' - Me.txtUsername.Location = New System.Drawing.Point(86, 32) + Me.txtUsername.Location = New System.Drawing.Point(106, 32) Me.txtUsername.Name = "txtUsername" - Me.txtUsername.Size = New System.Drawing.Size(247, 20) + Me.txtUsername.Size = New System.Drawing.Size(338, 20) Me.txtUsername.TabIndex = 1 Me.txtUsername.Text = "j.jenne@digitaldata.works" ' 'txtPassword ' - Me.txtPassword.Location = New System.Drawing.Point(86, 58) + Me.txtPassword.Location = New System.Drawing.Point(106, 58) Me.txtPassword.Name = "txtPassword" - Me.txtPassword.Size = New System.Drawing.Size(247, 20) + Me.txtPassword.Size = New System.Drawing.Size(338, 20) Me.txtPassword.TabIndex = 1 Me.txtPassword.Text = "DigitalData01!" ' 'txtCertFile ' - Me.txtCertFile.Location = New System.Drawing.Point(86, 84) + Me.txtCertFile.Location = New System.Drawing.Point(106, 84) Me.txtCertFile.Name = "txtCertFile" - Me.txtCertFile.Size = New System.Drawing.Size(247, 20) + Me.txtCertFile.Size = New System.Drawing.Size(338, 20) Me.txtCertFile.TabIndex = 1 Me.txtCertFile.Text = "E:\JenneJ\WISAG\jonathanjenne.pfx" ' 'txtCertPass ' - Me.txtCertPass.Location = New System.Drawing.Point(86, 110) + Me.txtCertPass.Location = New System.Drawing.Point(106, 110) Me.txtCertPass.Name = "txtCertPass" - Me.txtCertPass.Size = New System.Drawing.Size(247, 20) + Me.txtCertPass.Size = New System.Drawing.Size(338, 20) Me.txtCertPass.TabIndex = 1 Me.txtCertPass.Text = "jonathanjenne" ' @@ -134,44 +142,114 @@ Partial Class Form1 ' 'txtResults ' + Me.txtResults.Dock = System.Windows.Forms.DockStyle.Fill Me.txtResults.Font = New System.Drawing.Font("Consolas", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.txtResults.Location = New System.Drawing.Point(339, 6) + Me.txtResults.Location = New System.Drawing.Point(3, 3) Me.txtResults.Multiline = True Me.txtResults.Name = "txtResults" Me.txtResults.ScrollBars = System.Windows.Forms.ScrollBars.Vertical - Me.txtResults.Size = New System.Drawing.Size(881, 432) + Me.txtResults.Size = New System.Drawing.Size(458, 260) Me.txtResults.TabIndex = 3 ' - 'txtQuery + 'txtConnectionString ' - Me.txtQuery.Font = New System.Drawing.Font("Consolas", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.txtQuery.Location = New System.Drawing.Point(15, 136) - Me.txtQuery.Multiline = True - Me.txtQuery.Name = "txtQuery" - Me.txtQuery.Size = New System.Drawing.Size(318, 265) - Me.txtQuery.TabIndex = 4 - Me.txtQuery.Text = resources.GetString("txtQuery.Text") + Me.txtConnectionString.Location = New System.Drawing.Point(106, 136) + Me.txtConnectionString.Multiline = True + Me.txtConnectionString.Name = "txtConnectionString" + Me.txtConnectionString.Size = New System.Drawing.Size(338, 98) + Me.txtConnectionString.TabIndex = 1 ' - 'Form1 + 'Label6 + ' + Me.Label6.AutoSize = True + Me.Label6.Location = New System.Drawing.Point(12, 139) + Me.Label6.Name = "Label6" + Me.Label6.Size = New System.Drawing.Size(88, 13) + Me.Label6.TabIndex = 2 + Me.Label6.Text = "ConnectionString" + ' + 'ComboBox1 + ' + Me.ComboBox1.FormattingEnabled = True + Me.ComboBox1.Items.AddRange(New Object() {"SAPDaten"}) + Me.ComboBox1.Location = New System.Drawing.Point(106, 240) + Me.ComboBox1.Name = "ComboBox1" + Me.ComboBox1.Size = New System.Drawing.Size(338, 21) + Me.ComboBox1.TabIndex = 4 + ' + 'Label7 + ' + Me.Label7.AutoSize = True + Me.Label7.Location = New System.Drawing.Point(12, 243) + Me.Label7.Name = "Label7" + Me.Label7.Size = New System.Drawing.Size(35, 13) + Me.Label7.TabIndex = 2 + Me.Label7.Text = "Query" + ' + 'TabControl1 + ' + Me.TabControl1.Controls.Add(Me.TabPage1) + Me.TabControl1.Location = New System.Drawing.Point(450, 6) + Me.TabControl1.Name = "TabControl1" + Me.TabControl1.SelectedIndex = 0 + Me.TabControl1.Size = New System.Drawing.Size(472, 292) + Me.TabControl1.TabIndex = 5 + ' + 'TabPage1 + ' + Me.TabPage1.Controls.Add(Me.txtResults) + Me.TabPage1.Location = New System.Drawing.Point(4, 22) + Me.TabPage1.Name = "TabPage1" + Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage1.Size = New System.Drawing.Size(464, 266) + Me.TabPage1.TabIndex = 0 + Me.TabPage1.Text = "Raw GraphQL Result" + Me.TabPage1.UseVisualStyleBackColor = True + ' + 'btnLogin + ' + Me.btnLogin.Location = New System.Drawing.Point(724, 300) + Me.btnLogin.Name = "btnLogin" + Me.btnLogin.Size = New System.Drawing.Size(96, 31) + Me.btnLogin.TabIndex = 0 + Me.btnLogin.Text = "Login" + Me.btnLogin.UseVisualStyleBackColor = True + ' + 'ProgressBar1 + ' + Me.ProgressBar1.Location = New System.Drawing.Point(12, 311) + Me.ProgressBar1.Name = "ProgressBar1" + Me.ProgressBar1.Size = New System.Drawing.Size(432, 23) + Me.ProgressBar1.TabIndex = 6 + ' + 'frmMain ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(1232, 450) - Me.Controls.Add(Me.txtQuery) - Me.Controls.Add(Me.txtResults) + Me.ClientSize = New System.Drawing.Size(934, 346) + Me.Controls.Add(Me.ProgressBar1) + Me.Controls.Add(Me.TabControl1) + Me.Controls.Add(Me.ComboBox1) + Me.Controls.Add(Me.Label7) + Me.Controls.Add(Me.Label6) Me.Controls.Add(Me.Label5) Me.Controls.Add(Me.Label4) Me.Controls.Add(Me.Label3) Me.Controls.Add(Me.Label2) Me.Controls.Add(Me.Label1) + Me.Controls.Add(Me.txtConnectionString) Me.Controls.Add(Me.txtCertPass) Me.Controls.Add(Me.txtCertFile) Me.Controls.Add(Me.txtPassword) Me.Controls.Add(Me.txtUsername) Me.Controls.Add(Me.txtBaseUrl) + Me.Controls.Add(Me.btnLogin) Me.Controls.Add(Me.Button1) - Me.Name = "Form1" - Me.Text = "GraphQL Interface Test" + Me.Name = "frmMain" + Me.Text = "GraphQL Interface" + Me.TabControl1.ResumeLayout(False) + Me.TabPage1.ResumeLayout(False) + Me.TabPage1.PerformLayout() Me.ResumeLayout(False) Me.PerformLayout() @@ -189,5 +267,12 @@ Partial Class Form1 Friend WithEvents Label4 As Label Friend WithEvents Label5 As Label Friend WithEvents txtResults As TextBox - Friend WithEvents txtQuery As TextBox + Friend WithEvents txtConnectionString As TextBox + Friend WithEvents Label6 As Label + Friend WithEvents ComboBox1 As ComboBox + Friend WithEvents Label7 As Label + Friend WithEvents TabControl1 As TabControl + Friend WithEvents TabPage1 As TabPage + Friend WithEvents btnLogin As Button + Friend WithEvents ProgressBar1 As ProgressBar End Class diff --git a/GUIs.Test.GraphQLTest/Form1.resx b/GUIs.Test.GraphQLTest/frmMain.resx similarity index 94% rename from GUIs.Test.GraphQLTest/Form1.resx rename to GUIs.Test.GraphQLTest/frmMain.resx index de5f15ff..1af7de15 100644 --- a/GUIs.Test.GraphQLTest/Form1.resx +++ b/GUIs.Test.GraphQLTest/frmMain.resx @@ -117,22 +117,4 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - query Nls{ - niederlassungen { - niederlassungen { - mdnr - mdkurzbezeichnung - bezeichnung - sparte { - id - name - __typename - } - __typename - } - __typename - } -} - \ No newline at end of file diff --git a/GUIs.Test.GraphQLTest/frmMain.vb b/GUIs.Test.GraphQLTest/frmMain.vb new file mode 100644 index 00000000..ea842647 --- /dev/null +++ b/GUIs.Test.GraphQLTest/frmMain.vb @@ -0,0 +1,186 @@ +Imports System.IO +Imports DigitalData.Modules.Database +Imports DigitalData.Modules.Interfaces +Imports DigitalData.Modules.Logging +Imports DigitalData.Modules.Config +Imports Newtonsoft.Json +Imports Newtonsoft.Json.Linq + +Public Class frmMain + Private _LogConfig As LogConfig + Private _Logger As Logger + Private _Interface As GraphQLInterface + Private _MSSQL As MSSQLServer + Private _Config As ConfigManager(Of Config) + Private _Datapools As New List(Of String) From { + "sap_aviation", + "sap_facility", + "sap_holding" + } + + Public Class SAPData + Public sapdaten As List(Of SAPDataItem) + End Class + + Public Class SAPDataItem + Public buchungskreis As String + Public kostenstelle As String + Public beschreibung As String + Public gueltig_bis As String + End Class + + Const GRAPHQL_QUERY_SAP_DATA = " + query SAPDaten { + sapdaten(datenpool: __DATA_POOL__) { + sapdaten { + buchungskreis + kostenstelle + beschreibung + gueltig_bis + } + } + } + " + + Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load + Try + Dim oStartupPath As String = AppDomain.CurrentDomain.BaseDirectory + + _LogConfig = New LogConfig(LogConfig.PathType.CustomPath, oStartupPath) With { + .Debug = True + } + _Logger = _LogConfig.GetLogger() + _Config = New ConfigManager(Of Config)(_LogConfig, oStartupPath) + + txtBaseUrl.Text = _Config.Config.BaseUrl + txtUsername.Text = _Config.Config.Email + txtPassword.Text = _Config.Config.Password + txtCertFile.Text = _Config.Config.CertificateFile + txtCertPass.Text = _Config.Config.CertificatePass + txtConnectionString.Text = _Config.Config.ConnectionString + + ComboBox1.SelectedIndex = 0 + + _MSSQL = New MSSQLServer(_LogConfig, _Config.Config.ConnectionString) + Catch ex As Exception + _Logger.Error(ex) + MsgBox(ex.Message, MsgBoxStyle.Critical, Text) + End Try + End Sub + + Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click + Try + _Interface = New GraphQLInterface(_LogConfig, + txtBaseUrl.Text, + txtUsername.Text, + txtPassword.Text, + txtCertFile.Text, + txtCertPass.Text) + + Dim oResponse = _Interface.Login + _Interface.SaveCookies(oResponse.Cookies.Item(0)) + + If oResponse.StatusCode = Net.HttpStatusCode.OK Then + MsgBox("Login Successful!", MsgBoxStyle.Information, Text) + Else + MsgBox("Login failed! Check Certificate and User Credentials!", MsgBoxStyle.Critical, Text) + End If + Catch ex As Exception + _Logger.Error(ex) + MsgBox(ex.Message, MsgBoxStyle.Critical, Text) + End Try + End Sub + + Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click + Try + + If _Interface Is Nothing Then + MsgBox("Please login first!", MsgBoxStyle.Exclamation, Text) + Exit Sub + End If + + If ComboBox1.SelectedIndex = -1 Then + MsgBox("Please select a query!", MsgBoxStyle.Exclamation, Text) + Exit Sub + End If + + If ComboBox1.Text = "SAPDaten" Then + _MSSQL.ExecuteNonQuery("DELETE FROM TBCUST_SYNC_API_SAPDATEN") + + txtResults.Text = String.Empty + + For Each oDatapool In _Datapools + Dim oQuery As String = GRAPHQL_QUERY_SAP_DATA.Trim.Replace("__DATA_POOL__", oDatapool) + Dim oDataResponse = _Interface.GetData(oQuery, "SAPDaten") + Dim oResult As String + + Using oStream = oDataResponse.GetResponseStream() + Using oReader As New StreamReader(oStream) + oResult = oReader.ReadToEnd() + End Using + End Using + + Dim oObj As JObject = JsonConvert.DeserializeObject(oResult) + Dim oData As SAPData = ConvertResponse(oResult) + + _Logger.Debug("Inserting [{0}] items for datapool [{1}]", oData.sapdaten.Count, oDatapool) + + Dim oCounter As Integer = 0 + Dim oTotal As Integer = oData.sapdaten.Count + ProgressBar1.Maximum = oTotal + ProgressBar1.Value = oCounter + + For Each oItem As SAPDataItem In oData.sapdaten + Dim oSQL = $"INSERT INTO TBCUST_SYNC_API_SAPDATEN (BESCHREIBUNG, BUCHUNGSKREIS, KOSTENSTELLE, GUELTIG_BIS) VALUES ('{oItem.beschreibung}', '{oItem.buchungskreis}', '{oItem.kostenstelle}', '{oItem.gueltig_bis}')" + Dim oSuccess = _MSSQL.ExecuteNonQuery(oSQL) + + If oSuccess Then + _Logger.Debug("Record [{0}] inserted!", oItem.beschreibung) + End If + Next + + txtResults.Text &= "--------------------------------------------" & vbNewLine + txtResults.Text &= $"--- Datapool: {oDatapool}" & vbNewLine + txtResults.Text &= JsonConvert.SerializeObject(oObj, Formatting.Indented) & vbNewLine + + oCounter += 1 + ProgressBar1.Value = oCounter + Next + Else + MsgBox("Unknown query!", MsgBoxStyle.Exclamation, Text) + Exit Sub + End If + Catch ex As Exception + _Logger.Error(ex) + MsgBox(ex.Message, MsgBoxStyle.Critical) + End Try + End Sub + + Private Sub frmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing + Try + Dim oLogoutResponse = _Interface.Logout() + If oLogoutResponse.StatusCode = Net.HttpStatusCode.OK Then + _Logger.Info("Logout successful.") + End If + + _Config.Config.ConnectionString = txtConnectionString.Text + _Config.Config.BaseUrl = txtBaseUrl.Text + _Config.Config.CertificateFile = txtCertFile.Text + _Config.Config.CertificatePass = txtCertPass.Text + _Config.Config.Email = txtUsername.Text + _Config.Config.Password = txtPassword.Text + + _Config.Save() + Catch ex As Exception + _Logger.Error(ex) + End Try + End Sub + + Public Function ConvertResponse(JsonString As String) As SAPData + Dim oObj As JObject = JObject.Parse(JsonString)("data")("sapdaten") + Dim oString As String = JsonConvert.SerializeObject(oObj, Formatting.None) + Dim oSAPData As SAPData = JsonConvert.DeserializeObject(Of SAPData)(oString) + + Return oSAPData + End Function +End Class diff --git a/Modules.Interfaces/GrapQLInterface/QueryData.vb b/Modules.Interfaces/GrapQLInterface/QueryData.vb index 6081f1c6..4bdc356a 100644 --- a/Modules.Interfaces/GrapQLInterface/QueryData.vb +++ b/Modules.Interfaces/GrapQLInterface/QueryData.vb @@ -1,5 +1,5 @@ Public Class QueryData - Public Query As String - Public OperationName As String - Public Variables As New Object + Public query As String + Public operationName As String + Public variables As New Object End Class diff --git a/Modules.Interfaces/GraphQLInterface.vb b/Modules.Interfaces/GraphQLInterface.vb index 8cb39dd9..3b1b7d6d 100644 --- a/Modules.Interfaces/GraphQLInterface.vb +++ b/Modules.Interfaces/GraphQLInterface.vb @@ -71,11 +71,12 @@ Public Class GraphQLInterface Public Function GetData(Query As String, OperationName As String) As HttpWebResponse Try Dim oQueryData As New QueryData() With { - .OperationName = OperationName, - .Query = Query, - .Variables = New Object - } - Dim oBytes = ToBytes(JsonConvert.SerializeObject(oQueryData)) + .operationName = OperationName, + .query = Query, + .variables = New Object + } + Dim oJson = JsonConvert.SerializeObject(oQueryData) + Dim oBytes = ToBytes(oJson) Dim oRequest = GetRequest("/graphql", oBytes) Using stream = oRequest.GetRequestStream() @@ -107,7 +108,7 @@ Public Class GraphQLInterface Private Function GetCookies() As CookieContainer If _cookieJar Is Nothing Then - _cookieJar = New CookieContainer() + _cookieJar = New CookieContainer(300, 20, 8192) End If Return _cookieJar