BinaryStudio.TaskManager.Web.Controllers.ProjectController.MultiuserView C# (CSharp) Method

MultiuserView() public method

The multyuser view.
public MultiuserView ( int projectId, int userId, bool isOpenedProjects = true ) : System.Web.Mvc.ActionResult
projectId int /// The project id. ///
userId int /// The user id. ///
isOpenedProjects bool /// The is opened projects. ///
return System.Web.Mvc.ActionResult
        public ActionResult MultiuserView(int projectId, int? userId, bool isOpenedProjects = true)
        {
            IList<HumanTask> unassignedHumanTasks = this.taskProcessor.GetUnAssignedTasksForProject(projectId).ToList();
            List<TaskViewModel> unassignedTaskModel =
                unassignedHumanTasks.Select(
                    task =>
                    new TaskViewModel
                    {
                        Task = task,
                        TaskName = this.stringExtensions.Truncate(task.Name, 15),
                        CreatorName = string.Empty,
                        ViewStyle = true
                    }).ToList();
            var model = new ProjectViewModel
            {
                UsersTasks = new List<ManagerTasksViewModel>(),
                UnAssignedTasks = unassignedTaskModel,
                QuickTask = new HumanTask(),
                ProjectId = projectId,
                ChosenUserId = userId,
                ChosenUserTasks = new ManagerTasksViewModel(),
                NumberOfUsers = this.projectProcessor.GetUsersAndCreatorInProject(projectId).Count()
            };
            model.QuickTask.ProjectId = projectId;

            var users = new List<User>();
            users = this.projectProcessor.GetUsersAndCreatorInProject(projectId).Reverse().ToList();
            foreach (var user in users)
            {
                IList<HumanTask> humanTasks = isOpenedProjects
                        ? this.taskProcessor.GetAllOpenTasksForUserInProject(projectId, user.Id).ToList()
                        : this.taskProcessor.GetAllClosedTasksForUserInProject(projectId, user.Id).ToList();
                List<TaskViewModel> taskModel =
                    humanTasks.Select(
                        task =>
                        new TaskViewModel
                        {
                            Task = task,
                            TaskName = this.stringExtensions.Truncate(task.Name, 15),
                            CreatorName = string.Empty
                        }).ToList();
                var managerModel = new ManagerTasksViewModel
                {
                    User = user,
                    ProjectId = projectId,
                    Tasks = taskModel
                };
                model.UsersTasks.Add(managerModel);
            }

            if (userId != null)
            {
                IList<HumanTask> chosenTasks = isOpenedProjects
                         ? this.taskProcessor.GetAllOpenTasksForUserInProject(projectId, (int)userId).ToList()
                         : this.taskProcessor.GetAllClosedTasksForUserInProject(projectId, (int)userId).ToList();
                List<TaskViewModel> chosenTaskModel =
                    chosenTasks.Select(
                        task =>
                        new TaskViewModel
                        {
                            Task = task,
                            TaskName = this.stringExtensions.Truncate(task.Name, 15),
                            CreatorName = string.Empty,
                            ViewStyle = true
                        }).ToList();
                model.ChosenUserTasks.User = this.userProcessor.GetUser((int)userId);
                model.ChosenUserTasks.ProjectId = projectId;
                model.ChosenUserTasks.Tasks = chosenTaskModel;
            }

            return this.View(model);
        }
    }