예제 #1
0
        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());
        }
예제 #2
0
        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();
        }
예제 #3
0
        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());
        }