diff --git a/src/modules/AT/periodo/dto/create-periodo.dto.ts b/src/modules/AT/periodo/dto/create-periodo.dto.ts new file mode 100644 index 0000000..ea24c49 --- /dev/null +++ b/src/modules/AT/periodo/dto/create-periodo.dto.ts @@ -0,0 +1,23 @@ +import { + IsString, + Length, + IsDateString, + IsOptional, + IsBoolean, +} from 'class-validator'; + +export class CreatePeriodoDto { + @IsString() + @Length(6, 6) + semestre: string; + + @IsDateString() + fecha_inicio_servicio: string; + + @IsDateString() + fecha_fin_servicio: string; + + @IsOptional() + @IsBoolean() + activo?: boolean; +} diff --git a/src/modules/AT/periodo/periodo.controller.ts b/src/modules/AT/periodo/periodo.controller.ts new file mode 100644 index 0000000..ac61d18 --- /dev/null +++ b/src/modules/AT/periodo/periodo.controller.ts @@ -0,0 +1,5 @@ +import { Controller, Get, Param } from '@nestjs/common'; +import { PeriodoService } from './periodo.service'; + +@Controller('periodo') +export class PeriodoController {} diff --git a/src/modules/AT/periodo/periodo.module.ts b/src/modules/AT/periodo/periodo.module.ts new file mode 100644 index 0000000..e22b906 --- /dev/null +++ b/src/modules/AT/periodo/periodo.module.ts @@ -0,0 +1,10 @@ +import { Module } from '@nestjs/common'; +import { PeriodoService } from './periodo.service'; +import { PeriodoController } from './periodo.controller'; + +@Module({ + controllers: [PeriodoController], + providers: [PeriodoService], + exports: [PeriodoService], +}) +export class PeriodoModule {} diff --git a/src/modules/AT/periodo/periodo.service.ts b/src/modules/AT/periodo/periodo.service.ts new file mode 100644 index 0000000..3a79fde --- /dev/null +++ b/src/modules/AT/periodo/periodo.service.ts @@ -0,0 +1,35 @@ +import { Injectable, NotFoundException } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Periodo } from 'src/database/AT/entities/periodo.entity'; +import { Repository } from 'typeorm'; + +@Injectable() +export class PeriodoService { + constructor( + @InjectRepository(Periodo) + private readonly periodoRepository: Repository, + ) {} + + async getById(id_periodo: number): Promise { + const periodo = await this.periodoRepository.findOne({ + where: { id_periodo }, + }); + + if (!periodo) { + throw new NotFoundException('periodo no encontrado'); + } + return periodo; + } + + async getLatestPeriodo(): Promise { + const periodo = await this.periodoRepository.findOne({ + order: { id_periodo: 'DESC' }, + }); + + if (!periodo) { + throw new NotFoundException('No hay periodos registrados'); + } + + return periodo; + } +} diff --git a/src/modules/Monedero/persona/google-auth.guard.ts b/src/modules/Monedero/persona/google-auth.guard.ts index 685c704..d9c0d36 100644 --- a/src/modules/Monedero/persona/google-auth.guard.ts +++ b/src/modules/Monedero/persona/google-auth.guard.ts @@ -1,8 +1,4 @@ -import { - Injectable, - ExecutionContext, - UnauthorizedException, -} from '@nestjs/common'; +import { Injectable, ExecutionContext } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; @Injectable() @@ -12,7 +8,7 @@ export class GoogleAuthGuard extends AuthGuard('google') { if (err || !user) { return res.redirect( - `${process.env.FRONTEND_URL}/oauth-callback?error=${info.message || info}`, + `${process.env.FRONTEND_URL}/oauth-callback?error=cancelado`, ); } diff --git a/src/operations/dto/create-operation.dto.ts b/src/operations/dto/create-operation.dto.ts index 7a77cea..aff067b 100644 --- a/src/operations/dto/create-operation.dto.ts +++ b/src/operations/dto/create-operation.dto.ts @@ -1,4 +1,4 @@ -import { IsNumber, IsString } from 'class-validator'; +import { IsNumber, IsOptional, IsString } from 'class-validator'; export class abonoKioscoDto { @IsNumber() @@ -9,4 +9,8 @@ export class abonoKioscoDto { @IsString() transaccion: string; + + @IsString() + @IsOptional() + plataforma?: string; } diff --git a/src/operations/operations.controller.ts b/src/operations/operations.controller.ts index b0da152..bc9865c 100644 --- a/src/operations/operations.controller.ts +++ b/src/operations/operations.controller.ts @@ -9,8 +9,8 @@ export class OperationsController { @UseGuards(JwtAuthGuard) @Post('abonoKiosco') - depositKiosco(@Body() abonoKiosco: abonoKioscoDto, @Req() req) { + async depositKiosco(@Body() abonoKiosco: abonoKioscoDto, @Req() req) { const idPersona = req.user.idPersona; - return this.operationsService.depositKiosco(abonoKiosco, idPersona); + return await this.operationsService.depositKiosco(abonoKiosco, idPersona); } } diff --git a/src/operations/operations.module.ts b/src/operations/operations.module.ts index 983b478..be3891a 100644 --- a/src/operations/operations.module.ts +++ b/src/operations/operations.module.ts @@ -6,8 +6,8 @@ import { PersonaModule } from 'src/modules/Monedero/persona/persona.module'; import { PagoPatronatoModule } from 'src/modules/Monedero/pago-patronato/pago-patronato.module'; import { PagoKioscoModule } from 'src/modules/Monedero/pago-kiosco/pago-kiosco.module'; import { AlumnoModule } from 'src/modules/AT/alumno/student.module'; -import { AlumnoInscritoService } from 'src/modules/AT/alumno_inscrito/alumno_inscrito.service'; import { AlumnoInscritoModule } from 'src/modules/AT/alumno_inscrito/alumno_inscrito.module'; +import { PeriodoModule } from 'src/modules/AT/periodo/periodo.module'; @Module({ imports: [ @@ -17,6 +17,7 @@ import { AlumnoInscritoModule } from 'src/modules/AT/alumno_inscrito/alumno_insc PagoPatronatoModule, AlumnoModule, AlumnoInscritoModule, + PeriodoModule, ], controllers: [OperationsController], providers: [OperationsService], diff --git a/src/operations/operations.service.ts b/src/operations/operations.service.ts index 6ecb928..b8860ba 100644 --- a/src/operations/operations.service.ts +++ b/src/operations/operations.service.ts @@ -1,9 +1,11 @@ import { Injectable } from '@nestjs/common'; import { AlumnoService } from 'src/modules/AT/alumno/student.service'; import { AlumnoInscritoService } from 'src/modules/AT/alumno_inscrito/alumno_inscrito.service'; +import { PeriodoService } from 'src/modules/AT/periodo/periodo.service'; import { PagoKioscoService } from 'src/modules/Monedero/pago-kiosco/pago-kiosco.service'; import { PersonaService } from 'src/modules/Monedero/persona/persona.service'; import { TransaccionService } from 'src/modules/Monedero/transaccion/transaccion.service'; +import { abonoKioscoDto } from './dto/create-operation.dto'; @Injectable() export class OperationsService { @@ -13,9 +15,11 @@ export class OperationsService { private readonly personaService: PersonaService, private readonly alumnoInscritoServie: AlumnoInscritoService, private readonly alumnoService: AlumnoService, + private readonly periodoService: PeriodoService, ) {} - async depositKiosco({ cantidad, idKiosco, transaccion }, idPersona: number) { + async depositKiosco(abono: abonoKioscoDto, idPersona: number) { + const { cantidad, idKiosco, transaccion, plataforma } = abono; const today = new Date().toString(); const transaction = { @@ -41,11 +45,18 @@ export class OperationsService { if (transaccion === 'Inscripcion') { newSaldo = await this.personaService.saldo(idPersona); const persona = await this.personaService.findById(idPersona); - console.log(persona); const alumno = await this.alumnoService.findOneById( Number(persona.numeroIdentificar), ); + + const periodo = await this.periodoService.getLatestPeriodo(); + + await this.alumnoInscritoServie.create({ + id_cuenta: alumno.id_cuenta, + id_periodo: periodo.id_periodo, + id_plataforma: plataforma, + }); } else { newSaldo = await this.personaService.updateSaldo(idPersona, cantidad); }