Files
AVISO/Aviso/frmSendungAnhangImport.vb
2019-09-10 14:15:44 +02:00

761 lines
29 KiB
VB.net

Imports iTextSharp.text.pdf
Imports iTextSharp.text
Imports System.IO
Imports GrapeCity.Documents.Pdf
Public Class frmSendungAnhangImport
Public AvisoId As Integer
Dim SENDUNG_LIST As New List(Of VERAG_PROG_ALLGEMEIN.cSendungen)
Dim CURRENT_INDEX As Integer
Dim BrowserLoaded = True
Sub New(AvisoId)
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
Me.AvisoId = AvisoId
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
'Dim f As New GroupDocs.Viewer
End Sub
Sub initElement(USRCNTL As usrCntlSendungAnhangElement)
AddHandler USRCNTL.ME_CLICK, Sub()
' If BrowserLoaded Then
If USRCNTL.ACTIVE Then Exit Sub 'Bereits aktiv
For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls
u.ACTIVE = False
Next
For Each u As usrCntlSendungAnhangElement In flpnlSendungen.Controls
u.ACTIVE = False
Next
USRCNTL.ACTIVE = True
'WebBrowser1.Navigate(USRCNTL.FILE_PATH)
If File.Exists(USRCNTL.FILE_PATH) Then
initLocationViewer(USRCNTL.FILE_PATH)
Else
initLocationViewer("")
End If
' PdfViewer.DocumentLoaded += New EventHandler(AddressOf radPdfViewer1_DocumentLoaded)
txtDateiname.Text = USRCNTL.FILE_NAME
' End If
End Sub
AddHandler USRCNTL.KeyDown, Sub(ob As Object, ev As KeyEventArgs)
If ev.KeyCode = Keys.Delete Then
deleteActiveElement(getAcitvePnl())
End If
End Sub
End Sub
Sub initLocationViewer(loc)
If WebBrowser1.Url.AbsoluteUri <> loc Then
WebBrowser1.Navigate(loc)
BrowserLoaded = False
End If
If loc = "" Then BrowserLoaded = True
End Sub
Function getAcitvePnl() As FlowLayoutPanel
For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls
If u.ACTIVE Then Return flpnlAviso
Next
For Each u As usrCntlSendungAnhangElement In flpnlSendungen.Controls
If u.ACTIVE Then Return flpnlSendungen
Next
Return Nothing
End Function
Public Function ExtractPdfPages(ByVal SourceFile As String, ByVal TargetFile As String, ByVal IntStr As Integer, ByVal IntEnd As Integer)
Try
Dim impPage As pdf.PdfImportedPage = Nothing
Dim Reader As New PdfReader(SourceFile)
Dim srcDoc As New Document(Reader.GetPageSizeWithRotation(IntStr))
Dim PdfCopyProvider As New PdfCopy(srcDoc, New System.IO.FileStream(TargetFile, System.IO.FileMode.Create))
PdfCopyProvider.SetFullCompression()
srcDoc.Open()
For X = IntStr To IntEnd
impPage = PdfCopyProvider.GetImportedPage(Reader, X)
' ----- Ermitteln der Seitenauflösung und setzen für die neue Seite
PdfCopyProvider.SetPageSize(New Rectangle(0.0F, 0.0F, impPage.Width, impPage.Height))
' ----- PDF Seite in das neue Dokument einfügen
PdfCopyProvider.AddPage(impPage)
Next
' ----- neues PDF Dokument und den Reader schließen
srcDoc.Close()
Reader.Close()
Catch ex As Exception
Throw ex
End Try
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnAnfuegen.Click
If txtSeiten.Text = "" Then Exit Sub
' If cboArt._value = "" Then Exit Sub
If cboSendungen._value = "" Then Exit Sub
If Not checkSeiten() Then Exit Sub
For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls
If u.ACTIVE Then
Dim fi As New FileInfo(u.FILE_PATH)
'-------------
'------------- PDFs extrahieren und auf den Datenserver laden + Eintrag in tblAvisoAnhaenger
'-------------
Dim SendngsId As Integer = cboSendungen._value
Dim TMP_Path_Old = u.FILE_PATH
Dim TMP_Path_New = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(u.FILE_NAME, fi.Extension,, True, "SendungsAnhaenge")
If Not extractPagesFromPdf_Spire(u.FILE_PATH, TMP_Path_New, getPagesFromText()) Then Exit Sub
'Hochladen in den Datenserver und anfügen in die Tbl Anhänge mit der SendungsId
saveToDS(AvisoId, u.FILE_NAME, TMP_Path_New, cboArt._value, u.FILE_TYPE,,,, SendngsId)
'-------------
'------------- PDFs aus der original Datei löschen
'-------------
' tryDelete(TMP_Path_New)
If cbxDelPDF.Checked Then
If cbxDelPDF.Checked Then
TMP_Path_New = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(u.FILE_NAME, fi.Extension,, True, "SendungsAnhaenge")
Dim PagesLeft = 0
If removePagesFromPdf_Spire(u.FILE_PATH, TMP_Path_New, getPagesFromText(), PagesLeft, False) Then
If PagesLeft = 0 Then
delFromDS(u.FILE_DOCID)
flpnlAviso.Controls.Remove(u)
Else
Dim destPath = ""
If saveChangeToDS_daId(u.FILE_DOCID, TMP_Path_New, destPath) Then
tryDelete(TMP_Path_Old)
u.FILE_PATH = destPath
End If
End If
End If
End If
initLocationViewer("")
If flpnlAviso.Controls.Count > 0 Then
DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me()
End If
End If
'-------------
End If
Next
clearPnlAnfuegen()
' initSendungen()
initFlpANH_LIST()
End Sub
Private Sub Button1_ClickALL(sender As Object, e As EventArgs) Handles btnAnfuegenAll.Click
If cboSendungen._value = "" Then Exit Sub
For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls
If u.ACTIVE Then
Dim fi As New FileInfo(u.FILE_PATH)
'-------------
'------------- PDFs extrahieren und auf den Datenserver laden + Eintrag in tblAvisoAnhaenger
'-------------
Dim TMP_Path_New = u.FILE_PATH
Dim SendngsId As Integer = cboSendungen._value
'Hochladen in den Datenserver und anfügen in die Tbl Anhänge mit der SendungsId
' saveToDS(u.FILE_NAME, TMP_Path_New, cboArt._value, u.FILE_TYPE,,, SendngsId)
Dim ANH = New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(u.FILE_ANHID)
If cbxDelPDF.Checked Then
ANH.anh_SendungsId = SendngsId
ANH.SAVE() 'Eintrag wird überschreiben
flpnlAviso.Controls.Remove(u)
If cbxDelPDF.Checked Then tryDelete(u.FILE_PATH)
initLocationViewer("")
If flpnlAviso.Controls.Count > 0 Then
DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me()
End If
Else
ANH.anh_SendungsId = SendngsId
ANH.anh_id = -1 'neuer Eintrag
ANH.SAVE()
End If
End If
Next
clearPnlAnfuegen()
' initSendungen()
initFlpANH_LIST()
End Sub
Sub clearPnlAnfuegen()
MyTextBox2.Text = ""
txtDateiname.Text = ""
txtSeiten.Text = ""
cboArt.Text = ""
txtSeiten.Focus()
End Sub
Sub tryDelete(TMP_Path_New)
Try
File.Delete(TMP_Path_New)
Catch ex As Exception
End Try
End Sub
Public Sub DeletePages(ByVal pageRange As String, ByVal SourcePdfPath As String, ByVal OutputPdfPath As String, ByVal Optional Password As String = "")
Dim pagesToDelete As New List(Of Integer)
If pageRange.IndexOf(",") <> -1 Then
Dim tmpHold As String() = pageRange.Split(","c)
For Each nonconseq As String In tmpHold
If nonconseq.IndexOf("-") <> -1 Then
Dim rangeHold As String() = nonconseq.Split("-"c)
For i As Integer = Convert.ToInt32(rangeHold(0)) To Convert.ToInt32(rangeHold(1))
pagesToDelete.Add(i)
Next
Else
pagesToDelete.Add(Convert.ToInt32(nonconseq))
End If
Next
Else
If pageRange.IndexOf("-") <> -1 Then
Dim rangeHold As String() = pageRange.Split("-"c)
For i As Integer = Convert.ToInt32(rangeHold(0)) To Convert.ToInt32(rangeHold(1))
pagesToDelete.Add(i)
Next
Else
pagesToDelete.Add(Convert.ToInt32(pageRange))
End If
End If
Dim doc As Document = New Document()
Dim reader As PdfReader = New PdfReader(SourcePdfPath, New System.Text.ASCIIEncoding().GetBytes(Password))
Using memoryStream As MemoryStream = New MemoryStream()
Dim writer As PdfWriter = PdfWriter.GetInstance(doc, memoryStream)
doc.Open()
doc.AddDocListener(writer)
For p As Integer = 1 To reader.NumberOfPages
If pagesToDelete.FindIndex(Function(s) s = p) <> -1 Then
Continue For
End If
doc.SetPageSize(reader.GetPageSize(p))
doc.NewPage()
Dim cb As PdfContentByte = writer.DirectContent
Dim pageImport As pdf.PdfImportedPage = writer.GetImportedPage(reader, p)
Dim rot As Integer = reader.GetPageRotation(p)
If rot = 90 OrElse rot = 270 Then
cb.AddTemplate(pageImport, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(p).Height)
Else
cb.AddTemplate(pageImport, 1.0F, 0, 0, 1.0F, 0, 0)
End If
Next
reader.Close()
File.WriteAllBytes(OutputPdfPath, memoryStream.ToArray())
doc.Close()
End Using
End Sub
Function getPagesFromText() As List(Of Integer)
Dim List As New List(Of Integer)
Dim split = txtSeiten.Text.Split(",")
For Each s In split
If s.Contains("-") Then
Dim s_vb = s.Split("-")
Dim von = CInt(s_vb(0))
Dim bis = CInt(s_vb(1))
For page = von To bis
Dim anfuegen = True
For Each l In List
If l = page Then
anfuegen = False
End If
Next
If anfuegen Then List.Add(page)
Next
Else
If IsNumeric(s) Then List.Add(s)
End If
Next
Return List
End Function
Public Function removePagesFromPdf_Spire(ByVal sourceFile As String, ByVal destinationFile As String, pagesToDelete As List(Of Integer), ByRef PagesLeft As Integer, Optional delSource As Boolean = False) As Boolean
Try
PagesLeft = 0
Dim pdf As New Spire.Pdf.PdfDocument()
pdf.LoadFromFile(sourceFile)
' Dim r As PdfReader = New PdfReader(sourceFile)
Dim pagesToKeep As New List(Of Integer)
For p = 0 To pdf.Pages.Count - 1 ' r.NumberOfPages
Dim del = False
For Each i In pagesToDelete
If p = (i - 1) Then
del = True : Exit For
End If
Next
If Not del Then
pagesToKeep.Add(p)
End If
Next
Dim pdf1 As New Spire.Pdf.PdfDocument()
Dim page As Spire.Pdf.PdfPageBase
For Each p In pagesToKeep
Dim pageInt = p - 1 ' Nciht SeitenNr. sonder Aufzählung
If pageInt >= 0 And pageInt < pdf.Pages.Count Then
page = pdf1.Pages.Add(pdf.Pages(p).Size, New Spire.Pdf.Graphics.PdfMargins(0))
pdf.Pages(p).CreateTemplate().Draw(page, New System.Drawing.PointF(0, 0))
PagesLeft += 1
End If
Next
pdf1.SaveToFile(destinationFile)
pdf.Dispose()
pdf1.Dispose()
If delSource Then tryDelete(sourceFile)
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
Return False
End Try
Return True
End Function
Public Function extractPagesFromPdf_Spire(ByVal sourceFile As String, ByVal destinationFile As String, pagesToExtract As List(Of Integer)) As Boolean
Try
Dim pdf As New Spire.Pdf.PdfDocument()
pdf.LoadFromFile(sourceFile)
Dim pdf1 As New Spire.Pdf.PdfDocument()
Dim page As Spire.Pdf.PdfPageBase
For Each p In pagesToExtract
Dim pageInt = p - 1 ' Nciht SeitenNr. sonder Aufzählung
If pageInt >= 0 And pageInt < pdf.Pages.Count Then
page = pdf1.Pages.Add(pdf.Pages(pageInt).Size, New Spire.Pdf.Graphics.PdfMargins(0))
pdf.Pages(pageInt).CreateTemplate().Draw(page, New System.Drawing.PointF(0, 0))
End If
Next
pdf1.SaveToFile(destinationFile)
'MsgBox("P: " &pdf.Pages.Count)
'Dim pdf1 As New Spire.Pdf.PdfDocument()
''Dim page As New Spire.Pdf.PdfPageBase
''For i As Integer = 0 To 4
'For Each p In pagesToKeep
' pdf1.Pages.Add(pdf.Pages(p).Size, New Spire.Pdf.Graphics.PdfMargins(0))
' 'Dim page =
' 'pdf.Pages(p).CreateTemplate().Draw(page, New System.Drawing.PointF(0, 0))
' MsgBox(p)
'Next
'pdf1.SaveToFile(destinationFile)
'Using fs As FileStream = New FileStream(destinationFile, FileMode.Create, FileAccess.Write, FileShare.None)
' Using doc As Document = New Document()
' Using w As PdfWriter = PdfWriter.GetInstance(doc, fs)
' doc.Open()
' For Each page As Integer In pagesToKeep
' doc.NewPage()
' w.DirectContent.AddTemplate(w.GetImportedPage(r, page), 0, 0)
' PagesLeft += 1
' Next
' doc.Close()
' End Using
' End Using
'End Using
pdf.Dispose()
pdf1.Dispose()
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
Return False
End Try
Return True
End Function
Public Sub removePagesFromPdf(ByVal sourceFile As String, ByVal destinationFile As String, pagesToDelete As List(Of Integer), ByRef PagesLeft As Integer)
Try
PagesLeft = 0
Dim r As PdfReader = New PdfReader(sourceFile)
Dim pagesToKeep As New List(Of Integer)
For p = 1 To r.NumberOfPages
Dim del = False
For Each i In pagesToDelete
If p = i Then
del = True : Exit For
End If
Next
If Not del Then
pagesToKeep.Add(p)
End If
Next
Using fs As FileStream = New FileStream(destinationFile, FileMode.Create, FileAccess.Write, FileShare.None)
Using doc As Document = New Document()
Using w As PdfWriter = PdfWriter.GetInstance(doc, fs)
doc.Open()
For Each page As Integer In pagesToKeep
doc.NewPage()
w.DirectContent.AddTemplate(w.GetImportedPage(r, page), 0, 0)
PagesLeft += 1
Next
doc.Close()
End Using
End Using
End Using
Catch ex As Exception
End Try
End Sub
Private Sub txtSeiten_TextChanged(sender As Object, e As EventArgs) Handles txtSeiten.TextChanged
txtSeiten.BackColor = Color.White
If txtSeiten.Text = "" Then Exit Sub
If checkSeiten() Then
txtSeiten.BackColor = Color.White
Else
txtSeiten.BackColor = Color.MistyRose
End If
End Sub
Function checkSeiten()
txtSeiten.Text.Replace(";", ",")
' If txtSeiten.Text.Contains(",") Then
Dim split = txtSeiten.Text.Split(",")
For Each s In split
If s.Contains("-") Then
Dim s_vb = s.Split("-")
Dim von = s_vb(0)
Dim bis = s_vb(1)
' Dim bis = ""
'If s_vb.Count > 0 Then bis = s_vb(1)
If Not IsNumeric(von) Then Return False
If Not IsNumeric(bis) Then Return False
Else
If Not IsNumeric(s) Then Return False
End If
Next
' Else
' If Not IsNumeric(txtSeiten.Text) Then Return False
' End If
Return True
End Function
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
deleteActiveElement(flpnlAviso)
End Sub
Sub deleteActiveElement(flpnl As FlowLayoutPanel)
If flpnl Is Nothing Then Exit Sub
For Each u As usrCntlSendungAnhangElement In flpnl.Controls
If u.ACTIVE Then
If vbYes = MsgBox("Möchten Sie das Element löschen?", vbYesNoCancel) Then
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(u.FILE_DOCID)
If DS.DELETE_COMPLETE Then
flpnl.Controls.Remove(u)
initLocationViewer("")
If flpnl.Controls.Count > 0 Then
DirectCast(flpnl.Controls(0), usrCntlSendungAnhangElement).CLICK_Me()
End If
End If
End If
End If
Next
End Sub
Private Sub frmSendungAnhangImport_Load(sender As Object, e As EventArgs) Handles Me.Load
WebBrowser1.Navigate("")
flpnlAviso.Controls.Clear()
flpnlSendungen.Controls.Clear()
cboArt.Items.Clear()
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ATR", "ATR"))
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Rechnung", "Rechnung"))
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("CMR", "CMR"))
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Auftrag", "Auftrag"))
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Packliste", "Packliste"))
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Sonstiges", "Sonstiges"))
initSendungen()
cboSendungen.changeItem(-1)
End Sub
Private Sub frmSendungAnhangImport_Shown(sender As Object, e As EventArgs) Handles Me.Shown
txtSeiten.Focus()
End Sub
Private Sub txtSeiten_KeyDown(sender As Object, e As KeyEventArgs) Handles txtSeiten.KeyDown, cboArt.KeyDown
If e.KeyCode = Keys.Return Then
btnAnfuegen.PerformClick()
End If
End Sub
Sub initSendungen()
cboSendungen.Items.Clear()
' cboSendungen.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Allgemein", -1))
VERAG_PROG_ALLGEMEIN.cSendungen.LOAD_LIST(SENDUNG_LIST, CURRENT_INDEX, AvisoId) 'LÄDT alle SENDUNGSDATEN
Dim cnt = 1
For Each s In SENDUNG_LIST
cboSendungen.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem(cnt & ". " & s.tblSnd_Empfaenger & " (" & s.tblSnd_Abfertigungsart_ID & ")", s.tblSnd_SendungID))
Next
End Sub
Private Sub cboSendungen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboSendungen.SelectedIndexChanged
MyTextBox2.Text = cboSendungen.Text
flpnlSendungen.Controls.Clear()
initFlpANH_LIST()
End Sub
Sub initFlpANH_LIST()
Dim ANH_LIST As New List(Of VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge)
'If cboSendungen._value > 0 Then
' VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge.LOAD_LIST_BySendung(ANH_LIST, cboSendungen._value) 'LÄDT alle Aviso-Anhänge
'Else
' VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge.LOAD_LIST_ByAviso(ANH_LIST, AvisoId) 'LÄDT alle Sendungs-Anhänge
'End If
VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge.LOAD_LIST_ByAviso(ANH_LIST, AvisoId) 'LÄDT alle Aviso-Anhänge
flpnlSendungen.Controls.Clear
flpnlAviso.Controls.Clear()
For Each a In ANH_LIST
Dim USRCNTL As New usrCntlSendungAnhangElement
USRCNTL.FILE_PATH = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(a.anh_docId)
USRCNTL.FILE_NAME = a.anh_Name
USRCNTL.FILE_TYPE = a.anh_Typ
USRCNTL.FILE_ANHID = a.anh_id
USRCNTL.FILE_DOCID = a.anh_docId
initElement(USRCNTL)
If If(a.anh_SendungsId, 0) > 0 Then
If cboSendungen._value <> "" AndAlso cboSendungen._value = a.anh_SendungsId Then
flpnlSendungen.Controls.Add(USRCNTL)
End If
Else
flpnlAviso.Controls.Add(USRCNTL)
End If
Next
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles btnAnfuegenAll.Click
clearPnlAnfuegen()
End Sub
Private Sub Button3_Click_1(sender As Object, e As EventArgs) Handles Button3.Click
If cboSendungen._value = "" Then Exit Sub
For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls
If u.ACTIVE Then
Dim ANH = New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(u.FILE_ANHID)
ANH.anh_SendungsId = Nothing
ANH.SAVE()
End If
Next
clearPnlAnfuegen()
' initSendungen()
initFlpANH_LIST()
End Sub
Public Sub DateiHochladenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateiHochladenToolStripMenuItem.Click
addData_SendungAnhangFD()
End Sub
Sub delFromDS(daId)
Dim ds As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(daId)
ds.DELETE_COMPLETE()
End Sub
Function saveChangeToDS_daId(daId, sourcePath, ByRef destPath) As Boolean
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(daId)
If Not DS.uploadDataToDATENSERVER(sourcePath) Then MsgBox("Fehler beim Speichern: Datenserver!") : Return False
If DS.da_id <= 0 Then MsgBox("Keine DocId!") : Return False
destPath = DS.GET_TOP1_PATH
'Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(AvisoId, DS.da_name, DS.da_id, cboArt._value, DS.da_name, Nothing)
'If Not ANH.SAVE Then MsgBox("Fehler beim Anhang speichern!") : Return False
Return True
End Function
Private Sub DateiScannenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateiScannenToolStripMenuItem.Click
Try
'If KdNr < 0 Then Exit Sub
Dim frmScan As New VERAG_PROG_ALLGEMEIN.frmScan("DirectScan")
frmScan.DefaultFileName = "Scan" ' Me._TEXT_PDF
If frmScan.ShowDialog(Me) = DialogResult.OK Then
If frmScan.ReturnValue IsNot Nothing Then
Dim Filename = frmScan.fileName
Dim TMP_Path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(Filename, ".pdf",, False, "SendungsAnhaenge")
File.WriteAllBytes(TMP_Path, frmScan.ReturnValue)
Dim da_id = -1
Dim anhId = -1
Dim destPath = ""
If saveToDS(AvisoId, Filename, TMP_Path, "", "PDF", da_id, anhId, destPath) Then
addUsrcnlToPnl(destPath, da_id, anhId, Filename, "PDF")
End If
'addUsrcnlToPnl(TMP_Path)
End If
End If
Catch ex As Exception
MsgBox("FEHLER Scan: " & ex.Message & ex.StackTrace)
End Try
End Sub
Sub addUsrcnlToPnl(TMP_Path, dicId, anhId, Optional filename = "", Optional Typ = "")
Dim USRCNTL As New usrCntlSendungAnhangElement
Dim fi As New FileInfo(TMP_Path)
If filename = "" Then filename = fi.Name
USRCNTL.FILE_PATH = TMP_Path
USRCNTL.FILE_NAME = filename
USRCNTL.FILE_DOCID = dicId
USRCNTL.FILE_NAME = filename
USRCNTL.FILE_ANHID = anhId
USRCNTL.FILE_TYPE = Typ
initElement(USRCNTL)
flpnlAviso.Controls.Add(USRCNTL)
End Sub
Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
cntxt.Show(Cursor.Position)
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
deleteActiveElement(flpnlSendungen)
End Sub
Public Sub addData_SendungAnhangFD()
Dim fd As New OpenFileDialog
fd.Multiselect = True
If fd.ShowDialog = vbOK Then
For Each F_listItem In fd.FileNames
Dim fi As New FileInfo(F_listItem)
Dim filename = fi.Name
' Dim TMP_Path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(filename, fi.Extension,, False, "SendungsAnhaenge")
' MsgBox(TMP_Path)
' File.Copy(F_listItem, TMP_Path)
Dim da_id = -1
Dim anhId = -1
Dim destPath = ""
Dim Typ = ""
If getFileTypeValid(fi.Extension.Replace(".", ""), Typ) Then
If saveToDS(AvisoId, fi.Name, F_listItem, "", Typ, da_id, anhId, destPath) Then
addUsrcnlToPnl(destPath, da_id, anhId, filename, Typ)
End If
End If
Next
If flpnlAviso.Controls.Count > 0 Then DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me()
End If
End Sub
Public Sub addData_SendungAnhang(Path)
Dim fi As New FileInfo(Path)
Dim filename = fi.Name
Dim da_id = -1
Dim anhId = -1
Dim destPath = ""
Dim Typ = ""
If getFileTypeValid(fi.Extension.Replace(".", ""), Typ) Then
If saveToDS(AvisoId, fi.Name, Path, "", Typ, da_id, anhId, destPath) Then
addUsrcnlToPnl(destPath, da_id, anhId, filename, Typ)
End If
End If
End Sub
Public Shared Function getFileTypeValid(extension, ByRef Typ) As Boolean
Select Case extension
Case "PDF" : Typ = "PDF"
Case "XLS", "XLXS" : Typ = "EXCEL"
Case "DOC", "DOCX" : Typ = "WORD"
Case "TXT" : Typ = "TEXT"
Case "JPEG", "JPG", "GIF", "TFF" : Typ = "BILD"
Case "EXE" : MsgBox("Aviso-Anhänge: Ungültiges Datei-Format!") : Return False
Case Else : Typ = "SONSTIGES"
End Select
Return True
End Function
Public Shared Function saveToDS(AvisoId, fileName, sourcePath, Art, Typ, Optional ByRef da_id = -1, Optional anhId = -1, Optional ByRef destPath = "", Optional SendungsId = Nothing) As Boolean
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "AVISO_ANHAENGE", AvisoId, Now.ToString("ddMMyy_HHmmss.sss"), "", fileName, -1, False)
If Not DS.uploadDataToDATENSERVER(sourcePath) Then MsgBox("Fehler beim Speichern: Datenserver!") : Return False
If DS.da_id <= 0 Then MsgBox("Keine DocId!") : Return False
da_id = DS.da_id
destPath = DS.GET_TOP1_PATH
Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(AvisoId, fileName, DS.da_id, Art, Typ, SendungsId)
If Not ANH.SAVE Then MsgBox("Fehler beim Anhang speichern!") : Return False
anhId = ANH.anh_id
Return True
End Function
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
BrowserLoaded = True
End Sub
End Class