Skip to content

Commit 6159683

Browse files
Create Send Message Routes
1 parent 63e05c5 commit 6159683

File tree

16 files changed

+340
-95
lines changed

16 files changed

+340
-95
lines changed

client/src/services/api/aluno.js

+19
Original file line numberDiff line numberDiff line change
@@ -321,4 +321,23 @@ export const changePassword = async (info, token) => {
321321
} catch (error) {
322322
return error.response.data;
323323
}
324+
}
325+
326+
export const sendMessage = async (infoMesssage, token) => {
327+
try {
328+
const response = await api.post('aluno/message/send', infoMesssage, {
329+
headers: {
330+
authorization: `${token}`
331+
}
332+
});
333+
334+
socket.emit('send-message', {
335+
message: infoMesssage,
336+
authorization: `${token}`
337+
});
338+
339+
return response;
340+
} catch (error) {
341+
return error.data;
342+
}
324343
}

client/src/services/api/professor.js

+19
Original file line numberDiff line numberDiff line change
@@ -114,4 +114,23 @@ export const refreshTokenProfessor = async (token) => {
114114
} catch (error) {
115115
return error.response.data;
116116
}
117+
}
118+
119+
export const sendMessage = async (infoMesssage, token) => {
120+
try {
121+
const response = await api.post('professor/message/send', infoMesssage, {
122+
headers: {
123+
authorization: `${token}`
124+
}
125+
});
126+
127+
socket.emit('send-message', {
128+
message: infoMesssage,
129+
authorization: `${token}`
130+
});
131+
132+
return response;
133+
} catch (error) {
134+
return error.data;
135+
}
117136
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
-- CreateTable
2+
CREATE TABLE `mensagens` (
3+
`id` VARCHAR(191) NOT NULL,
4+
`conteudo` VARCHAR(191) NOT NULL,
5+
`alunoRemetenteId` VARCHAR(191) NULL,
6+
`alunoDestinatarioId` VARCHAR(191) NULL,
7+
`professorRemetenteId` VARCHAR(191) NULL,
8+
`professorDestinatarioId` VARCHAR(191) NULL,
9+
`funcionarioRemetenteId` VARCHAR(191) NULL,
10+
`funcionarioDestinatarioId` VARCHAR(191) NULL,
11+
`empresaRemetenteId` VARCHAR(191) NULL,
12+
`empresaDestinatarioId` VARCHAR(191) NULL,
13+
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
14+
`updatedAt` DATETIME(3) NOT NULL,
15+
16+
PRIMARY KEY (`id`)
17+
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
18+
19+
-- AddForeignKey
20+
ALTER TABLE `mensagens` ADD CONSTRAINT `alunoRemetente_FK` FOREIGN KEY (`alunoRemetenteId`) REFERENCES `alunos`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
21+
22+
-- AddForeignKey
23+
ALTER TABLE `mensagens` ADD CONSTRAINT `alunoDestinatario_FK` FOREIGN KEY (`alunoDestinatarioId`) REFERENCES `alunos`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
24+
25+
-- AddForeignKey
26+
ALTER TABLE `mensagens` ADD CONSTRAINT `professorRemetente_FK` FOREIGN KEY (`professorRemetenteId`) REFERENCES `professores`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
27+
28+
-- AddForeignKey
29+
ALTER TABLE `mensagens` ADD CONSTRAINT `professorDestinatario_FK` FOREIGN KEY (`professorDestinatarioId`) REFERENCES `professores`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
30+
31+
-- AddForeignKey
32+
ALTER TABLE `mensagens` ADD CONSTRAINT `funcionarioRemetente_FK` FOREIGN KEY (`funcionarioRemetenteId`) REFERENCES `funcionarios`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
33+
34+
-- AddForeignKey
35+
ALTER TABLE `mensagens` ADD CONSTRAINT `funcionarioDestinatario_FK` FOREIGN KEY (`funcionarioDestinatarioId`) REFERENCES `funcionarios`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
36+
37+
-- AddForeignKey
38+
ALTER TABLE `mensagens` ADD CONSTRAINT `empresaRemetente_FK` FOREIGN KEY (`empresaRemetenteId`) REFERENCES `empresas`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
39+
40+
-- AddForeignKey
41+
ALTER TABLE `mensagens` ADD CONSTRAINT `empresaDestinatario_FK` FOREIGN KEY (`empresaDestinatarioId`) REFERENCES `empresas`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;

server/prisma/schema.prisma

+105-72
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,29 @@ datasource db {
88
}
99

1010
model Aluno {
11-
id String @id @default(uuid())
12-
name String
13-
email String @unique
14-
password String
15-
imagem String?
16-
recoveryPass String?
17-
token String?
18-
banner String?
19-
dataNascimento DateTime?
20-
endereco String?
21-
curriculo String? @default("") @db.VarChar(5000)
22-
sobre String?
23-
rm String? @unique
24-
tentativasRestantes Int @default(5)
25-
turmas AlunoTurma[]
26-
cursosExtracurriculares Extracurricular[]
27-
vinculosAluno Vinculo[] @relation("AlunoVinculo")
28-
vinculoComoAluno Vinculo[] @relation("VinculoComAluno")
29-
validated Boolean @default(false)
30-
createdAt DateTime @default(now())
31-
updatedAt DateTime @updatedAt
11+
id String @id @default(uuid())
12+
name String
13+
email String @unique
14+
password String
15+
imagem String?
16+
recoveryPass String?
17+
token String?
18+
banner String?
19+
dataNascimento DateTime?
20+
endereco String?
21+
curriculo String? @default("") @db.VarChar(5000)
22+
sobre String?
23+
rm String? @unique
24+
tentativasRestantes Int @default(5)
25+
validated Boolean @default(false)
26+
turmas AlunoTurma[]
27+
cursosExtracurriculares Extracurricular[]
28+
vinculosAluno Vinculo[] @relation("AlunoVinculo")
29+
vinculoComoAluno Vinculo[] @relation("VinculoComAluno")
30+
mensagensEnviadas Mensagem[] @relation("MensagensEnviadasAluno")
31+
mensagensRecebidas Mensagem[] @relation("MensagensRecebidasAluno")
32+
createdAt DateTime @default(now())
33+
updatedAt DateTime @updatedAt
3234
3335
@@map("alunos")
3436
}
@@ -43,11 +45,13 @@ model Professor {
4345
imagem String?
4446
banner String?
4547
validated Boolean @default(false)
46-
coordenador Coordenador[]
47-
atividade Atividade[]
4848
tentativasRestantes Int @default(5)
49+
atividade Atividade[]
50+
coordenador Coordenador[]
4951
vinculosProfessor Vinculo[] @relation("ProfessorVinculo")
5052
vinculoComoProfessor Vinculo[] @relation("VinculoComProfessor")
53+
mensagensEnviadas Mensagem[] @relation("MensagensEnviadasProfessor")
54+
mensagensRecebidas Mensagem[] @relation("MensagensRecebidasProfessor")
5155
createdAt DateTime @default(now())
5256
updatedAt DateTime @updatedAt
5357
@@ -73,13 +77,13 @@ model Vinculo {
7377
}
7478

7579
model Admin {
76-
id String @id @default(uuid())
77-
name String
78-
email String @unique
79-
password String
80-
imagem String?
81-
createdAt DateTime @default(now())
82-
updatedAt DateTime @updatedAt
80+
id String @id @default(uuid())
81+
name String
82+
email String @unique
83+
password String
84+
imagem String?
85+
createdAt DateTime @default(now())
86+
updatedAt DateTime @updatedAt
8387
8488
@@map("admins")
8589
}
@@ -107,58 +111,60 @@ enum Turno {
107111
}
108112

109113
model Turma {
110-
id String @id @default(uuid())
114+
id String @id @default(uuid())
111115
inicio String
112116
fim String
113-
curso Curso @relation(fields: [cursoId], references: [id])
117+
curso Curso @relation(fields: [cursoId], references: [id])
114118
cursoId String
115119
alunos AlunoTurma[]
116-
createdAt DateTime @default(now())
117-
updatedAt DateTime @updatedAt
120+
createdAt DateTime @default(now())
121+
updatedAt DateTime @updatedAt
118122
119123
@@map("turmas")
120124
}
121125

122126
model AlunoTurma {
123-
alunoId String @default(uuid())
124-
turmaId String @default(uuid())
125-
aluno Aluno @relation(fields: [alunoId], references: [id])
126-
turma Turma @relation(fields: [turmaId], references: [id])
127+
alunoId String @default(uuid())
128+
turmaId String @default(uuid())
129+
aluno Aluno @relation(fields: [alunoId], references: [id])
130+
turma Turma @relation(fields: [turmaId], references: [id])
127131
128132
@@id([alunoId, turmaId])
129133
@@map("alunos_turmas")
130134
}
131135

132136
model Extracurricular {
133-
extracurricularId String @id @default(uuid())
134-
alunoId String
135-
aluno Aluno @relation(fields: [alunoId], references: [id])
136-
instituicao String
137-
descricao String
138-
inicio DateTime
139-
fim DateTime
140-
createdAt DateTime @default(now())
141-
updatedAt DateTime @updatedAt
142-
137+
extracurricularId String @id @default(uuid())
138+
alunoId String
139+
aluno Aluno @relation(fields: [alunoId], references: [id])
140+
instituicao String
141+
descricao String
142+
inicio DateTime
143+
fim DateTime
144+
createdAt DateTime @default(now())
145+
updatedAt DateTime @updatedAt
146+
143147
@@map("extracurriculares")
144148
}
145149

146150
model Empresa {
147-
id String @id @default(uuid())
151+
id String @id @default(uuid())
148152
name String
149-
email String @unique
153+
email String @unique
150154
password String
151-
imagem String?
152-
cnpj String @unique
155+
imagem String?
156+
cnpj String @unique
153157
endereco String?
154158
telefone String?
155159
token String?
156-
patrocinador Boolean @default(false)
157-
validated Boolean @default(false)
160+
patrocinador Boolean @default(false)
161+
validated Boolean @default(false)
162+
tentativasRestantes Int @default(5)
158163
vaga Vaga[]
159-
tentativasRestantes Int @default(5)
160-
createdAt DateTime @default(now())
161-
updatedAt DateTime @updatedAt
164+
mensagensEnviadas Mensagem[] @relation("MensagensEnviadasEmpresa")
165+
mensagensRecebidas Mensagem[] @relation("MensagensRecebidasEmpresa")
166+
createdAt DateTime @default(now())
167+
updatedAt DateTime @updatedAt
162168
163169
@@map("empresas")
164170
}
@@ -197,18 +203,20 @@ model Coordenador {
197203
}
198204

199205
model Funcionario {
200-
id String @id @default(uuid())
206+
id String @id @default(uuid())
201207
name String
202-
email String @unique
208+
email String @unique
203209
password String
204210
recoveryPass String?
205-
imagem String?
211+
imagem String?
206212
cargo Cargo
213+
validated Boolean @default(false)
214+
tentativasRestantes Int @default(5)
207215
vaga Vaga[]
208-
validated Boolean @default(false)
209-
tentativasRestantes Int @default(5)
210-
createdAt DateTime @default(now())
211-
updatedAt DateTime @updatedAt
216+
mensagensEnviadas Mensagem[] @relation("MensagensEnviadasFuncionario")
217+
mensagensRecebidas Mensagem[] @relation("MensagensRecebidasFuncionario")
218+
createdAt DateTime @default(now())
219+
updatedAt DateTime @updatedAt
212220
213221
@@map("funcionarios")
214222
}
@@ -221,14 +229,39 @@ enum Cargo {
221229
}
222230

223231
model Atividade {
224-
id String @id @default(uuid())
225-
title String
226-
descricao String @db.VarChar(1000)
227-
professor Professor @relation(fields: [professorId], references: [id])
228-
professorId String
229-
imagem String?
230-
createdAt DateTime @default(now())
231-
updatedAt DateTime @updatedAt
232+
id String @id @default(uuid())
233+
title String
234+
descricao String @db.VarChar(1000)
235+
professor Professor @relation(fields: [professorId], references: [id])
236+
professorId String
237+
imagem String?
238+
createdAt DateTime @default(now())
239+
updatedAt DateTime @updatedAt
232240
233241
@@map("atividades")
234242
}
243+
244+
model Mensagem {
245+
id String @id @default(uuid())
246+
conteudo String
247+
alunoRemetenteId String?
248+
alunoDestinatarioId String?
249+
professorRemetenteId String?
250+
professorDestinatarioId String?
251+
funcionarioRemetenteId String?
252+
funcionarioDestinatarioId String?
253+
empresaRemetenteId String?
254+
empresaDestinatarioId String?
255+
alunoRemetente Aluno? @relation("MensagensEnviadasAluno", fields: [alunoRemetenteId], references: [id], map: "alunoRemetente_FK")
256+
alunoDestinatario Aluno? @relation("MensagensRecebidasAluno", fields: [alunoDestinatarioId], references: [id], map: "alunoDestinatario_FK")
257+
professorRemetente Professor? @relation("MensagensEnviadasProfessor", fields: [professorRemetenteId], references: [id], map: "professorRemetente_FK")
258+
professorDestinatario Professor? @relation("MensagensRecebidasProfessor", fields: [professorDestinatarioId], references: [id], map: "professorDestinatario_FK")
259+
funcionarioRemetente Funcionario? @relation("MensagensEnviadasFuncionario", fields: [funcionarioRemetenteId], references: [id], map: "funcionarioRemetente_FK")
260+
funcionarioDestinatario Funcionario? @relation("MensagensRecebidasFuncionario", fields: [funcionarioDestinatarioId], references: [id], map: "funcionarioDestinatario_FK")
261+
empresaRemetente Empresa? @relation("MensagensEnviadasEmpresa", fields: [empresaRemetenteId], references: [id], map: "empresaRemetente_FK")
262+
empresaDestinatario Empresa? @relation("MensagensRecebidasEmpresa", fields: [empresaDestinatarioId], references: [id], map: "empresaDestinatario_FK")
263+
createdAt DateTime @default(now())
264+
updatedAt DateTime @updatedAt
265+
266+
@@map("mensagens")
267+
}

server/src/modules/controllers/sharedControllers.ts

+22-1
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,15 @@ import { IgnoreVinculoUseCase } from "../services/shared/IgnoreVinculoUseCase";
88
import { GetUnlinkedsUseCase } from "../services/shared/GetUnlinkedsUseCase";
99
import { GetCursosUseCase } from "../services/shared/GetCursosUseCase";
1010
import { GetCurriculoUseCase } from "../services/shared/GetCurriculoUseCase";
11-
import { GetEntidadeDTO, IdentificadorEnum } from "../interfaces/sharedDTOs";
1211
import { GetProfileImageUseCase } from '../services/shared/GetProfileImageUseCase';
1312
import { GetBannerUseCase } from '../services/shared/GetBannerUseCase';
13+
import { CreateMessageUseCase } from "../services/shared/CreateMessageUseCase";
14+
15+
import {
16+
CreateMessageDTO,
17+
GetEntidadeDTO,
18+
IdentificadorEnum
19+
} from "../interfaces/sharedDTOs";
1420

1521
export class CreateVinculoController {
1622
async handle(req: Request, res: Response) {
@@ -152,6 +158,21 @@ export class GetBannerController {
152158

153159
const result = await getBannerUseCase.execute({ email, identifier });
154160

161+
return res.status(201).json(result);
162+
}
163+
}
164+
165+
export class CreateMessageController {
166+
async handle(req: Request, res: Response) {
167+
const email = req.body.entidade.email;
168+
const { message, sender, recipient, senderIdentifier, recipientIdentifier } = req.body;
169+
170+
console.log
171+
172+
const createMessageUseCase = new CreateMessageUseCase();
173+
174+
const result = await createMessageUseCase.execute({ email, message, sender, recipient, senderIdentifier, recipientIdentifier });
175+
155176
return res.status(201).json(result);
156177
}
157178
}

0 commit comments

Comments
 (0)