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