﻿Imports System.Data.OleDb
Imports RestelII.My.MySettings

Public Class frmUserSetup

    Dim ds As New DataSet()

    Dim daUsers As New OleDbDataAdapter

    Dim conn As New OleDbConnection
    Dim currentindex As Integer
    Dim newuser As Boolean

    Private Sub frmUserSetup_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

        Select Case e.KeyCode
            Case Keys.Escape
                Me.Close()
        End Select
    End Sub

    Private Sub frmUserSetup_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        currentindex = 0

        conn.ConnectionString = My.Settings.RestelConnectionString

        ds.Reset()

        daUsers.SelectCommand = New OleDbCommand("SELECT * FROM Users")
        daUsers.SelectCommand.Connection = conn

        daUsers.UpdateCommand = New OleDbCommand("UPDATE Users SET FullName = @FullName, UName = @Uname, Pword = @Password, Bookings=@Bookings, Quick=@Quick, Ledgers=@Ledgers, SysParms=@Sysparms, Confirm=@Confirm, Daily=@Daily, Market=@Market, Budgets=@Budget WHERE FullName = @FullName")
        daUsers.UpdateCommand.Connection = conn
        daUsers.UpdateCommand.Parameters.Add("@FullName", OleDbType.Char, 50, "FullName")
        daUsers.UpdateCommand.Parameters.Add("@UName", OleDbType.Char, 20, "UName")
        daUsers.UpdateCommand.Parameters.Add("@Pword", OleDbType.Char, 30, "Pword")
        daUsers.UpdateCommand.Parameters.Add("@Bookings", OleDbType.Boolean, 1, "Bookings")
        daUsers.UpdateCommand.Parameters.Add("@Quick", OleDbType.Boolean, 1, "Quick")
        daUsers.UpdateCommand.Parameters.Add("@Ledgers", OleDbType.Boolean, 1, "Ledgers")
        daUsers.UpdateCommand.Parameters.Add("@SysParms", OleDbType.Boolean, 1, "SysParms")
        daUsers.UpdateCommand.Parameters.Add("@Confirm", OleDbType.Boolean, 1, "Confirm")
        daUsers.UpdateCommand.Parameters.Add("@Daily", OleDbType.Boolean, 1, "Daily")
        daUsers.UpdateCommand.Parameters.Add("@Market", OleDbType.Boolean, 1, "Market")
        daUsers.UpdateCommand.Parameters.Add("@Budgets", OleDbType.Boolean, 1, "Budgets")

        daUsers.InsertCommand = New OleDbCommand("INSERT INTO Users (FullName,UserName,Pword,Bookings,Quick,Ledgers,SysParms,Confirm,Daily,Market,Budgets) VALUES (@FullName,@UserName,@Pword,@Bookings,@Quick,@Ledgers,@SysParms,@Confirm,@Daily,@Market,@Budgets)")
        daUsers.InsertCommand.Connection = conn

        daUsers.InsertCommand.Parameters.Add("@FullName", OleDbType.Char, 50, "FullName")
        daUsers.InsertCommand.Parameters.Add("@UName", OleDbType.Char, 20, "UName")
        daUsers.InsertCommand.Parameters.Add("@Pword", OleDbType.Char, 30, "Pword")
        daUsers.InsertCommand.Parameters.Add("@Bookings", OleDbType.Boolean, 1, "Bookings")
        daUsers.InsertCommand.Parameters.Add("@Quick", OleDbType.Boolean, 1, "Quick")
        daUsers.InsertCommand.Parameters.Add("@Ledgers", OleDbType.Boolean, 1, "Ledgers")
        daUsers.InsertCommand.Parameters.Add("@SysParms", OleDbType.Boolean, 1, "SysParms")
        daUsers.InsertCommand.Parameters.Add("@Confirm", OleDbType.Boolean, 1, "Confirm")
        daUsers.InsertCommand.Parameters.Add("@Daily", OleDbType.Boolean, 1, "Daily")
        daUsers.InsertCommand.Parameters.Add("@Market", OleDbType.Boolean, 1, "Market")
        daUsers.InsertCommand.Parameters.Add("@Budgets", OleDbType.Boolean, 1, "Budgets")

        daUsers.DeleteCommand = New OleDbCommand("DELETE FROM Users where Uname = @UName")
        daUsers.DeleteCommand.Connection = conn
        daUsers.DeleteCommand.Parameters.Add("@UName", OleDbType.Char, 20, "UName")

        daUsers.Fill(ds)

        ' Load First User

        If ds.Tables(0).Rows.Count > 0 Then
            FillFields()
        End If

    End Sub

    Private Sub btnNewUser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNewUser.Click

        newuser = True

        txtFullName.Text = ""
        txtUserName.Text = ""
        txtPassword.Text = ""

        txtBookings.Checked = False
        txtBudgets.Checked = False
        txtQuickView.Checked = False
        txtLedgers.Checked = False
        txtSystem.Checked = False

        txtFullName.Enabled = True
        txtUserName.Enabled = True
        txtPassword.Enabled = True
        txtBookings.Enabled = True
        txtBudgets.Enabled = True
        txtSystem.Enabled = True
        txtQuickView.Enabled = True
        txtLedgers.Enabled = True

        txtFullName.Focus()

    End Sub

    Private Sub FillFields()

        txtFullName.Text = ds.Tables(0).Rows(currentindex).Item("FullName").ToString
        txtUserName.Text = ds.Tables(0).Rows(currentindex).Item("UName").ToString
        txtPassword.Text = ds.Tables(0).Rows(currentindex).Item("Pword").ToString

        txtBookings.Checked = IIf(ds.Tables(0).Rows(currentindex).Item("Bookings") = True, True, False)
        txtBudgets.Checked = IIf(ds.Tables(0).Rows(currentindex).Item("Budgets") = True, True, False)
        txtQuickView.Checked = IIf(ds.Tables(0).Rows(currentindex).Item("Quick") = True, True, False)
        txtLedgers.Checked = IIf(ds.Tables(0).Rows(currentindex).Item("Ledgers") = True, True, False)
        txtSystem.Checked = IIf(ds.Tables(0).Rows(currentindex).Item("SysParms") = True, True, False)

        txtFullName.Enabled = IIf(txtUserName.Text = "admin", False, True)
        txtUserName.Enabled = IIf(txtUserName.Text = "admin", False, True)
        txtBookings.Enabled = IIf(txtUserName.Text = "admin", False, True)
        txtBudgets.Enabled = IIf(txtUserName.Text = "admin", False, True)
        txtQuickView.Enabled = IIf(txtUserName.Text = "admin", False, True)
        txtLedgers.Enabled = IIf(txtUserName.Text = "admin", False, True)
        txtSystem.Enabled = IIf(txtUserName.Text = "admin", False, True)

        btnDeleteUser.Enabled = IIf(txtUserName.Text = "admin", False, True)

        txtFullName.Enabled = False
        txtUserName.Focus()

    End Sub

    Private Sub btnSaveUser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveUser.Click

        Dim dr As DataRow

        If newuser = True Or ds.Tables(0).Rows.Count = 0 Then
            dr = ds.Tables(0).NewRow()
            UpdateFields(dr)
            ds.Tables(0).Rows.Add(dr)
            daUsers.Update(ds)
            ds.AcceptChanges()
        Else
            dr = ds.Tables(0).Rows(currentindex)
            dr.BeginEdit()
            UpdateFields(dr)
            dr.EndEdit()
            daUsers.Update(ds)
            ds.AcceptChanges()
        End If
        newuser = False
        txtFullName.TabStop = False

    End Sub

    Private Sub UpdateFields(ByVal dr As DataRow)

        dr("FullName") = txtFullName.Text
        dr("UserName") = txtUserName.Text
        dr("Pword") = txtPassword.Text
        dr("Bookings") = IIf(txtBookings.Checked = True, True, False)
        dr("Quick") = IIf(txtQuickView.Checked = True, True, False)
        dr("Ledgers") = IIf(txtLedgers.Checked = True, True, False)
        dr("SysParms") = IIf(txtSystem.Checked = True, True, False)
        dr("Confirm") = IIf(txtBookings.Checked = True, True, False) '-----------
        dr("Daily") = IIf(txtBookings.Checked = True, True, False) '-------------
        dr("Market") = IIf(txtBookings.Checked = True, True, False) '------------
        dr("Budgets") = IIf(txtBudgets.Checked = True, True, False)

    End Sub

    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click

        If currentindex < ds.Tables(0).Rows.Count - 1 Then
            currentindex = currentindex + 1
            FillFields()
        Else
            MsgBox("There Are No More Users !    ", MsgBoxStyle.Critical, "User Setup")
        End If
    End Sub

    Private Sub btnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious.Click

        If currentindex > 0 Then
            currentindex = currentindex - 1
            FillFields()
        Else
            MsgBox("There Are No More Users !    ", MsgBoxStyle.Critical, "User Setup")
        End If
    End Sub

    Private Sub btnDeleteUser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDeleteUser.Click

        Dim dr As DataRow

        If MsgBox("Are You Sure You Want To Delete User?     ", MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Delete User") = MsgBoxResult.Yes Then
            dr = ds.Tables(0).Rows(currentindex)
            dr.Delete()
            daUsers.Update(ds)
            ds.AcceptChanges()
            MsgBox("User Deleted!     ", MsgBoxStyle.Information, "Delete User")
            If currentindex < ds.Tables(0).Rows.Count - 1 Then
                currentindex = currentindex + 1
            Else
                currentindex = currentindex - 1
            End If
            FillFields()
        End If

    End Sub

    Private Sub btnSelectAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelectAll.Click

        If btnSelectAll.Text = "F9 - Select All" Then
            txtBookings.Checked = True
            txtBudgets.Checked = True
            txtSystem.Checked = True
            txtQuickView.Checked = True
            txtLedgers.Checked = True
            btnSelectAll.Text = "F9 - DeSelect All"
            btnSelectAll.ToolTipText = "DeSelect All Options"
        Else
            txtBookings.Checked = False
            txtBudgets.Checked = False
            txtSystem.Checked = False
            txtQuickView.Checked = False
            txtLedgers.Checked = False
            btnSelectAll.Text = "F9 - Select All"
            btnSelectAll.ToolTipText = "Select All Options"
        End If

    End Sub

    Private Sub txtUserName_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtUserName.Validating

        Dim ds2 As New DataSet()

        Dim sqlUserName As String = "Select Username from Users where Uname = '" & txtUserName.Text & "'"

        Dim daSearch As New OleDbDataAdapter(sqlUserName, conn)

        daSearch.Fill(ds2)

        If (txtUserName.Text Like txtFullName.Text) And (txtUserName.Text <> "") And (txtFullName.Text <> "") Then
            MsgBox("User Name Must Not Be The Same As The Full Name!     " & vbCr & vbCr & "Please Enter Different Username.     ", MsgBoxStyle.Exclamation, "New User")
            txtUserName.Focus()
            e.Cancel = True
        End If

        If ds2.Tables(0).Rows.Count > 0 And newuser = True Then
            MsgBox("Username Already Exits!     " & vbCr & vbCr & "Please Enter Different Username.     ", MsgBoxStyle.Exclamation, "New User")
            txtUserName.Focus()
            e.Cancel = True
        End If


        If txtUserName.Text.Contains(" ") Then
            MsgBox("Please Do Not Leave Spaces In User Name!     " & vbCr & vbCr & "Please Enter Different Username.     ", MsgBoxStyle.Exclamation, "New User")
            e.Cancel = True
            txtUserName.Focus()
        End If

        ds2.Reset()

    End Sub

    Private Sub txtFullName_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtFullName.Validating

        If txtFullName.Text = "" Then
            MsgBox("Please Enter The Users Full Name!     ", MsgBoxStyle.Exclamation, "New User")
            txtFullName.Focus()
            e.Cancel = True
        End If

    End Sub

    Private Sub txtPassword_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtPassword.Validating

        If txtPassword.Text = "" And txtUserName.Text <> "" Then
            MsgBox("Please Enter a Password!     ", MsgBoxStyle.Exclamation, "New User")
            txtPassword.Focus()
            e.Cancel = True
        End If

        If txtPassword.Text = txtUserName.Text Then
            MsgBox("User Name And Passowrd Can Not Be The Same!     " & vbCr & vbCr & "Please Enter Another Password", MsgBoxStyle.Critical, "New User")
            txtPassword.Focus()
            e.Cancel = True
        End If

    End Sub

End Class