public async Task <IActionResult> ModifyStory(int storyId, KanbanStoryNewDTO newStoryData) { var clientUsername = User.FindFirst(ClaimTypes.Name).Value; try { await _kanbanRepo.ModifyStory(clientUsername, storyId, newStoryData); } catch (Exception e) { return(BadRequest(e.Message)); } return(Ok()); }
public async Task <IActionResult> AddStory(KanbanStoryNewDTO storyToAdd) { var clientUsername = User.FindFirst(ClaimTypes.Name).Value; var newStory = new KanbanStory(); newStory.Name = storyToAdd.Name; newStory.Notes = storyToAdd.Notes; try { await _kanbanRepo.AddStory(clientUsername, storyToAdd.ProjectName, newStory); } catch (Exception e) { return(BadRequest(e.Message)); } return(Ok()); }
public async Task ModifyStory(string username, int storyId, KanbanStoryNewDTO newData) { if (string.IsNullOrWhiteSpace(newData.Name)) { throw new Exception("Story name cannot be empty"); } var user = await _context.Users.FirstOrDefaultAsync(x => x.Username == username); var story = await _context.KanbanStories .Include(x => x.ParentProject) .FirstOrDefaultAsync(x => x.Id == storyId && x.ParentProject.ParentUser == user); if (story == null) { throw new Exception("No story with ID [" + storyId.ToString() + "] for the user."); } var project = await _context.KanbanProjects.FirstOrDefaultAsync(x => x.Name == newData.ProjectName && x.ParentUser == user); if (project == null) { throw new Exception("No project with name [" + newData.Name + "] for the user."); } if (newData.Name != story.Name || newData.ProjectName != story.ParentProject.Name) { if (await _context.KanbanStories.FirstOrDefaultAsync(x => x.Name == newData.Name && x.ParentProject == project) != null) { throw new Exception("Story name must be unique within project."); } } story.Name = newData.Name; story.Notes = newData.Notes; story.ParentProject = project; _context.SaveChanges(); }