Untitled
unknown
plain_text
a year ago
2.3 kB
4
Indexable
const Joi = require('joi'); const model = require('../models/modelProducts'); const schemaVenda = Joi.object({ productId: Joi.number().required(), quantity: Joi.number().min(1).required(), }); const vireficarProdutoExistente = async (productId, res) => { const produto = await model.buscarPorId(productId); if (!produto) { return res.status(404).json({ message: 'Product not found' }); } }; const lindandoComErro = (errorMessage, res) => { const erroDoProduto = errorMessage.includes('"productId" is required'); const erroDeQuantidade = errorMessage.includes('"quantity" is required'); if (erroDoProduto || erroDeQuantidade) { return res.status(400).json({ message: errorMessage }); } if (errorMessage.includes('"quantity" must be greater than or equal to 1')) { return res.status(422).json({ message: errorMessage }); } }; const validacaoDoItem = async (item, res) => { const { error } = schemaVenda.validate(item); if (error) { const mensagemDeErro = error.details[0].message; const respostaDoErro = lindandoComErro(mensagemDeErro, res); if (respostaDoErro) return respostaDoErro; } const respostaDoProduto = await vireficarProdutoExistente(item.productId, res); if (respostaDoProduto) return respostaDoProduto; }; const validateSale = async (req, res, next) => { const itemVendido = req.body; const promises = itemVendido.map((item) => validacaoDoItem(item, res)); const resultado = await Promise.all(promises); const respostaDeErro = resultado.find((result) => result); if (respostaDeErro) return respostaDeErro; next(); }; const esquemaDeQuantidada = Joi.object({ quantity: Joi.number().min(1).required(), }); const validateSalesProductQuantity = async (req, res, next) => { const { quantity } = req.body; const { error } = esquemaDeQuantidada.validate({ quantity }); if (error) { const erroMsg = error.details[0].message; if (erroMsg.includes('"quantity" is required')) { return res.status(400).json({ message: erroMsg }); } if (erroMsg.includes('"quantity" must be greater than or equal to 1')) { return res.status(422).json({ message: erroMsg }); } return res.status(400).json({ message: erroMsg }); } next(); }; module.exports = { validateSale, validateSalesProductQuantity }
Editor is loading...
Leave a Comment