Imports EgtWPFLib5 Public Class NewKeyPageVM Inherits KeyPageVM #Region "FIELDS & PROPERTIES" Private Shadows m_Number As Integer Public Overloads Property Number As String Get Return m_Number.ToString() End Get Set(value As String) If Not String.IsNullOrWhiteSpace(value) AndAlso Not Integer.TryParse(value, m_Number) Then m_Number = 0 ' Costruisco GeneratedLockID string Dim sCompleteNumber As String = m_Number.ToString("D6") Dim sCompleteChar As String = sCompleteNumber sCompleteChar = sCompleteChar.Replace("0"c, "o"c) sCompleteChar = sCompleteChar.Replace("1"c, "a"c) sCompleteChar = sCompleteChar.Replace("2"c, "b"c) sCompleteChar = sCompleteChar.Replace("3"c, "c"c) sCompleteChar = sCompleteChar.Replace("4"c, "d"c) sCompleteChar = sCompleteChar.Replace("5"c, "e"c) sCompleteChar = sCompleteChar.Replace("6"c, "f"c) sCompleteChar = sCompleteChar.Replace("7"c, "g"c) sCompleteChar = sCompleteChar.Replace("8"c, "h"c) sCompleteChar = sCompleteChar.Replace("9"c, "i"c) Dim CompleteChar() As Char = sCompleteChar.ToCharArray() For I = 0 To sCompleteChar.Count - 1 If I Mod 2 = 1 Then CompleteChar(I) = Char.ToUpper(CompleteChar(I)) Else CompleteChar(I) = Char.ToLower(CompleteChar(I)) End If Next m_GeneratedLockID = "EGTECH-" & sCompleteNumber & "-" & CompleteChar NotifyPropertyChanged("GeneratedLockID") End Set End Property Private m_GeneratedLockID As String Public Overloads Property GeneratedLockID As String Get Return m_GeneratedLockID End Get Set(value As String) m_GeneratedLockID = value NotifyPropertyChanged("GeneratedLockID") End Set End Property Private m_LockID As String Public Shadows Property LockID As String Get Return m_LockID End Get Set(value As String) ' Se chiave software If (GetSelIsDongle() = 0) And Not String.IsNullOrWhiteSpace(value) Then ' Verifico se valore inserito già esistente Dim Query As String = "SELECT COUNT(" & DB_LOCKID & ") AS " & DB_MAXNUMBER & " FROM " & DB_KEY & " WHERE " & DB_LOCKID & " = '" & value & "'" Dim MaxLockID As Integer = ExecuteNumberQuery(Query) If ExecuteNumberQuery(Query) = 0 Then m_LockID = value ' Recupero ultimo Number di chiave software usato Query = "SELECT MAX(" & DB_NUMBER & ") AS " & DB_MAXNUMBER & " FROM " & DB_KEY & " WHERE " & DB_ISDONGLE & " = 0" m_Number = ExecuteNumberQuery(Query) ' Setto number m_Number += 1 m_GeneratedNumber = m_Number NotifyPropertyChanged("GeneratedNumber") Else MessageBox.Show("Il LockID inserito esiste già!!") m_LockID = value 'm_LockID = "" 'MyBase.NotifyPropertyChanged("LockID") End If End If NotifyPropertyChanged("LockID") End Set End Property Private m_GeneratedNumber As Integer Public Overloads Property GeneratedNumber As Integer Get Return m_GeneratedNumber End Get Set(value As Integer) m_GeneratedNumber = value NotifyPropertyChanged("GeneratedNumber") End Set End Property Private m_Note As String Public Overloads Property Note As String Get Return m_Note End Get Set(value As String) m_Note = value NotifyPropertyChanged("Note") End Set End Property Private m_Seriale As String Public Overloads Property Seriale As String Get Return m_Seriale End Get Set(value As String) m_Seriale = value NotifyPropertyChanged("Seriale") End Set End Property ' Definizione comandi Private m_cmdAddKey As Command Private m_cmdCancel As Command #Region "Messages" Public ReadOnly Property NewKeyMsg As String Get Return "New key" End Get End Property Public ReadOnly Property AddMsg As String Get Return "Add" End Get End Property Public ReadOnly Property CancelMsg As String Get Return "Close" End Get End Property #End Region ' Messages #End Region ' FIELDS & PROPERTIES #Region "CONSTRUCTOR" Sub New() ' Imposto riferimento nella mappa Map.SetRefNewKeyPageVM(Me) End Sub #End Region ' CONSTRUCTOR #Region "METHODS" Friend Sub InitNewKeyPage() ' Svuoto campi Number = Nothing NotifyPropertyChanged("Number") m_LockID = String.Empty NotifyPropertyChanged("LockID") ' Mostro la GeneratedLockID GeneratedLockID_Visibility = Visibility.Visible ' Carico valore di default IsDongle IsDongleList.Remove("---ANY---") SelIsDongle = String.Empty ' Carico lista Client Dim Query As String = "SELECT * FROM " & DB_CLIENT SetClientList(ManageDb.ExecuteClientQuery(Query)) NotifyPropertyChanged("ClientList") ' Carico valore di default State (InDeposito) StateList.Remove("---ANY---") SelState = String.Empty KeyDate = Date.Now NotifyPropertyChanged("KeyDate") m_Note = String.Empty NotifyPropertyChanged("Note") m_Seriale = String.Empty NotifyPropertyChanged("Seriale") End Sub #End Region ' METHODS #Region "COMMANDS" #Region "AddKey" ' Returns a command that manage the MainWindow_Unloaded command Public ReadOnly Property AddKey_Command As ICommand Get If m_cmdAddKey Is Nothing Then m_cmdAddKey = New Command(AddressOf AddKey) End If Return m_cmdAddKey End Get End Property Public Sub AddKey(ByVal param As Object) Dim Query As String = String.Empty ' Se chiave hardware If (GetSelIsDongle() = 1) Then '' Costruisco lockId 'Dim sCompleteNumber As String = m_Number.ToString("D6") 'Dim sCompleteChar As String = sCompleteNumber 'sCompleteChar = sCompleteChar.Replace("0"c, "o"c) 'sCompleteChar = sCompleteChar.Replace("1"c, "a"c) 'sCompleteChar = sCompleteChar.Replace("2"c, "b"c) 'sCompleteChar = sCompleteChar.Replace("3"c, "c"c) 'sCompleteChar = sCompleteChar.Replace("4"c, "d"c) 'sCompleteChar = sCompleteChar.Replace("5"c, "e"c) 'sCompleteChar = sCompleteChar.Replace("6"c, "f"c) 'sCompleteChar = sCompleteChar.Replace("7"c, "g"c) 'sCompleteChar = sCompleteChar.Replace("8"c, "h"c) 'sCompleteChar = sCompleteChar.Replace("9"c, "i"c) 'Dim CompleteChar() As Char = sCompleteChar.ToCharArray() 'For I = 0 To sCompleteChar.Count - 1 ' If I Mod 2 = 1 Then ' CompleteChar(I) = Char.ToUpper(CompleteChar(I)) ' Else ' CompleteChar(I) = Char.ToLower(CompleteChar(I)) ' End If 'Next 'm_LockID = "EGTECH-" & sCompleteNumber & "-" & CompleteChar m_LockID = m_GeneratedLockID ' Se chiave software Else '' Recupero ultimo Number di chiave software usato 'Query = "SELECT MAX(" & DB_NUMBER & ") AS " & DB_MAXNUMBER & " FROM " & DB_KEY & " WHERE " & DB_ISDONGLE & " = 0" 'm_Number = ExecuteNumberQuery(Query) '' Setto number 'm_Number += 1 m_Number = m_GeneratedNumber End If If (Not IsNothing(m_Number)) Then ' Verifico se Number già esistente Dim numQuery As String = "SELECT COUNT(" & DB_NUMBER & ") AS " & DB_MAXNUMBER & " FROM " & DB_KEY & " WHERE " & DB_NUMBER & " = '" & m_Number & "'" Dim MaxLockID As Integer = ExecuteNumberQuery(numQuery) If ExecuteNumberQuery(numQuery) = 0 Then 'Verifico che valore LockID sia valido If Not String.IsNullOrWhiteSpace(m_LockID) Then ' Aggiungo un rivenditore al Db Dim dongleValue As Integer = 0 If (GetSelIsDongle() = 0) Then dongleValue = 0 If (GetSelIsDongle() = 1) Then dongleValue = 1 If (Not IsNothing(SelClient)) Then Query = "INSERT INTO " & DB_KEY & " (" & DB_NUMBER & ", " & DB_CLIENTID & ", " & DB_ISDONGLE & ", " & DB_LOCKID & ", " & DB_STATE & ", " & DB_DATE & ", " & DB_NOTE & ", " & DB_SERIALE & ")" & " VALUES ('" & Number & "', " & " '" & SelClient.ClientID & "', " & " '" & dongleValue & "', " & " '" & m_LockID & "', " & " '" & SelState.ToString() & "', " & " '" & Format(KeyDate, "yyyy-MM-dd") & "', " & " '" & m_Note.Replace("\", "\\").Replace("'", "\'").Replace("""", "\""").Replace("%", "\%") & "', " & " '" & m_Seriale & "')" Else Query = "INSERT INTO " & DB_KEY & " (" & DB_NUMBER & ", " & DB_ISDONGLE & ", " & DB_LOCKID & ", " & DB_STATE & ", " & DB_DATE & ", " & DB_NOTE & ", " & DB_SERIALE & ")" & " VALUES ('" & Number & "', " & " '" & dongleValue & "', " & " '" & m_LockID & "', " & " '" & SelState.ToString() & "', " & " '" & Format(KeyDate, "yyyy-MM-dd") & "', " & " '" & m_Note.Replace("\", "\\").Replace("'", "\'").Replace("""", "\""").Replace("%", "\%") & "', " & " '" & m_Seriale & "')" End If ManageDb.ExecuteQuery(Query) ' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded. Map.refMainWindowVM.SelProjectMode = MainWindowVM.ProjectModeOpt.SEARCHKEY Else MessageBox.Show("Completare i campi necessari") End If Else MessageBox.Show("Il Numero di chiave esiste già!") End If End If '' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded. 'Map.refMainWindowVM.SelProjectMode = MainWindowVM.ProjectModeOpt.MAINMENU End Sub #End Region ' AddKey #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.SEARCHKEY End Sub #End Region ' Cancel #End Region ' COMMANDS End Class