Esempio n. 1
0
 private void lv_search_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (lv_search.SelectedIndices.Count > 0)
     {
         int          selIndex = lv_search.SelectedIndices[0];
         ListViewItem item     = lv_search.Items[selIndex];
         try
         {
             using (HBSModel _entity = new HBSModel())
             {
                 _selectedUser = _entity.Users.Find(Convert.ToInt32(item.SubItems[0].Text));
                 updateUserBox(
                     _selectedUser.Username.ToString(),
                     _selectedUser.Role.RoleName,
                     _selectedUser.Department.DepartmentName,
                     _selectedUser.StartDate,
                     _selectedUser.PhoneNumber);
             }
         }
         catch (Exception err)
         {
             DesktopAppUtils.popDefaultErrorMessageBox("Could not connect to DB \n" + err.Message);
         }
     }
 }
Esempio n. 2
0
 public void initializeUserList()
 {
     lv_users.Items.Clear();
     try
     {
         using (HBSModel _entity = new HBSModel())
         {
             var _users = _entity.Users.Where(x => x.Username != GeneralUtils.ADMIN_ROLE);
             foreach (User usr in _users.ToList())
             {
                 if (usr.Role.RoleName == GeneralUtils.ADMIN_ROLE)
                 {
                     continue;
                 }
                 string[] arr = new string[7];
                 arr[0] = usr.id.ToString();
                 arr[1] = usr.Username;
                 arr[2] = usr.StartDate.ToString().Substring(0, 10);
                 arr[3] = usr.RemainingDays.ToString() == "" ? "N/A" : usr.RemainingDays.ToString();
                 arr[4] = usr.Role.RoleName;
                 arr[5] = usr.Department.DepartmentName;
                 arr[6] = String.IsNullOrEmpty(usr.PhoneNumber) ? "N/A" : usr.PhoneNumber;
                 ListViewItem item = new ListViewItem(arr);
                 lv_users.Items.Add(item);
             }
         }
     }
     catch (Exception err)
     {
         DesktopAppUtils.popDefaultErrorMessageBox("Could not retrieve Item from DB \n" + err.Message);
     }
 }
Esempio n. 3
0
        private void btn_Search_Click(object sender, EventArgs e)
        {
            try
            {
                if (String.IsNullOrEmpty(tb_search.Text))
                {
                    throw new Exception("Empty search - please type a search value");
                }
                using (HBSModel _entity = new HBSModel())
                {
                    lv_search.Items.Clear();
                    var _users = _entity.Users.Where(user => user.Username.Contains(tb_search.Text) &&
                                                     user.Username != GeneralUtils.ADMIN_ROLE);

                    foreach (User user in _users.ToList())
                    {
                        string[] arr = new string[5];
                        arr[0] = user.id.ToString();
                        arr[1] = user.Username.ToString();
                        arr[2] = user.Role.RoleName;
                        arr[3] = user.Department.DepartmentName;
                        ListViewItem item = new ListViewItem(arr);
                        lv_search.Items.Add(item);
                    }
                }
            }
            catch (Exception err)
            {
                DesktopAppUtils.popDefaultErrorMessageBox("Something went wrong \n" + err.Message);
            }
        }
Esempio n. 4
0
 public void initializeUserList()
 {
     lv_search.Items.Clear();
     try
     {
         using (HBSModel _entity = new HBSModel())
         {
             var _users = _entity.Users.Where(x => x.Username != GeneralUtils.ADMIN_ROLE);
             foreach (User usr in _users.ToList())
             {
                 string[] arr = new string[5];
                 arr[0] = usr.id.ToString();
                 arr[1] = usr.Username.ToString();
                 arr[2] = usr.Role.RoleName;
                 arr[3] = usr.Department.DepartmentName;
                 ListViewItem item = new ListViewItem(arr);
                 lv_search.Items.Add(item);
             }
         }
     }
     catch
     {
         DesktopAppUtils.popDefaultErrorMessageBox("Could not retrieve Item from DB");
     }
 }
Esempio n. 5
0
 static void Main()
 {
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     DesktopAppUtils.RegisterAdmin();
     //DesktopAppUtils.AddPeakTimes();
     DesktopAppUtils.AddDepartments();
     DesktopAppUtils.AddRoles();
     DesktopAppUtils.CreateUsers();
     DesktopAppUtils.AddHolidayRequests();
     Application.Run(new LoginForm());
 }
Esempio n. 6
0
        private void btn_details_Click(object sender, EventArgs e)
        {
            usernameErrorLabel.Visible = false;
            phoneErrorLabel.Visible    = false;
            bool noErrors = true;

            try
            {
                if (String.IsNullOrEmpty(_selectedUser.Username))
                {
                    throw new Exception("No User selected");
                }
                if (String.IsNullOrEmpty(tb_username.Text) || (tb_username.Text.Length < 6))
                {
                    usernameErrorLabel.Visible = true;
                    noErrors = false;
                }
                if (!String.IsNullOrEmpty(tb_phoneNumber.Text))
                {
                    if (!tb_phoneNumber.ValidInput())
                    {
                        phoneErrorLabel.Text    = "The phone number entered is not in a valid format";
                        phoneErrorLabel.Visible = true;
                        noErrors = false;
                    }
                }
                if (noErrors)
                {
                    using (HBSModel _entity = new HBSModel())
                    {
                        var _user = _entity.Users.FirstOrDefault(user => user.Username == _selectedUser.Username);
                        _user.Username     = tb_username.Text;
                        _user.RoleID       = _entity.Roles.SingleOrDefault(role => role.RoleName == cb_roles.SelectedItem.ToString()).ID;
                        _user.DepartmentID = _entity.Departments.SingleOrDefault(role => role.DepartmentName == cb_departments.SelectedItem.ToString()).ID;
                        _user.StartDate    = dp_edit.Value.Date;
                        _user.PhoneNumber  = tb_phoneNumber.Text;
                        _selectedUser      = _user;
                        _entity.SaveChanges();
                    }
                    initializeUserList();
                    initalizeUserInputs();
                }
            }
            catch (Exception err)
            {
                DesktopAppUtils.popDefaultErrorMessageBox("Error:\n" + err.Message);
            }
        }
Esempio n. 7
0
        private void btn_login_Click(object sender, EventArgs e)
        {
            if (btn_login.Cursor == Cursors.No)
            {
                return;
            }
            try
            {
                string username = tb_username.Text.Trim();
                string password = tb_password.Text.Trim();
                if (!inputValuesChanged(username, password))
                {
                    throw new Exception("Username and password must not be empty");
                }
                using (HBSModel _entity = new HBSModel())
                {
                    var _user = _entity.Users.FirstOrDefault(x => x.Username == username);
                    if (_user == null)
                    {
                        throw new Exception("User not found");
                    }
                    if (!GeneralUtils.VerifyPasswordHash(password, _user.Pwd, _user.PwdSalt))
                    {
                        throw new Exception("Invalid login attempt");
                    }

                    // Only users matching the role Head and beloging to the Office department can login as admins
                    if (_user.Role.RoleName != GeneralUtils.ADMIN_ROLE)
                    {
                        throw new Exception("Only admins can login with this app");
                    }
                }
            }
            catch (Exception ex)
            {
                DesktopAppUtils.popDefaultErrorMessageBox(ex.Message);
                return;
            }

            this.Hide();
            Dashboard dashboard = new Dashboard();

            dashboard.ShowDialog();
            this.Close();
        }
Esempio n. 8
0
        private void btn_password_Click(object sender, EventArgs e)
        {
            confirmPasswordErrorLabel.Visible = false;
            passwordErrorLabel.Visible        = false;
            bool noErrors = true;

            try
            {
                if (String.IsNullOrEmpty(_selectedUser.Username))
                {
                    throw new Exception("No User selected");
                }
                if (tb_password.Text != tb_repeat_password.Text)
                {
                    confirmPasswordErrorLabel.Visible = true;
                    noErrors = false;
                }
                if (!GeneralUtils.checkPasswordComplexity(tb_password.Text))
                {
                    passwordErrorLabel.Visible = true;
                    noErrors = false;
                }
                if (noErrors)
                {
                    using (HBSModel _entity = new HBSModel())
                    {
                        var    _user = _entity.Users.FirstOrDefault(user => user.Username == _selectedUser.Username);
                        byte[] passwordHash, passwordSalt;
                        GeneralUtils.CreatePasswordHash(tb_password.Text, out passwordHash, out passwordSalt);
                        _user.Pwd     = passwordHash;
                        _user.PwdSalt = passwordSalt;
                        _entity.SaveChanges();
                        MessageBox.Show("Password Updated", "Update", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        initalizeUserInputs();
                    }
                }
            }
            catch (Exception ex)
            {
                DesktopAppUtils.popDefaultErrorMessageBox("Error:\n" + ex.Message);
            }
        }
Esempio n. 9
0
 private void btn_delete_Click(object sender, EventArgs e)
 {
     try {
         int          selIndex = lv_users.SelectedIndices[0];
         ListViewItem item     = lv_users.Items[selIndex];
         if (MessageBox.Show("Are you sure you want to delete this record?", "Confirm deletion", MessageBoxButtons.YesNo) == DialogResult.Yes)
         {
             using (HBSModel _entity = new HBSModel())
             {
                 User userDelete = _entity.Users.Find(Convert.ToInt32(item.SubItems[0].Text));
                 _entity.Users.Remove(userDelete);
                 _entity.SaveChanges();
             }
             initializeUserList();
         }
     }
     catch (Exception ex)
     {
         DesktopAppUtils.popDefaultErrorMessageBox("Could not complete delete operation. Ensure to select a user.\n" + ex.Message);
     }
 }
Esempio n. 10
0
 public void initializeRolesAndDepartments()
 {
     try
     {
         using (HBSModel _entity = new HBSModel())
         {
             foreach (Role role in _entity.Roles.ToList())
             {
                 cb_roles.Items.Add(role.RoleName);
             }
             foreach (Department department in _entity.Departments.ToList())
             {
                 cb_departments.Items.Add(department.DepartmentName);
             }
         }
     }
     catch
     {
         DesktopAppUtils.popDefaultErrorMessageBox("Could not connect to the database");
     }
 }
Esempio n. 11
0
 private void initializeRolesDepartments()
 {
     try
     {
         cb_roles.Items.Clear();
         cb_departments.Items.Clear();
         using (HBSModel _entity = new HBSModel())
         {
             foreach (Role role in _entity.Roles.ToList())
             {
                 cb_roles.Items.Add(role.RoleName);
             }
             foreach (Department department in _entity.Departments.ToList())
             {
                 cb_departments.Items.Add(department.DepartmentName);
             }
         }
     }
     catch (Exception err)
     {
         DesktopAppUtils.popDefaultErrorMessageBox("Could not connect to database \n" + err.Message);
     }
 }
Esempio n. 12
0
        private void btn_register_employee_Click(object sender, EventArgs e)
        {
            try
            {
                hideErrors();
                bool noErrors = true;
                if (String.IsNullOrEmpty(tb_username.Text) || (tb_username.Text.Length < 6))
                {
                    usernameErrorLabel.Text    = "Username must be above 6 characters";
                    usernameErrorLabel.Visible = true;
                    noErrors = false;
                }

                if (String.IsNullOrEmpty(tb_password.Text))
                {
                    passwordErrorLabel.Text    = "Password field must be filled";
                    passwordErrorLabel.Visible = true;
                    noErrors = false;
                }

                if (tb_password.Text != tb_repeat_password.Text)
                {
                    confirmPasswordErrorLabel.Text    = "Passwords do not match";
                    confirmPasswordErrorLabel.Visible = true;
                    noErrors = false;
                }

                if (!GeneralUtils.checkPasswordComplexity(tb_password.Text))
                {
                    passwordErrorLabel.Text    = "Password does not match the required complexity";
                    passwordErrorLabel.Visible = true;
                    noErrors = false;
                }

                if (cb_departments.SelectedIndex == -1)
                {
                    departmentErrorLabel.Text    = "Please select department";
                    departmentErrorLabel.Visible = true;
                    noErrors = false;
                }

                if (cb_roles.SelectedIndex == -1)
                {
                    roleErrorLabel.Text    = "Please select role";
                    roleErrorLabel.Visible = true;
                    noErrors = false;
                }
                if (!String.IsNullOrEmpty(tb_phoneNumber.Text))
                {
                    if (!tb_phoneNumber.ValidInput())
                    {
                        phoneNumberErrorLabel.Text    = "The phone number entered is not in a valid format";
                        phoneNumberErrorLabel.Visible = true;
                        noErrors = false;
                    }
                }
                if (noErrors)
                {
                    using (HBSModel _entity = new HBSModel())
                    {
                        User newUser = new User
                        {
                            Username = tb_username.Text
                        };
                        var isAlreadyRegistered = _entity.Users.FirstOrDefault(x => x.Username == newUser.Username);
                        if (isAlreadyRegistered != null)
                        {
                            usernameErrorLabel.Text    = "Username already registered";
                            usernameErrorLabel.Visible = true;
                        }
                        // hash the password
                        GeneralUtils.CreatePasswordHash(tb_password.Text, out byte[] passwordHash, out byte[] passwordSalt);
                        newUser.Pwd         = passwordHash;
                        newUser.PwdSalt     = passwordSalt;
                        newUser.PhoneNumber = tb_phoneNumber.Text;

                        // Find ID of selected role and department
                        try
                        {
                            var _selectedDepartment = _entity.Departments.First(dpt => dpt.DepartmentName == cb_departments.SelectedItem.ToString());
                            var _selectedRole       = _entity.Roles.First(role => role.RoleName == cb_roles.SelectedItem.ToString());
                            newUser.DepartmentID = _selectedDepartment.ID;
                            newUser.RoleID       = _selectedRole.ID;
                        }
                        catch (Exception ex)
                        {
                            DesktopAppUtils.popDefaultErrorMessageBox("Please select valid role and department:\n" + ex.Message);
                            return;
                        }

                        newUser.PhoneNumber = tb_phoneNumber.Text;

                        // get date and make it to datetime2
                        newUser.StartDate = dp_add_employee.Value.Date;

                        // calculate remaining days
                        newUser.RemainingDays = GeneralUtils.CalculateHolidayAllowanceOnRegistration(dp_add_employee.Value.Date);

                        try
                        {
                            _entity.Users.Add(newUser);
                            _entity.SaveChanges();

                            if (MessageBox.Show("Employee successfully registered", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information) == DialogResult.OK)
                            {
                                tb_username.Text             = "";
                                tb_password.Text             = "";
                                tb_repeat_password.Text      = "";
                                cb_departments.SelectedIndex = -1;
                                cb_roles.SelectedIndex       = -1;
                                dp_add_employee.Value        = DateTime.Now;
                                dp_add_employee.Format       = DateTimePickerFormat.Custom;
                            }
                        }
                        catch
                        {
                            DesktopAppUtils.popDefaultErrorMessageBox("Something went wrong, please try again later");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                DesktopAppUtils.popDefaultErrorMessageBox("Registration Error: \n" + ex.Message);
            }
        }