Пример #1
0
        public async Task <IActionResult> Post(AddUsuarioRequest request)
        {
            var result = await _usuarioService.AddUsuarioAsync(request);

            return(CreatedAtAction(nameof(GetById), new
            {
                usuarioId = result.UsuarioId
            }, null));
        }
Пример #2
0
        public Usuario Map(AddUsuarioRequest request)
        {
            if (request == null)
            {
                return(null);
            }

            var usuario = new Usuario
            {
                Nome           = request.Nome,
                Email          = request.Email,
                DataNascimento = request.DataNascimento,
                Senha          = request.Senha,
                SexoId         = request.SexoId
            };

            return(usuario);
        }
Пример #3
0
        public async Task <UsuarioResponse> AddUsuarioAsync(AddUsuarioRequest request)
        {
            /*
             * ####################################
             *    Observação sobre o campo senha
             * ####################################
             *
             * Como não é uma boa prática armazenar no banco de dados a senha do usuário,
             * tomei a iniciativa de também armazenar no banco de dados informações que podem
             * ser utilizadas na validação da senha sem a necessidade de armazenar
             * a senha do usuário no banco de dados.
             *
             */

            if (await ValidaEmailDuplicadoInclusaoAsync(request.Email))
            {
                throw new ArgumentException($"Email {request.Email} já cadastrado.");
            }

            var usuario = _usuarioMapper.Map(request);

            // Gera um hash e salt da senha.
            var saltHashSenha = _securityService.GeraSaltHash(request.Senha);

            usuario.Salt = saltHashSenha.Item1;
            usuario.Hash = saltHashSenha.Item2;

            AtivaUsuario(usuario);

            var result = _usuarioRepository.Add(usuario);

            var registrosModificados = await _usuarioRepository
                                       .UnitOfWork.SaveChangesAsync();

            _logger.LogInformation(
                Events.Add,
                Messages.NumberOfRecordAffected_modifiedRecords, registrosModificados);

            _logger.LogInformation(
                Events.Add,
                Messages.ChangesApplied_id, result?.UsuarioId);

            return(_usuarioMapper.Map(result));
        }