Exemplo n.º 1
0
        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));
        }