Imports System.Collections.ObjectModel Imports System.Data.SQLite Imports EgtWPFLib5 Imports MySql.Data.MySqlClient Public Class SearchClientPageVM Inherits ClientPageVM #Region "FIELDS & PROPERTIES" Private m_SelSearchResult As SearchClient Public Property SelSearchResult As SearchClient Get Return m_SelSearchResult End Get Set(value As SearchClient) m_SelSearchResult = value End Set End Property Private m_SearchResult As ObservableCollection(Of SearchClient) Public ReadOnly Property SearchResult As ObservableCollection(Of SearchClient) Get Return m_SearchResult End Get End Property Private m_ResellerList As List(Of Reseller) Public ReadOnly Property ResellerList As List(Of Reseller) Get Return m_ResellerList End Get End Property Private m_SelReseller As Reseller Public Property SelReseller As Reseller Get Return m_SelReseller End Get Set(value As Reseller) m_SelReseller = value NotifyPropertyChanged("SelReseller") 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 SearchClientMsg As String Get Return "Search client" 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() ' Imposto riferimento nella mappa Map.SetRefSearchClientPageVM(Me) End Sub #End Region ' CONSTRUCTOR #Region "METHODS" Friend Sub InitSearchClientPage() MyBase.InitClientPage() ' Carico lista Reseller Dim Query As String = "SELECT * FROM " & DB_RESELLER m_ResellerList = ManageDb.ExecuteResellerQuery(Query) NotifyPropertyChanged("ResellerList") m_SearchResult = New ObservableCollection(Of SearchClient)() NotifyPropertyChanged("SearchResult") End Sub #End Region ' METHODS #Region "COMMANDS" #Region "Search" ' Returns a command that manage the MainWindow_Unloaded command Public ReadOnly Property SearchClient_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 Client Dim Query As String = "SELECT * FROM " & DB_CLIENT & " INNER JOIN " & DB_RESELLER & " ON " & DB_CLIENT & "." & DB_RESELLERID & " = " & DB_RESELLER & "." & DB_RESELLERID & " " Dim bFirstWhere As Boolean = True If Not String.IsNullOrWhiteSpace(Name) OrElse Not String.IsNullOrWhiteSpace(Email) OrElse Not IsNothing(SelReseller) Then Query &= "WHERE " If Not String.IsNullOrWhiteSpace(Name) Then EvalWhere(bFirstWhere, Query) Query &= DB_NAME & " LIKE '" & Name & "%' " End If If Not IsNothing(SelReseller) Then EvalWhere(bFirstWhere, Query) Query &= DB_RESELLERNAME & " LIKE '" & SelReseller.ResellerName & "%' " End If If Not IsNothing(Email) Then EvalWhere(bFirstWhere, Query) Query &= DB_EMAIL & " LIKE '" & Email & "%' " End If Query = Query.TrimEnd(","c, " "c) End If m_SearchResult = New ObservableCollection(Of SearchClient)(ManageDb.ExecuteSearchClientQuery(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 UpdateClient_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.refUpdateClientPageVM.IdToUpdate = m_SelSearchResult.ClientID Map.refMainWindowVM.SelProjectMode = MainWindowVM.ProjectModeOpt.UPDATECLIENT Else MessageBox.Show("Non è stato selezionato nessun cliente") End If End Sub #End Region ' Update #End Region ' COMMANDS End Class Public Class SearchClient Inherits Client Private m_ResellerName As String Public ReadOnly Property ResellerName As String Get Return m_ResellerName End Get End Property Sub New(ClientReader As MySqlDataReader) MyBase.New(ClientReader) m_ResellerName = CType(ClientReader(DB_RESELLERNAME), String) End Sub End Class