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); } }
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); } } }
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); } }
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"); } }
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); } }
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(); }
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); } }
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); } }
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"); } }
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); } }
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); } }