Imports System.Diagnostics.Tracing Imports System.Net Imports System.Runtime.Remoting Imports System.Threading Imports System.Windows.Forms Public Class cTimasAPI Dim API_STRING = "https://zeit.verag.ag" Dim rest As New Chilkat.Rest Sub New() VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() End Sub Public Function checkConnectionTImas(ByRef failureText As String) As Boolean Try Dim success As Boolean rest.VerboseLogging = False 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) failureText = rest.LastErrorText Return False End If success = rest.SetAuthBasic("admin", "BmWr501956") If (success <> True) Then Debug.WriteLine("BAFailReason: " & rest.ConnectFailReason) Debug.WriteLine(rest.LastErrorText) failureText = rest.LastErrorText Return False End If Return True Catch ex As WebException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Function Public Sub getTimeSaldo(ByVal maid As Integer, ByRef info As String, Optional ByRef requestDone As Boolean = False) Try Dim returnText As String = "" Dim failureText As String = "" If maid < 1 Then Exit Sub End If If Not checkConnectionTImas(failureText) Then Exit Sub End If Dim success As Boolean Dim responseJson As String = rest.FullRequestNoBody("GET", "/rest/web-api/employees/" & maid & "/balance") If (rest.LastMethodSuccess <> True) Then Debug.WriteLine(rest.LastErrorText) Exit Sub End If If (rest.ResponseStatusCode <> 200) Then Debug.WriteLine(rest.ResponseHeader) 'lblTimas.Text = rest.ResponseStatusCode & " " & rest.ResponseStatusText Exit Sub End If Debug.WriteLine(responseJson) Dim json As New Chilkat.JsonObject success = json.Load(responseJson) If (success <> True) Then Debug.WriteLine(json.LastErrorText) End If Debug.WriteLine(json) '"overallBalance" 101580, '"dailyBalance": -17340, '"monthlyBalance": -328380, '"actualTimeOfDay": 4260, Dim saldo = json.StringOf("dailyBalanceYesterday") 'Tagessaldo (gestern) in Sekunden If saldo IsNot Nothing Then Dim saldoAsDouble = CDbl(saldo) saldoAsDouble = Math.Round(saldoAsDouble / 3600, 2) info = "Vortag: " & saldoAsDouble & " h" End If Catch ex As WebException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub Public Function getTimeEntries(ByVal maid As Integer, ByRef dtZeiten As DataTable, Optional ByRef entryExistingToday As Boolean = True, Optional ByRef requestDone As Boolean = False) As Boolean Try Dim isPresent = False Dim failureText As String = "" If maid < 1 Then Return isPresent End If If Not checkConnectionTImas(failureText) Then Return isPresent End If Dim success As Boolean rest.AddQueryParam("id", maid) rest.AddQueryParam("from", Today().AddDays(-1).ToString("yyyy-MM-ddTHH:mm:ss")) rest.AddQueryParam("to", Now().ToString("yyyy-MM-ddTHH:mm:ss")) Dim Response As String Response = rest.FullRequestNoBody("GET", "/rest/web-api/employees/" & maid & "/bookings") If (rest.LastMethodSuccess <> True) Then Debug.WriteLine(rest.LastErrorText) Return isPresent End If If (rest.ResponseStatusCode <> 200) Then Debug.WriteLine(rest.ResponseHeader) 'rest.ResponseStatusCode & " " & rest.ResponseStatusText Return isPresent End If Debug.WriteLine(Response) Dim jsonArray As New Chilkat.JsonArray success = jsonArray.Load(Response) If (success <> True) Then Debug.WriteLine(jsonArray.LastErrorText) Return isPresent End If If jsonArray.Size = -1 Then Return isPresent End If Dim dt As New DataTable 'dt.Columns.Add("statusid", GetType(Integer)) dt.Columns.Add("stamp", GetType(DateTime)) dt.Columns.Add("type", GetType(String)) entryExistingToday = False Dim j As Integer = 0 While j < jsonArray.Size Dim timeEntry As Chilkat.JsonObject = jsonArray.ObjectAt(j) If IsDate(timeEntry.StringOf("stamp")) Then If CDate(timeEntry.StringOf("stamp")) >= CDate(Today()) Then Dim R As DataRow = dt.NewRow 'R("statusid") = timeEntry.StringOf("statusid") R("stamp") = timeEntry.StringOf("stamp") R("type") = timeEntry.StringOf("type") dt.Rows.Add(R) entryExistingToday = True 'info &= " " & IIf(timeEntry.StringOf("type") = "in", "+", " - ") & CDate(timeEntry.StringOf("stamp")).ToString("HH:mm:ss") If jsonArray.Size - 1 = j Then If timeEntry.StringOf("type") = "in" Then isPresent = True End If End If End If End If j = j + 1 End While If dtZeiten IsNot Nothing Then dtZeiten = dt requestDone = True rest.ClearAllQueryParams() Return isPresent Catch ex As WebException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Function Public Function createEmployee(ByVal mitarbeiter As cMitarbeiter, ByRef info As String, ByRef datatableTimas As DataTable, Optional ByRef requestDone As Boolean = False) Try rest.ClearAllHeaders() rest.ClearAllParts() Dim timasEmployeeCreated As Boolean = False Dim returnText As String = "" Dim failureText As String = "" If Not checkConnectionTImas(failureText) Then Return timasEmployeeCreated End If rest.AddHeader("Content-Type", "application/json") Dim success As Boolean Dim json As New Chilkat.JsonObject success = json.UpdateString("externid", mitarbeiter.mit_id) success = json.UpdateString("markingColor", "#3acc2d") success = json.UpdateString("pnr1", mitarbeiter.mit_PersonalNr) 'für Personalverr. 'success = json.UpdateString("pnr2", "ZZ-3A-Q") success = json.UpdateString("firstname", mitarbeiter.mit_vname) success = json.UpdateString("lastname", mitarbeiter.mit_nname) success = json.UpdateString("gender", IIf(mitarbeiter.mit_geschlecht = "m", "male", "female")) success = json.UpdateInt("card", mitarbeiter.mit_id) success = json.UpdateString("info", mitarbeiter.mit_firma & " - " & mitarbeiter.mit_abteilung) If mitarbeiter.mit_gebdat <> "" And IsDate(mitarbeiter.mit_gebdat) Then success = json.UpdateString("birthday", CDate(mitarbeiter.mit_gebdat).ToString("yyyy-MM-dd")) End If success = json.UpdateString("entry", CDate(mitarbeiter.mit_einstiegsdatum).ToString("yyyy-MM-dd")) success = json.UpdateNull("exit") success = json.UpdateString("importSign", "Import from Aviso") success = json.UpdateString("login", mitarbeiter.mit_username) success = json.UpdateBool("loginActive", 1) success = json.UpdateString("email", mitarbeiter.mit_email) success = json.UpdateString("street", mitarbeiter.mit_strasse) success = json.UpdateString("city", mitarbeiter.mit_ort) success = json.UpdateString("zipcode", mitarbeiter.mit_plz) success = json.UpdateString("phone1", mitarbeiter.mit_telefonnr & " " & mitarbeiter.mit_durchwahl) success = json.UpdateString("phone2", mitarbeiter.mit_mobiltel) success = json.UpdateString("password", mitarbeiter.mit_pwd) success = json.UpdateBool("resetPassword", 0) Dim i As Integer = 0 For Each r As DataRow In datatableTimas.Rows If r("set") = True Then success = json.UpdateInt("groups[" & i & "]", r("id")) i = i + 1 End If Next Debug.WriteLine(json.Emit()) Dim sbRequestBody As New Chilkat.StringBuilder json.EmitSb(sbRequestBody) Dim sbResponseBody As New Chilkat.StringBuilder success = rest.FullRequestSb("POST", "/rest/web-api/employees", sbRequestBody, sbResponseBody) If (success <> True) Then Debug.WriteLine(rest.LastErrorText) info = rest.LastErrorText Return timasEmployeeCreated End If If (rest.LastMethodSuccess <> True) Then Debug.WriteLine(rest.LastErrorText) info = rest.LastErrorText Return timasEmployeeCreated End If If (rest.ResponseStatusCode <> 201) Then Debug.WriteLine(rest.ResponseHeader) info = rest.ResponseStatusCode & " " & rest.ResponseStatusText If sbResponseBody.GetAsString <> "" Then info &= vbNewLine & sbResponseBody.GetAsString End If Return timasEmployeeCreated Else info = "Mitarbeiter angelegt!" & vbNewLine Dim jsonResult As New Chilkat.JsonObject success = jsonResult.LoadSb(sbResponseBody) jsonResult.Emit() info &= "Timas-ID: " & jsonResult.StringOf("id") & vbNewLine info &= "MA-ID: " & jsonResult.StringOf("externid") & vbNewLine info &= "Name: " & jsonResult.StringOf("firstname") & " " & jsonResult.StringOf("lastname") mitarbeiter.mit_timasId = jsonResult.StringOf("id") mitarbeiter.SAVE() timasEmployeeCreated = True Return timasEmployeeCreated End If Return timasEmployeeCreated Catch ex As WebException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Function Public Sub getInfo(ByVal mitarbeiter As cMitarbeiter, ByRef info As String) Dim failureText As String = "" 'If Not cbxTimasAngelegt.Checked Then ' info = "Mitarbeiter nicht im Timas angelegt!" ' Exit Sub 'End If Try If Not checkConnectionTImas(failureText) Then Exit Sub End If Dim responseJson As String = rest.FullRequestNoBody("GET", "/rest/web-api/employees/" & mitarbeiter.mit_timasId) If (rest.LastMethodSuccess <> True) Then Debug.WriteLine(rest.LastErrorText) Exit Sub End If If (rest.ResponseStatusCode <> 200) Then Debug.WriteLine(rest.ResponseHeader) info = rest.ResponseStatusCode & " " & rest.ResponseStatusText Exit Sub End If Debug.WriteLine(responseJson) Dim json As New Chilkat.JsonObject Dim success = json.Load(responseJson) If (success <> True) Then Debug.WriteLine(json.LastErrorText) End If info &= IIf(json.StringOf("entry") <> "", "Startdatum: " & json.StringOf("entry") & vbNewLine, "") info &= IIf(json.StringOf("externid") <> "", "MA-ID: " & json.StringOf("externid") & vbNewLine, "") info &= IIf(json.StringOf("pnr1") <> "", "PersonalNr: " & json.StringOf("pnr1") & vbNewLine, "") info &= IIf(json.StringOf("firstname") <> "", "Vorame: " & json.StringOf("firstname") & vbNewLine, "") info &= IIf(json.StringOf("lastname") <> "", "Nachname: " & json.StringOf("lastname") & vbNewLine, "") info &= IIf(json.StringOf("info") <> "", "Info: " & json.StringOf("info") & vbNewLine, "") info &= IIf(json.StringOf("id") <> "", "Timas-ID: " & json.StringOf("id") & vbNewLine, "") If json.BoolOf("loginActive") Then info &= IIf(json.StringOf("login") <> "", "Login: " & json.StringOf("login") & vbNewLine, "") info &= IIf(json.StringOf("password") <> "", "PW: " & json.StringOf("password"), "") End If Catch ex As WebException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub Public Function getEmployee(mitarbeiterID As String) As cTimasEmployee Try If Not checkConnectionTImas("") Then Return Nothing End If Dim responseJson As String = rest.FullRequestNoBody("GET", "/rest/web-api/employees/" & mitarbeiterID) If (rest.LastMethodSuccess <> True) Then Debug.WriteLine(rest.LastErrorText) Return Nothing End If If (rest.ResponseStatusCode <> 200) Then Debug.WriteLine(rest.ResponseHeader) MsgBox(rest.ResponseStatusCode & " " & rest.ResponseStatusText) Return Nothing End If Debug.WriteLine(responseJson) Dim json As New Chilkat.JsonObject Dim success = json.Load(responseJson) If (success <> True) Then Debug.WriteLine(json.LastErrorText) End If Dim emp As New cTimasEmployee() emp.ID = json.StringOf("id") emp.externid = json.StringOf("externid") emp.pnr1 = json.StringOf("pnr1") emp.pnr2 = json.StringOf("pnr2") emp.firstname = json.StringOf("firstname") emp.lastname = json.StringOf("lastname") emp.gender = json.StringOf("gender") emp.clientNumber = json.StringOf("clientNumber") emp.card = json.StringOf("card") emp.info = json.StringOf("info") emp.rfid = json.StringOf("rfid") emp.login = json.StringOf("login") emp.email = json.StringOf("email") emp.loginActive = json.BoolOf("loginActive") emp.password = json.StringOf("password") emp.street = json.StringOf("street") emp.zipcode = json.StringOf("zipcode") emp.city = json.StringOf("city") emp.phone1 = json.StringOf("phone1") emp.phone2 = json.StringOf("phone2") Debug.WriteLine(json.StringOf("birthday")) If (json.StringOf("birthday") <> "null") Then emp.birthdayDate = CDate(json.StringOf("birthday")).ToString("yyyy-MM-dd") End If If (json.StringOf("entry") <> "null") Then emp.entryDate = CDate(json.StringOf("entry")).ToString("yyyy-MM-dd") End If If (json.StringOf("exit") <> "null") Then emp.exitDate = CDate(json.StringOf("exit")).ToString("yyyy-MM-dd") End If Dim groups As Chilkat.JsonArray = json.ArrayOf("groups") If (json.LastMethodSuccess = False) Then Debug.WriteLine("groups member not found.") End If emp.Gruppen = New List(Of cTimasGruppe) Dim numGroups As Integer = groups.Size Dim i As Integer = 0 While i < numGroups Dim TIMASGroups As New cTimasGruppe(emp.ID) TIMASGroups.Id = groups.IntAt(i) emp.Gruppen.Add(TIMASGroups) i = i + 1 End While Debug.WriteLine(json) Return emp Catch ex As WebException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Function Public Function updateEmployee(emp As cTimasEmployee, dgvGroups As DataGridView) As Boolean Try Dim success As Boolean If True Then If Not checkConnectionTImas("") Then Return Nothing End If Dim json As New Chilkat.JsonObject success = json.UpdateString("externid", emp.externid) success = json.UpdateString("pnr1", emp.pnr1) success = json.UpdateString("pnr2", emp.pnr2) success = json.UpdateString("firstname", emp.firstname) success = json.UpdateString("lastname", emp.lastname) success = json.UpdateString("gender", emp.gender) success = json.UpdateString("card", emp.card) success = json.UpdateString("info", emp.info) success = json.UpdateString("rfid", emp.rfid) success = json.UpdateString("login", emp.login) success = json.UpdateString("email", emp.email) success = json.UpdateBool("loginActive", emp.loginActive) success = json.UpdateString("password", emp.password) success = json.UpdateString("street", emp.street) success = json.UpdateString("city", emp.city) success = json.UpdateString("phone1", emp.phone1) success = json.UpdateString("phone2", emp.phone2) If IsDate(emp.birthdayDate) Then success = json.UpdateString("birthday", CDate(emp.birthdayDate).ToString("yyyy-MM-dd")) Else success = json.UpdateString("birthday", "") End If If IsDate(emp.entryDate) Then success = json.UpdateString("entry", CDate(emp.entryDate).ToString("yyyy-MM-dd")) Else success = json.UpdateString("entry", "") End If If IsDate(emp.exitDate) Then success = json.UpdateString("exit", CDate(emp.exitDate).ToString("yyyy-MM-dd")) Else success = json.UpdateString("exit", "") End If Dim sbRequestBody As New Chilkat.StringBuilder json.EmitSb(sbRequestBody) Dim sbResponseBody As New Chilkat.StringBuilder success = rest.FullRequestSb("PUT", "/rest/web-api/employees/" & emp.ID, sbRequestBody, sbResponseBody) If (rest.LastMethodSuccess <> True) Then Debug.WriteLine(rest.LastErrorText) Return Nothing End If If (rest.ResponseStatusCode <> 201) Then Debug.WriteLine(rest.ResponseHeader) MsgBox(rest.ResponseStatusCode & " " & rest.ResponseStatusText & vbNewLine & sbResponseBody.ToString) Return Nothing End If Debug.WriteLine(sbResponseBody) End If If dgvGroups IsNot Nothing AndAlso dgvGroups.RowCount > 0 AndAlso emp.Gruppen IsNot Nothing Then For Each r As DataGridViewRow In dgvGroups.Rows For Each i As cTimasGruppe In emp.Gruppen If r.Cells("set").Value = False AndAlso r.Cells("id").Value = i.Id Then deleteGroupmembers(i.Id, emp.ID) Exit For ElseIf r.Cells("set").Value = True AndAlso r.Cells("id").Value <> i.Id Then addGroupmembers(r.Cells("id").Value, emp.ID) Exit For End If Next Next End If Return success Catch ex As WebException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Function Public Sub getAllGroups(ByRef dt As DataTable, Optional initialGroup As Boolean = True) Try Dim failureText As String = "" If Not checkConnectionTImas(failureText) Then Exit Sub End If Dim responseBody As String = rest.FullRequestNoBody("GET", API_STRING & "/rest/web-api/groups3") If (rest.LastMethodSuccess <> True) Then Debug.WriteLine(rest.LastErrorText) Exit Sub End If If (rest.ResponseStatusCode <> 200) Then Debug.WriteLine(rest.ResponseStatusCode & " " & rest.ResponseStatusText) End If Dim jsonArray As New Chilkat.JsonArray Dim success As Boolean = jsonArray.Load(responseBody) If (success <> True) Then Debug.WriteLine(jsonArray.LastErrorText) Exit Sub End If Dim num As Integer = jsonArray.Size If num = -1 Then Exit Sub End If Dim j As Integer = 0 If dt IsNot Nothing And Not dt.Columns.Contains("id") Then dt.Columns.Add("id", GetType(Integer)) dt.Columns.Add("name", GetType(String)) dt.Columns.Add("groupType", GetType(String)) dt.Columns.Add("info", GetType(String)) dt.Columns.Add("set", GetType(Boolean)) While j < num Dim groups As Chilkat.JsonObject = jsonArray.ObjectAt(j) Dim R As DataRow = dt.NewRow R("id") = groups.IntOf("id") R("name") = groups.StringOf("name") R("groupType") = groups.StringOf("groupType") R("info") = groups.StringOf("info") If initialGroup = True Then If R("id") = "19" Or R("id") = "129" Then 'Typ Mitarbeiter und Standardgruppe für Mitarbeiter Default true R("set") = True Else R("set") = False End If End If dt.Rows.Add(R) j = j + 1 End While dt.DefaultView.Sort = " groupType asc, name asc" dt = dt.DefaultView.ToTable() End If Catch ex As WebException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub Public Sub getGroupsFromEmployee(ByRef dt As DataTable) Try Dim failureText As String = "" If Not checkConnectionTImas(failureText) Then Exit Sub End If Dim responseBody As String = rest.FullRequestNoBody("GET", API_STRING & "/rest/web-api/groups3") If (rest.LastMethodSuccess <> True) Then Debug.WriteLine(rest.LastErrorText) Exit Sub End If If (rest.ResponseStatusCode <> 200) Then Debug.WriteLine(rest.ResponseStatusCode & " " & rest.ResponseStatusText) End If Dim jsonArray As New Chilkat.JsonArray Dim success As Boolean = jsonArray.Load(responseBody) If (success <> True) Then Debug.WriteLine(jsonArray.LastErrorText) Exit Sub End If Dim num As Integer = jsonArray.Size If num = -1 Then Exit Sub End If Dim j As Integer = 0 If dt IsNot Nothing And Not dt.Columns.Contains("id") Then dt.Columns.Add("id", GetType(Integer)) dt.Columns.Add("name", GetType(String)) dt.Columns.Add("groupType", GetType(String)) dt.Columns.Add("info", GetType(String)) dt.Columns.Add("set", GetType(Boolean)) While j < num Dim groups As Chilkat.JsonObject = jsonArray.ObjectAt(j) Dim R As DataRow = dt.NewRow R("id") = groups.IntOf("id") R("name") = groups.StringOf("name") R("groupType") = groups.StringOf("groupType") R("info") = groups.StringOf("info") If R("id") = "19" Or R("id") = "129" Then 'Typ Mitarbeiter und Standardgruppe für Mitarbeiter Default true R("set") = True Else R("set") = False End If dt.Rows.Add(R) j = j + 1 End While dt.DefaultView.Sort = " groupType asc, name asc" dt = dt.DefaultView.ToTable() End If Catch ex As WebException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub Public Sub addGroupmembers(ByVal groupID As Integer, ByVal maId As Integer) Try Dim success As Boolean Dim jarr As New Chilkat.JsonArray jarr.AddIntAt(-1, maId) Dim sbRequestBody As New Chilkat.StringBuilder jarr.EmitSb(sbRequestBody) Dim sbResponseBody As New Chilkat.StringBuilder success = rest.FullRequestSb("POST", "/rest/web-api/groups/" & groupID & "/addmembers", sbRequestBody, sbResponseBody) If (success <> True) Then Debug.WriteLine(rest.LastErrorText) End If Catch ex As WebException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub Public Sub deleteGroupmembers(ByVal groupID As Integer, ByVal maId As Integer) Try Dim success As Boolean Dim jarr As New Chilkat.JsonArray jarr.AddIntAt(-1, maId) Dim sbRequestBody As New Chilkat.StringBuilder jarr.EmitSb(sbRequestBody) Dim sbResponseBody As New Chilkat.StringBuilder success = rest.FullRequestSb("POST", "/rest/web-api/groups/" & groupID & "/removemembers", sbRequestBody, sbResponseBody) If (success <> True) Then Debug.WriteLine(rest.LastErrorText) End If Catch ex As WebException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub Public Function setTimeEntry(ByVal mitarbeiter As cMitarbeiter, ByVal timeEntry As DateTime, ByRef info As String, ByRef inout As String, Optional ByRef art As Integer = 0) Dim failureText As String = "" Dim timeEntryCreated As Boolean = False If Not checkConnectionTImas(failureText) Then Return timeEntryCreated End If If Not mitarbeiter.mit_timasId > 0 Then info = "Mitarbeiter besitzt keine Timas-Zuordnung" Return timeEntryCreated End If Dim entryType As String Select Case inout Case "in" entryType = "KOMMT" Case "out" entryType = "GEHT" Case Else entryType = "falscher ErfassgsTyp: " & inout info = entryType Return timeEntryCreated End Select Dim json As New Chilkat.JsonObject json.UpdateString("stamp", timeEntry.ToString("yyyy-MM-ddTHH:mm:ss")) json.UpdateInt("statusnumber", art) '0 Standardanwesenheit, 3 Homeoffice json.UpdateString("type", inout) json.UpdateString("employeeid", mitarbeiter.mit_timasId) Dim sbRequestBody As New Chilkat.StringBuilder json.EmitSb(sbRequestBody) Dim sbResponseBody As New Chilkat.StringBuilder Dim success = rest.FullRequestSb("POST", "/rest/web-api/bookings", sbRequestBody, sbResponseBody) If (success <> True) Then Debug.WriteLine(rest.LastErrorText) Return timeEntryCreated End If If (rest.LastMethodSuccess <> True) Then Debug.WriteLine(rest.LastErrorText) info = rest.LastErrorText Return timeEntryCreated End If If (rest.ResponseStatusCode <> 200) Then Debug.WriteLine(rest.ResponseHeader) info = rest.ResponseStatusCode & " " & rest.ResponseStatusText If sbResponseBody.GetAsString <> "" Then info &= vbNewLine & sbResponseBody.GetAsString End If Return timeEntryCreated Else info = "Zeiteintrag " & entryType & " angelegt! " & timeEntry.ToString("HH:mm:ss") 'Dim jsonResult As New Chilkat.JsonObject 'success = jsonResult.LoadSb(sbResponseBody) 'jsonResult.Emit() timeEntryCreated = True End If Return timeEntryCreated End Function Public Function getEmployeeList(ByRef dt As DataTable) As String Dim failureText As String = "" Try If Not checkConnectionTImas(failureText) Then Return failureText End If Dim responseJson As String = rest.FullRequestNoBody("GET", "/rest/web-api/employees/") If (rest.LastMethodSuccess <> True) Then Debug.WriteLine(rest.LastErrorText) Return rest.LastErrorText End If If (rest.ResponseStatusCode <> 200) Then Debug.WriteLine(rest.ResponseHeader) failureText = rest.ResponseStatusCode & " " & rest.ResponseStatusText Return rest.ResponseStatusCode & " " & rest.ResponseStatusText End If Debug.WriteLine(responseJson) Dim jsonArray As New Chilkat.JsonArray Dim success As Boolean = jsonArray.Load(responseJson) If (success <> True) Then Debug.WriteLine(jsonArray.LastErrorText) Return jsonArray.LastErrorText End If Dim num As Integer = jsonArray.Size If num = -1 Then Return "Array Failure" End If If dt IsNot Nothing AndAlso Not dt.Columns.Contains("Id") Then dt.Columns.Add("Id", GetType(Integer)) 'dt.Columns.Add("externid", GetType(String)) dt.Columns.Add("Personal-Nr (Lohn)", GetType(String)) dt.Columns.Add("Vorname", GetType(String)) dt.Columns.Add("Nachname", GetType(String)) dt.Columns.Add("Geschlecht", GetType(String)) dt.Columns.Add("Ausweis-Nr", GetType(Integer)) dt.Columns.Add("Info", GetType(String)) End If dt.Clear() Dim j As Integer = 0 While j < num Dim employee As Chilkat.JsonObject = jsonArray.ObjectAt(j) Dim R As DataRow = dt.NewRow R("Id") = employee.IntOf("id") '("externid") = employee.StringOf("externid") R("Personal-Nr (Lohn)") = employee.StringOf("pnr1") R("Vorname") = employee.StringOf("firstname") R("Nachname") = employee.StringOf("lastname") R("Geschlecht") = employee.StringOf("gender") R("Ausweis-Nr") = employee.IntOf("card") R("Info") = employee.StringOf("info") dt.Rows.Add(R) j = j + 1 End While Catch ex As WebException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Function End Class Public Class cTimasEmployee Public ID As Integer Public externid As String Public pnr1 As String 'ID für Lohnprogramm Public pnr2 As String Public firstname As String Public lastname As String Public gender As String Public clientNumber As String Public rfid As String Public card As Integer Public info As String Public login As String Public email As String Public loginActive As Boolean Public password As String Public street As String Public city As String Public zipcode As String Public phone1 As String Public phone2 As String Public birthdayDate As String Public entryDate As String Public exitDate As String Public Gruppen As List(Of cTimasGruppe) Sub New() End Sub End Class Public Class cTimasGruppe Public empID As Integer Public Id As Integer Public name As String Public groupType As String Public info As String Sub New(empId) Me.empID = empId End Sub End Class