Files
LicenceManager/SearchKeyPage/SearchKeyPageVM.vb
T
Renzo Lanza 4e40b7e61c LicenseManager 2.1b2:
- Aggiunto KeyID in KeyTable nel DB
- ClientID può essere NULL in KeyTable nel DB
- NewKeyPage: impostato Generated Number/LockID in base a IsDongle
- Aggiunto Stato Key 'InDepositoEgt'
- Sistemate comboBox e textBox delle KeyPages e di UpdateLicencePage
- Avviso Number già esistente nella creazione Key
2019-02-22 16:31:54 +00:00

274 lines
8.4 KiB
VB.net

Imports System.Collections.ObjectModel
Imports EgtWPFLib5
Imports MySql.Data.MySqlClient
Public Class SearchKeyPageVM
Inherits KeyPageVM
#Region "FIELDS & PROPERTIES"
Private m_SelSearchResult As SearchKey
Public Property SelSearchResult As SearchKey
Get
Return m_SelSearchResult
End Get
Set(value As SearchKey)
m_SelSearchResult = value
End Set
End Property
Private m_Number As Integer
Public Property Number As String
Get
Return If(m_Number <> 0, m_Number.ToString(), "")
End Get
Set(value As String)
If Not String.IsNullOrWhiteSpace(value) Then
If Not Integer.TryParse(value, m_Number) Then
m_Number = Nothing
End If
Else
m_Number = Nothing
End If
End Set
End Property
Private m_SearchResult As ObservableCollection(Of SearchKey)
Public ReadOnly Property SearchResult As ObservableCollection(Of SearchKey)
Get
Return m_SearchResult
End Get
End Property
Private m_StateList As New List(Of String)({"Consegnata", "InDeposito", "InDepositoEgt", "Guasta", "---ANY---"}) ' Key.KeyState)({Key.KeyState.Consegnata, Key.KeyState.InDeposito, Key.KeyState.Guasta, Key.KeyState.ANY})
Public ReadOnly Property StateList As List(Of String) ' Key.KeyState)
Get
Return m_StateList
End Get
End Property
Friend Sub SetStateList(value As List(Of String)) ' Key.KeyState))
m_StateList = value
End Sub
Private m_SelState As Key.KeyState
Public Property SelState As String
Get
Return m_SelState.ToString()
End Get
Set(value As String) ' Key.KeyState)
'm_SelState = value
If (value.Equals(" ")) Then m_SelState = Nothing
If (value.Equals("Consegnata")) Then m_SelState = Key.KeyState.Consegnata
If (value.Equals("InDeposito")) Then m_SelState = Key.KeyState.InDeposito
If (value.Equals("InDepositoEgt")) Then m_SelState = Key.KeyState.InDepositoEgt
If (value.Equals("Guasta")) Then m_SelState = Key.KeyState.Guasta
If (value.Equals("---ANY---")) Then m_SelState = Key.KeyState.ANY
NotifyPropertyChanged("SelState")
End Set
End Property
' Definizione comandi
Private m_cmdSearch As Command
Private m_cmdCancel As Command
Private m_cmdUpdate As Command
#Region "Messages"
Public ReadOnly Property SearchKeyMsg As String
Get
Return "Search key"
End Get
End Property
Public ReadOnly Property SearchMsg As String
Get
Return "Search"
End Get
End Property
Public ReadOnly Property CancelMsg As String
Get
Return "Cancel"
End Get
End Property
Public ReadOnly Property UpdateMsg As String
Get
Return "Update"
End Get
End Property
#End Region ' Messages
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Sub New()
MyBase.New()
' Imposto riferimento nella mappa
Map.SetRefSearchKeyPageVM(Me)
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Friend Sub InitSearchKeyPage()
MyBase.InitKeyPage()
' Svuoto campi
m_Number = 0
NotifyPropertyChanged("Number")
' Nascondo la GeneratedLockID
GeneratedLockID_Visibility = Visibility.Collapsed
m_SearchResult = New ObservableCollection(Of SearchKey)()
NotifyPropertyChanged("SearchResult")
m_SelState = Key.KeyState.ANY
NotifyPropertyChanged("SelState")
End Sub
#End Region ' METHODS
#Region "COMMANDS"
#Region "Search"
' Returns a command that manage the MainWindow_Unloaded command
Public ReadOnly Property SearchKey_Command As ICommand
Get
If m_cmdSearch Is Nothing Then
m_cmdSearch = New Command(AddressOf Search)
End If
Return m_cmdSearch
End Get
End Property
Public Sub Search(ByVal param As Object)
' Cerco nella tabella Key
Dim Query As String = "SELECT * FROM " & DB_KEY & " LEFT JOIN " & DB_CLIENT & " ON " & DB_KEY & "." & DB_CLIENTID & " = " & DB_CLIENT & "." & DB_CLIENTID & " "
Dim bFirstWhere As Boolean = True
If Not String.IsNullOrWhiteSpace(Number) OrElse
Not IsNothing(SelClient) OrElse
Not IsNothing(SelIsDongle) OrElse
Not IsNothing(SelState) OrElse
Not String.IsNullOrWhiteSpace(LockID) Then
Query &= "WHERE "
If Not IsNothing(SelIsDongle) And (SelIsDongle = "Hardware" Or SelIsDongle = "Software") Then ' If Not IsNothing(SelIsDongle) Then
EvalWhere(bFirstWhere, Query)
Query &= DB_ISDONGLE & " = "
If (GetSelIsDongle() = 1) Then Query &= 1 & " " Else Query &= 0 & " "
End If
If m_Number <> 0 Then
EvalWhere(bFirstWhere, Query)
Query &= DB_NUMBER & " LIKE '%" & Number & "%' "
End If
If Not String.IsNullOrWhiteSpace(LockID) Then
EvalWhere(bFirstWhere, Query)
Query &= DB_LOCKID & " LIKE '%" & LockID & "%' "
End If
If Not IsNothing(SelClient) Then
If Not SelClient.Name.Equals("---ANY---") Then
EvalWhere(bFirstWhere, Query)
Query &= DB_NAME & " LIKE '" & SelClient.Name & "%' "
End If
End If
If Not IsNothing(SelState) And Not SelState.Equals(Key.KeyState.ANY.ToString()) Then ' If Not IsNothing(SelState) Then
EvalWhere(bFirstWhere, Query)
Query &= DB_STATE & " LIKE '" & SelState.ToString() & "%' "
End If
Query = Query.TrimEnd(","c, " "c)
Dim suffixToRemove As String = " WHERE"
If Not IsNothing(Query) And Not IsNothing(suffixToRemove) And Query.EndsWith(suffixToRemove) Then
Query = Query.Substring(0, Query.Length - suffixToRemove.Length)
End If
End If
m_SearchResult = New ObservableCollection(Of SearchKey)(ManageDb.ExecuteSearchKeyQuery(Query))
If (m_SearchResult.Count = 0) Then
MessageBox.Show("Nessun risultato per i filtri impostati")
End If
NotifyPropertyChanged("SearchResult")
End Sub
Private Sub EvalWhere(ByRef bFirst As Boolean, ByRef Query As String)
If bFirst Then
bFirst = False
Else
Query &= " AND "
End If
End Sub
#End Region ' Search
#Region "Cancel"
' Returns a command that manage the MainWindow_Unloaded command
Public ReadOnly Property Cancel_Command As ICommand
Get
If m_cmdCancel Is Nothing Then
m_cmdCancel = New Command(AddressOf Cancel)
End If
Return m_cmdCancel
End Get
End Property
Public Sub Cancel(ByVal param As Object)
' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
Map.refMainWindowVM.SelProjectMode = MainWindowVM.ProjectModeOpt.MAINMENU
End Sub
#End Region ' Cancel
#Region "Update"
' Returns a command that manage the MainWindow_Unloaded command
Public ReadOnly Property UpdateKey_Command As ICommand
Get
If m_cmdUpdate Is Nothing Then
m_cmdUpdate = New Command(AddressOf Update)
End If
Return m_cmdUpdate
End Get
End Property
Public Sub Update(ByVal param As Object)
If Not IsNothing(m_SelSearchResult) Then
' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
Map.refUpdateKeyPageVM.Key = m_SelSearchResult
Map.refMainWindowVM.SelProjectMode = MainWindowVM.ProjectModeOpt.UPDATEKEY
Else
MessageBox.Show("Non è stata selezionata nessuna chiave")
End If
End Sub
#End Region ' Update
#End Region ' COMMANDS
End Class
Public Class SearchKey
Inherits Key
Private m_ClientName As String
Public ReadOnly Property ClientName As String
Get
Return m_ClientName
End Get
End Property
Sub New(ClientReader As MySqlDataReader)
MyBase.New(ClientReader)
'm_ClientName = CType(ClientReader(DB_NAME), String)
If (Not ClientReader(DB_NAME).Equals(DBNull.Value)) Then
m_ClientName = CType(ClientReader(DB_NAME), String)
Else
m_ClientName = Nothing
End If
End Sub
End Class