public async Task <IActionResult> ModifyTask(int taskId, KanbanTaskNewDTO newTaskData) { var clientUsername = User.FindFirst(ClaimTypes.Name).Value; try { await _kanbanRepo.ModifyTask(clientUsername, taskId, newTaskData); } catch (Exception e) { return(BadRequest(e.Message)); } return(Ok()); }
public async Task ModifyTask(string username, int taskId, KanbanTaskNewDTO newData) { if (string.IsNullOrWhiteSpace(newData.Name)) { throw new Exception("Task name cannot be empty"); } var user = await _context.Users.FirstOrDefaultAsync(x => x.Username == username); var task = await _context.KanbanTasks .Include(x => x.ParentStory) .FirstOrDefaultAsync(x => x.Id == taskId && x.ParentStory.ParentProject.ParentUser == user); if (task == null) { throw new Exception("No task with ID [" + taskId.ToString() + "] for the user."); } var project = await _context.KanbanProjects.FirstOrDefaultAsync(x => x.Name == newData.ProjectName && x.ParentUser == user); if (project == null) { throw new Exception("Invalid project: [" + newData.ProjectName + "]"); } var story = await _context.KanbanStories.FirstOrDefaultAsync(x => x.Name == newData.StoryName && x.ParentProject == project); if (story == null) { throw new Exception("Invalid story: [" + newData.StoryName + "]"); } if (newData.Name != task.Name || newData.StoryName != task.ParentStory.Name) { if (await _context.KanbanTasks.FirstOrDefaultAsync(x => x.Name == newData.Name && x.ParentStory == story) != null) { throw new Exception("Task name must be unique within story"); } } task.ParentStory = story; task.Name = newData.Name; task.Status = newData.Status; task.Notes = newData.Notes; task.Priority = newData.Priority; task.DueDate = newData.DueDate; _context.SaveChanges(); }
public async Task <IActionResult> AddTask(KanbanTaskNewDTO taskToAdd) { var clientUsername = User.FindFirst(ClaimTypes.Name).Value; var newTask = new KanbanTask(); newTask.Name = taskToAdd.Name; newTask.Status = taskToAdd.Status; newTask.Notes = taskToAdd.Notes; newTask.DueDate = taskToAdd.DueDate; newTask.Priority = taskToAdd.Priority; try { await _kanbanRepo.AddTask(clientUsername, taskToAdd.ProjectName, taskToAdd.StoryName, newTask); } catch (Exception e) { return(BadRequest(e.Message)); } return(Ok()); }