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));
            }
        }
Exemplo n.º 3
0
 // 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());
 }