/// <summary> /// This is the default method for this controller it will load the employees out the database apply these to the /// view and then return it to the client. /// </summary> /// <returns></returns> public ActionResult Index() { var employees = _context.Employees.Take(10).ToList(); var vm = new EmployeeLandingViewModels { Employees = employees, PageNum = 1, IsSearch = false }; //returns the home view return(PartialView("EmployeeLanding", vm)); }
/// <summary> /// this method is used when the the user either clicks the next or previous buttons on the paging. /// it will return the next 10 or the previous 10 records in the datbase depedning on what page of the table the user is on. /// </summary> /// <param name="page"></param> /// <returns></returns> public ActionResult LoadTablePage(int page) { var skipAmount = (page - 1) * 10; var employees = _context.Employees.OrderBy(e => e.EmployeeId).Skip(skipAmount).Take(10).ToList(); var vm = new EmployeeLandingViewModels() { Employees = employees, PageNum = page }; return(PartialView("EmployeeLanding", vm)); }
/// <summary> /// this method will be used to remove a employee from the datbase. /// the main validation in this is making sure that the user cannot /// delete themselves is there are signed in as that employee. /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult Remove(int id) { var employee = _context.Employees.FirstOrDefault(e => e.EmployeeId == id); if (employee.EmployeeNumber == CurrentUser.EmployeeLogin.Employee.EmployeeNumber) { return(new HttpStatusCodeResult(500, "You cannot delete yourself as your are logged in.")); } _context.Employees.Remove(employee); _context.SaveChanges(); var vm = new EmployeeLandingViewModels() { Employees = _context.Employees.Take(10).ToList() }; Logger.LogAction("Employee Deleted", employee.FirstName + employee.SecondName + "Deleted."); return(PartialView("EmployeeLanding", vm)); }
/// <summary> /// this method will be used in order to allow the user to search within the database. /// this will return the first 10 results that contain the string that the user has searched for. /// </summary> /// <param name="str"></param> /// <returns></returns> public ActionResult Search(string str) { EmployeeLandingViewModels vm; List <Employee> employees; if (str.IsNullOrWhiteSpace()) { employees = _context.Employees.Take(10).ToList(); vm = new EmployeeLandingViewModels() { Employees = employees, PageNum = 1, IsSearch = false }; } else { employees = _context.Employees.ToList(); var listToReturn = new List <Employee>(); foreach (var emp in employees) { var fullName = emp.FirstName + emp.SecondName; if (fullName.ToUpper().Contains(str.ToUpper())) { listToReturn.Add(emp); } } vm = new EmployeeLandingViewModels() { Employees = listToReturn, PageNum = 1, IsSearch = true }; } return(PartialView("EmployeeLanding", vm)); }
public ActionResult Save(Employee emp) { int errorCounter = 0; Error error = new Error(); error.ErrorMessages = new List <string>(); error.Property = emp; Regex lettersOnly = new Regex("[a-z]"); if (!emp.FirstName.IsNullOrWhiteSpace() || !emp.SecondName.IsNullOrWhiteSpace()) { if (!lettersOnly.IsMatch(emp.FirstName) || !lettersOnly.IsMatch(emp.SecondName)) { error.ErrorMessages.Add("Please do not enter special characters or number in the name fields."); errorCounter++; } } if (emp.FirstName.IsNullOrWhiteSpace() || emp.SecondName.IsNullOrWhiteSpace()) { error.ErrorMessages.Add("Please enter a first and last name."); errorCounter++; } if (errorCounter != 0 && emp.EmployeeId != 0) { var obj = JsonConvert.SerializeObject(error); return(new HttpStatusCodeResult(HttpStatusCode.ExpectationFailed, obj)); } //new so add them to the database if (emp.EmployeeId == 0) { if (_context.Employees.FirstOrDefault(e => e.EmployeeNumber == emp.EmployeeNumber) != null) { error.ErrorMessages.Add("The Employee Number has already been assigned."); var obj = JsonConvert.SerializeObject(error); return(new HttpStatusCodeResult(HttpStatusCode.ExpectationFailed, obj)); } if (errorCounter != 0) { if (emp.EmployeeNumber.ToString().Trim().Length != 6) { error.ErrorMessages.Add("The Employee number must be 6 digits."); errorCounter++; } var obj = JsonConvert.SerializeObject(error); return(new HttpStatusCodeResult(HttpStatusCode.ExpectationFailed, obj)); } var employee = new Employee { Admin = emp.Admin, EmployeeNumber = emp.EmployeeNumber, FirstName = emp.FirstName, SecondName = emp.SecondName, AccountCreated = false }; _context.Employees.Add(employee); _context.SaveChanges(); var vm = new EmployeeLandingViewModels() { Employees = _context.Employees.Take(10).ToList() }; Logger.LogAction("Employee Added", employee.FirstName + employee.SecondName + " Added."); return(View("EmployeeLanding", vm)); } else if (errorCounter == 0) { //if the users id is already in the database if (_context.Employees.FirstOrDefault(e => e.EmployeeNumber == emp.EmployeeNumber) != null) { if (emp.EmployeeNumber != EmployeeNumber) { error.ErrorMessages.Add("The Employee Number has already been assigned."); var obj = JsonConvert.SerializeObject(error); return(new HttpStatusCodeResult(HttpStatusCode.ExpectationFailed, obj)); } } var employee = _context.Employees.FirstOrDefault(e => e.EmployeeId == emp.EmployeeId); employee.Admin = emp.Admin; employee.FirstName = emp.FirstName; employee.SecondName = emp.SecondName; _context.SaveChanges(); var vm = new EmployeeLandingViewModels() { Employees = _context.Employees.Take(10).ToList() }; Logger.LogAction("Employee Edited ", employee.FirstName + employee.SecondName + " Edited."); return(PartialView("EmployeeLanding", vm)); } var ob1j = JsonConvert.SerializeObject(error); return(new HttpStatusCodeResult(HttpStatusCode.ExpectationFailed, ob1j)); }