Пример #1
0
        public async Task <bool> CreateAsync(CreateUsuarioViewModel usuario)
        {
            ValidationResult _result = new CreateUsuarioValidation().Validate(usuario);

            if (!_result.IsValid)
            {
                throw new ApiException(_result.GetErrors(), ApiErrorCodes.MODNOTVALD);
            }

            Perfil _perfil = _repositoryPerfil.GetByKey(Perfil.ADM);

            if (_repository.ExistsWithUserName(usuario.Email))
            {
                throw new ApiException(ApiErrorCodes.EXUSU);
            }

            Usuario _usuario = _mapper.Map <Usuario>(usuario);

            IdentityResult _identityResult = await _userManager.AddPasswordAsync(_usuario, usuario.Senha);

            if (!_identityResult.Succeeded)
            {
                throw new ApiException(ApiErrorCodes.INVPASS, nameof(usuario.Senha));
            }

            IdentityResult _createResult = await _userManager.CreateAsync(_usuario, usuario.Senha);

            if (!_createResult.Succeeded || _createResult.Errors.Any())
            {
                throw new ApiException(_createResult.GetErrorsToString(), ApiErrorCodes.CRUSIDNT);
            }

            _usuario.SetPerfilId(_perfil.Id);

            _repository.Create(_usuario);

            if (!_uow.Commit())
            {
                throw new ApiException(ApiErrorCodes.ERROPBD);
            }

            return(true);
        }