Estou criando uma API em c# .net 6.
O objetivo é fazer controle de estoque de produtos com entradas e saídas e total de estoque.
E é obrigatório a utilização de services, repositories, mapper, DTO's enfim, já criei as respectivas classes Produto e Controle estoque, está tudo funcionando.
As ações de Post, Get, GetbyId, Put e Delete, porém no Put (EditaProduto) ele dá o resultado 204 no content como esperado, mas não salva a atualização no banco de dados.
Estou dias procurando o erro e não encontro.
Esse é o trecho do código na Service:
public UpdateProdutoDto EditaProduto(int id, UpdateProdutoDto produtoDto)
{
var produto = _produtoRepository.RecuperaProdutoPorId(id);
var prod = _produtoRepository.EditaProduto(id, produto);
return _mapper.Map<UpdateProdutoDto>(prod);
}
Esse é o trecho do código na Repository:
public Produto EditaProduto(int id, Produto produto)
{
var prod = _context.Produtos.Where(p => p.Id == id).FirstOrDefault();
_context.Update(produto);
_context.SaveChanges();
return prod;
}
E esse é o trecho do código na Controller:
[HttpPut("{id}")]
public IActionResult EditaProduto(int id, [FromBody] UpdateProdutoDto produtoDto)
{
UpdateProdutoDto produto = _produtoService.EditaProduto(id, produtoDto);
if (produto == null) return NotFound();
return NoContent();
}
Desde já, agradeço!
EditaProduto
recebe o produto para alterar (produtoDto) mas não faz nada com ele na service? recupera o produto por id e faz update do mesmo produto, me parece que não vai mesmo mudar nada.