Imports Therefore.API
Public Class cTherefore

    Shared Function saveFileTo_ImportFolder(Path As String, FilialeAbfertigungsNr As String, AvisoId As String, FirmaId As String, Optional deleteFileAfterImport As Boolean = False)
        FilialeAbfertigungsNr = FilialeAbfertigungsNr.Replace(";", " ")
        FilialeAbfertigungsNr = FilialeAbfertigungsNr.Replace("/", " ")
        FilialeAbfertigungsNr = FilialeAbfertigungsNr.Replace("-", " ")
        if FilialeAbfertigungsNr.Length> 30 then FilialeAbfertigungsNr=FilialeAbfertigungsNr.ToString.Substring(0,30)
        Select Case FirmaId
            Case 7
                Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Atilla ab Juni 2011",, deleteFileAfterImport)
            Case 21,22,23
                'Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import ab Jänner 2021 UNISPED", "UNISPED\Import ab Jänner 2021 UNISPED DE", deleteFileAfterImport)
                'Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import ab Jänner 2021 UNISPED", "Import ab Jänner 2021 UNISPED DE", deleteFileAfterImport)

                Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import ab Jänner 2021 UNISPED_DE", "UNISPED Zollakten", deleteFileAfterImport)
                  'Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, 394, 394, deleteFileAfterImport)
            Case 1, 11, 20, 17 ', 15 
                '   Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import an Jänner 2019", "Import ab Jänner 2019", deleteFileAfterImport)
                'Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import ab Jänner 2021", "Import ab Jänner 2021", deleteFileAfterImport)
                Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import ab Jänner 2022", "Import ab Jänner 2022", deleteFileAfterImport)
                '  Return saveFileTo_ImportFolderCat(Path, FilialeAbfertigungsNr, AvisoId, "Import ab Jänner 2020", "Import ab Jänner 2020", deleteFileAfterImport)
            Case Else
                Return False
        End Select
    End Function

    Shared Function saveFileTo_ImportFolderCat(Path As String, FilialeAbfertigungsNr As String, AvisoId As String, Category As String, Optional Category2 As String = "", Optional deleteFileAfterImport As Boolean = False)
        Try
            If Category2 = "" Then Category2 = Category
            Dim SQL As New SQL

            ' 1. Connect to the Therefore™ Server
            Dim server As New TheServer
            server.Connect(TheClientType.CustomApplication)

            ' 2. Create a new Therefore™ Document
            Dim doc As New TheDocument()

            ' 3. Create temporary File
            'Dim filename As String = ""
            'doc.Create(filename)

            ' 4A. Set Therefore™ Category by Number
            '  doc.IndexData.SetCategory(5, server) 
            ' or 4B. Set Therefore™ Category by Name
            doc.IndexData.SetCategory(Category2, server)

            ' 5. Add streams
            'doc.AddStream("D:\\TestAll\\TestDocs\\Scsi.doc", "", 0)
            'doc.AddStream("D:\\TestAll\\TestDocs\\TEST.xls", "", 0)
            ' 6. Set index data
            'Dim indexData As TheIndexData = doc.IndexData
            'indexData("String") = FilialeAbfertigungsNr
            'indexData("Eingabedatum") = Now.ToShortDateString
            'indexData("LKW_ID") = AvisoId

            'MsgBox(doc.IndexData.Count)
            ' 7. Archive the document 
            'Dim docNo As Integer = doc.Archive(server, 0)
            'Dim docNo As Integer = 0
            'Dim filenameNEW As String = doc.Retrieve(docNo, "", server)
            Dim TableName = ""
            If IsNumeric(Category) Then
                TableName = "TheCat" & Category
                If SQL.getValueTxtBySql("SELECT count(*)  FROM [TheCategory] WHERE TableName='" & TableName & "'", "SCANCANON",,, "") = 0 Then
                    MsgBox("Therefore: Tabelle nicht gefunden: " & TableName)
                    Return False
                End If
            Else
                TableName = SQL.getValueTxtBySql("SELECT TOP 1 [TableName]   FROM [TheCategory] WHERE Title='" & Category & "'", "SCANCANON",,, "")
            End If

            Dim docNo As Integer = SQL.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1)  FROM  " & TableName & " WHERE [String] LIKE '" & FilialeAbfertigungsNr & "' ORDER BY [Eingabedatum] DESC", "SCANCANON",,, -1)
            '  MsgBox("docNo: " & docNo)
            Dim filename As String = ""
            If docNo <= 0 Then
                doc.Create(filename)

                doc.AddStream(Path, "", 0)
                Dim indexData As TheIndexData = doc.IndexData
                indexData("String") = FilialeAbfertigungsNr
                indexData("Eingabedatum") = Now.ToShortDateString
                indexData("LKW_ID") = AvisoId

                docNo = doc.Archive(server, 0)
            Else
                Dim folder = ""
                Dim VerionNo As Integer
                filename = doc.Retrieve(docNo, VerionNo, folder, server, False)

                Dim user As String = ""
                doc.CheckOut(server, False, user, VerionNo)

                doc.AddStream(Path, "", 0)
                doc.CheckIn(server)
            End If



            ' 8. Close Therefore™ document object
            doc.Close()

            ' 9. Delete the temporary file
            If deleteFileAfterImport Then System.IO.File.Delete(filename)

            ' 10. Optional: Print a success message on the console
            '   Console.WriteLine("Document successfully archived as " + docNo.ToString() + ".")
            Return True
        Catch ex As Exception
            MsgBox(ex.Message & ex.StackTrace)
        End Try
        Return False
    End Function

    'Shared Function saveFileTo_ImportFolder2(Path As String, FilialeAbfertigungsNr As Integer, AvisoId As Integer)
    '    Try

    '        ' 1. Connect to the Therefore™ Server
    '        Dim server As New TheServer
    '        server.Connect(TheClientType.CustomApplication)

    '        ' 2. Create a new Therefore™ Document
    '        Dim doc As New TheDocument()

    '        ' 3. Create temporary File
    '        Dim filename As String = ""
    '        doc.Create(filename)

    '        ' 4A. Set Therefore™ Category by Number
    '        '  doc.IndexData.SetCategory(5, server) 
    '        ' or 4B. Set Therefore™ Category by Name
    '        doc.IndexData.SetCategory("Import ab Jänner 2019", server)

    '        ' 5. Add streams
    '        'doc.AddStream("D:\\TestAll\\TestDocs\\Scsi.doc", "", 0)
    '        'doc.AddStream("D:\\TestAll\\TestDocs\\TEST.xls", "", 0)
    '        doc.AddStream(Path, "", 0)
    '        ' 6. Set index data

    '        '    MsgBox(doc.IndexData.Count)
    '        ' 7. Archive the document 
    '        Dim docNo As Integer = doc.Archive(server, 0)
    '        MsgBox(docNo)

    '        ' 8. Close Therefore™ document object
    '        doc.Close()

    '        ' 9. Delete the temporary file
    '        System.IO.File.Delete(filename)

    '        ' 10. Optional: Print a success message on the console
    '        '   Console.WriteLine("Document successfully archived as " + docNo.ToString() + ".")

    '    Catch ex As Exception
    '        MsgBox(ex.Message & ex.StackTrace)
    '    End Try
    'End Function
End Class
