Skip to content

Commit cf0f949

Browse files
committed
create controller
1 parent 8ff4b0f commit cf0f949

File tree

6 files changed

+370
-338
lines changed

6 files changed

+370
-338
lines changed

controllers/pedidos-controller.js

+134
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
const mysql = require('../mysql').pool;
2+
3+
exports.getpedidos = (req, res, next) => {
4+
mysql.getConnection((error, conn) => {
5+
if(error){ return res.status(500).send({error: error})}
6+
conn.query(
7+
`SELECT pedidos.id_pedido,
8+
pedidos.quantidade,
9+
produtos.id_produto,
10+
produtos.nome_produto,
11+
produtos.preco_produto
12+
FROM pedidos
13+
INNER JOIN produtos
14+
ON produtos.id_produto = pedidos.id_produto;`,
15+
(error, result, fields) => {
16+
if(error){ return res.status(500).send({error: error})}
17+
const response = {
18+
pedidos: result.map(pedido => {
19+
return {
20+
id_pedido: pedido.id_pedido,
21+
quantidade: pedido.quantidade,
22+
produto:{
23+
id_produtos: pedido.id_produtos,
24+
nome_produto: pedido.nome_produto,
25+
preco_produto: pedido.preco_produto
26+
},
27+
request: {
28+
tipo: 'GET',
29+
descicao: 'Retorna os detalhes de um pedido especifico',
30+
url: 'http://localhost:3000/pedidos/' + pedido.id_pedido
31+
}
32+
}
33+
})
34+
}
35+
return res.status(200).send({ response })
36+
}
37+
)
38+
});
39+
};
40+
41+
exports.postPedidos = (req, res, next ) => {
42+
mysql.getConnection((error, conn) => {
43+
if (error) { return res.status(500).send({ error: error})}
44+
conn.query('SELECT * FROM produtos WHERE id_produto = ?',
45+
[req.body.id_produto],
46+
(error, result, field) => {
47+
if(error){ return res.status(500).send({error: error})}
48+
if(result.length == 0){
49+
return res.status(404).send({
50+
mensagem: 'Produto não encontrado!!'
51+
})
52+
}
53+
conn.query(
54+
'INSERT INTO pedidos(id_produto, quantidade) VALUES (?,?)',
55+
[req.body.id_produto, req.body.quantidade],
56+
(error, result, field) => {
57+
conn.release();
58+
if(error){ return res.status(500).send({error: error})}
59+
const response = {
60+
mensagem: 'Pedido inserido com sucesso!!',
61+
pedidoCriado: {
62+
id_pedido: result.id_pedido,
63+
id_produto: req.body.id_produto,
64+
quantidade: req.body.quantidade,
65+
request: {
66+
tipo: 'GET',
67+
descicao: 'Retorna todos os pedidos',
68+
url: 'http://localhost:3000/pedidos'
69+
}
70+
}
71+
}
72+
return res.status(201).send(response);
73+
}
74+
)
75+
});
76+
});
77+
};
78+
79+
exports.getUmPedido = (req, res, next) => {
80+
mysql.getConnection((error, conn) => {
81+
if(error){ return res.status(500).send({error: error})}
82+
conn.query(
83+
'SELECT * FROM pedidos WHERE id_pedido = ?;',
84+
[req.params.id_pedido],
85+
(error, result, fields) => {
86+
if(error){ return res.status(500).send({error: error})}
87+
if(result.length == 0){
88+
return res.status(404).send({
89+
mensagem: 'Não foi encontrado pedido com esse ID'
90+
})
91+
}
92+
const response = {
93+
produto: {
94+
id_pedido: result[0].id_pedido,
95+
id_produto: result[0].id_produto,
96+
quantidade: result[0].quantidade,
97+
request: {
98+
tipo: 'GET',
99+
descicao: 'Retorna todos os pedidos',
100+
url: 'http://localhost:3000/pedidos'
101+
}
102+
}
103+
}
104+
return res.status(201).send(response);
105+
}
106+
)
107+
});
108+
};
109+
110+
exports.deletePedido = (req, res, next ) => {
111+
mysql.getConnection((error, conn) => {
112+
if(error){ return res.status(500).send({error: error})}
113+
conn.query(
114+
'DELETE FROM pedidos WHERE id_pedido = ?', [req.body.id_pedido],
115+
(error, result, field) => {
116+
conn.release();
117+
if(error){ return res.status(500).send({error: error})}
118+
const response = {
119+
mensagem: 'Pedido removido com sucesso',
120+
request: {
121+
tipo: 'POST',
122+
descricao: 'Insere um pedido',
123+
url: 'http://localhost:3000/pedidos',
124+
body: {
125+
id_produto: 'Number',
126+
quantidade: 'Number'
127+
}
128+
}
129+
}
130+
return res.status(202).send(response);
131+
}
132+
)
133+
});
134+
};

controllers/produtos-controller.js

+154
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
const mysql = require('../mysql').pool;
2+
3+
4+
exports.getProdutos = (req, res, next) => {
5+
mysql.getConnection((error, conn) => {
6+
if(error){ return res.status(500).send({error: error})}
7+
conn.query(
8+
'SELECT * FROM produtos',
9+
(error, result, fields) => {
10+
if(error){ return res.status(500).send({error: error})}
11+
const response = {
12+
quantidade: result.length,
13+
produtos: result.map(prod => {
14+
return {
15+
id_produto: prod.id_produto,
16+
nome_produto: prod.nome_produto,
17+
preco_produto: prod.preco_produto,
18+
imagem_produto: prod.imagem_produto,
19+
request: {
20+
tipo: 'GET',
21+
descicao: 'Retorna os detalhes de um produto especifico',
22+
url: 'http://localhost:3000/produtos/' + prod.id_produto
23+
}
24+
}
25+
})
26+
}
27+
return res.status(200).send({ response })
28+
}
29+
)
30+
});
31+
};
32+
33+
exports.postProduto = (req, res, next ) => {
34+
console.log(req.file);
35+
mysql.getConnection((error, conn) => {
36+
if(error){ return res.status(500).send({error: error})}
37+
conn.query(
38+
'INSERT INTO produtos(nome_produto, preco_produto, imagem_produto) VALUES (?,?,?)',
39+
[
40+
req.body.nome_produto,
41+
req.body.preco_produto,
42+
req.file.patch
43+
],
44+
(error, result, field) => {
45+
conn.release();
46+
if(error){ return res.status(500).send({error: error})}
47+
const response = {
48+
mensagem: 'Produto inserido com sucesso!!',
49+
produtoCriado: {
50+
id_produto: result.insertId,
51+
nome_produto: req.body.nome_produto,
52+
preco_produto: req.body.preco_produto,
53+
imagem_produto: req.file.path,
54+
request: {
55+
tipo: 'GET',
56+
descicao: 'Retorna todos os produtos',
57+
url: 'http://localhost:3000/produtos'
58+
}
59+
}
60+
}
61+
return res.status(201).send(response);
62+
}
63+
)
64+
});
65+
};
66+
67+
exports.getUmProduto = (req, res, next) => {
68+
mysql.getConnection((error, conn) => {
69+
if(error){ return res.status(500).send({error: error})}
70+
conn.query(
71+
'SELECT * FROM produtos WHERE id_produto = ?;',
72+
[req.params.id_produto],
73+
(error, result, fields) => {
74+
if(error){ return res.status(500).send({error: error})}
75+
if(result.length == 0){
76+
return res.status(404).send({
77+
mensagem: 'Não foi encontrado produto com esse ID'
78+
})
79+
}
80+
const response = {
81+
produto: {
82+
id_produto: result[0].id_produto,
83+
nome_produto: result[0].nome_produto,
84+
preco_produto: result[0].preco_produto,
85+
imagem_produto: result[0].imagem_produto,
86+
request: {
87+
tipo: 'GET',
88+
descicao: 'Retorna todos os produtos',
89+
url: 'http://localhost:3000/produtos'
90+
}
91+
}
92+
}
93+
return res.status(201).send(response);
94+
}
95+
)
96+
});
97+
};
98+
99+
exports.patchProduto = (req, res, next ) => {
100+
mysql.getConnection((error, conn) => {
101+
if(error){ return res.status(500).send({error: error})}
102+
conn.query(
103+
`UPDATE produtos
104+
SET nome_produto = ?,
105+
preco_produto = ?
106+
WHERE id_produto = ?`,
107+
[req.body.nome_produto, req.body.preco_produto, req.body.id_produto],
108+
(error, result, field) => {
109+
conn.release();
110+
if(error){ return res.status(500).send({error: error})}
111+
const response = {
112+
mensagem: 'Produto atualizado com sucesso!!',
113+
produtoAtualizado: {
114+
id_produto: req.body.insertId,
115+
nome_produto: req.body.nome_produto,
116+
preco_produto: req.body.preco_produto,
117+
request: {
118+
tipo: 'GET',
119+
descicao: 'Retorna os detalhes de um produto especifico',
120+
url: 'http://localhost:3000/produtos/' + req.body.id_produto
121+
}
122+
}
123+
}
124+
return res.status(202).send(response);
125+
}
126+
)
127+
});
128+
}
129+
130+
exports.deleteProduto = (req, res, next ) => {
131+
mysql.getConnection((error, conn) => {
132+
if(error){ return res.status(500).send({error: error})}
133+
conn.query(
134+
'DELETE FROM produtos WHERE id_produto = ?', [req.body.id_produto],
135+
(error, result, field) => {
136+
conn.release();
137+
if(error){ return res.status(500).send({error: error})}
138+
const response = {
139+
mensagem: 'Produto removido com sucesso',
140+
request: {
141+
tipo: 'POST',
142+
descricao: 'Insere um produto',
143+
url: 'http://localhost:3000/produtos',
144+
body: {
145+
nome_produto: 'String',
146+
preco_produto: 'Number'
147+
}
148+
}
149+
}
150+
return res.status(202).send(response);
151+
}
152+
)
153+
});
154+
}

controllers/usuarios-controller.js

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
const mysql = require('../mysql').pool;
2+
const bcrypt = require('bcrypt');
3+
const jwt = require('jsonwebtoken');
4+
5+
6+
exports.cadastrarUsuario = (req, res, next) => {
7+
mysql.getConnection((error, conn) => {
8+
if (error) { return res.status(500).send({ error: error }) }
9+
conn.query('SELECT * FROM usuarios WHERE email = ?',
10+
[req.body.email], (error, results) => {
11+
if (error) { return res.status(500).send({ error: error }) }
12+
if(results.length > 0){
13+
res.status(409).send({ mensagem: 'Usuário já cadastrado!' })
14+
}else {
15+
bcrypt.hash(req.body.senha, 11, (errBcrypt, hash) => {
16+
if(errBcrypt){ return res.status(500).send({ error: errBcrypt})}
17+
conn.query(`INSERT INTO usuarios (email, senha) VALUES (?, ?)`,
18+
[req.body.email, hash],
19+
(error, results) => {
20+
conn.release();
21+
if (error) { return res.status(500).send({ error: error }) }
22+
response = {
23+
mensagem: 'Usuario criado com sucesso',
24+
usuarioCriado: {
25+
id_usuario: results.insertId,
26+
email: req.body.email
27+
}
28+
}
29+
return res.status(201).send( response )
30+
});
31+
});
32+
}
33+
})
34+
});
35+
}
36+
37+
exports.loginUsuario = (req, res, next) => {
38+
mysql.getConnection((error, conn) => {
39+
if (error) { return res.status(500).send({ error: error })}
40+
const query = `SELECT * FROM usuarios WHERE email = ?`
41+
conn.query(query, [req.body.email], (error, results, fields) => {
42+
conn.release();
43+
if(error) { return res.status(500).send({ error: error }) }
44+
if(results.length < 1){ return res.status(401).send({ mensagem: 'Falha na autenticação!!'}); }
45+
bcrypt.compare(req.body.senha, results[0].senha, (err, result) => {
46+
if (err) { return res.status(401).send({ mensagem: 'Falha na autenticação!!'}); }
47+
if (result) {
48+
const token = jwt.sign({
49+
id_usuario: results[0].id_usuario,
50+
email: results[0].email
51+
}, process.env.JWT_KEY, {
52+
expiresIn: "2h"
53+
});
54+
return res.status(200).send({
55+
mensagem: 'Autenticado com sucesso',
56+
token: token
57+
});
58+
}
59+
return res.status(401).send({ mensagem: 'Falha na autenticação!!'});
60+
});
61+
});
62+
});
63+
}

0 commit comments

Comments
 (0)