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));
            }
        }
Beispiel #2
0
        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,
            });
        }