@@ -7,13 +7,15 @@ import { createClerkClient } from '@clerk/backend';
77import { InjectRepository } from '@nestjs/typeorm' ;
88import type { Repository } from 'typeorm' ;
99import { Aluno } from '../entities/aluno/aluno.entity' ;
10+ import { AtualizaDadosAlunoDTO } from './dto/atualizaDadosAluno' ;
11+ import { Request } from 'express' ;
1012
1113@Injectable ( )
1214export class AlunoService {
1315 constructor (
1416 @InjectRepository ( Aluno )
1517 private alunoRepository : Repository < Aluno > ,
16- ) { }
18+ ) { }
1719
1820 private clerk = createClerkClient ( {
1921 secretKey : process . env . CLERK_SECRET_KEY ,
@@ -61,4 +63,46 @@ export class AlunoService {
6163 throw new BadRequestException ( 'Erro ao buscar aluno' ) ;
6264 }
6365 }
66+ async updateStudentData (
67+ id : string ,
68+ atualizaDadosAlunoDTO : AtualizaDadosAlunoDTO ,
69+ ) {
70+ try {
71+ const session = await this . clerk . sessions . getSession ( id ) ;
72+ if ( ! session ) {
73+ throw new BadRequestException ( 'O Token de autenticação não é válido.' ) ;
74+ }
75+ const alunoClerk = await this . clerk . users . getUser ( id ) ;
76+ if ( ! alunoClerk ) {
77+ throw new BadRequestException ( 'Usuário não encontrado.' ) ;
78+ }
79+ const aluno = await this . alunoRepository . findOneBy ( { id_clerk : id } ) ;
80+ if ( ! aluno ) {
81+ throw new NotFoundException ( 'Aluno não encontrado.' ) ;
82+ }
83+ await this . clerk . users . updateUser ( id , {
84+ firstName : atualizaDadosAlunoDTO . nome ,
85+ lastName : atualizaDadosAlunoDTO . sobrenome ,
86+ username : atualizaDadosAlunoDTO . matricula ,
87+ primaryEmailAddressID : atualizaDadosAlunoDTO . email ,
88+ } ) ;
89+ Object . assign ( aluno , {
90+ pronome : atualizaDadosAlunoDTO . pronome ,
91+ data_nascimento : atualizaDadosAlunoDTO . data_nascimento ,
92+ curso : atualizaDadosAlunoDTO . campus ,
93+ campus : atualizaDadosAlunoDTO . campus ,
94+ data_ingresso : atualizaDadosAlunoDTO . data_ingresso ,
95+ celular : atualizaDadosAlunoDTO . celular ,
96+ } ) ;
97+ await this . alunoRepository . save ( aluno ) ;
98+
99+ return {
100+ success : true ,
101+ message : 'Dados do aluno atualizados com sucesso!' ,
102+ } ;
103+ } catch ( e ) {
104+ console . log ( e ) ;
105+ throw new BadRequestException ( 'Erro ao atualizar os dados do aluno' ) ;
106+ }
107+ }
64108}
0 commit comments