public ActionResult AddProject(string projectName)
 {
     var user = userRepository.GetByName(User.Identity.Name);
     var project = new Project
     {
         Created = DateTime.Now,
         Creator = user,
         Name = projectName,
         CreatorId = user.Id
     };
     var id = projectRepository.Add(project);
     var projectsToModel = new LandingProjectModel
         { 
             Id = id,
             Name = projectName 
         };
     return Json(projectsToModel);
 }
 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);
 }