public async Task <IActionResult> CreateUser([ModelBinder(typeof(JsonModelBinder <UserDto>))] Delta <UserDto> userDelta) { if (!ModelState.IsValid) { return(await Error()); } var newUser = _factory.Initialize(); userDelta.Merge(newUser); await UserService.InsertUserAsync(newUser); await InsertFirstAndLastNameGenericAttributes(userDelta.Dto.FirstName, userDelta.Dto.LastName, newUser); //password if (!string.IsNullOrWhiteSpace(userDelta.Dto.Password)) { await AddPassword(userDelta.Dto.Password, newUser); } //roles if (userDelta.Dto.RoleIds.Count > 0) { AddValidRoles(userDelta, newUser); } //stores if (userDelta.Dto.StoreIds.Count > 0) { await AddValidStores(userDelta, newUser); } await UserService.UpdateUserAsync(newUser); var newUserDto = newUser.ToDto(); newUserDto.FirstName = userDelta.Dto.FirstName; newUserDto.LastName = userDelta.Dto.LastName; newUserDto.UserPassword = _userApiService.GetUserPassword(newUserDto.Id); //activity log await UserActivityService.InsertActivityAsync("AddNewUser", $"Added a new user (ID = {newUser.Id})", newUser); var usersRootObject = new UsersRootObject(); usersRootObject.Users.Add(newUserDto); var json = JsonFieldsSerializer.Serialize(usersRootObject, string.Empty); return(new RawJsonActionResult(json)); }