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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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?
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.