Esempio n. 1
0
        public ActionResult Employee(int id, EmployeeManageInputModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var employee = this.employeesService.GetEmployeeById(id);

            if (employee == null)
            {
                return(HttpNotFound());
            }

            //Only CEO(enum 0), DeliveryDirector(enum 1), ProjectManager(enum 2) can manage employees.
            if (employee.Position > CompanyRoleType.ProjectManager)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            if (!this.employeesService.IfEmployeesCanBeRemovedChecker(employee, model.EmployeesToRemove))
            {
                return(View(Constants.CannotRemoveEmployee));
            }

            this.employeesService.AddEmployeesToManager(id, model.EmployeesToAdd);
            this.employeesService.RemoveEmployeesFromManager(model.EmployeesToRemove);

            return(RedirectToAction(Constants.Index, Constants.Employees));
        }
Esempio n. 2
0
        public ActionResult Employee(int id)
        {
            var employee = this.employeesService.GetEmployeeById(id);

            if (employee == null)
            {
                return(HttpNotFound());
            }

            if (employee.Position > CompanyRoleType.ProjectManager)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            if (employee.Position != CompanyRoleType.CEO && employee.Manager == null)
            {
                return(View(Constants.NoManager));
            }

            // Getting all employees with a position one step lower.
            // If DeliveryManager(Enum position = 1) get all ProjectManagers(Enum position = 2).
            var employeesToAdd = this.employeesService
                                 .AllEmployees()
                                 .Where(e => e.Position == employee.Position + 1 && e.Manager == null)
                                 .ToList();

            var employeesToRemove = this.employeesService
                                    .AllEmployees()
                                    .Where(e => e.EmployeeId == employee.Id)
                                    .ToList();

            var employeeManageInputModel = new EmployeeManageInputModel
            {
                ListOfFreeEmployees    = this.employeesService.SelectListItemGenerator(employeesToAdd),
                ListOfManagedEmployees = this.employeesService.SelectListItemGenerator(employeesToRemove)
            };

            return(View(employeeManageInputModel));
        }