public MainViewModel() { EmployeeHandler = new EmployeeHandler(this); if (OpenDbConnection) { PersistencyService.OpenApiConnection(); } EmployeesInDb = new ObservableCollection <Employee>(); LoggedInEmployees = new List <Employee>(); DatabaseTable = new ObservableCollection <Employee>(); if (OpenDbConnection) { PersistencyService.GetData(EmployeesInDb); PersistencyService.GetDataLoggedIn(LoggedInEmployees); } LoginOrLogoutCommand = new RelayCommand(EmployeeHandler.LoginOrLogout); CompleteEmployeeListCommand = new RelayCommand(EmployeeHandler.CompleteEmployeeList); PersonalEntryListCommand = new RelayCommand(EmployeeHandler.PersonalEntryList); OwnDepartmentListCommand = new RelayCommand(EmployeeHandler.OwnDepartmentList); AddSickOrVacationdaysCommand = new RelayCommand(EmployeeHandler.ChangeVacationOrSickdays); AdminChangePersonalInfoCommand = new RelayCommand(EmployeeHandler.AdminChangePersonalInfo); AdminChangeSalaryInfoCommand = new RelayCommand(EmployeeHandler.AdminChangeSalaryInfo); SortByNameCommand = new RelayCommand(EmployeeHandler.SortByName); SortByEmployeeIdCommand = new RelayCommand(EmployeeHandler.SortByEmployeeId); ExportAsCsvCommand = new RelayCommand(() => ExportEmployeesToCsvFile()); }
/// <summary> /// The admin metohd of changing other employee's personal data (Name and Manager attribtues). /// </summary> public void AdminChangePersonalInfo() { if (SelectedEmployee == null) { if (MainViewModel.OpenDbConnection == false) { throw new NullReferenceException("Please select an employee to edit."); } return; } //Admin level 1 and 2 privileges check var admin = (AdminEmp)LastLoggedIn; if (admin.AdminLvl != 2) //If admin is lvl 1 { if (SelectedEmployee.Manager != LastLoggedIn.Name) { if (MainViewModel.OpenDbConnection == false) { throw new ArgumentException("Error! You can only change data for your own employees."); } var errorMsg = new MessageDialog("You can only change data for your own employees.", "Error"); errorMsg.ShowAsync(); return; } } if (!String.IsNullOrWhiteSpace(_viewModel.AdminChangeNameBox)) { SelectedEmployee.Name = _viewModel.AdminChangeNameBox; } if (!String.IsNullOrWhiteSpace(_viewModel.AdminChangeManagerBox)) { SelectedEmployee.Manager = _viewModel.AdminChangeManagerBox; } if (MainViewModel.OpenDbConnection == false) { return; } PersistencyService.PutData(SelectedEmployee); PersistencyService.GetData(_viewModel.EmployeesInDb); if (admin.AdminLvl != 2) { OwnDepartmentList(); } else { PersistencyService.GetData(_viewModel.DatabaseTable); } }
/// <summary> /// Returns the complete visual list of employees in the admin's own department. /// </summary> public void OwnDepartmentList() { PersistencyService.GetData(_viewModel.EmployeesInDb); var allEmployees = _viewModel.EmployeesInDb.ToList(); var ownDepartment = from e in allEmployees where e.Manager == LastLoggedIn.Name select e; _viewModel.DatabaseTable.Clear(); foreach (var e in ownDepartment) { _viewModel.DatabaseTable.Add(e); } }
private void UpdateLogoutTime() { if (MainViewModel.OpenDbConnection) { PersistencyService.GetData(_viewModel.EmployeesInDb); //Need updated LastLogin before updating LastLogout } var employeeList = _viewModel.EmployeesInDb.ToList(); var employeeToLogout = employeeList.Find(e => e.EmployeeId == _employeeToLogout.EmployeeId); _employeeToLogout = employeeToLogout; _employeeToLogout.LastLogout = DateTime.Now; }
/// <summary> /// The standard- and admin employee's method of adding own vacation or sickdays. /// </summary> public void ChangeVacationOrSickdays() { if (DanxMainPage.SickDayRButton.IsChecked == true) { LastLoggedIn.SickDays += 1; } else if (DanxMainPage.VacationDayRButton.IsChecked == true) { LastLoggedIn.VacationDays += 1; } if (MainViewModel.OpenDbConnection == false) { return; } PersistencyService.PutData(LastLoggedIn); PersistencyService.GetData(_viewModel.EmployeesInDb); var updatedEmpList = _viewModel.EmployeesInDb.ToList(); var updatedEmp = updatedEmpList.Find(e => e.EmployeeId == LastLoggedIn.EmployeeId); _viewModel.DatabaseTable.Clear(); _viewModel.DatabaseTable.Add(updatedEmp); }
/// <summary> /// The admin metohd of changing other employee's salary data (SalaryNumber, VacationDays, SickDays and WorkedDays attribtues). /// </summary> public void AdminChangeSalaryInfo() { if (SelectedEmployee == null) { return; } var admin = (AdminEmp)LastLoggedIn; if (admin.AdminLvl != 2) //If admin is lvl 1 { if (SelectedEmployee.Manager != LastLoggedIn.Name) { var errorMsg = new MessageDialog("You can only change data for your own employees.", "Error"); errorMsg.ShowAsync(); return; } } try { //The following needs parsing due to the fact that the TextBox controls are bound to string values. if (!String.IsNullOrWhiteSpace(_viewModel.AdminChangeSalaryNumberBox)) { SelectedEmployee.SalaryNumber = int.Parse(_viewModel.AdminChangeSalaryNumberBox); } if (!String.IsNullOrWhiteSpace(_viewModel.AdminChangeVacationDaysBox)) { SelectedEmployee.VacationDays = int.Parse(_viewModel.AdminChangeVacationDaysBox); } if (!String.IsNullOrWhiteSpace(_viewModel.AdminChangeSickDaysBox)) { SelectedEmployee.SickDays = int.Parse(_viewModel.AdminChangeSickDaysBox); } if (!String.IsNullOrWhiteSpace(_viewModel.AdminChangeWorkedDaysBox)) { SelectedEmployee.WorkedDays = int.Parse(_viewModel.AdminChangeWorkedDaysBox); } if (MainViewModel.OpenDbConnection == false) { return; } PersistencyService.PutData(SelectedEmployee); PersistencyService.GetData(_viewModel.EmployeesInDb); if (admin.AdminLvl != 2) { OwnDepartmentList(); } else { PersistencyService.GetData(_viewModel.DatabaseTable); } } catch (FormatException) { var errorMsg = new MessageDialog("Only integer values are allowed.", "Error"); if (MainViewModel.OpenDbConnection) { errorMsg.ShowAsync(); } } }
/// <summary> /// Returns the complete visual employeelist for the admin. /// </summary> public void CompleteEmployeeList() { PersistencyService.GetData(_viewModel.DatabaseTable); }