예제 #1
0
        public async Task <IActionResult> UpdateUser([FromBody] UpdateUserViewModel updateUserViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("خطا در اطلاعات ، لطفا ورودی های خود را کنترل فرمایید"));
            }
            var myUserId = GetMyUserId();
            var userInDb = await _userService.FindUserAsync(updateUserViewModel.UserId).ConfigureAwait(false);

            await _roleService.DisablePreviuosRoles(userInDb.Id);

            await _claimService.DisablePrviousClaims(userInDb.Id);

            var userRoles  = _roleService.ConvertToUserRoles(updateUserViewModel.RoleIds, updateUserViewModel.UserId);
            var userClaims = GetClaims(updateUserViewModel.ZoneIds, updateUserViewModel.Actions, myUserId, updateUserViewModel.UserId);
            await _claimService.AddRangeAsync(userClaims);

            await _roleService.AddRangeAsync(userRoles);

            _userService.UpdateUserAsync(userInDb, updateUserViewModel);
            await _uow.SaveChangesAsync();

            var successMessage = String.Join(" ", "اطلاعات", updateUserViewModel.DisplayName, "با موفقیت ویرایش شد");

            return(Ok(successMessage));
        }