From f870d76d07f902bbc8f1eec0ac0c2ad10e4cdb0d Mon Sep 17 00:00:00 2001 From: TheManus88 Date: Tue, 17 Sep 2024 18:50:55 -0600 Subject: [PATCH] add comments --- src/app.module.ts | 2 ++ src/carrera/carreras.controller.ts | 8 +---- src/carrera/carreras.service.ts | 1 - src/comentarios/comentarios.controller.ts | 36 +++++++++++++++++++++++ src/comentarios/comentarios.module.ts | 13 ++++++++ src/comentarios/comentarios.service.ts | 21 +++++++++++++ src/dtos/comentarioDTO.ts | 25 ++++++++++++++++ src/dtos/loginDTO.ts | 12 +++++--- src/entities/comentarioEjes.entity.ts | 9 ++++++ src/users/users.service.ts | 11 ++++++- 10 files changed, 125 insertions(+), 13 deletions(-) create mode 100644 src/comentarios/comentarios.controller.ts create mode 100644 src/comentarios/comentarios.module.ts create mode 100644 src/comentarios/comentarios.service.ts create mode 100644 src/dtos/comentarioDTO.ts diff --git a/src/app.module.ts b/src/app.module.ts index f72e8da..95341f4 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -22,12 +22,14 @@ import { LineasProgramaticasController } from './lineasProgramaticas/lineasProgr import { LineasProgramaticasService } from './lineasProgramaticas/lineasProgramaticas.service'; import { LineasProgramaticasModule } from './lineasProgramaticas/lineasProgramaticas.module'; import { CarreraModule } from './carrera/carreras.module'; +import { ComentariosModule } from './comentarios/comentarios.module'; config({ path: '.env' }); @Module({ imports: [ AuthModule, UsersModule, EjesEstrategicosModule, + ComentariosModule, LineasProgramaticasModule, CarreraModule, ConfigModule.forRoot({ diff --git a/src/carrera/carreras.controller.ts b/src/carrera/carreras.controller.ts index 3744ece..62b2a13 100644 --- a/src/carrera/carreras.controller.ts +++ b/src/carrera/carreras.controller.ts @@ -1,10 +1,4 @@ -import { - Controller, - Get, - Header, - HttpCode, - Logger, -} from '@nestjs/common'; +import { Controller, Get, Header, HttpCode, Logger } from '@nestjs/common'; import { CarrerasService } from './carreras.service'; diff --git a/src/carrera/carreras.service.ts b/src/carrera/carreras.service.ts index 4bc92dc..7fc9043 100644 --- a/src/carrera/carreras.service.ts +++ b/src/carrera/carreras.service.ts @@ -1,6 +1,5 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; -import { EjeEstrategico } from '../entities/ejesEstrategicos.entity'; import { Repository } from 'typeorm'; import { Carrera } from '../entities/carreras.entity'; diff --git a/src/comentarios/comentarios.controller.ts b/src/comentarios/comentarios.controller.ts new file mode 100644 index 0000000..9073214 --- /dev/null +++ b/src/comentarios/comentarios.controller.ts @@ -0,0 +1,36 @@ +import { + Body, + Controller, + Get, + Header, + HttpCode, + Logger, + Post, + UseGuards, +} from '@nestjs/common'; + +import { ComentariosService } from './comentarios.service'; +import { AuthGuard } from '../auth/auth.guard'; +import { ComentarioDTO } from '../dtos/comentarioDTO'; + +@Controller('comentario') +export class ComentariosController { + constructor(private readonly comentariosService: ComentariosService) {} + + @UseGuards(AuthGuard) + @Header('content-type', 'application/json') + @Get('comentarios') + @HttpCode(200) + getComentarios() { + Logger.log('Comentarios', 'getComentarios'); + return this.comentariosService.findComentarios(); + } + @UseGuards(AuthGuard) + @Header('content-type', 'application/json') + @Post('addComentario') + @HttpCode(200) + setComentario(@Body() comentario: ComentarioDTO) { + Logger.log('Comentarios', 'setComentario'); + return this.comentariosService.addComentarios(comentario); + } +} diff --git a/src/comentarios/comentarios.module.ts b/src/comentarios/comentarios.module.ts new file mode 100644 index 0000000..fcb0a7a --- /dev/null +++ b/src/comentarios/comentarios.module.ts @@ -0,0 +1,13 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { ComentarioEje } from '../entities/comentarioEjes.entity'; +import { ComentariosService } from './comentarios.service'; +import { ComentariosController } from './comentarios.controller'; + +@Module({ + imports: [TypeOrmModule.forFeature([ComentarioEje])], + providers: [ComentariosService], + controllers: [ComentariosController], + exports: [TypeOrmModule.forFeature([ComentariosService])], +}) +export class ComentariosModule {} diff --git a/src/comentarios/comentarios.service.ts b/src/comentarios/comentarios.service.ts new file mode 100644 index 0000000..2aa6101 --- /dev/null +++ b/src/comentarios/comentarios.service.ts @@ -0,0 +1,21 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { ComentarioEje } from '../entities/comentarioEjes.entity'; +import { ComentarioDTO } from '../dtos/comentarioDTO'; + +@Injectable() +export class ComentariosService { + constructor( + @InjectRepository(ComentarioEje) + private comentariosRepository: Repository, + ) {} + + findComentarios(): Promise { + return this.comentariosRepository.find({}); + } + + addComentarios(comentario: ComentarioDTO): Promise { + return this.comentariosRepository.save(comentario); + } +} diff --git a/src/dtos/comentarioDTO.ts b/src/dtos/comentarioDTO.ts new file mode 100644 index 0000000..762b573 --- /dev/null +++ b/src/dtos/comentarioDTO.ts @@ -0,0 +1,25 @@ +import { + IsDefined, + IsInt, + IsNotEmpty, + IsString, +} from '@nestjs/class-validator'; + +export class ComentarioDTO { + @IsString() + @IsNotEmpty() + @IsDefined() + readonly comentario: string; + + @IsInt() + @IsNotEmpty() + readonly usuario_id: number; + + @IsInt() + @IsNotEmpty() + readonly linea_programatica_id: number; + + @IsInt() + @IsNotEmpty() + readonly eje_estrategico_id: number; +} diff --git a/src/dtos/loginDTO.ts b/src/dtos/loginDTO.ts index bb16503..eecef2d 100644 --- a/src/dtos/loginDTO.ts +++ b/src/dtos/loginDTO.ts @@ -1,4 +1,9 @@ -import { IsDefined, IsNotEmpty, IsNumber, IsString } from "@nestjs/class-validator"; +import { + IsDefined, + IsInt, + IsNotEmpty, + IsString, +} from '@nestjs/class-validator'; export class LoginDTO { @IsString() @@ -12,11 +17,10 @@ export class LoginDTO { @IsString() readonly fecha_nacimiento: string; - @IsNumber() + @IsInt() @IsNotEmpty() readonly tipo_usuario: number; - - @IsNumber() + @IsInt() readonly id_carrera: number; } diff --git a/src/entities/comentarioEjes.entity.ts b/src/entities/comentarioEjes.entity.ts index db8ed69..d1ac8fe 100644 --- a/src/entities/comentarioEjes.entity.ts +++ b/src/entities/comentarioEjes.entity.ts @@ -36,4 +36,13 @@ export class ComentarioEje { @Column('text') comentario: string; + + @Column({ name: 'eje_estrategico_id' }) + eje_estrategico_id: number; + + @Column({ name: 'usuario_id' }) + usuario_id: number; + + @Column({ name: 'linea_programatica_id' }) + linea_programatica_id: number; } diff --git a/src/users/users.service.ts b/src/users/users.service.ts index f07754a..cd3860a 100644 --- a/src/users/users.service.ts +++ b/src/users/users.service.ts @@ -1,8 +1,13 @@ -import { Injectable } from '@nestjs/common'; +import { + BadRequestException, + Injectable, +} from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { UsuarioEntity } from '../entities/usuario.entity'; import { Repository } from 'typeorm'; import { LoginDTO } from '../dtos/loginDTO'; +import { isUndefined } from '@nestjs/common/utils/shared.utils'; +import { isInt } from '@nestjs/class-validator'; @Injectable() export class UsersService { @@ -19,6 +24,10 @@ export class UsersService { const numero_identificacion = loginDto.numero_identificacion; const fecha_nacimiento = loginDto.fecha_nacimiento; const carrera_id = loginDto.id_carrera; + + if (isUndefined(carrera_id) || !isInt(carrera_id)) { + throw new BadRequestException(); + } return this.usersRepository.findOneBy({ numero_identificacion, fecha_nacimiento,