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); } }
public async Task <object> CreateProjectForOwner([FromRoute] string userId, [FromBody] AspNetProjects project) { using (var ctx = new AckeeCtx()) { // Get the user. var user = ctx.Users.FirstOrDefault(u => u.Id == userId); var existingProject = await ctx.UserProjects.FirstOrDefaultAsync( up => up.UserId == userId && up.Project.ProjectName == project.ProjectName); // Return if project for user already exists or userId is null. if (user == null || existingProject != null) { return(BadRequest()); } // Create the new project. project.Owner = user; project.DateCreated = DateTime.Now; // Add project to DB. ctx.Projects.Add(project); var userProject = new UserProject() { ProjectId = project.ProjectID, UserId = user.Id }; ctx.UserProjects.Add(userProject); await ctx.SaveChangesAsync(); return(ctx.Projects.FirstOrDefault(p => p.ProjectID == project.ProjectID)); } }