From e70e13fb2a2228ac50cdb129a5433c8147c64e26 Mon Sep 17 00:00:00 2001 From: TheManus88 Date: Thu, 12 Sep 2024 20:20:06 -0600 Subject: [PATCH] add lineas programaticas --- src/app.module.ts | 15 ++++-- src/dtos/lineaProgramaticaDTO.ts | 13 ++++++ .../ejesEstrategicos.service.ts | 2 +- src/entities/LineaProgramatica.entity.ts | 3 ++ src/entities/ejesEstrategicos.entity.ts | 2 - .../lineasProgramaticas.controller.ts | 46 +++++++++++++++++++ .../lineasProgramaticas.module.ts | 13 ++++++ .../lineasProgramaticas.service.ts | 25 ++++++++++ 8 files changed, 113 insertions(+), 6 deletions(-) create mode 100644 src/dtos/lineaProgramaticaDTO.ts create mode 100644 src/lineasProgramaticas/lineasProgramaticas.controller.ts create mode 100644 src/lineasProgramaticas/lineasProgramaticas.module.ts create mode 100644 src/lineasProgramaticas/lineasProgramaticas.service.ts diff --git a/src/app.module.ts b/src/app.module.ts index fe262f1..8e800fd 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -17,13 +17,17 @@ import { JwtModule } from '@nestjs/jwt'; import { EjesEstrategicosService } from './ejesEstrategicos/ejesEstrategicos.service'; import { EjesEstrategicosController } from './ejesEstrategicos/ejesEstrategicos.controller'; import * as process from 'node:process'; -import { EjesEstrategicosModule } from "./ejesEstrategicos/ejesEstrategicos.module"; +import { EjesEstrategicosModule } from './ejesEstrategicos/ejesEstrategicos.module'; +import { LineasProgramaticasController } from './lineasProgramaticas/lineasProgramaticas.controller'; +import { LineasProgramaticasService } from './lineasProgramaticas/lineasProgramaticas.service'; +import { LineasProgramaticasModule } from './lineasProgramaticas/lineasProgramaticas.module'; config({ path: '.env' }); @Module({ imports: [ AuthModule, UsersModule, EjesEstrategicosModule, + LineasProgramaticasModule, ConfigModule.forRoot({ isGlobal: true, }), @@ -50,7 +54,12 @@ config({ path: '.env' }); signOptions: { expiresIn: process.env.JWT_EXPIRES }, }), ], - controllers: [AppController, UsuarioController, EjesEstrategicosController], - providers: [AppService, EjesEstrategicosService], + controllers: [ + AppController, + UsuarioController, + EjesEstrategicosController, + LineasProgramaticasController, + ], + providers: [AppService, EjesEstrategicosService, LineasProgramaticasService], }) export class AppModule {} diff --git a/src/dtos/lineaProgramaticaDTO.ts b/src/dtos/lineaProgramaticaDTO.ts new file mode 100644 index 0000000..82de77d --- /dev/null +++ b/src/dtos/lineaProgramaticaDTO.ts @@ -0,0 +1,13 @@ +import { IsDefined, IsNotEmpty, IsString } from '@nestjs/class-validator'; + +export class LinearProgramaticaDTO { + @IsString() + @IsNotEmpty() + @IsDefined() + readonly descripcion: string; + + @IsString() + @IsNotEmpty() + @IsDefined() + readonly eje_estrategico_id: number; +} diff --git a/src/ejesEstrategicos/ejesEstrategicos.service.ts b/src/ejesEstrategicos/ejesEstrategicos.service.ts index e79eede..a06cc0e 100644 --- a/src/ejesEstrategicos/ejesEstrategicos.service.ts +++ b/src/ejesEstrategicos/ejesEstrategicos.service.ts @@ -18,6 +18,6 @@ export class EjesEstrategicosService { addEjeEstrategico( ejeEstrategico: EjeEstrategicoDTO, ): Promise { - return this.ejesEtrategicosRepository.save(ejeEstrategico).finally(); + return this.ejesEtrategicosRepository.save(ejeEstrategico); } } diff --git a/src/entities/LineaProgramatica.entity.ts b/src/entities/LineaProgramatica.entity.ts index 3812e52..04a860d 100644 --- a/src/entities/LineaProgramatica.entity.ts +++ b/src/entities/LineaProgramatica.entity.ts @@ -16,6 +16,9 @@ export class LineaProgramatica { () => EjeEstrategico, (ejeEstrategico) => ejeEstrategico.lineasProgramaticas, ) + @Column('int') + eje_estrategico_id: number; + @JoinColumn({ name: 'eje_estrategico_id' }) ejeEstrategico: EjeEstrategico; diff --git a/src/entities/ejesEstrategicos.entity.ts b/src/entities/ejesEstrategicos.entity.ts index d6a8fef..19b9af9 100644 --- a/src/entities/ejesEstrategicos.entity.ts +++ b/src/entities/ejesEstrategicos.entity.ts @@ -13,8 +13,6 @@ export class EjeEstrategico { @Column('text') objetivo: string; - @Column('text') - lineas_programaticas: string; @OneToMany( () => ComentarioEje, diff --git a/src/lineasProgramaticas/lineasProgramaticas.controller.ts b/src/lineasProgramaticas/lineasProgramaticas.controller.ts new file mode 100644 index 0000000..04310a8 --- /dev/null +++ b/src/lineasProgramaticas/lineasProgramaticas.controller.ts @@ -0,0 +1,46 @@ +import { + BadRequestException, + Body, + Controller, + Get, + Header, + HttpCode, + Post, + Req, + Res, + UseGuards, +} from '@nestjs/common'; +import { AuthGuard } from '../auth/auth.guard'; +import { LineasProgramaticasService } from './lineasProgramaticas.service'; +import { LinearProgramaticaDTO } from '../dtos/lineaProgramaticaDTO'; +import { isUndefined } from '@nestjs/common/utils/shared.utils'; +import Any = jasmine.Any; + +@Controller('lineasProgramaticas') +export class LineasProgramaticasController { + constructor( + private readonly lineasPogramaticasService: LineasProgramaticasService, + ) {} + + @UseGuards(AuthGuard) + @Header('content-type', 'application/json') + @Get('lineasProgramaticas') + getLineasProgramaticas(@Req() request: Request) { + const ejeId = request.body['ejeEstrategicoId']; + if (!isUndefined(ejeId)) { + return this.lineasPogramaticasService.findLineasProgramaticas(ejeId); + } else { + throw new BadRequestException(); + } + } + + @UseGuards(AuthGuard) + @Header('content-type', 'application/json') + @Post('addLineaProgramatica') + @HttpCode(200) + addLineasProgramaticas(@Body() lineaProgramatica: LinearProgramaticaDTO) { + return this.lineasPogramaticasService.addLineaProgramatica( + lineaProgramatica, + ); + } +} diff --git a/src/lineasProgramaticas/lineasProgramaticas.module.ts b/src/lineasProgramaticas/lineasProgramaticas.module.ts new file mode 100644 index 0000000..3bf0de1 --- /dev/null +++ b/src/lineasProgramaticas/lineasProgramaticas.module.ts @@ -0,0 +1,13 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { LineaProgramatica } from '../entities/LineaProgramatica.entity'; +import { LineasProgramaticasService } from './lineasProgramaticas.service'; +import { LineasProgramaticasController } from './lineasProgramaticas.controller'; + +@Module({ + imports: [TypeOrmModule.forFeature([LineaProgramatica])], + providers: [LineasProgramaticasService], + controllers: [LineasProgramaticasController], + exports: [TypeOrmModule.forFeature([LineaProgramatica])], +}) +export class LineasProgramaticasModule {} diff --git a/src/lineasProgramaticas/lineasProgramaticas.service.ts b/src/lineasProgramaticas/lineasProgramaticas.service.ts new file mode 100644 index 0000000..f92e364 --- /dev/null +++ b/src/lineasProgramaticas/lineasProgramaticas.service.ts @@ -0,0 +1,25 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { LineaProgramatica } from '../entities/LineaProgramatica.entity'; +import { LinearProgramaticaDTO } from '../dtos/lineaProgramaticaDTO'; + +@Injectable() +export class LineasProgramaticasService { + constructor( + @InjectRepository(LineaProgramatica) + private lineasProgramaticasRepository: Repository, + ) {} + + findLineasProgramaticas( + eje_estrategico_id: number, + ): Promise { + return this.lineasProgramaticasRepository.findBy({ eje_estrategico_id }); + } + + addLineaProgramatica( + lineaProgramatica: LinearProgramaticaDTO, + ): Promise { + return this.lineasProgramaticasRepository.save(lineaProgramatica); + } +}