Untitled
unknown
plain_text
2 years ago
2.3 kB
7
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