public async Task <IActionResult> DeleteProject(Guid id) { if (id == null) { _logger.LogError("Project object sent from client is null."); return(BadRequest("Empty Project Cannot Be Deleted")); } var projectToDelete = await _repo.Project.GetProject(id); if (projectToDelete == null) { _logger.LogError("Invalid ticket id"); return(BadRequest("The ticket that you are trying to update doesnot exist")); } var projectManager = await _repo.ProjectManager.GetProjectManager(id); //check for owner var isOwner = CheckProjectOwner.IsProjectOwner(User, projectManager); if (!isOwner) { return(Unauthorized("Sorry! You cannot modify this project.")); } _repo.Project.DeleteProject(projectToDelete); await _repo.Save(); return(Ok("Deleted Sucesfully")); }
public async Task <IActionResult> UpdateProject(Guid id, [FromBody] ProjectForUpdateDto projectToUpdate) { if (id == null) { _logger.LogError("Project object sent from client is null."); return(BadRequest("The project you are searching doesnot exist")); } if (!ModelState.IsValid) { _logger.LogError("Invalid model state for the Project"); return(UnprocessableEntity(ModelState)); } var originalproject = await _repo.Project.GetProject(id); if (originalproject == null) { _logger.LogError("Invalid project id"); return(BadRequest("The project that you are trying to update doesnot exist")); } var projectManager = await _repo.ProjectManager.GetProjectManager(id); //check for owner var isOwner = CheckProjectOwner.IsProjectOwner(User, projectManager); if (!isOwner) { return(Unauthorized("Sorry! You cannot modify this project.")); } var submittedByName = originalproject.SubmittedByName; var submittedByEmail = originalproject.SubmittedByEmail; var createdAt = originalproject.CreatedAt; var userProjects = originalproject.UsersProjects; //Have to figure out a way to update many to many realtionship from anywhere otherwise like this //the code will be much longer if we have //Remove previous Project Manager from database if (projectManager != null) { _repo.ProjectManager.RemoveProjectAndManager(projectManager); await _repo.Save(); } //Remove previous UserProject from database if (userProjects != null) { _repo.UserProject.RemoveProjectAndUser(userProjects); await _repo.Save(); } //Mapping var finalprojectToUpdate = _mapper.Map(projectToUpdate, originalproject); finalprojectToUpdate.SubmittedByEmail = submittedByEmail; finalprojectToUpdate.SubmittedByName = submittedByName; finalprojectToUpdate.CreatedAt = createdAt; finalprojectToUpdate.UsersProjects = userProjects.ToList(); _repo.Project.UpdateProject(finalprojectToUpdate); await _repo.Save(); return(Ok("Project Updated Sucessfully")); }