Skip to content

Commit d2b695b

Browse files
feat(carrinhos): inclusão da chave 'quantidadetotal'
1 parent 3036f43 commit d2b695b

File tree

6 files changed

+18
-18
lines changed

6 files changed

+18
-18
lines changed

src/controllers/carrinhos-controller.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,27 +36,30 @@ exports.post = async (req, res) => {
3636

3737
const produtos = req.body.produtos
3838
for (let index = 0; index < produtos.length; index++) {
39+
produtos[index].quantidade = parseInt(produtos[index].quantidade)
3940
const { idproduto, quantidade } = produtos[index]
4041
if (!await produtosService.existeProduto({ _id: idproduto })) {
4142
return res.status(400).send({ message: constant.IDPRODUTO_INVALIDO, item: { index, idproduto, quantidade } })
4243
}
4344

44-
const { quantidade: quantidadeEmEstoque, preco } = await produtosService.getDadosDoProduto({ _id: idproduto })
45-
if (quantidade > quantidadeEmEstoque) {
46-
return res.status(400).send({ message: constant.ESTOQUE_INSUFICIENTE, item: { index, idproduto, quantidade, quantidadeEmEstoque } })
45+
const { quantidade: quantidadeestoque, preco } = await produtosService.getDadosDoProduto({ _id: idproduto })
46+
if (quantidade > quantidadeestoque) {
47+
return res.status(400).send({ message: constant.ESTOQUE_INSUFICIENTE, item: { index, idproduto, quantidade, quantidadeestoque } })
4748
}
4849
Object.assign(produtos[index], { precounitario: preco })
4950
}
5051
let precototal = 0
52+
let quantidadetotal = 0
5153
for (let index = 0; index < produtos.length; index++) {
5254
const { idproduto, quantidade } = produtos[index]
5355
const { quantidade: quantidadeEmEstoque, preco } = await produtosService.getDadosDoProduto({ _id: idproduto })
5456
const novaQuantidade = quantidadeEmEstoque - quantidade
5557
await produtosService.updateById(idproduto, { $set: { quantidade: novaQuantidade } })
5658
precototal += preco * quantidade
59+
quantidadetotal += quantidade
5760
}
5861

59-
Object.assign(req.body, { precototal, idusuario: _id })
62+
Object.assign(req.body, { precototal, quantidadetotal, idusuario: _id })
6063

6164
const dadosCadastrados = await service.criarCarrinho(req.body)
6265
res.status(201).send({ message: constant.POST_SUCESS, _id: dadosCadastrados._id })
@@ -65,7 +68,10 @@ exports.post = async (req, res) => {
6568
}
6669
}
6770

68-
// user tem que ser dono do carrinho
71+
/*
72+
user tem que ser dono do carrinho ou adm
73+
somar estoque do produto
74+
*/
6975

7076
// exports.delete = async (req, res) => {
7177
// try {

src/data/carrinhos.db

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"produtos":[{"idproduto":"BeeJh5lz3k6kSIzA","quantidade":1,"precounitario":123}],"precototal":123,"idusuario":"oUb7aGkMtSEPf6BZ","_id":"8y7oMpY9tWFXUQWY"}
1+
{"produtos":[{"idproduto":"BeeJh5lz3k6kSIzA","quantidade":1,"precounitario":123},{"idproduto":"K6leHdftCeOJj8BJ","quantidade":1,"precounitario":5240}],"precototal":5363,"quantidadetotal":2,"idusuario":"oUb7aGkMtSEPf6BZ","_id":"qbMqntef4iTOwWfg"}

src/data/produtos.db

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
{"nome":"Logitech MX Vertical","preco":123,"descricao":"Mouse bom","quantidade":383,"_id":"BeeJh5lz3k6kSIzA"}
1+
{"nome":"Logitech MX Vertical","preco":123,"descricao":"Mouse bom","quantidade":382,"_id":"BeeJh5lz3k6kSIzA"}
2+
{"nome":"Logitech MX Vertical 2","preco":5240,"descricao":"Mouse bom","quantidade":49977,"_id":"K6leHdftCeOJj8BJ"}

src/models/carrinhos-model.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ const { Joi } = require('express-validation')
44

55
exports.schemaGet = {
66
query: Joi.object({
7-
_id: Joi.any(),
7+
precototal: Joi.any(),
8+
quantidadetotal: Joi.any(),
89
idusuario: Joi.any(),
9-
precototal: Joi.any()
10+
_id: Joi.any()
1011
})
1112
}
1213

src/services/carrinhos-service.js

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ exports.existeCarrinho = pesquisa => {
2424
}
2525

2626
exports.criarCarrinho = async body => {
27-
// body = formatarValores(body)
2827
return new Promise((resolve, reject) => {
2928
datastore.insert(body, (err, novoProduto) => {
3029
if (err) reject(err)
@@ -51,10 +50,3 @@ exports.criarCarrinho = async body => {
5150
// })
5251
// })
5352
// }
54-
55-
// function formatarValores (body) {
56-
// body.nome = body.nome.trim()
57-
// body.preco = parseInt(body.preco)
58-
// body.quantidade = parseInt(body.quantidade)
59-
// return body
60-
// }

src/utils/constants.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ module.exports = {
1313
NECESSARIO_ADM: 'Rota exclusiva para administradores',
1414
TOKEN_INVALID: 'Token de acesso ausente, inválido, expirado ou usuário do token não existe mais',
1515
LIMITE_1_CARRINHO: 'Não é permitido ter mais de 1 carrinho',
16-
IDPRODUTO_INVALIDO: 'Id de produto inexistente',
16+
IDPRODUTO_INVALIDO: 'Produto não encontrado',
1717
ESTOQUE_INSUFICIENTE: 'Produto não possui quantidade suficiente',
1818
EXCLUIR_USUARIO_COM_CARRINHO: 'Não é permitido excluir usuário com carrinho cadastrado',
1919
EXCLUIR_PRODUTO_COM_CARRINHO: 'Não é permitido excluir produto que faz parte de carrinho'

0 commit comments

Comments
 (0)