public async Task <IActionResult> Index() { IEnumerable <WorkDay> days = new List <WorkDay>(); ApplicationUser user = await _userManager.FindByNameAsync(User.Identity.Name); Supervisor supervisor = _supervisorRepo.GetAll().Where(x => x.EmployeeId == user.Id).FirstOrDefault(); IList <string> role = await _userManager.GetRolesAsync(user); if (role.Contains("Managers")) { Department department = _departmentRepo.GetAllWithUsers().Where(x => x.SupervisorId == supervisor.Id).FirstOrDefault(); days = await _timeSheetService.GetAllUnapprovedWorkDaysAsyncForDepartment(department.Id); } else { days = await _timeSheetService.GetUnapprovedWorkDaysAsync(); } WorkDayViewModel viewModel = new WorkDayViewModel { workDays = days }; return(View(viewModel)); }
public async Task <IActionResult> Edit(DepartmentEditViewModel model) { if (ModelState.IsValid) { Supervisor supervisor = _supervisorRepo.GetAll().Where(x => x.EmployeeId == model.NewSuperVisorEmployeeId).FirstOrDefault(); Department department = _departmentRepo.GetAllWithUsers().Where(x => x.Id == model.DepartmentId).FirstOrDefault(); if (supervisor == null && model.NewSuperVisorEmployeeId != null && !model.NewSuperVisorEmployeeId.Equals("")) { List <Department> departments = new List <Department> { department }; if (_userManager.FindByIdAsync(model.NewSuperVisorEmployeeId) == null) { throw new Exception("Department Controller could not find user with id of " + model.NewSuperVisorEmployeeId); } _supervisorRepo.Add(new Supervisor { EmployeeId = model.NewSuperVisorEmployeeId }); _supervisorRepo.SaveChanges(); Supervisor SavedSupervisor = _supervisorRepo.GetAll().Where(x => x.EmployeeId == model.NewSuperVisorEmployeeId).FirstOrDefault(); department.SupervisorId = SavedSupervisor.Id; _departmentRepo.SaveChanges(); } else if (supervisor != null) { // supervisor.Departments.Add(department); department.SupervisorId = supervisor.Id; _supervisorRepo.SaveChanges(); } foreach (string userId in model.IdsToAdd ?? new string[] { }) { ApplicationUser user = await _userManager.FindByIdAsync(userId); if (user != null) { //department.AssignedEmployees.Add(user); user.DepartmentId = department.Id; IdentityResult result = await _userManager.UpdateAsync(user); //result = _departmentRepo.SaveChanges(); // result = _departmentRepo.AddToDepartment(user, model.DepartmentId);//_.AddToRoleAsync(user, model.RoleName); if (!result.Succeeded) { AddErrorsFromResult(result); } } if (ModelState.IsValid) { //_departmentRepo.Add(department); _departmentRepo.SaveChanges(); //return RedirectToAction("Index"); } } foreach (string userId in model.IdsToDelete ?? new string[] { }) { ApplicationUser user = await _userManager.FindByIdAsync(userId); if (user != null) { //department.AssignedEmployees.Remove(user); user.DepartmentId = null; if (supervisor != null) { if (user.Id == supervisor.EmployeeId) { Supervisor newSupervisor = new Supervisor { EmployeeId = department.AssignedEmployees.FirstOrDefault().Id }; _supervisorRepo.SaveChanges(); department.SupervisorId = newSupervisor.Id; } IdentityResult result = await _userManager.UpdateAsync(user); //result = _departmentRepo.RemoveFromDepartment(user, model.DepartmentId);//_.RemoveFromRoleAsync(user, model.RoleName); if (!result.Succeeded) { AddErrorsFromResult(result); } else { } } } } } if (ModelState.IsValid) { return(RedirectToAction(nameof(Index))); } else { return(Edit(model.DepartmentId)); } }
// GET: Teams/Create public IActionResult Create() { //ViewData["SupervisorId"] = new SelectList(_context.Set<Supervisor>(), "Id", "Id"); ViewData["SupervisorId"] = new SelectList(_supervisorRepo.GetAll().ToHashSet <Supervisor>(), "Id", "Id"); return(View()); }