Example #1
0
        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"));
        }
Example #2
0
        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"));
        }