public ProjectTest()
        {
            _projectService = new DataService <Project>();
            var mockMapper = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new AutoMapperProfiles());
            });

            _mapper = mockMapper.CreateMapper();



            _project = new ProjectForAddDto
            {
                ProjectName    = "Test Project",
                Address        = "1 See Stree MedowBank College",
                Phone          = "029988889",
                ProjectDetails = "This is a Unit Test project Object"
            };
            _projectUpdateObj = new ProjectForUpdateDto
            {
                ProjectName    = "Test Project updated Last",
                Address        = "1 See Stree MedowBank College",
                Phone          = "029988889",
                ProjectDetails = "This is a Unit Test project Object",
                ContactList    = new List <int>()
                {
                    2, 3
                }
            };
        }
Exemple #2
0
        public async Task <IActionResult> UpdateProject(int id, ProjectForUpdateDto projectForUpdateDto)
        {
            Project project = await _projectService.GetProject(id);

            _mapper.Map(projectForUpdateDto, project);

            if (projectForUpdateDto.ContactList.Count() > 0)
            {
                List <ProjectContact> Contacts = new List <ProjectContact>();
                foreach (int contactId in projectForUpdateDto.ContactList)
                {
                    ProjectContact pc = new ProjectContact {
                        ContactId = contactId
                    };
                    Contacts.Add(pc);
                }
                project.Contacts = Contacts;
            }

            if (await _projectService.Update(project))
            {
                var projectView = _mapper.Map <ProjectForViewDto>(project);
                return(Ok(projectView));
            }

            throw new Exception($"Updating project {id} failed on save");
        }
Exemple #3
0
        public async Task <IActionResult> UpdateProject(Guid projectId, ProjectForUpdateDto projectForUpdate)
        {
            var dateCheck = ValidateProjectDates(projectForUpdate);

            if (dateCheck)
            {
                return(BadRequest("Start Date must be from today and less than End Date"));
            }

            var projectFromRepo = await _repository.Project.GetProject(projectId);

            if (projectFromRepo == null)
            {
                return(BadRequest("Invalid Request"));
            }

            _mapper.Map(projectForUpdate, projectFromRepo);
            _repository.Project.UpdateProject(projectFromRepo);

            var updateProject = await _repository.SaveAsync();

            if (!updateProject)
            {
                throw new Exception("Failed to Update Project");
            }

            return(NoContent());
        }
Exemple #4
0
        public IActionResult UpdateProject(int id,
                                           [FromBody] ProjectForUpdateDto projectForUpdate)
        {
            if (projectForUpdate == null)
            {
                return(BadRequest());
            }

            //TODO: Test for duplicate name
            if (projectForUpdate.Description == projectForUpdate.Name)
            {
                ModelState.AddModelError("Description", "The provided description should be different from the name.");
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var projectEntity = _hoursApiRepository.GetProject(id, false);

            if (projectEntity == null)
            {
                return(NotFound());
            }

            Mapper.Map(projectForUpdate, projectEntity);

            if (!_hoursApiRepository.Save())
            {
                return(StatusCode(500, "A problem happened while handling your request."));
            }

            return(NoContent());
        }
Exemple #5
0
        public async Task <bool> UpdateAsync(int projectId, ProjectForUpdateDto projectForUpdateDto)
        {
            var project = await GetAsync(projectId);

            _mapper.Map(projectForUpdateDto, project);

            return(await _dataContext.SaveChangesAsync() > 0);
        }
        public async Task <IActionResult> UpdateProject(int id, ProjectForUpdateDto projectForUpdateDto)
        {
            //   //--> vérifier que id envoyé est le même id dans le Token
            //    if(id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            //    return Unauthorized();

            var projectFromRepo = await _repo.GetProject(id);

            _mapper.Map(projectForUpdateDto, projectFromRepo);

            if (await _repo.SaveAll())
            {
                return(NoContent());
            }

            throw new Exception($"Un problème est survenu lors de la modification des données");
        }
        public async Task <IActionResult> UpdateProject(int id, ProjectForUpdateDto projectForUpdate)
        {
            var projectFromRepo = await _repo.GetProject(id);

            if (projectFromRepo.isArchived)
            {
                BadRequest("Project is Archived");
            }

            _mapper.Map(projectForUpdate, projectFromRepo);

            if (await _repo.SaveAll())
            {
                return(NoContent());
            }

            throw new Exception($"updating project {id} failed to update");
        }
Exemple #8
0
        public async Task <IActionResult> UpdateAsync(int id, [FromBody] ProjectForUpdateDto projectForUpdateDto)
        {
            var project = await _projectService.GetAsync(id);

            if (project == null)
            {
                return(BadRequest($@"Project with id {id} does not exist"));
            }

            var successResult = await _projectService.UpdateAsync(id, projectForUpdateDto);

            if (successResult)
            {
                return(NoContent());
            }

            return(StatusCode(StatusCodes.Status500InternalServerError,
                              "Something went wrong while updating project in the database."));
        }
        public IActionResult UpdateProject(Guid id, [FromBody] ProjectForUpdateDto project)
        {
            try
            {
                if (project == null)
                {
                    _logger.LogError("Project object sent from client is null.");
                    return(BadRequest("Project object is null"));
                }

                if (!ModelState.IsValid)
                {
                    _logger.LogError("Invalid project object sent from client.");
                    return(BadRequest("Invalid model object"));
                }

                var projectEntity = _repository.Project.GetProjectById(id);
                if (projectEntity == null)
                {
                    _logger.LogError($"Project with id: {id}, hasn't been found in db.");
                    return(NotFound());
                }

                _mapper.Map(project, projectEntity);

                _repository.Project.UpdateProject(projectEntity);
                _repository.Save();

                return(NoContent());
            }
            catch (Exception ex)
            {
                _logger.LogError($"Something went wrong inside UpdateProject action: {ex.Message}");
                return(StatusCode(500, "Internal server error"));
            }
        }
Exemple #10
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"));
        }