Imports System.IO
Imports System.Net
Imports System.Net.Http
Imports System.Threading
Imports System.Web.Http
Imports System.Web.Http.Description
Imports Microsoft.Web.Http
Imports Org.BouncyCastle.Asn1
Imports VERAG_PROG_ALLGEMEIN
Namespace ApiController.Controllers
Public Class AVISOController
Inherits System.Web.Http.ApiController
'''
''' Upload Files in Base64-Format and attach it to an existring LKW (with avisoId) or an specific consignment (with sendungsId)
'''
'''
''' OK, if file is uploaded or ERROR-Code if something went wrong
''' Returns 200 file is uploaded sucessfully
''' Returns 400 upload failed
Public Function uploadAvisoAttachment(anhangsart As String, arrayOfFiles() As String, Optional avisoId As Integer = -1, Optional sendungsId As Integer = -1, Optional saveOnServer As Boolean = False) As HttpResponseMessage
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
VERAG_PROG_ALLGEMEIN.cAllgemein.ERR_OP_GLOBAL = VERAG_PROG_ALLGEMEIN.ERROR_OP.LOG
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim prog As String = ""
Dim DSZugang As New DataTable
Dim DS_Domain As String = ""
Dim DS_name As String = ""
Dim DS_pw As String = ""
Dim uploadAvisoAttachmentErr As String = "ERR"
Try
Dim ip = Request.Properties("MS_HttpContext").Request.UserHostAddress()
'Dim bodyText
'Dim json
'If HttpContext.Current.Request.GetBufferedInputStream IsNot Nothing Then
' Dim bodyStream As Stream = HttpContext.Current.Request.GetBufferedInputStream
' Dim reader = New StreamReader(bodyStream)
' If bodyStream.CanRead Then
' bodyText = reader.ReadToEnd
' json = JsonConvert.DeserializeObject(bodyText)
' Else
' uploadAvisoAttachment = "STREAMREADER_ERR"
' Return uploadAvisoAttachment
' End If
'Else
' uploadAvisoAttachment = "UPLOAD_ERR"
' Return uploadAvisoAttachment
'End If
If arrayOfFiles Is Nothing Then
uploadAvisoAttachmentErr = "FILESARRAY_NOTHING_ERR"
Return Request.CreateErrorResponse(HttpStatusCode.NotFound, uploadAvisoAttachmentErr)
End If
If arrayOfFiles.Length < 1 Then
uploadAvisoAttachmentErr = "FILESARRAY_EMPTY_ERR" & arrayOfFiles.ToString
Return Request.CreateErrorResponse(HttpStatusCode.NotFound, uploadAvisoAttachmentErr)
End If
If anhangsart <> "" Then ' AndAlso listOfImages IsNot Nothing AndAlso listOfImages.Count > 0
If Not saveOnServer Then
prog = "Datenarchiv"
DSZugang = SQL.loadDgvBySql("SELECT top(1) * FROM tblAPIEinstellungen WHERE api_program='" & prog & "' and api_productive ='" & IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "0", "1") & "'", "ADMIN")
If DSZugang.Rows.Count = 0 Then
uploadAvisoAttachmentErr = "LOGIN_DS_ERR"
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, uploadAvisoAttachmentErr)
End If
'Zugang für Datenarchiv
DS_Domain = DSZugang.Rows(0).Item("api_url")
DS_name = DSZugang.Rows(0).Item("api_user")
DS_pw = DSZugang.Rows(0).Item("api_password")
End If
If sendungsId > 0 Then
Dim SENDUNG = New VERAG_PROG_ALLGEMEIN.cSendungen(sendungsId)
If SENDUNG Is Nothing Then
uploadAvisoAttachmentErr = "NO_SENDUNG_ERR"
Return Request.CreateErrorResponse(HttpStatusCode.NotFound, uploadAvisoAttachmentErr)
Else
If Not saveOnServer Then
'wenn bereits offen, dann wareten
For i = 0 To 20
If Not NetzwerkVerbindungOffen(DS_name, DS_Domain) Then Exit For
Thread.Sleep(1000)
i = i + 1
If i = 10 AndAlso NetzwerkVerbindungOffen(DS_name, DS_Domain) Then
uploadAvisoAttachmentErr = "NO_NEW_DS_CONNECTION_ERR"
Return Request.CreateErrorResponse(600, uploadAvisoAttachmentErr)
End If
Next
NetzwerkVerbindungHerstellen(DS_Domain, DS_name, DS_pw)
End If
For Each image In arrayOfFiles
Dim filetemp = image.Replace("data:application/pdf;base64,", "")
Try
Convert.FromBase64String(filetemp)
Catch ex As Exception
uploadAvisoAttachmentErr = "BASE64_FORMAT_ERR"
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, uploadAvisoAttachmentErr)
End Try
Dim fileextension = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getFileExtensionFromBase64String(filetemp)
'If fileextension.ToLower = "unknown" Then
' uploadAvisoAttachment = "UNKNOWN_ATTACHMENT_EXTENSION_ERR"
' Return uploadAvisoAttachment
'End If
If Not saveOnServer Then
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "AVISO_ANHAENGE", SENDUNG.tblSnd_AvisoID, Now.ToString("ddMMyy_HHmmss.ffff"), "", anhangsart & "_" & Now.ToString("ddMMyy_HHmmss"), False)
DS.uploadDataToDATENSERVER_fromBase64String(filetemp, DS.da_name, IIf(fileextension.ToLower <> "unknown", "." & fileextension, "." & "jpg"), False, False)
If DS Is Nothing AndAlso DS.da_id Is Nothing AndAlso DS.da_id <= 0 Then
uploadAvisoAttachmentErr = "UPLOAD_DS_ERR"
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, uploadAvisoAttachmentErr)
End If
Dim fileName = DS.da_name
Dim destPath = DS.GET_TOP1_PATH
fileName = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(fileName)
If destPath <> "" Then
Dim fi As New FileInfo(destPath)
Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(SENDUNG.tblSnd_AvisoID, fileName, DS.da_id, anhangsart, fi.Extension, sendungsId,, fi.Length,)
If Not ANH.SAVE Then
uploadAvisoAttachmentErr = "SAVE_ANH_ERR"
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, uploadAvisoAttachmentErr)
End If
Else
Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(SENDUNG.tblSnd_AvisoID, fileName, DS.da_id, anhangsart, IIf(fileextension.ToLower <> "unknown", "." & fileextension, "." & "jpg"), sendungsId,, 100,)
If Not ANH.SAVE Then
uploadAvisoAttachmentErr = "SAVE_ANH_ERR"
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, uploadAvisoAttachmentErr)
End If
End If
Else
Try
Dim TMP_PATH = ""
If Environment.GetFolderPath(Environment.SpecialFolder.Personal) = "" Then ' WEB_SERV
TMP_PATH = "G:\temp\Verag\DatenTMP\SENDUNGSID\"
Else
TMP_PATH = Path.GetTempPath() & "\VERAG\DatenTMP\"
End If
TMP_PATH = TMP_PATH.Replace("\\", "\")
If Not My.Computer.FileSystem.DirectoryExists(TMP_PATH) Then
My.Computer.FileSystem.CreateDirectory(TMP_PATH)
End If
Dim name = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(sendungsId & "_" & anhangsart & "_" & Now.ToString("ddMMyy_HHmmss"))
name = name.Replace("?", "")
Dim extension = IIf(fileextension.ToLower <> "unknown", "." & fileextension, "." & "jpg")
Dim destPath = TMP_PATH & name
While System.IO.File.Exists(destPath)
destPath = TMP_PATH & name & "_" & Now.ToString("yyyyMMddHHmmssfff")
End While
Dim bytes As Byte() = Convert.FromBase64String(filetemp)
File.WriteAllBytes(destPath & extension, bytes)
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine, System.Reflection.MethodInfo.GetCurrentMethod.Name)
uploadAvisoAttachmentErr = ex.Message & " " & ex.StackTrace
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, uploadAvisoAttachmentErr)
End Try
End If
Next
If Not saveOnServer Then NetzwerkVerbindungTrennen(DS_Domain)
End If
ElseIf avisoId > 0 Then
Dim AVISO = VERAG_PROG_ALLGEMEIN.cAviso.getAvisoById(avisoId)
If AVISO Is Nothing Then
uploadAvisoAttachmentErr = "NO_AVISO_ERR"
Return Request.CreateErrorResponse(HttpStatusCode.NotFound, uploadAvisoAttachmentErr)
Else
If Not saveOnServer Then
'wenn bereits offen, dann wareten
For i = 0 To 20
If Not NetzwerkVerbindungOffen(DS_name, DS_Domain) Then Exit For
Thread.Sleep(1000)
i = i + 1
If i = 10 AndAlso NetzwerkVerbindungOffen(DS_name, DS_Domain) Then
uploadAvisoAttachmentErr = "NO_NEW_DS_CONNECTION_ERR"
Return Request.CreateErrorResponse(600, uploadAvisoAttachmentErr)
End If
Next
NetzwerkVerbindungHerstellen(DS_Domain, DS_name, DS_pw)
End If
For Each image In arrayOfFiles
Dim filetemp = image.Replace("data:application/pdf;base64,", "")
Try
Convert.FromBase64String(filetemp)
Catch ex As Exception
uploadAvisoAttachmentErr = "BASE64_FORMAT_ERR"
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, uploadAvisoAttachmentErr)
End Try
Dim fileextension = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getFileExtensionFromBase64String(filetemp)
'If fileextension.ToLower = "unknown" Then
' uploadAvisoAttachment = "UNKNOWN_ATTACHMENT_EXTENSION_ERR"
' Return uploadAvisoAttachment
'End If
If Not saveOnServer Then
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "AVISO_ANHAENGE", avisoId, Now.ToString("ddMMyy_HHmmss.ffff"), "", anhangsart & "_" & Now.ToString("ddMMyy_HHmmss"), False)
DS.uploadDataToDATENSERVER_fromBase64String(filetemp, DS.da_name, IIf(fileextension.ToLower <> "unknown", "." & fileextension, "." & "jpg"), False, False)
If DS Is Nothing AndAlso DS.da_id Is Nothing AndAlso DS.da_id <= 0 Then
uploadAvisoAttachmentErr = "UPLOAD_DS_ERR"
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, uploadAvisoAttachmentErr)
End If
Dim fileName = DS.da_name
Dim destPath = DS.GET_TOP1_PATH
fileName = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(fileName)
If destPath <> "" Then
Dim fi As New FileInfo(destPath)
Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(avisoId, fileName, DS.da_id, anhangsart, fi.Extension, sendungsId,, fi.Length,)
If Not ANH.SAVE Then
uploadAvisoAttachmentErr = "SAVE_ANH_ERR"
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, uploadAvisoAttachmentErr)
End If
Else
Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(avisoId, fileName, DS.da_id, anhangsart, IIf(fileextension.ToLower <> "unknown", "." & fileextension, "." & "jpg"), sendungsId,, 100,)
If Not ANH.SAVE Then
uploadAvisoAttachmentErr = "SAVE_ANH_ERR"
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, uploadAvisoAttachmentErr)
End If
End If
Else
Try
Dim TMP_PATH = ""
If Environment.GetFolderPath(Environment.SpecialFolder.Personal) = "" Then ' WEB_SERV
TMP_PATH = "G:\temp\Verag\DatenTMP\AVISOID\"
Else
TMP_PATH = Path.GetTempPath() & "\VERAG\DatenTMP\"
End If
TMP_PATH = TMP_PATH.Replace("\\", "\")
If Not My.Computer.FileSystem.DirectoryExists(TMP_PATH) Then
My.Computer.FileSystem.CreateDirectory(TMP_PATH)
End If
Dim name = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(avisoId & "_" & anhangsart & "_" & Now.ToString("ddMMyy_HHmmss"))
name = name.Replace("?", "")
Dim extension = IIf(fileextension.ToLower <> "unknown", "." & fileextension, "." & "jpg")
Dim destPath = TMP_PATH & name
While System.IO.File.Exists(destPath)
destPath = TMP_PATH & name & "_" & Now.ToString("yyyyMMddHHmmssfff")
End While
Dim bytes As Byte() = Convert.FromBase64String(filetemp)
File.WriteAllBytes(destPath & extension, bytes)
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine, System.Reflection.MethodInfo.GetCurrentMethod.Name)
uploadAvisoAttachmentErr = ex.Message & " " & ex.StackTrace
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, uploadAvisoAttachmentErr)
End Try
End If
Next
If Not saveOnServer Then NetzwerkVerbindungTrennen(DS_Domain)
End If
Else
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, uploadAvisoAttachmentErr)
End If
Return Request.CreateErrorResponse(HttpStatusCode.OK, "DOCS HAS BEEN UPLOADED")
End If
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine, System.Reflection.MethodInfo.GetCurrentMethod.Name)
uploadAvisoAttachmentErr = ex.Message & " " & ex.StackTrace
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, uploadAvisoAttachmentErr)
End Try
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, uploadAvisoAttachmentErr)
End Function
Public Function uploadAvisoAttString(anhangsart As String, arrayOfFiles As String, Optional avisoId As Integer = -1, Optional sendungsId As Integer = -1) As String
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
VERAG_PROG_ALLGEMEIN.cAllgemein.ERR_OP_GLOBAL = VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Try
Dim ip = Request.Properties("MS_HttpContext").Request.UserHostAddress()
'Dim bodyText
'Dim json
'If HttpContext.Current.Request.GetBufferedInputStream IsNot Nothing Then
' Dim bodyStream As Stream = HttpContext.Current.Request.GetBufferedInputStream
' Dim reader = New StreamReader(bodyStream)
' If bodyStream.CanRead Then
' bodyText = reader.ReadToEnd
' json = JsonConvert.DeserializeObject(bodyText)
' Else
' uploadAvisoAttachment = "STREAMREADER_ERR"
' Return uploadAvisoAttachment
' End If
'Else
' uploadAvisoAttachment = "UPLOAD_ERR"
' Return uploadAvisoAttachment
'End If
Dim listOfFiles As List(Of String) = arrayOfFiles.Split(",").ToList
If Not (listOfFiles IsNot Nothing AndAlso listOfFiles.Count > 0) Then
uploadAvisoAttString = "FILESARRAY_EMPTY_ERR"
Return uploadAvisoAttString
End If
If anhangsart <> "" Then ' AndAlso listOfImages IsNot Nothing AndAlso listOfImages.Count > 0
If sendungsId > 0 Then
Dim SENDUNG = New VERAG_PROG_ALLGEMEIN.cSendungen(sendungsId)
If SENDUNG Is Nothing Then
uploadAvisoAttString = "NO_SENDUNG_ERR"
Return uploadAvisoAttString
Else
For Each image In listOfFiles
Dim filetemp = image.Replace("data:application/pdf;base64,", "")
Try
Convert.FromBase64String(filetemp)
Catch ex As Exception
uploadAvisoAttString = "BASE64_FORMAT_ERR"
Return uploadAvisoAttString
End Try
Dim fileextension = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getFileExtensionFromBase64String(filetemp)
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "AVISO_ANHAENGE", SENDUNG.tblSnd_AvisoID, Now.ToString("ddMMyy_HHmmss.ffff"), "", anhangsart & "_" & Now.ToString("ddMMyy_HHmmss"), False)
DS.uploadDataToDATENSERVER_fromBase64String(filetemp, DS.da_name, IIf(fileextension.ToLower <> "unknown", "." & fileextension, ""), False, False)
If DS.da_id <= 0 Then
uploadAvisoAttString = "UPLOAD_DS_ERR"
Return uploadAvisoAttString
End If
Dim fileName = DS.da_name
Dim destPath = DS.GET_TOP1_PATH
fileName = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(fileName)
Dim fi As New FileInfo(destPath)
Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(SENDUNG.tblSnd_AvisoID, fileName, DS.da_id, anhangsart, fi.Extension, sendungsId,, fi.Length,)
If Not ANH.SAVE Then
uploadAvisoAttString = "SAVE_ANH_ERR"
Return uploadAvisoAttString
End If
Next
End If
ElseIf avisoId > 0 Then
Dim AVISO = VERAG_PROG_ALLGEMEIN.cAviso.getAvisoById(avisoId)
If AVISO Is Nothing Then
uploadAvisoAttString = "NO_AVISO_ERR"
Return uploadAvisoAttString
Else
For Each image In listOfFiles
Dim filetemp = image.Replace("data:application/pdf;base64,", "")
Try
Convert.FromBase64String(filetemp)
Catch ex As Exception
uploadAvisoAttString = "BASE64_FORMAT_ERR"
Return uploadAvisoAttString
End Try
Dim fileextension = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getFileExtensionFromBase64String(filetemp)
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "AVISO_ANHAENGE", avisoId, Now.ToString("ddMMyy_HHmmss.ffff"), "", anhangsart & "_" & Now.ToString("ddMMyy_HHmmss"), False)
DS.uploadDataToDATENSERVER_fromBase64String(filetemp, DS.da_name, IIf(fileextension.ToLower <> "unknown", "." & fileextension, ""), False, False)
If DS.da_id <= 0 Then
uploadAvisoAttString = "UPLOAD_DS_ERR"
Return uploadAvisoAttString
End If
Dim fileName = DS.da_name
Dim destPath = DS.GET_TOP1_PATH
fileName = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(fileName)
Dim fi As New FileInfo(destPath)
Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(avisoId, fileName, DS.da_id, anhangsart, fi.Extension, sendungsId,, fi.Length,)
If Not ANH.SAVE Then
uploadAvisoAttString = "SAVE_ANH_ERR"
Return uploadAvisoAttString
End If
Next
End If
Else
Return uploadAvisoAttString
End If
Return "OK"
End If
Catch ex As Exception
Return uploadAvisoAttString
End Try
Return uploadAvisoAttString
End Function
'------------------------------------------------------------------------
'----------------------------------TEST----------------------------------
'------------------------------------------------------------------------
Public Function TESTEN_POST(ByVal API_AVISO As VERAG_PROG_ALLGEMEIN.cVERAG_in_TRAviso) As String
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True
VERAG_PROG_ALLGEMEIN.cAllgemein.ERR_OP_GLOBAL = VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim ip = Request.Properties("MS_HttpContext").Request.UserHostAddress()
Try
SQL.doSQL("insert into tbltest (test,ipaddress) Values('IN_AVISO_START " & Now.ToShortDateString & "-" & Now.ToShortTimeString & "','" & ip & "')", "FMZOLL")
Catch ex As Exception
End Try
Return "OK"
' SQL.doSQL("insert into tbltest (test) Values('" & PostValue & "')", "FMZOLL")
Return TESTEN_POST
End Function
Public Shared Sub NetzwerkVerbindungHerstellen(remotePath As String, username As String, password As String)
' Netzwerkverbindung mit "net use" aufbauen
Dim startInfo As New ProcessStartInfo("net", $"use {remotePath} /user:{username} {password}")
startInfo.WindowStyle = ProcessWindowStyle.Hidden
startInfo.CreateNoWindow = True
Process.Start(startInfo).WaitForExit()
End Sub
' Methode zum Trennen der Verbindung
Public Shared Sub NetzwerkVerbindungTrennen(remotePath As String)
Dim startInfo As New ProcessStartInfo("net", $"use {remotePath} /delete")
startInfo.WindowStyle = ProcessWindowStyle.Hidden
startInfo.CreateNoWindow = True
Process.Start(startInfo).WaitForExit()
End Sub
Function NetzwerkVerbindungOffen(ByVal username As String, ByVal remotePath As String) As Boolean
Try
' Führe den Befehl "net use" aus und hole die Ausgabe
Dim process As New Process()
process.StartInfo.FileName = "cmd.exe"
process.StartInfo.Arguments = "/c net use"
process.StartInfo.RedirectStandardOutput = True
process.StartInfo.UseShellExecute = False
process.StartInfo.CreateNoWindow = True
process.Start()
' Lies die Ausgabe des Befehls
Dim output As String = process.StandardOutput.ReadToEnd()
process.WaitForExit()
' Überprüfe, ob die Ausgabe die gewünschte Freigabe und den Benutzernamen enthält
Return output.Contains(remotePath) AndAlso output.Contains(username)
Catch ex As Exception
Console.WriteLine("Fehler: " & ex.Message)
Return False
End Try
End Function
End Class
'hide controller
Public Class AVISO1TESTController
Inherits System.Web.Http.ApiController
'''
''' Gets the Hello World Response
'''
Public Function GetValue() As String
Return "Hello world!"
End Function
Public Function PostValue(ByVal API_AVISO As VERAG_PROG_ALLGEMEIN.cVERAG_in_TRAviso) As String
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True
VERAG_PROG_ALLGEMEIN.cAllgemein.ERR_OP_GLOBAL = VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim ip = Request.Properties("MS_HttpContext").Request.UserHostAddress()
SQL.doSQL("insert into tbltest (test,ipaddress) Values('IN_AVISO_START " & Now.ToShortDateString & "-" & Now.ToShortTimeString & "','" & ip & "')", "FMZOLL")
Try
Dim resultJson2 = jsonString.FromClass(API_AVISO)
SQL.doSQL("insert into tbltest (test) Values('IN_AVISO_" & resultJson2 & "')", "FMZOLL")
Catch ex As Exception
End Try
PostValue = "IN_AVISO_ERR"
Try
If API_AVISO Is Nothing Then Return VERAG_IN_AVISO_Exceptions.ERR_01_Wrong_Format
If API_AVISO.Company Is Nothing OrElse API_AVISO.Company = "" Then Return VERAG_IN_AVISO_Exceptions.ERR_02_Missing_Company
If API_AVISO.Department Is Nothing OrElse API_AVISO.Department = "" Then Return VERAG_IN_AVISO_Exceptions.ERR_03_Missing_Department
If API_AVISO.PartnerTID Is Nothing OrElse API_AVISO.PartnerTID = "" Then Return VERAG_IN_AVISO_Exceptions.ERR_04_Missing_PartnerID
If API_AVISO.TransportLicensePlate Is Nothing OrElse API_AVISO.TransportLicensePlate = "" Then Return VERAG_IN_AVISO_Exceptions.ERR_09_Missing_PlateNr
Dim TR_AVISO As New VERAG_PROG_ALLGEMEIN.cVERAG_in_TRAvisoFULL
TR_AVISO.trAv_PartnerSystem = API_AVISO.PartnerTID
TR_AVISO.trAv_gewicht = API_AVISO.TotGrossWeight
TR_AVISO.trAv_colli = API_AVISO.TotPackage
TR_AVISO.trAv_Transportmittel = API_AVISO.TransportBorderType
TR_AVISO.trAv_Grenzueberschreitung = API_AVISO.TransportModeBorder
'TR_AVISO.trAv_FraechterKdNr = API_AVISO.PaXXXXXXXrtnerTID
'TR_AVISO.trAv_Fraechter = API_AVISO.PaXXXXXXXrtnerTID
'TR_AVISO.trAv_AvisiererKdNr = API_AVISO.PaXXXXXXXrtnerTID
'TR_AVISO.trAv_Avisierer = API_AVISO.PaXXXXXXXrtnerTID
TR_AVISO.trAv_Nationalitaet = API_AVISO.TransportCountryCode
TR_AVISO.trAv_Kennzeichen = API_AVISO.TransportLicensePlate
TR_AVISO.trAv_Reference = API_AVISO.Reference
TR_AVISO.trAv_Fraechter = API_AVISO.FreightCompany
TR_AVISO.trAv_FraechterKdNr = API_AVISO.FreightCompanyID
TR_AVISO.trAv_Niederlassung = API_AVISO.Department
TR_AVISO.trAv_Firma = API_AVISO.Company
TR_AVISO.trAv_datetime = Now
TR_AVISO.trAv_Info = API_AVISO.Info
If Not TR_AVISO.SAVE(False) Then Return VERAG_IN_AVISO_Exceptions.ERR_05_InternalVerarb
If API_AVISO.DOCUMENTS IsNot Nothing Then
For Each ANH In API_AVISO.DOCUMENTS
Dim TR_DOC As New VERAG_PROG_ALLGEMEIN.cVERAG_in_TRAvisoAnhaenge
TR_DOC.DocumentType = ANH.DocumentType
TR_DOC.DocumentNr = ANH.DocumentNr
TR_DOC.DocumentDate = ANH.DocumentDate
If ANH.base64BinaryStream IsNot Nothing AndAlso ANH.base64BinaryStream <> "" Then
TR_DOC.trAvAh_docID = VERAG_IN_AVISO_Functions.base64toDS(ANH.base64BinaryStream, TR_AVISO.trAv_Id, ANH.FileName)
End If
TR_AVISO.ANHAENGE.Add(TR_DOC)
Next
End If
If Not TR_AVISO.SAVE_Anhaenge Then Return VERAG_IN_AVISO_Exceptions.ERR_05_InternalVerarb
If API_AVISO.POSITIONS IsNot Nothing Then
For Each SH In API_AVISO.POSITIONS
Dim EZA As New VERAG_PROG_ALLGEMEIN.cVERAG_in_eza
Dim SHIPMENT As New VERAG_PROG_ALLGEMEIN.cVERAG_in_eza_FULL(EZA)
' Dim SHIPMENT As New VERAG_PROG_ALLGEMEIN.cVERAG_in_shippment()
SHIPMENT.shTr_TRAvisoId = TR_AVISO.trAv_Id 'Zur Verknüfung
EZA.Company = API_AVISO.Company
EZA.Department = API_AVISO.Department
EZA.Reference = SH.Reference
EZA.DeclarationCountry = SH.DeclarationCountry
EZA.DeclarationType = SH.DeclarationType
EZA.TotPackage = SH.NumberOfPackages
EZA.TotGrossWeight = SH.GrossWeight
'EZA.TotGrossWeight = SH.GrossWeight
EZA.CustomsCodeDeparture = SH.CustomsCodeDeparture
EZA.CustomsCodeDestination = SH.CustomsCodeDestination
'EZA.CustomsCodeEntry = API_AVISO.CustomsCodeEntry
EZA.TransportModeBorder = API_AVISO.TransportModeBorder
EZA.CountryCodeDeparture = SH.CountryCodeDeparture
EZA.CountryCodeDestination = SH.CountryCodeDestination
EZA.DEStateCodeDestination = SH.DEStateCodeDestination
EZA.TransportArrivalLicensePlate = API_AVISO.TransportLicensePlate
EZA.TransportArrivalCountryCode = API_AVISO.TransportCountryCode
EZA.TransportBorderType = API_AVISO.TransportBorderType
EZA.TransportBorderLicensePlate = API_AVISO.TransportLicensePlate
EZA.Incoterm = SH.Incoterm
EZA.PrePaperCode = SH.PrePaperCode
EZA.PrePaperNr = SH.PrePaperNr
' EZA.KindOfBusiness = SH.ReferenceXXXXXXXXXXXX
EZA.InvoiceAmount = SH.InvoiceAmount
EZA.InvoiceCurrency = SH.InvoiceCurrency
EZA.ContainerNr1 = SH.ContainerNr1
EZA.ContainerNr2 = SH.ContainerNr2
EZA.ContainerNr3 = SH.ContainerNr3
EZA.ContainerNr4 = SH.ContainerNr4
If SH.ADDRESS IsNot Nothing Then
For Each ADD In SH.ADDRESS
Dim TR_ADD As New VERAG_PROG_ALLGEMEIN.cVERAG_in_eza_Adressen
TR_ADD.AddressCode = ADD.AddressCode
TR_ADD.CustomerID = ADD.CustomerID
TR_ADD.EORI = ADD.EORI
TR_ADD.NLNR = ADD.NLNR
TR_ADD.Name1 = ADD.Name1
TR_ADD.Name2 = ADD.Name2
TR_ADD.Name3 = ADD.Name3
TR_ADD.Street1 = ADD.Street1
TR_ADD.Street2 = ADD.Street2
TR_ADD.City = ADD.City
TR_ADD.CountryCode = ADD.CountryCode
TR_ADD.PostalCode = ADD.PostalCode
TR_ADD.UStID = ADD.UStID
EZA.ADDRESS.Add(TR_ADD)
Next
End If
If SH.DOCUMENTS IsNot Nothing Then
For Each DOC In SH.DOCUMENTS
Dim TR_DOC As New VERAG_PROG_ALLGEMEIN.cVERAG_in_shipment_Document
TR_DOC.DocumentType = DOC.DocumentType
TR_DOC.DocumentNr = DOC.DocumentNr
TR_DOC.DocumentDate = DOC.DocumentDate
If DOC.base64BinaryStream IsNot Nothing AndAlso DOC.base64BinaryStream <> "" Then
TR_DOC.shTrPosDoc_docID = VERAG_IN_AVISO_Functions.base64toDS(DOC.base64BinaryStream, TR_AVISO.trAv_Id, DOC.FileName, "SND_ATTACHMENT")
End If
EZA.DOCUMENTS.Add(TR_DOC)
Next
End If
If Not SHIPMENT.SAVE() Then
Return VERAG_IN_AVISO_Exceptions.ERR_06_InternalSave
End If
Next
End If
Return "OK"
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & NCTS_Exceptions.ERR_03_InternalVerarb, System.Reflection.MethodInfo.GetCurrentMethod.Name)
SQL.doSQL("insert into tbltest (test) Values('" & NCTS_Exceptions.ERR_03_InternalVerarb & ex.Message & "')", "FMZOLL")
Return NCTS_Exceptions.ERR_03_InternalVerarb
End Try
' SQL.doSQL("insert into tbltest (test) Values('" & PostValue & "')", "FMZOLL")
Return PostValue
End Function
End Class
Class VERAG_IN_AVISO_Exceptions
Public Const ERR_01_Wrong_Format As String = "ERR_01"
Public Const ERR_02_Missing_Company As String = "ERR_02"
Public Const ERR_03_Missing_Department As String = "ERR_03"
Public Const ERR_04_Missing_PartnerID As String = "ERR_04"
Public Const ERR_05_InternalVerarb As String = "ERR_05"
Public Const ERR_06_InternalSave As String = "ERR_06"
Public Const ERR_07_Missing_Colli As String = "ERR_07"
Public Const ERR_08_Missing_Gewicht As String = "ERR_08"
Public Const ERR_09_Missing_PlateNr As String = "ERR_09"
End Class
Class VERAG_IN_AVISO_Functions
Public Shared Function base64toDS(base64 As String, AvisoTRID As Integer, FileName As String, Optional uOrdner3 As String = "AVISO_ATTACHMENT") As Integer
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("INTERFACE", "IN", "TR_AVISO", uOrdner3, AvisoTRID, FileName)
DS.uploadDataToDATENSERVER_fromBase64String(base64, FileName,, False)
Return DS.da_id
End Function
End Class
End Namespace