-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathController.js
181 lines (161 loc) · 5.04 KB
/
Controller.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
// estas declarações são basicamente "imports" no back-end
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const models = require('./models/');
const QRCode = require('qrcode');
const app = express();
app.use(cors());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// ..o sistema entende que pode acessar imagens e etc
app.use(express.static('assets'));
let user = models.User;
let tracking = models.Tracking;
let product = models.Product;
//................................................................
// ..ROTAS
//................................................................
// ..login
app.post('/login', async (req, res) => {
let response = await user.findOne({
where: {
name: req.body.name,
password: req.body.password,
}
})
if (response === null) {
res.send(JSON.stringify('error'));
} else {
res.send(response);
}
});
// ..altera a senha
app.post('/verifyPass', async (req, res) => {
// ..realiza a busca no banco
let response = await user.findOne({
where: {
id: req.body.id,
password: req.body.oldPass,
}
})
// ..recebe se a senha existe
if (response === null) {
res.send(JSON.stringify('invalid'));
} else {
// ..se existir, verifica se as 2 novas batem
if (req.body.newPass === req.body.confNewPass) {
response.password = req.body.newPass;
response.save();
res.send(JSON.stringify('Senha atualizada!'));
} else {
res.send(JSON.stringify('Novas senhas não conferem!'));
}
}
});
// ..insere os dados
app.post('/store', async (req, res) => {
let trackingId = '';
// ..insere os dados na tabela rastreio
await tracking.create({
code: req.body.code,
local: req.body.address,
userId: req.body.id,
}).then((response) => {
// ..recupera o id do item cadastrado
trackingId += response.id;
});
await product.create({
trackingId: trackingId,
image: req.body.image,
name: req.body.product,
});
QRCode.toDataURL(req.body.code).then(url => {
// ..diretorio do arquivo
QRCode.toFile('./assets/img/qrcode/code.png', req.body.code);
res.send(JSON.stringify(url));
})
});
// ..mostra os dados de um produto
app.post('/show', async (req, res) => {
let response = await tracking.findAll({
where: {
code: req.body.code,
},
include: [{
model: product,
}],
});
if (JSON.stringify(response)==='[]') {
res.send(JSON.stringify('error'));
} else {
// ..retorna apenas o nome do produto
res.send(JSON.stringify(response));
}
});
// ..encontra os dados para o rastreio
app.post('/show-track', async (req, res) => {
try {
let response = await tracking.findAll({
where: {
code: req.body.code,
},
include: [{
model: product,
}],
});
// ..retorna os dados para o fron-end em react
if (response != null && response[0].id>1) {
// ..retorna apenas o nome do produto
// res.send(JSON.stringify('Sua encomenda ' + response[0].Products[0].name + ', se encontra no seguinte local/coordenadas ' + response[0].local + '.'));
// console.log(response[0].id);
res.send(JSON.stringify(response));
} else {
// console.log(response[0].id);
res.send(JSON.stringify('invalid'));
}
} catch (error) {
res.send(JSON.stringify('error'));
}
});
// ..mostra os dados de um produto
app.post('/update', async (req, res) => {
let response = await tracking.findAll({
where: {
code: req.body.code,
},
include: [{ model: product }],
});
// ..atualiza os dados
response[0].local = req.body.local;
response[0].updatedAt = new Date();
response[0].Products[0].image = req.body.image;
response[0].Products[0].name = req.body.product;
// ..de fato os salva
response[0].save();
response[0].Products[0].save();
res.send(JSON.stringify('Dados atualizados!'));
});
// ..mostra os dados de um produto
app.post('/delete', async (req, res) => {
// ..deleta os dados
let response = await tracking.destroy({
where: {
code: req.body.code,
},
include: [{ model: product }],
});
if (response==0) {
res.send(JSON.stringify('Não existe produto com este Código!'));
}else{
res.send(JSON.stringify('Produto deletado com sucesso!'));
}
});
//................................................................
// ..ROTAS
//................................................................
// ..recebe a porta do env ou em caso de local é a porta 3000
let port = process.env.PORT || 3000;
app.listen(port, (req, res) => {
console.log('Started Server!');
});