Skip to content

Commit e1c39e2

Browse files
committed
Merge branch 'master' of https://github.com/yleosamp/central-api
update
2 parents e7af5e0 + c4e4db5 commit e1c39e2

8 files changed

+2013
-15
lines changed

db/connection.ts

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const dbConnection = new Pool({
1111
database: process.env.DB_NAME,
1212
password: process.env.DB_PASSWORD,
1313
port: parseInt(process.env.DB_PORT || '5432'),
14+
ssl: true
1415
})
1516

1617
export default dbConnection

db/createTables.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const createTables = async () => {
1010
enderecoMaps TEXT,
1111
precoMedio FLOAT,
1212
totalSemanal FLOAT,
13-
imagemBanner TEXT,
13+
imagemBanner TEXT,
1414
imagemAvatar TEXT,
1515
horarioFuncionamento TEXT,
1616
abertoFechado BOOLEAN,

debug/routesTest.http

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22

33
POST http://localhost:3000/api/authentication/registro // REGISTRAR USUÁRIO
44
{ // PARA USUÁRIO
5-
"email": "email@gmail.com",
5+
"email": "leonnardomelo3@gmail.com",
66
"password": "123",
77
"nivelUsuario": 1, // Ou 2 para empresa
8-
"nickname": "nick",
9-
"nomeReal": "Nome Real",
10-
"dataNasc": "2000-01-01"
8+
"nickname": "Leonardo",
9+
"nomeReal": "Leonado Daitx",
10+
"dataNasc": "2005-09-07"
1111
}
1212

1313
{ // PARA EMPRESA

package-lock.json

+1,936
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"@types/node": "^22.5.3",
1818
"@types/pg": "^8.11.8",
1919
"bcrypt": "^5.1.1",
20+
"central-api": "file:",
2021
"cors": "^2.8.5",
2122
"dotenv": "^16.4.5",
2223
"express": "^4.19.2",

routes/accountManagement.ts

+46-7
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ router.put('/update', authMiddleware, async (req, res) => {
2323
if (!req.userAuthenticated) {
2424
return res.status(401).json({ message: 'Usuário não autenticado' });
2525
}
26-
const userId = (req.userAuthenticated as JwtPayload).id;
26+
const loginUserId = (req.userAuthenticated as JwtPayload).id;
2727

28+
// Desestruturação das variáveis do req.body
2829
const {
2930
pontos,
3031
vitorias,
@@ -42,27 +43,40 @@ router.put('/update', authMiddleware, async (req, res) => {
4243
geral
4344
} = req.body;
4445

45-
// Verifica se o perfil já existe
46+
// Primeiro, buscar o idCliente da tabela login_usuario
47+
const userQuery = await dbConnection.query(
48+
'SELECT idCliente FROM login_usuario WHERE id = $1',
49+
[loginUserId]
50+
);
51+
52+
if (userQuery.rows.length === 0) {
53+
return res.status(404).json({ message: 'Cliente não encontrado' });
54+
}
55+
56+
// Este é o id da tabela Cliente que será usado como foreign key
57+
const clienteId = userQuery.rows[0].idcliente;
58+
59+
// Verifica se o perfil já existe usando o id do Cliente
4660
const existingProfile = await dbConnection.query(
4761
'SELECT * FROM Estatisticas_do_Cliente WHERE idUsuario = $1',
48-
[userId]
62+
[clienteId]
4963
);
5064

5165
if (existingProfile.rows.length === 0) {
52-
// Se não existir, insere um novo perfil
66+
// Se não existir, insere um novo perfil usando o id do Cliente
5367
await dbConnection.query(
5468
`INSERT INTO Estatisticas_do_Cliente
5569
(idUsuario, pontos, vitorias, jogos, reflexos, defesa, forca, fisico, estrelas, estilo, posicao, cidadeEstado, numeroPreferido, bairro, geral)
5670
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15)`,
57-
[userId, pontos, vitorias, jogos, reflexos, defesa, forca, fisico, estrelas, estilo, posicao, cidadeEstado, numeroPreferido, bairro, geral]
71+
[clienteId, pontos, vitorias, jogos, reflexos, defesa, forca, fisico, estrelas, estilo, posicao, cidadeEstado, numeroPreferido, bairro, geral]
5872
);
5973
} else {
6074
// Se existir, atualiza o perfil
6175
await dbConnection.query(
6276
`UPDATE Estatisticas_do_Cliente
6377
SET pontos = $2, vitorias = $3, jogos = $4, reflexos = $5, defesa = $6, forca = $7, fisico = $8, estrelas = $9, estilo = $10, posicao = $11, cidadeEstado = $12, numeroPreferido = $13, bairro = $14, geral = $15
6478
WHERE idUsuario = $1`,
65-
[userId, pontos, vitorias, jogos, reflexos, defesa, forca, fisico, estrelas, estilo, posicao, cidadeEstado, numeroPreferido, bairro, geral]
79+
[clienteId, pontos, vitorias, jogos, reflexos, defesa, forca, fisico, estrelas, estilo, posicao, cidadeEstado, numeroPreferido, bairro, geral]
6680
);
6781
}
6882

@@ -134,8 +148,33 @@ router.get('/profile/:id', async (req: Request, res: Response) => {
134148
try {
135149
const userId = req.params.id;
136150

151+
// Buscar dados do perfil básico e estatísticas usando JOIN
137152
const profileQuery = await dbConnection.query(
138-
'SELECT id, email, nickname, nomeReal, dataNasc, amigos, fotoAvatar FROM Cliente WHERE id = $1',
153+
`SELECT
154+
c.id,
155+
c.email,
156+
c.nickname,
157+
c.nomeReal,
158+
c.dataNasc,
159+
c.amigos,
160+
c.fotoAvatar,
161+
e.pontos,
162+
e.vitorias,
163+
e.jogos,
164+
e.reflexos,
165+
e.defesa,
166+
e.forca,
167+
e.fisico,
168+
e.estrelas,
169+
e.estilo,
170+
e.posicao,
171+
e.cidadeEstado,
172+
e.numeroPreferido,
173+
e.bairro,
174+
e.geral
175+
FROM Cliente c
176+
LEFT JOIN Estatisticas_do_Cliente e ON c.id = e.idUsuario
177+
WHERE c.id = $1`,
139178
[userId]
140179
);
141180

routes/fieldSchedule.ts

+22-1
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,29 @@ router.post('/agendar', authMiddleware, async (req: Request, res: Response) => {
4444
await dbConnection.query(updateCampoQuery, [JSON.stringify(campoHorariosJSON), idCampo]);
4545

4646
// Inserir o agendamento
47+
<<<<<<< HEAD
4748
const insertAgendamentoQuery = `INSERT INTO Agendamento (idCliente, idCampo, idEmpresa, horario, quantidadePessoas, semana, data) VALUES ($1, $2, $3, $4::JSONB, $5, $6, $7) RETURNING *`;
4849
const insertedAgendamento = await dbConnection.query(insertAgendamentoQuery, [userId, idCampo, req.body.idEmpresa, horarioJSONB, quantidadePessoas, req.body.semana, dataAtual]);
50+
=======
51+
52+
// Buscar o idCliente da tabela login_usuario
53+
const userQuery = await dbConnection.query(
54+
'SELECT idCliente FROM login_usuario WHERE id = $1',
55+
[userId]
56+
);
57+
58+
if (userQuery.rows.length === 0) {
59+
return res.status(404).json({ message: 'Cliente não encontrado' });
60+
}
61+
62+
const idCliente = userQuery.rows[0].idCliente;
63+
64+
// Atualizar o insert usando o idCliente ao invés do userId
65+
const insertAgendamentoQuery = `INSERT INTO Agendamento (idCliente, idCampo, idEmpresa, horario, quantidadePessoas, semana) VALUES ($1, $2, $3, $4::JSONB, $5, $6) RETURNING *`;
66+
const insertedAgendamento = await dbConnection.query(insertAgendamentoQuery,
67+
[idCliente, idCampo, idEmpresa, horarioJSONB, quantidadePessoas, semana]
68+
);
69+
>>>>>>> c4e4db5d62b4296218b2234e4816321017829532
4970

5071
if (insertedAgendamento.rows.length === 0) {
5172
return res.status(404).json({ message: 'Falha ao agendar campo' });
@@ -59,4 +80,4 @@ router.post('/agendar', authMiddleware, async (req: Request, res: Response) => {
5980
}
6081
})
6182

62-
export default router
83+
export default router

server.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ dotenv.config() // Utilizando o dotenv para carregar as variáveis de ambiente
1212
const port = process.env.PORT || 3000 // Definindo a porta do servidor
1313

1414
app.use(express.json())
15-
app.use(cors()) // Configurando o CORS
15+
app.use(cors({ origin: '*' })) // Configurando o CORS para permitir qualquer origem
1616

1717
// Usar os roteadores
1818
import startedRouter from './routes/started'
@@ -38,4 +38,4 @@ app.get('/rodando', (req: Request, res: Response): void => {
3838
app.listen(port, (): void => {
3939
console.log(`Servidor iniciado com sucesso na porta ${port}`)
4040
createTables()
41-
})
41+
})

0 commit comments

Comments
 (0)