Imports System.IO Imports System.Web.Http.Description Imports Microsoft.Web.Http 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) 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 uploadAvisoAttachment = "ERR" If arrayOfFiles Is Nothing OrElse arrayOfFiles.Length < 0 Then uploadAvisoAttachment = "FILESARRAY_EMPTY_ERR" Return uploadAvisoAttachment 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 uploadAvisoAttachment = "NO_SENDUNG_ERR" Return uploadAvisoAttachment Else For Each image In arrayOfFiles Dim filetemp = image.Replace("data:application/pdf;base64,", "") Try Convert.FromBase64String(filetemp) Catch ex As Exception uploadAvisoAttachment = "BASE64_FORMAT_ERR" Return uploadAvisoAttachment 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 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.da_id <= 0 Then uploadAvisoAttachment = "UPLOAD_DS_ERR" Return uploadAvisoAttachment 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 uploadAvisoAttachment = "SAVE_ANH_ERR" Return uploadAvisoAttachment End If Next End If ElseIf avisoId > 0 Then Dim AVISO = VERAG_PROG_ALLGEMEIN.cAviso.getAvisoById(avisoId) If AVISO Is Nothing Then uploadAvisoAttachment = "NO_AVISO_ERR" Return uploadAvisoAttachment Else For Each image In arrayOfFiles Dim filetemp = image.Replace("data:application/pdf;base64,", "") Try Convert.FromBase64String(filetemp) Catch ex As Exception uploadAvisoAttachment = "BASE64_FORMAT_ERR" Return uploadAvisoAttachment 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 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.da_id <= 0 Then uploadAvisoAttachment = "UPLOAD_DS_ERR" Return uploadAvisoAttachment 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 uploadAvisoAttachment = "SAVE_ANH_ERR" Return uploadAvisoAttachment End If Next End If Else Return uploadAvisoAttachment End If Return "OK" End If Catch ex As Exception Return uploadAvisoAttachment End Try Return uploadAvisoAttachment 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 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