Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como fica validações que não são fixas

Como fica validações que não são fixas?

Exemplo, um campo de venda onde o quantidade máxima de um item depende da quantidade em estoque. Neste caso não daria para fazer a validação por anotação, então como fazer a validação?

2 respostas
solução!

Imagine que trabalhos em uma comercio de bebidas para isso nos extraimos o dados de quantas bebidas tem no estoque esse dado pode ser extraido de diversas formas normalmente é extraido de um banco de dados qualquer e atribuimos esse valor a uma variavel com isso comparamos a os valores e poderemos retorna um status http como 400 informando que a falta do produto.

exemplo:

[HttpGet]
public async Task<IActionResult> GetProduto(Guid idProduto, int quantidade)
{
    var quantidadeEmEstoque = repository.BuscarQuantidadeProdutoByidProduto(idProduto);
    if (quantidadeEmEstoque < quantidade)
    {
        return BadRequest("Sem Produto suficiente no estoque");
    }
    return Ok("tem produto no estoque")
}

Caso queira entender mais sobre esses modelos de retorno que temos que fazer de forma braçal pode olhar em: https://docs.microsoft.com/pt-br/aspnet/core/web-api/action-return-types?view=aspnetcore-5.0 https://docs.microsoft.com/en-us/dotnet/api/system.identitymodel.asyncresult?view=netframework-4.8

Embora funcione, o return BadRequest, apresenta uma inconsistência no retorno, a forma que consegui o mesmo efeito do BadRequest, porém com o retorno similar foi adicionado um ModelErro ao ModelState e retornando um ValidationProblem

ModelState.AddModelError(nameof(EntityName.NumberField), "Sem estoque suficiente");
return ValidationProblem(ModelState);

Agradeço ao Ivo, pois a dica do BadRequest que me ajudou a chegar no ValidationProlem.