public async Task <IActionResult> Update(int id, [FromBody] UserUpdateDTO userToUpdate)
        {
            var validator = new UserUpdateDTOValidator();
            var results   = await validator.ValidateAsync(userToUpdate);

            results.AddToModelState(ModelState, "UserUpdateDTO");

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

            if (id != userToUpdate.Id)
            {
                return(BadRequest());
            }

            User oldUser = await this._userService.GetByEmail(userToUpdate.Email);

            if (oldUser == null)
            {
                return(BadRequest("No corresponding user !"));
            }

            UserDTO user = await _userService.Update(userToUpdate);

            return(Ok(user));
        }
        public async Task <UserDTO> UpdateUser(UserUpdateDTO userDto)
        {
            var userToUpdate = await _userRepo.GetAsync(userDto.DodId);

            var currentUserDodId = GetCurrentUserId();

            if (userToUpdate == null)
            {
                throw new ArgumentException("User account does not exist");
            }

            var oldUser = new User(userToUpdate);

            _domainMapper.GetMapper <UserUpdateDTO, User>(userDto, userToUpdate).Map();
            if (currentUserDodId == userToUpdate.DodId)
            {
                _userDomainService.UpdateUser(userToUpdate, oldUser);
            }
            else
            {
                await _userDomainService.AdminUpdateUser(currentUserDodId, userToUpdate, oldUser);
            }

            await _userRepo.SaveAsync();

            return(_autoMapper.Map <UserDTO>(userToUpdate));
        }
Esempio n. 3
0
        public async Task <ActionResult> Put([FromBody] UserUpdateDTO user)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                var result = await _userService.Put(user);

                if (result != null)
                {
                    return(Ok(result));
                }
                else
                {
                    return(BadRequest());
                }
            }
            catch (ArgumentException e)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, e.Message));
            }
        }
        public async Task <IActionResult> UpdateUsersAsync([FromRoute] int id, [FromBody] UserUpdateDTO UserModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                var users = await uow.User.GetUserByIdT(id);

                if (users != null)
                {
                    users.firstname  = UserModel.Firstname;
                    users.surname    = UserModel.Surname;
                    users.state      = UserModel.State;
                    users.gender     = UserModel.Gender;
                    users.age        = UserModel.Age;
                    users.updated_at = DateTime.Now;
                    users.email      = UserModel.Email;
                    users.username   = UserModel.Username;
                    users.country    = UserModel.Country;

                    uow.User.Update(users);
                    await uow.save();

                    return(Ok(new { success = true, message = "Profile Data Updated Successfully" }));
                }

                return(Ok(new { success = false, Message = "Failed to update" }));
            }
            catch (Exception ex)
            {
                return(Ok(ex.Message));
            }
        }
Esempio n. 5
0
        public IHttpActionResult Update(UserUpdateDTO userDTO)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var user = userService.GetByUsername(userDTO.Username);
                    if (user == null)
                    {
                        return(NotFound());
                    }

                    user.Firstname = userDTO.Firstname;
                    user.Lastname  = userDTO.Lastname;
                    user.Age       = userDTO.Age;
                    user.City      = userDTO.City;
                    user.Country   = userDTO.Country;
                    user.Address   = userDTO.Address;
                    user.AboutMe   = userDTO.AboutMe;

                    userService.Update(user);

                    return(Ok("User succesfully updated."));
                }
                catch (Exception ex)
                {
                    return(BadRequest("Something went wrong."));
                }
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
Esempio n. 6
0
        public async Task <ActionResult> Edit([FromBody] UserUpdateDTO userDTO)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(UnprocessableEntity(ModelState));
                }

                User user = await _userManager.FindByIdAsync(userDTO.Id.ToString());

                CurrentUser currentUser = new CurrentUser(this.User);

                if (user == null || currentUser.Id != user.Id)
                {
                    return(NotFound());
                }

                user = _userAppService.UpdateEntity(currentUser, user, userDTO);

                if (user != null)
                {
                    await _userManager.UpdateAsync(user);

                    return(Ok(new ObjectResult(userDTO)));
                }

                return(UnprocessableEntity(user));
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 7
0
        public async Task E_Possivel_Invocar_a_Controller_Update()
        {
            var serviceMock = new Mock <IUserService>();
            var nome        = Faker.Name.FullName();
            var email       = Faker.Internet.Email();

            serviceMock.Setup(m => m.Put(It.IsAny <UserUpdateDTO>())).ReturnsAsync(
                new UserUpdateResultDTO
            {
                Id       = Guid.NewGuid(),
                Name     = nome,
                Email    = email,
                UpdateAt = DateTime.UtcNow
            }
                );

            _controller = new UsersController(serviceMock.Object);
            _controller.ModelState.AddModelError("Email", "É um campo obrigatorio");

            var userDtoUpdate = new UserUpdateDTO
            {
                Id    = Guid.NewGuid(),
                Name  = nome,
                Email = email,
            };

            var result = await _controller.Put(userDtoUpdate);

            Assert.True(result is BadRequestObjectResult);
            Assert.False(_controller.ModelState.IsValid);
        }
Esempio n. 8
0
        public ValidateUserDTO Update(UserUpdateDTO user)
        {
            var result = new ValidateUserDTO()
            {
            };

            if (this.userRepository.Exists(user.Login, user.Id))
            {
                var errors = new List <string>()
                {
                    "The given login '" + user.Login + "' is already in use."
                };
                result.OverallErrors = errors;
                return(result);
            }

            var applicationUser = this.userRepository.Get(user.Id);

            applicationUser.Name     = user.Name;
            applicationUser.Login    = user.Login;
            applicationUser.Password = PasswordEncryptor.Encrypt(user.Password);
            this.userRepository.Update(applicationUser);
            result.ValidatedUser = this.Get(user.Id);
            return(result);
        }
Esempio n. 9
0
        public async Task <User> UpdateFromDTOAsync(UserUpdateDTO dto)
        {
            var user = await this.Find(u => u.ID == dto.ID).FirstAsync();

            if (user == null)
            {
                throw new Exception($"The user {dto.ID} was not found.");
            }

            if (dto.Name != null)
            {
                user.Name = dto.Name;
            }

            if (dto.Email != null)
            {
                user.Email = dto.Email;
            }

            if (dto.DepartmentName != null)
            {
                var department = await _departmentRepository.Find(d => d.Name == dto.DepartmentName).FirstAsync();

                if (department == null)
                {
                    throw new Exception($"Department {dto.DepartmentName} is not found.");
                }

                user.Department = department;
            }

            return(await this.Update(user));
        }
Esempio n. 10
0
        public async Task <ActionResult> UpdateUser(int id, [FromBody] UserUpdateDTO updateInfo)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var currentUser    = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);
            var repositoryUser = await _connection.GetUser(id);

            if (repositoryUser == null)
            {
                return(NotFound($"the user with {id} is not available"));
            }
            if (currentUser != repositoryUser.Id)
            {
                return(Unauthorized());
            }

            _mapper.Map(updateInfo, repositoryUser);

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

            throw new Exception($"User updation Failed for {id}");
        }
Esempio n. 11
0
        public async Task <IActionResult> UpdateUser(int id, UserUpdateDTO userToUpdate)
        {
            /*Dodać sprawdzanie roli*/
            //if (id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            //return Unauthorized();

            var userEmpl = await _repo.GetUserEmployment(id);

            var empDTO = new EmplUpdateDTO
            {
                WorkingHours     = userToUpdate.WorkingHours,
                CurrentyEmployed = userToUpdate.CurrentyEmployed,
                FireDate         = userToUpdate.FireDate
            };

            _mapper.Map(empDTO, userEmpl);

            var userFromRepo = await _repo.GetUser(id);

            _mapper.Map(userToUpdate, userFromRepo);

            var userToReturn = _mapper.Map <UserReturnDTO>(userFromRepo);

            if (await _repo.SaveAll())
            {
                return(Ok(userToReturn));
            }

            return(Content($"Błąd aktualizacji danych użytkownika o id: {id}"));
        }
        public async Task <UserDTO> Update(UserUpdateDTO userToUpdate)
        {
            //validator sur userToUpdate

            User userInDb = await this.GetToTransformInDTO(userToUpdate.Id);

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

            userInDb.DeepCopy(userToUpdate);

            if (!string.IsNullOrEmpty(userToUpdate.Password))
            {
                userInDb.CreatePasswordHash(userToUpdate.Password);
            }

            //validator sur user
            string tokenSecret = this._appSettings.GetSection("Settings:Secret").Value;

            userInDb.CreateToken(tokenSecret);

            await userRepository.Update(userInDb);

            User test = await this.userRepository.Get(userInDb.Id);

            return(userInDb.ToDTO());
        }
Esempio n. 13
0
        public ActionResult PutUser(int id, UserUpdateDTO user)
        {
            var identity = HttpContext.User.Identity as ClaimsIdentity;

            if (identity != null)
            {
                if (identity.FindFirst("Id").Value != id.ToString() && !HttpContext.User.IsInRole(Policies.Admin))
                {
                    return(Forbid());
                }
            }
            var user1 = _repository.GetUserById(id);

            if (user1 == null)
            {
                return(NotFound());
            }
            else if (user.Email == null || user.Password == null || user.Username == null)
            {
                return(BadRequest());
            }
            else
            {
                var userMapped = _mapper.Map <User>(user);
                _repository.PutUser(id, userMapped);
                user1 = _repository.GetUserById(id);
                return(Ok(_mapper.Map <UserReadDTO>(user1)));
            }
        }
Esempio n. 14
0
        public async Task <IActionResult> UpdateUser([FromBody] UserUpdateDTO userDto, [FromRoute] string userId)
        {
            if (UserId == userId || IsAdmin)
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                ApplicationUser userModel = await userService.GetUserById(userId);

                if (userDto.HasNameOnly())
                {
                    userModel.UserName = userDto.UserName;
                }
                else
                {
                    mapper.Map(userDto, userModel);
                }

                await userService.UpdateUser(userModel);

                return(new OkObjectResult("User updated"));
            }
            else
            {
                return(BadRequest("Can not update this user"));
            }
        }
Esempio n. 15
0
        public async Task E_Possivel_Invocar_a_Controller_Update()
        {
            var serviceMock = new Mock <IUserService>();
            var nome        = Faker.Name.FullName();
            var email       = Faker.Internet.Email();

            serviceMock.Setup(m => m.Put(It.IsAny <UserUpdateDTO>())).ReturnsAsync(
                new UserUpdateResultDTO
            {
                Id       = Guid.NewGuid(),
                Name     = nome,
                Email    = email,
                UpdateAt = DateTime.UtcNow
            }
                );

            _controller = new UsersController(serviceMock.Object);

            var userDtoUpdate = new UserUpdateDTO
            {
                Id    = Guid.NewGuid(),
                Name  = nome,
                Email = email,
            };

            var result = await _controller.Put(userDtoUpdate);

            Assert.True(result is OkObjectResult);

            UserUpdateResultDTO resultValue = ((OkObjectResult)result).Value as UserUpdateResultDTO;

            Assert.NotNull(resultValue);
            Assert.Equal(userDtoUpdate.Name, resultValue.Name);
            Assert.Equal(userDtoUpdate.Email, resultValue.Email);
        }
Esempio n. 16
0
        public async Task <Response <UserDTO> > UpdateUser(Guid id, UserUpdateDTO dto)
        {
            var userEntity = await _repository.GetById(id);

            if (userEntity == null)
            {
                return(new BusinessConflictErrorResponse <UserDTO>(new []
                {
                    new Error
                    {
                        Code = ErrorCodes.Business.UserDoesNotExists,
                        Message = ErrorMessages.Business.UserDoesNotExists,
                        Field = ErrorFields.User.Id
                    }
                }));
            }

            userEntity.Name = dto.Name;
            userEntity      = await _repository.Update(userEntity);

            var result = _mapper.Map <UserModel, UserDTO>(userEntity);

            return(new Response <UserDTO>
            {
                Data = result
            });
        }
Esempio n. 17
0
        public async Task <IActionResult> UpdateUser(int id, [FromBody] UserUpdateDTO userDTO)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var currentUserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);

            var userFromRepo = await dataContext.GetUserAsync(id);

            if (userFromRepo == null)
            {
                return(NotFound($"Couldn't find user {id}"));
            }
            if (currentUserId != userFromRepo.Id)
            {
                return(Unauthorized());
            }

            mapper.Map(userDTO, userFromRepo);

            if (await dataContext.SaveAllAsync())
            {
                return(NoContent());
            }

            throw new Exception($"Update failed for user {id}");
        }
Esempio n. 18
0
        public async Task <IActionResult> PutUser(string id, UserUpdateDTO model)
        {
            if (id != User.FindFirst(JwtRegisteredClaimNames.Jti).Value.ToString())
            {
                return(Unauthorized());
            }
            var user = await _context.Users.FindAsync(id);

            _mapper.Map(model, user);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!UserExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Esempio n. 19
0
        public async Task <IActionResult> PutUser(int id, UserUpdateDTO userUpdate)
        {
            /* if (id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
             * {
             *   return Unauthorized();
             * }*/
            var userFromRepo = await _userRepository.GetUser(id);

            _mapper.Map(userUpdate, userFromRepo);

            try
            {
                var result = await _userRepository.SaveAll();

                if (result)
                {
                    return(NoContent());
                }
                else
                {
                    throw new Exception($"Canot save a user data");
                }
            }
            catch (DbUpdateConcurrencyException)
            {
                if (_userRepository.GetUser(id) == null)
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
        }
Esempio n. 20
0
        public async Task <IActionResult> UpdateUser(int id, [FromBody] UserUpdateDTO userUpdate)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var currentUserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);

            var userFromRepo = await _repo.GetUser(id);

            if (userFromRepo == null)
            {
                return(NotFound($"NF user w Id of {id}"));
            }

            if (currentUserId != userFromRepo.Id)
            {
                return(Unauthorized());
            }

            _mapper.Map(userUpdate, userFromRepo);

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

            throw new Exception($"updating user {id} was failed");
        }
Esempio n. 21
0
        public async Task Put_given_User_id_same_as_claim_calls_update()
        {
            var dto = new UserUpdateDTO
            {
                UserId    = 1,
                FirstName = "test",
            };

            var repository = new Mock <IUserRepository>();

            var logger = new Mock <ILogger <UsersController> >();

            var controller = new UsersController(repository.Object, logger.Object);

            // Needs HttpContext to mock it.
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var cp = MockClaimsSecurity(dto.UserId);

            //Update the HttpContext to use mocked claim
            controller.ControllerContext.HttpContext.User = cp.Object;

            await controller.Put(dto);

            repository.Verify(s => s.UpdateAsync(dto));
        }
Esempio n. 22
0
 public ActionResult Edit(int id, UserUpdateDTO request)
 {
     LoadData();
     LoadById(id);
     try
     {
         if (request.Password != null)
         {
             string passwordValue = request.Password;
             request.Password = passwordService.HashPassword(passwordValue);
         }
         request.UserId = id;
         updateCommand.Execute(request);
         return(RedirectToAction(nameof(Index)));
     }
     catch (EntityAlreadyExistsException e)
     {
         TempData["error"] = e.Message;
         return(View());
     }
     catch (EntityNotFoundException e)
     {
         TempData["error"] = e.Message;
         return(View());
     }
     catch (Exception)
     {
         TempData["error"] = "Please fill up all field in this form.";
         return(View());
     }
 }
Esempio n. 23
0
        public async Task Put_given_different_User_id_as_claim_returns_Forbidden()
        {
            var dto = new UserUpdateDTO
            {
                UserId    = 1,
                FirstName = "test",
            };

            var repository = new Mock <IUserRepository>();

            var logger = new Mock <ILogger <UsersController> >();

            var controller = new UsersController(repository.Object, logger.Object);

            // Needs HttpContext to mock it.
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var cp = MockClaimsSecurity(42);

            //Update the HttpContext to use mocked claim
            controller.ControllerContext.HttpContext.User = cp.Object;

            var put = await controller.Put(dto);

            Assert.IsType <ForbidResult>(put);
        }
Esempio n. 24
0
        public async Task <ActionResult> PartialUpdateCustomer(int id, JsonPatchDocument <UserUpdateDTO> patchDoc)
        {
            var customerModelFromRepo = await _userService.GetUser(id);

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

            var customerToPatch = new UserUpdateDTO
            {
                Firstname = customerModelFromRepo.Firstname,
                Lastname  = customerModelFromRepo.Lastname,
                Email     = customerModelFromRepo.Email
            };

            patchDoc.ApplyTo(customerToPatch, ModelState);

            if (!TryValidateModel(customerToPatch))
            {
                return(ValidationProblem(ModelState));
            }

            customerModelFromRepo.SetFirstname(customerToPatch.Firstname);
            customerModelFromRepo.SetLastname(customerToPatch.Lastname);
            customerModelFromRepo.SetEmail(customerToPatch.Email);

            await _userService.UpdateUser(customerModelFromRepo);

            return(NoContent());
        }
Esempio n. 25
0
        public async Task Put_given_non_existing_id_returns_NotFound()
        {
            var dto = new UserUpdateDTO
            {
                UserId      = 1,
                FirstName   = "test",
                NewPassword = "******"
            };

            var repository = new Mock <IUserRepository>();

            repository.Setup(m => m.UpdateAsync(dto)).ReturnsAsync(false);

            var logger = new Mock <ILogger <UsersController> >();

            var controller = new UsersController(repository.Object, logger.Object);

            // Needs HttpContext to mock it.
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var cp = MockClaimsSecurity(dto.UserId);

            //Update the HttpContext to use mocked claim
            controller.ControllerContext.HttpContext.User = cp.Object;

            var put = await controller.Put(dto);

            Assert.IsType <NotFoundResult>(put);
        }
        public async Task <IActionResult> UpdateUser(UserUpdateDTO userUpdateDTO)
        {
            try
            {
                bool ok = await _userService.UpdateUser(userUpdateDTO);

                return(Ok(new Response <bool>
                {
                    Error = false,
                    ErrorDescription = null,
                    ResponseModel = ok,
                    StatusCode = StatusCodes.Status200OK
                }));
            }
            catch (Exception ex)
            {
                return(Ok(new Response <bool>
                {
                    Error = true,
                    ErrorDescription = ex.Message,
                    ResponseModel = false,
                    StatusCode = StatusCodes.Status400BadRequest
                }));
            }
        }
        public async Task <IActionResult> Update(int Id, UserUpdateDTO userUpdate)
        {
            try
            {
                var user = await this._userManager.FindByIdAsync(Id.ToString());

                if (user == null)
                {
                    return(this.StatusCode(StatusCodes.Status404NotFound, "Usuário não encontrado"));
                }

                this._mapper.Map(userUpdate, user);

                var result = await this._userManager.UpdateAsync(user);

                if (result.Succeeded)
                {
                    return(Created($"/api/user/{userUpdate.Id}", this._mapper.Map <UserDTO>(user)));
                }

                return(BadRequest(result.Errors));
            }
            catch (System.Exception)
            {
                return(this.StatusCode(StatusCodes.Status500InternalServerError, "Banco de dados falhou"));
            }
        }
        public async Task <IActionResult> Update([FromForm] UserUpdateDTO model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    await _identityService.UpdateAsync(mapper.Map <UserUpdateDTO, UserDTO>(model));

                    return(RedirectToAction(nameof(Index)));
                }

                ViewData["Position"] = new SelectList(_unitOfWork.EmployeePositions.GetAll(), "Id", "Title");
                ViewData["Roles"]    = new SelectList(_identityService.GetAllRoles(), "Name", "Name");
                ViewData["Error"]    = "Model is not correct";

                return(View(model));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, ex.Message);
                ViewData["Position"] = new SelectList(_unitOfWork.EmployeePositions.GetAll(), "Id", "Title");
                ViewData["Roles"]    = new SelectList(_identityService.GetAllRoles(), "Name", "Name");
                ViewData["Error"]    = "Unexpected error";
                return(View(model));
            }
        }
Esempio n. 29
0
        public async Task <UserDTO> UpdateUser(UserUpdateDTO userDto)
        {
            var userEntity = await repository.GetById(userDto.Id);

            if (userEntity == null)
            {
                throw new NotFoundException(nameof(User), userDto.Id);
            }

            if (userEntity.TeamId != null && userEntity.TeamId != 0)
            {
                await teamService.GetTeamById((int)userEntity.TeamId);
            }
            else
            {
                userEntity.TeamId = null;
            }

            userEntity.FirstName = userDto.FirstName;
            userEntity.LastName  = userDto.LastName;
            userEntity.Email     = userDto.Email;
            userEntity.Birthday  = userDto.Birthday;
            userEntity.TeamId    = userDto.TeamId;

            await repository.Update(userEntity);

            await unitOfWork.SaveChangesAsync();

            return((await GetAllUsers()).FirstOrDefault(u => u.Id == userEntity.Id));
        }
Esempio n. 30
0
        public async Task <UserDTOUpdateResult> Update(UserUpdateDTO userInfo)
        {
            var model  = _Mapper.Map <UserModel>(userInfo);
            var entity = _Mapper.Map <UserEntity>(model);
            var result = await _Repository.UpdateAsync(entity);

            return(_Mapper.Map <UserDTOUpdateResult>(result));
        }