BinaryStudio.TaskManager.Web.Controllers.LandingController.GetTasks C# (CSharp) Method

GetTasks() private method

private GetTasks ( int projectId, string taskGroup ) : System.Web.Mvc.ActionResult
projectId int
taskGroup string
return System.Web.Mvc.ActionResult
        public ActionResult GetTasks(int projectId, string taskGroup)
        {
            List<HumanTask> taskList = null;
            string groupName = null;
            Project currentProject = null;
            List<LandingUserModel> usersToModel = null;
            var user = userRepository.GetByName(User.Identity.Name);
            
            if (projectId != -1)
            {
                currentProject = projectRepository.GetById(projectId);
                taskList = currentProject.Tasks.ToList();
                var usersList = projectProcessor.GetUsersAndCreatorInProject(projectId).ToList();
                usersToModel = usersList.OrderBy(x => x.UserName).Select(currentUser => new LandingUserModel()
                {
                    Id = currentUser.Id,
                    Name = currentUser.UserName,
                    Photo = userRepository.GetById(currentUser.Id).ImageData != null
                }).ToList();
            }
            else
            {
                switch (taskGroup)
                {
                    case "all": 
                        taskList = projectRepository.GetAllProjectsForUser(user.Id).SelectMany(proj => proj.Tasks).ToList();
                        taskList.AddRange(projectRepository.GetAllProjectsForTheirCreator(user.Id).SelectMany(proj => proj.Tasks).ToList());
                        groupName = "All Tasks";
                        break;
                    case "my":
                        taskList = projectRepository.GetAllProjectsForUser(user.Id).SelectMany(proj => proj.Tasks).Where(x => x.AssigneeId == user.Id).ToList();
                        taskList.AddRange(projectRepository.GetAllProjectsForTheirCreator(user.Id).SelectMany(proj => proj.Tasks).Where(x => x.AssigneeId == user.Id).ToList());
                        groupName = "My Tasks";
                        break;
                    case "unassigned": 
                        taskList = projectRepository.GetAllProjectsForUser(user.Id).SelectMany(proj => proj.Tasks).Where(x => x.AssigneeId == null).ToList();
                        taskList.AddRange(projectRepository.GetAllProjectsForTheirCreator(user.Id).SelectMany(proj => proj.Tasks).Where(x => x.AssigneeId == null).ToList());
                        groupName = "Unassigned";
                        break;
                }
            }
            var tasksToModel = taskList.Where(x => x.Closed == (DateTime?)null).Select(task => new LandingTaskModel
                            {
                                Id = task.Id,
                                Description = stringExtensions.Truncate(task.Description, 70),
                                Name = stringExtensions.Truncate(task.Name, 70),
                                Priority = task.Priority,
                                Created = task.Created,
                                Creator = userRepository.GetById(task.CreatorId.GetValueOrDefault()).UserName.ToString(),
                                AssigneeId = task.AssigneeId,
                                Assignee = task.AssigneeId== null?null:userRepository.GetById(task.AssigneeId.GetValueOrDefault()).UserName.ToString(),
                                AssigneePhoto = task.AssigneeId==null?false:userRepository.GetById(task.AssigneeId.GetValueOrDefault()).ImageData!=null,
                                Finished = task.Finished
                            });
            var model = new LandingProjectModel
                {
                    Id = projectId != -1 ? currentProject.Id : -1,
                    Name = projectId != -1 ? currentProject.Name : groupName,
                    Tasks = tasksToModel,
                    Users = usersToModel
                };
            return Json(model, JsonRequestBehavior.AllowGet);
        }