From 3a356887f7a0d27f29a71e085681b51ccec62d2a Mon Sep 17 00:00:00 2001 From: TheManus88 Date: Wed, 25 Sep 2024 14:16:02 -0600 Subject: [PATCH] add direccion controller, services and module --- src/app.module.ts | 2 + src/direccion/direccion.controller.ts | 69 +++++++++++++++++++++++++++ src/direccion/direccion.module.ts | 13 +++++ src/direccion/direccion.service.ts | 36 ++++++++++++++ src/dtos/direccionDTO.ts | 44 +++++++++++++++++ src/entities/direccion.entity.ts | 1 + 6 files changed, 165 insertions(+) create mode 100644 src/direccion/direccion.controller.ts create mode 100644 src/direccion/direccion.module.ts create mode 100644 src/direccion/direccion.service.ts create mode 100644 src/dtos/direccionDTO.ts diff --git a/src/app.module.ts b/src/app.module.ts index 3437691..b95d085 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -24,6 +24,7 @@ import { CarreraModule } from './carrera/carreras.module'; import { ComentariosModule } from './comentarios/comentarios.module'; import { ComentarioLineasProgramaticas } from './entities/comentarioLineasProgramaticas.entity'; import { Direccion } from './entities/direccion.entity'; +import { DireccionModule } from './direccion/direccion.module'; config({ path: '.env' }); @Module({ imports: [ @@ -33,6 +34,7 @@ config({ path: '.env' }); ComentariosModule, LineasProgramaticasModule, CarreraModule, + DireccionModule, ConfigModule.forRoot({ isGlobal: true, }), diff --git a/src/direccion/direccion.controller.ts b/src/direccion/direccion.controller.ts new file mode 100644 index 0000000..d5e8ceb --- /dev/null +++ b/src/direccion/direccion.controller.ts @@ -0,0 +1,69 @@ +import { + Body, + Controller, + Get, + Header, + HttpCode, + Logger, + Post, + Put, + Query, + UseGuards, +} from '@nestjs/common'; +import { AuthGuard } from '../auth/auth.guard'; +import { DireccionService } from './direccion.service'; +import { isUndefined } from '@nestjs/common/utils/shared.utils'; +import { DireccionDTO } from '../dtos/direccionDTO'; +import { Delete } from '@nestjs/common/decorators/http/request-mapping.decorator'; + +@Controller('direccion') +export class DireccionController { + constructor(private readonly direccionService: DireccionService) {} + + @UseGuards(AuthGuard) + @Header('content-type', 'application/json') + @Get('direccion') + @HttpCode(200) + getDireccion() { + Logger.log('Direccion', 'getDireccion'); + return this.direccionService.findDirecciones(); + } + + @UseGuards(AuthGuard) + @Header('content-type', 'application/json') + @Get('direccionById') + @HttpCode(200) + getDireccionById(@Query('direccionId') direccionId: number) { + Logger.log('Direccion', 'getDireccionById'); + if (!isUndefined(direccionId)) { + return this.direccionService.findDireccionById(direccionId); + } + } + + @UseGuards(AuthGuard) + @Header('content-type', 'application/json') + @Post('addDireccion') + @HttpCode(200) + setDireccion(@Body() direccion: DireccionDTO) { + Logger.log('Direccion', 'setDireccion'); + return this.direccionService.addDireccion(direccion); + } + + @UseGuards(AuthGuard) + @Header('content-type', 'application/json') + @Put('updateDireccion') + @HttpCode(200) + updateDireccion(@Body() direccion: DireccionDTO) { + Logger.log('Direccion', 'updateDireccion'); + return this.direccionService.updateDireccion(direccion); + } + + @UseGuards(AuthGuard) + @Header('content-type', 'application/json') + @Delete('deleteDireccion') + @HttpCode(200) + deleteDireccion(@Body() direccion: DireccionDTO) { + Logger.log('Direccion', 'deleteDireccion'); + return this.direccionService.deleteDireccion(direccion); + } +} diff --git a/src/direccion/direccion.module.ts b/src/direccion/direccion.module.ts new file mode 100644 index 0000000..4fafd0e --- /dev/null +++ b/src/direccion/direccion.module.ts @@ -0,0 +1,13 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { Direccion } from '../entities/direccion.entity'; +import { DireccionService } from './direccion.service'; +import { DireccionController } from './direccion.controller'; + +@Module({ + imports: [TypeOrmModule.forFeature([Direccion])], + providers: [DireccionService], + controllers: [DireccionController], + exports: [TypeOrmModule.forFeature([DireccionService])], +}) +export class DireccionModule {} diff --git a/src/direccion/direccion.service.ts b/src/direccion/direccion.service.ts new file mode 100644 index 0000000..b58f5f7 --- /dev/null +++ b/src/direccion/direccion.service.ts @@ -0,0 +1,36 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { DeleteResult, Repository, UpdateResult } from 'typeorm'; +import { Direccion } from '../entities/direccion.entity'; +import { DireccionDTO } from '../dtos/direccionDTO'; + +@Injectable() +export class DireccionService { + constructor( + @InjectRepository(Direccion) + private direccionRepository: Repository, + ) {} + + findDirecciones(): Promise { + return this.direccionRepository.find({}); + } + + findDireccionById(direccionId: number): Promise { + return this.direccionRepository.findBy({ id: direccionId }); + + } + + addDireccion(direccion: DireccionDTO): Promise { + return this.direccionRepository.save(direccion); + } + + updateDireccion(direccion: DireccionDTO): Promise { + return this.direccionRepository.update({ direccion }); + } + + deleteDireccion(direccion: Direccion): Promise { + return this.direccionRepository.delete({ + id: direccion.id, + }); + } +} diff --git a/src/dtos/direccionDTO.ts b/src/dtos/direccionDTO.ts new file mode 100644 index 0000000..33b9696 --- /dev/null +++ b/src/dtos/direccionDTO.ts @@ -0,0 +1,44 @@ +import { IsDefined, IsInt, IsNotEmpty, IsString } from "@nestjs/class-validator"; + +export class DireccionDTO { + @IsString() + @IsNotEmpty() + @IsDefined() + readonly primer_nombre: string; + + @IsString() + readonly segundo_nombre: string; + + @IsString() + @IsNotEmpty() + @IsDefined() + readonly apellido_paterno: string; + + @IsString() + @IsNotEmpty() + @IsDefined() + readonly apellido_materno: string; + + @IsString() + @IsNotEmpty() + @IsDefined() + readonly inicio_periodo: Date; + + @IsString() + @IsNotEmpty() + @IsDefined() + readonly fin_periodo: Date; + + @IsString() + @IsNotEmpty() + @IsDefined() + readonly inicio_periodo_encuesta: Date; + + @IsString() + @IsNotEmpty() + @IsDefined() + readonly fin_periodo_encuesta: Date; + + @IsInt() + readonly id: number; +} diff --git a/src/entities/direccion.entity.ts b/src/entities/direccion.entity.ts index 8f52d55..d3fb931 100644 --- a/src/entities/direccion.entity.ts +++ b/src/entities/direccion.entity.ts @@ -2,6 +2,7 @@ import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'; @Entity('direccion') export class Direccion { + @PrimaryGeneratedColumn('increment', { type: 'int' }) id: number;