Monorepo/GUIs.ZooFlow/Search/SearchLoader.vb
2022-06-02 16:45:10 +02:00

182 lines
6.9 KiB
VB.net

Imports System.IO
Imports System.Xml.Serialization
Imports DevExpress.Utils
Imports DevExpress.Utils.Svg
Imports DigitalData.GUIs.ZooFlow.frmSearchFlow
Imports DigitalData.GUIs.ZooFlow.Search.SearchToken
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Language
Namespace Search
Public Class SearchLoader
Inherits BaseClass
Private Const CUSTOM_SEARCH_DIRECTORY = ""
Private ReadOnly Images As SvgImageCollection
Private ReadOnly Config As ConfigManager(Of UIConfig)
'Private ReadOnly Serializer As New XmlSerializer(GetType(CustomSearch))
Public Property CustomSearches As List(Of CustomSearch)
Public Sub New(pLogConfig As LogConfig, pConfig As ConfigManager(Of UIConfig), pSvgImages As SvgImageCollection)
MyBase.New(pLogConfig)
Images = pSvgImages
Config = pConfig
End Sub
Private Function GetSearchDirectoryPath() As String
Dim oConfigPath As String = Config.UserConfigPath
Dim oConfigDirectory As String = IO.Path.Combine(IO.Path.GetDirectoryName(oConfigPath), CUSTOM_SEARCH_DIRECTORY)
If IO.Directory.Exists(oConfigDirectory) = False Then
Try
IO.Directory.CreateDirectory(oConfigDirectory)
Catch ex As Exception
Logger.Error(ex)
End Try
End If
Return oConfigDirectory
End Function
Public Sub CreateCustomSearch(pTitle As String, pDescription As String, pTokens As List(Of Token), pImage As String)
Dim oSearch As New CustomSearch With {
.Name = pTitle,
.Description = pDescription,
.Tokens = pTokens,
.Image = Images.Item(pImage)
}
CustomSearches.Add(oSearch)
'Dim oDirectoryPath As String = GetSearchDirectoryPath()
'Dim oFilePath As String = IO.Path.Combine(oDirectoryPath, Utils.ConvertTextToSlug(pTitle))
'Dim oBuffer As Byte() = SerializeSearch(oSearch)
'IO.File.WriteAllBytes(oFilePath, oBuffer)
End Sub
Public Function LoadSearches() As List(Of SavedSearch)
Dim oSearches As New List(Of SavedSearch)
Dim oCustomSearches = LoadCustomSearches()
Dim oPredefinedSearches = LoadPredefinedSearches()
Return oSearches.
Concat(oCustomSearches).
Concat(oPredefinedSearches).
ToList()
End Function
Public Function LoadCustomSearches() As List(Of SavedSearch)
Return New List(Of SavedSearch)
End Function
Public Function LoadPredefinedSearches() As List(Of SavedSearch)
Return New List(Of SavedSearch) From {
New PredefinedDateSearch() With {
.Name = "Heute",
.Description = "Dokumente, die heute abgelegt wurden",
.DateConstraint = SearchRunner.DateConstraint.Today,
.Image = Images.Item("today")
},
New PredefinedDateSearch() With {
.Name = "Gestern",
.Description = "Dokumente, die gestern abgelegt wurden",
.DateConstraint = SearchRunner.DateConstraint.Yesterday,
.Image = Images.Item("yesterday")
},
New PredefinedDateSearch() With {
.Name = "Letzte 7 Tage",
.Description = "Dokumente, die in den letzten 7 Tagen abgelegt wurden",
.DateConstraint = SearchRunner.DateConstraint.Last7Days,
.Image = Images.Item("week")
},
New PredefinedDateSearch() With {
.Name = "Dieser Monat",
.Description = "Dokumente, die in diesem Monat abgelegt wurden",
.DateConstraint = SearchRunner.DateConstraint.CurrentMonth,
.Image = Images.Item("month")
},
New PredefinedDateSearch() With {
.Name = "Letzter Monat",
.Description = "Dokumente, die im letzten Monat abgelegt wurden",
.DateConstraint = SearchRunner.DateConstraint.LastMonth,
.Image = Images.Item("month")
},
New PredefinedDateSearch() With {
.Name = "Dieses Jahr",
.Description = "Dokumente, die in diesem Jahr abgelegt wurden",
.DateConstraint = SearchRunner.DateConstraint.CurrentYear,
.Image = Images.Item("year")
},
New PredefinedDateSearch() With {
.Name = "Letztes Jahr",
.Description = "Dokumente, die im letzten Jahr abgelegt wurden",
.DateConstraint = SearchRunner.DateConstraint.LastYear,
.Image = Images.Item("year")
}
}
End Function
'Private Function SerializeSearch(pSearch As CustomSearch) As Byte()
' Try
' Using oStream As New MemoryStream
' Serializer.Serialize(oStream, pSearch)
' Return oStream.ToArray()
' End Using
' Catch ex As Exception
' Logger.Error(ex)
' Return Nothing
' End Try
'End Function
'Private Function DeserializeSearch(pBytes As Byte()) As CustomSearch
' Try
' Using oStream As New MemoryStream(pBytes)
' Return Serializer.Deserialize(oStream)
' End Using
' Catch ex As Exception
' Logger.Error(ex)
' Return Nothing
' End Try
'End Function
Public Class PredefinedSQLSearch
Public Property SQLCommand As String
End Class
Public Class PredefinedDateSearch
Inherits SavedSearch
Public Overrides Property GroupText As String = "Vordefiniert"
Public Property DateConstraint As SearchRunner.DateConstraint
End Class
Public Class CustomSearch
Inherits SavedSearch
Public Overrides Property GroupText As String = "Eigene"
Public Tokens As New List(Of Token)
End Class
Public MustInherit Class SavedSearch
Public Property Name As String
Public Property Description As String
Public Property Image As SvgImage
Public Property Count As Integer = 0
Public Overridable Property GroupText As String = "Vordefiniert"
Public ReadOnly Property DisplayName As String
Get
Return Name
End Get
End Property
End Class
End Class
End Namespace