public async Task <IActionResult> Post(AddUsuarioRequest request) { var result = await _usuarioService.AddUsuarioAsync(request); return(CreatedAtAction(nameof(GetById), new { usuarioId = result.UsuarioId }, null)); }
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); }
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)); }