Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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();
        }