public async Task <IActionResult> Post([FromBody] AmigoInput amigoInput) { try { var amigo = await _amigoAppService .InsertAsync(amigoInput) .ConfigureAwait(false); return(Created("", amigo)); } catch (ArgumentException ex) { return(BadRequest(ex.Message)); } }
public async Task <AmigoViewModel> InsertAsync(AmigoInput inputAmigo) { Usuario usuarioIn = await _usuarioRespository.PegarId(inputAmigo.UsuarioId); if (usuarioIn is null) { throw new ArgumentException("Usuario não existe."); } Usuario usuarioAmigoIn = await _usuarioRespository.PegarId(inputAmigo.UsuarioAmigoId); if (usuarioAmigoIn is null) { throw new ArgumentException("Usuario amigo não existe."); } if (inputAmigo.UsuarioId == inputAmigo.UsuarioAmigoId) { throw new ArgumentException("Não é possível vincular o mesmo Id."); } var amigo = new Amigo(inputAmigo.UsuarioId, inputAmigo.UsuarioAmigoId); if (amigo is null) { throw new ArgumentException("Vinculo de amizade não encontrada."); } var id = await _amigoRepository .InserirAsync(amigo) .ConfigureAwait(false); Usuario usuarioAmigo = await _usuarioRespository .PegarId(amigo.UsuarioAmigoId) .ConfigureAwait(false); Usuario usuario = await _usuarioRespository .PegarId(amigo.UsuarioId) .ConfigureAwait(false); return(new AmigoViewModel() { Id = id, UsuarioId = amigo.UsuarioId, NomeUsuario = usuario.Nome, UsuarioAmigoId = amigo.UsuarioAmigoId, NomeUsuarioAmigo = usuarioAmigo.Nome, }); }