public IHttpActionResult Put(Livro livro)
        {
            using (var command = DAOHelper.CreateCommand("Livro_Insert"))
            {
                command.Parameters.AddWithValue("$Id", livro.Id).Direction = System.Data.ParameterDirection.InputOutput;
                command.Parameters.AddWithValue("$ISBN", livro.ISBN);
                command.Parameters.AddWithValue("$Autor", livro.Autor);
                command.Parameters.AddWithValue("$Nome", livro.Nome);
                command.Parameters.AddWithValue("$Preco", livro.Preco);
                command.Parameters.AddWithValue("$DataPublicacao", livro.DataPublicacao);
                command.Parameters.AddWithValue("$ImagemCapa", livro.ImagemCapa);

                command.ExecuteNonQuery();
                livro.Id = (int)command.Parameters["$Id"].Value;
            }

            if (livro.Id > 0)
            {
                return(Ok(livro));
            }
            else
            {
                return(BadRequest("Não foi possível inserir o livro"));
            }
        }
        public IEnumerable <Livro> GetAll()
        {
            List <Livro> livros = new List <Livro>();

            using (var command = DAOHelper.CreateCommand("Livro_SelectAll"))
                using (MySqlDataReader reader = command.ExecuteReader())
                    while (reader.Read())
                    {
                        livros.Add(CreateEntity(reader));
                    }

            return(livros);
        }
        public IHttpActionResult Delete(int id)
        {
            int result = 0;

            using (var command = DAOHelper.CreateCommand("Livro_Delete"))
            {
                command.Parameters.AddWithValue("$Id", id);
                result = command.ExecuteNonQuery();
            }

            if (result > 0)
            {
                return(Ok());
            }
            else
            {
                return(BadRequest("Não foi possível deleter o livro de Id: " + id.ToString()));
            }
        }
        public IHttpActionResult GetById(int id)
        {
            Livro livro = null;

            using (var command = DAOHelper.CreateCommand("Livro_SelectById"))
            {
                command.Parameters.AddWithValue("$Id", id);
                using (MySqlDataReader reader = command.ExecuteReader())
                    if (reader.Read())
                    {
                        livro = CreateEntity(reader);
                    }
            }

            if (livro == null)
            {
                return(NotFound());
            }

            return(Ok(livro));
        }
        public IEnumerable <Livro> Search(string isbn = "", string autor = "", string nome = "", double preco = 0, DateTime?dataPublicacao = null, string imagemCapa = "")
        {
            List <Livro> livros = new List <Livro>();

            using (var command = DAOHelper.CreateCommand("Livro_Search"))
            {
                command.Parameters.AddWithValue("$ISBN", string.IsNullOrEmpty(isbn) ? DBNull.Value : (object)isbn);
                command.Parameters.AddWithValue("$Autor", string.IsNullOrEmpty(autor) ? DBNull.Value : (object)autor);
                command.Parameters.AddWithValue("$Nome", string.IsNullOrEmpty(nome) ? DBNull.Value : (object)nome);
                command.Parameters.AddWithValue("$Preco", preco == 0 ? DBNull.Value : (object)preco);
                command.Parameters.AddWithValue("$DataPublicacao", dataPublicacao == null ? DBNull.Value : (object)dataPublicacao);
                command.Parameters.AddWithValue("$ImagemCapa", string.IsNullOrEmpty(imagemCapa) ? DBNull.Value : (object)imagemCapa);

                using (MySqlDataReader reader = command.ExecuteReader())
                    while (reader.Read())
                    {
                        livros.Add(CreateEntity(reader));
                    }
            }
            return(livros);
        }