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