Files
LicenceManager/NewKeyPage/NewKeyPageVM.vb
T

315 lines
11 KiB
VB.net

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