Example #1
0
        public async Task <object> AddLabelToTask([FromRoute] string taskId, [FromBody] string labelId)
        {
            using (var ctx = new AckeeCtx())
            {
                var task = await ctx.Tasks.FirstOrDefaultAsync(t => t.TaskID == taskId);

                var label = await ctx.Labels.FirstOrDefaultAsync(l => l.LabelID == labelId);

                var existingTaskLabel = await ctx.TaskLabels.FirstOrDefaultAsync(tl => tl.TaskID == taskId && tl.LabelID == labelId);

                if (task == null || existingTaskLabel != null)
                {
                    return(BadRequest());
                }

                // Create the task label
                TaskLabel taskLabel = new TaskLabel
                {
                    Task  = task,
                    Label = label
                };

                ctx.TaskLabels.Add(taskLabel);
                await ctx.SaveChangesAsync();

                return(true);
            }
        }
Example #2
0
 public async Task <IEnumerable <ApplicationUser> > Get()
 {
     using (var ctx = new AckeeCtx())
     {
         return(await ctx.Users.ToListAsync());
     }
 }
Example #3
0
 public async Task <ApplicationUser> GetUserByEmail(string userEmail)
 {
     using (var ctx = new AckeeCtx())
     {
         return(await ctx.Users.FirstOrDefaultAsync(u => u.Email == userEmail));
     }
 }
Example #4
0
 public IEnumerable <AspNetProjects> GetUserprojects(string userId)
 {
     using (var ctx = new AckeeCtx())
     {
         return(ctx.Projects.Where(
                    p => p.UserProjects.Any(up => up.UserId == userId)));
     }
 }
Example #5
0
 public async Task <List <AspNetTasks> > GetUserTasks(string userEmail)
 {
     using (var ctx = new AckeeCtx())
     {
         return(await ctx.Tasks
                .Include(t => t.Project)
                .Where(t => t.UserTasks.Any(ut => ut.User.Email == userEmail)).ToListAsync());
     }
 }
Example #6
0
        public async Task <IEnumerable <AspNetProjects> > GetUserProjects(string userId)
        {
            using (var ctx = new AckeeCtx())
            {
                var users       = ctx.Users.ToList();
                var userProject = ctx.UserProjects.ToList();

                return(await ctx.Projects.Where(p => p.UserProjects.Any(
                                                    up => up.UserId == userId)).OrderByDescending(p => p.DateCreated).ToListAsync());
            }
        }
Example #7
0
        public async Task <IEnumerable <AspNetMilestones> > GetProjectMilestones(string projectId)
        {
            var ctx = new AckeeCtx();

            // Get the milestones
            var milestones = await ctx.Milestones
                             .Where(m => m.Project.ProjectID == projectId)
                             .OrderBy(m => m.EndDate)
                             .ToListAsync();

            return(milestones);
        }
Example #8
0
        public async Task <AspNetMilestones> GetMilestoneById(string milestoneId)
        {
            using (var ctx = new AckeeCtx())
            {
                // Get the milestone
                var milestone = await ctx.Milestones
                                .Include(m => m.Project)
                                .FirstOrDefaultAsync(m => m.MilestoneID == milestoneId);

                return(milestone);
            }
        }
Example #9
0
        public async Task <ActionResult <AspNetProjects> > GetProjectById(string projectId)
        {
            using (var ctx = new AckeeCtx())
            {
                // Query user projects, so that they are in memory
                var userprojects = await ctx.UserProjects.Include(up => up.User).ToListAsync();

                return(await ctx.Projects.Include(p => p.Owner)
                       .Include(p => p.UserProjects)
                       .Include(p => p.Milestones)
                       .Include(p => p.Tasks)
                       .FirstOrDefaultAsync(p => p.ProjectID == projectId));
            }
        }
Example #10
0
        public async Task <object> CreateLabel([FromBody] AspNetLabels newLabel)
        {
            using (var ctx = new AckeeCtx())
            {
                if (newLabel.LabelName == null || newLabel.LabelColor == null)
                {
                    return(BadRequest());
                }

                ctx.Labels.Add(newLabel);
                await ctx.SaveChangesAsync();

                return(true);
            }
        }
Example #11
0
        public async Task <IEnumerable <ApplicationUser> > GetProjectMembers(string projectId)
        {
            var ctx = new AckeeCtx();

            // Get the members.
            var users = await ctx.Users.Where(
                u => u.UserProjects.Any(up => up.ProjectId == projectId)).ToListAsync();

            if (users == null)
            {
                return(null);
            }

            return(users);
        }
Example #12
0
        public async Task <AspNetTasks> GetTaskById(string taskId)
        {
            using (var ctx = new AckeeCtx())
            {
                var users      = ctx.ApplicationUser.ToList();
                var milestones = ctx.Milestones.ToList();

                return(await ctx.Tasks
                       .Include(t => t.MilestoneTasks)
                       .Include(t => t.UserTasks)
                       .Include(t => t.Project)
                       .Include(t => t.Project.UserProjects)
                       .Include(t => t.TaskLabels)
                       .FirstOrDefaultAsync(t => t.TaskID == taskId));
            }
        }
Example #13
0
        public async Task <IEnumerable <AspNetTasks> > GetAllTasks()
        {
            using (var ctx = new AckeeCtx())
            {
                var users      = ctx.ApplicationUser.ToList();
                var milestones = ctx.Milestones.ToList();

                return(await ctx.Tasks
                       .Include(t => t.MilestoneTasks)
                       .Include(t => t.UserTasks)
                       .Include(t => t.Project)
                       .Include(t => t.Project.UserProjects)
                       .Include(t => t.TaskLabels)
                       .ToListAsync());
            }
        }
Example #14
0
        public async Task <object> DeleteLabel([FromRoute] string labelId)
        {
            using (var ctx = new AckeeCtx())
            {
                var label = ctx.Labels.FirstOrDefault(l => l.LabelID == labelId);

                if (label == null)
                {
                    return(BadRequest());
                }

                ctx.Remove(label);
                await ctx.SaveChangesAsync();

                return(true);
            }
        }
Example #15
0
        public async Task <Object> DeleteProject(string projectId)
        {
            var ctx = new AckeeCtx();

            // Get the project.
            var project = ctx.Projects.FirstOrDefault(p => p.ProjectID == projectId);

            if (project == null)
            {
                return(BadRequest());
            }

            ctx.Projects.Remove(project);
            await ctx.SaveChangesAsync();

            return(true);
        }
Example #16
0
        public async Task <ActionResult <bool> > DeleteProjectMember(string milestoneId)
        {
            using (var ctx = new AckeeCtx())
            {
                var milestone = await ctx.Milestones.FirstOrDefaultAsync(m => m.MilestoneID == milestoneId);

                if (milestone == null)
                {
                    return(BadRequest());
                }

                ctx.Remove(milestone);
                await ctx.SaveChangesAsync();

                return(true);
            }
        }
Example #17
0
        public async Task <object> UpdateTask([FromRoute] string taskId, [FromBody] AspNetTasks updatedTask)
        {
            using (var ctx = new AckeeCtx())
            {
                var task = ctx.Tasks
                           .Include(t => t.MilestoneTasks)
                           .FirstOrDefault(t => t.TaskID == updatedTask.TaskID);

                if (task == null)
                {
                    return(BadRequest());
                }

                task.TaskName        = updatedTask.TaskName;
                task.TaskDescription = updatedTask.TaskDescription;
                task.StartDate       = updatedTask.StartDate;
                task.EndDate         = updatedTask.EndDate;
                task.Completed       = updatedTask.Completed;

                await ctx.SaveChangesAsync();

                // Set completed milestones to complete
                task = ctx.Tasks.FirstOrDefault(t => t.TaskID == updatedTask.TaskID);

                // Get all the milestones related to the task
                foreach (var milestoneTask in task.MilestoneTasks)
                {
                    // foreach task related to the milestone, check if all tasks are completed
                    var milestone = await ctx.Milestones.FirstOrDefaultAsync(m => m.MilestoneID == milestoneTask.MilestoneID);

                    if (milestone.MilestoneTasks.All(mt => mt.Task.Completed))
                    {
                        milestone.Completed = true;
                    }
                    else
                    {
                        milestone.Completed = false;
                    }
                }

                await ctx.SaveChangesAsync();

                return(true);
            }
        }
Example #18
0
        public async Task <Object> AddProjectMilestone([FromRoute] string projectId, [FromBody] AspNetMilestones newMilestone)
        {
            using (var ctx = new AckeeCtx())
            {
                var project = ctx.Projects.FirstOrDefault(p => p.ProjectID == projectId);

                if (project == null || string.IsNullOrWhiteSpace(newMilestone.MilestoneName))
                {
                    return(BadRequest());
                }

                newMilestone.Project = project;

                ctx.Milestones.Add(newMilestone);
                await ctx.SaveChangesAsync();

                return(newMilestone);
            }
        }
Example #19
0
        public async Task <object> CreateTask([FromBody] AspNetTasks task)
        {
            using (var ctx = new AckeeCtx())
            {
                var existingTask = ctx.Tasks.FirstOrDefault(t => t.TaskName == task.TaskName && t.Project.ProjectID == task.Project.ProjectID);
                var project      = ctx.Projects.FirstOrDefault(p => p.ProjectID == task.Project.ProjectID);

                if (task == null || existingTask != null || project == null)
                {
                    return(BadRequest());
                }

                task.Project = project;

                ctx.Tasks.Add(task);
                await ctx.SaveChangesAsync();

                return(true);
            }
        }
Example #20
0
        public async Task <ActionResult <bool> > RemoveAssigneeFromTask(string taskId, string userId)
        {
            using (var ctx = new AckeeCtx())
            {
                var task = await ctx.Tasks.FirstOrDefaultAsync(t => t.TaskID == taskId);

                var assignee = await ctx.ApplicationUser.FirstOrDefaultAsync(a => a.Id == userId);

                var userTask = await ctx.UserTasks.FirstOrDefaultAsync(ut => ut.UserID == userId && ut.TaskID == taskId);

                if (task == null || assignee == null || userTask == null)
                {
                    return(BadRequest());
                }

                ctx.Remove(userTask);
                await ctx.SaveChangesAsync();

                return(true);
            }
        }
Example #21
0
        public async Task <ActionResult <bool> > RemoveLabelFromTask(string taskId, string labelId)
        {
            using (var ctx = new AckeeCtx())
            {
                var task = await ctx.Tasks.FirstOrDefaultAsync(t => t.TaskID == taskId);

                var label = await ctx.Labels.FirstOrDefaultAsync(l => l.LabelID == labelId);

                var taskLabel = await ctx.TaskLabels.FirstOrDefaultAsync(tl => tl.LabelID == labelId && tl.TaskID == taskId);

                if (task == null || label == null || taskLabel == null)
                {
                    return(BadRequest());
                }

                ctx.Remove(taskLabel);
                await ctx.SaveChangesAsync();

                return(true);
            }
        }
Example #22
0
        public async Task <bool> DeleteProjectOfOwner(string ownerId, string projectId)
        {
            var ctx = new AckeeCtx();

            // Get the user.
            var user = ctx.Users.FirstOrDefault(u => u.Id == ownerId);
            var existingProjectForUser = ctx.Projects.FirstOrDefault(
                p => p.ProjectID == projectId && p.UserProjects.Any(
                    up => up.UserId == ownerId));

            // Return if project for user already exists or userName is null.
            if (user == null || existingProjectForUser == null)
            {
                return(false);
            }

            ctx.Projects.Remove(existingProjectForUser);
            await ctx.SaveChangesAsync();

            return(true);
        }
Example #23
0
        public async Task <ActionResult <bool> > DeleteProjectMember(string projectId, string userEmail)
        {
            using (var ctx = new AckeeCtx())
            {
                var project = await ctx.Projects.FirstOrDefaultAsync(p => p.ProjectID == projectId);

                var user = await ctx.ApplicationUser.FirstOrDefaultAsync(u => u.Email == userEmail);

                var userProject = await ctx.UserProjects.FirstOrDefaultAsync(up => up.ProjectId == projectId && up.UserId == user.Id);

                if (user == null || project == null || userProject == null)
                {
                    return(BadRequest());
                }

                ctx.Remove(userProject);
                await ctx.SaveChangesAsync();

                return(true);
            }
        }
Example #24
0
        public async Task <ActionResult <bool> > RemoveMilestoneFromTask(string taskId, string milestoneId)
        {
            using (var ctx = new AckeeCtx())
            {
                var task = await ctx.Tasks.FirstOrDefaultAsync(t => t.TaskID == taskId);

                var milestone = await ctx.Milestones.FirstOrDefaultAsync(m => m.MilestoneID == milestoneId);

                var milestoneTask = await ctx.MilestoneTasks.FirstOrDefaultAsync(mt => mt.MilestoneID == milestoneId && mt.TaskID == taskId);

                if (task == null || milestone == null || milestoneTask == null)
                {
                    return(BadRequest());
                }

                ctx.Remove(milestoneTask);
                await ctx.SaveChangesAsync();

                return(true);
            }
        }
Example #25
0
        public async Task <IEnumerable <AspNetTasks> > GetProjectTasks(string projectId)
        {
            var ctx = new AckeeCtx();

            var users      = ctx.ApplicationUser.ToList();
            var milestones = ctx.Milestones.ToList();
            var labels     = ctx.Labels.ToList();

            // Get the tasks
            var tasks = await ctx.Tasks
                        .Include(t => t.MilestoneTasks)
                        .Include(t => t.UserTasks)
                        .Include(t => t.Project)
                        .Include(t => t.Project.UserProjects)
                        .Include(t => t.TaskLabels)
                        .Where(t => t.Project.ProjectID == projectId)
                        .OrderBy(t => t.EndDate)
                        .ToListAsync();

            return(tasks);
        }
Example #26
0
        public async Task <Object> UpdateProjectForOwner([FromRoute] string userId, [FromBody] AspNetProjects project)
        {
            using (var ctx = new AckeeCtx())
            {
                // Get the user.
                var user = ctx.Users.FirstOrDefault(u => u.Id == userId);

                // Get the UserProject
                var userProject = await ctx.UserProjects.FirstOrDefaultAsync(
                    up => up.UserId == userId &&
                    up.Project.ProjectID == project.ProjectID);

                // Get the project
                var existingProject = ctx.Projects.FirstOrDefault(p => p.ProjectID == project.ProjectID);

                // Return if project for user already exists or userId is null.
                if (user == null || userProject == null || user.Id != existingProject.Owner.Id || existingProject == null)
                {
                    return(BadRequest());
                }

                // Update the project
                if (!string.IsNullOrWhiteSpace(project.ProjectName))
                {
                    existingProject.ProjectName = project.ProjectName;
                }

                if (!string.IsNullOrWhiteSpace(project.ProjectDescription))
                {
                    existingProject.ProjectDescription = project.ProjectDescription;
                }

                // Save changes
                await ctx.SaveChangesAsync();

                return(true);
            }
        }
Example #27
0
        public async Task <ActionResult <bool> > AddProjectMember(string projectId, string userEmail)
        {
            using (var ctx = new AckeeCtx())
            {
                var project = await ctx.Projects.FirstOrDefaultAsync(p => p.ProjectID == projectId);

                var user = await ctx.ApplicationUser.FirstOrDefaultAsync(u => u.Email == userEmail);

                if (user == null || project == null)
                {
                    return(NotFound());
                }

                var userProject = new UserProject();
                userProject.ProjectId = projectId;
                userProject.UserId    = user.Id;

                ctx.UserProjects.Add(userProject);
                await ctx.SaveChangesAsync();

                return(true);
            }
        }
Example #28
0
        public async Task <ActionResult <bool> > AddAssigneeToTask([FromRoute] string projectId, [FromRoute] string taskName, [FromBody] string userId)
        {
            using (var ctx = new AckeeCtx())
            {
                var task = await ctx.Tasks.FirstOrDefaultAsync(t => t.TaskName == taskName && t.Project.ProjectID == projectId);

                var assignee = await ctx.ApplicationUser.FirstOrDefaultAsync(a => a.Id == userId);

                if (task == null || assignee == null)
                {
                    return(NotFound());
                }

                var userTask = new UserTask();
                userTask.UserID = assignee.Id;
                userTask.TaskID = task.TaskID;

                ctx.UserTasks.Add(userTask);
                await ctx.SaveChangesAsync();

                return(true);
            }
        }
Example #29
0
        public async Task <object> AddMilestoneToTask([FromRoute] string projectId, [FromRoute] string taskName, [FromBody] string milestoneId)
        {
            using (var ctx = new AckeeCtx())
            {
                var task = await ctx.Tasks.FirstOrDefaultAsync(t => t.TaskName == taskName && t.Project.ProjectID == projectId);

                var milestone = await ctx.Milestones.FirstOrDefaultAsync(m => m.MilestoneID == milestoneId);

                if (task == null || milestone == null)
                {
                    return(NotFound());
                }

                var milestoneTask = new MilestoneTask();
                milestoneTask.MilestoneID = milestone.MilestoneID;
                milestoneTask.TaskID      = task.TaskID;

                ctx.MilestoneTasks.Add(milestoneTask);
                await ctx.SaveChangesAsync();

                return(true);
            }
        }
Example #30
0
        public async Task <object> DeleteTaskById(string taskId)
        {
            using (var ctx = new AckeeCtx())
            {
                var task = ctx.Tasks.FirstOrDefault(t => t.TaskID == taskId);

                if (task == null)
                {
                    return(BadRequest());
                }

                var milestoneTasks = task.MilestoneTasks;

                ctx.Tasks.Remove(task);
                await ctx.SaveChangesAsync();

                // Get all the milestones related to the task
                foreach (var milestoneTask in milestoneTasks)
                {
                    // foreach task related to the milestone, check if all tasks are completed
                    var milestone = await ctx.Milestones.FirstOrDefaultAsync(m => m.MilestoneID == milestoneTask.MilestoneID);

                    if (milestone.MilestoneTasks.All(mt => mt.Task.Completed))
                    {
                        milestone.Completed = true;
                    }
                    else
                    {
                        milestone.Completed = false;
                    }
                }

                await ctx.SaveChangesAsync();

                return(true);
            }
        }