diff --git a/src/modules/AT/alumno_inscrito/alumno_inscrito.controller.ts b/src/modules/AT/alumno_inscrito/alumno_inscrito.controller.ts index 931efa1..4603d03 100644 --- a/src/modules/AT/alumno_inscrito/alumno_inscrito.controller.ts +++ b/src/modules/AT/alumno_inscrito/alumno_inscrito.controller.ts @@ -1,6 +1,7 @@ import { Controller, Get, Post, Body, Param } from '@nestjs/common'; import { AlumnoInscritoService } from './alumno_inscrito.service'; import { AlumnoInscrito } from 'src/database/AT/entities/alumno_inscrito.entity'; +import { CreateAlumnoInscritoDto } from './dto/create-alumno_inscrito.dto'; @Controller('alumno-inscrito') export class AlumnoInscritoController { diff --git a/src/modules/AT/alumno_inscrito/alumno_inscrito.module.ts b/src/modules/AT/alumno_inscrito/alumno_inscrito.module.ts index 4920a65..39d086b 100644 --- a/src/modules/AT/alumno_inscrito/alumno_inscrito.module.ts +++ b/src/modules/AT/alumno_inscrito/alumno_inscrito.module.ts @@ -3,10 +3,12 @@ import { AlumnoInscritoService } from './alumno_inscrito.service'; import { AlumnoInscritoController } from './alumno_inscrito.controller'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AlumnoInscrito } from 'src/database/AT/entities/alumno_inscrito.entity'; +import { Periodo } from 'src/database/AT/entities/periodo.entity'; @Module({ - imports: [TypeOrmModule.forFeature([AlumnoInscrito], 'dbAT')], + imports: [TypeOrmModule.forFeature([AlumnoInscrito, Periodo], 'dbAT')], controllers: [AlumnoInscritoController], providers: [AlumnoInscritoService], + exports: [AlumnoInscritoService], }) export class AlumnoInscritoModule {} diff --git a/src/modules/AT/alumno_inscrito/alumno_inscrito.service.ts b/src/modules/AT/alumno_inscrito/alumno_inscrito.service.ts index 4939e56..d262d3f 100644 --- a/src/modules/AT/alumno_inscrito/alumno_inscrito.service.ts +++ b/src/modules/AT/alumno_inscrito/alumno_inscrito.service.ts @@ -1,13 +1,17 @@ -import { Injectable } from '@nestjs/common'; +import { BadRequestException, Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { AlumnoInscrito } from 'src/database/AT/entities/alumno_inscrito.entity'; +import { CreateAlumnoInscritoDto } from './dto/create-alumno_inscrito.dto'; +import { Periodo } from 'src/database/AT/entities/periodo.entity'; @Injectable() export class AlumnoInscritoService { constructor( @InjectRepository(AlumnoInscrito, 'dbAT') private readonly alumnoInscritoRepo: Repository, + @InjectRepository(Periodo, 'dbAT') + private readonly periodoRepository: Repository, ) {} async findAll(): Promise { @@ -22,4 +26,28 @@ export class AlumnoInscritoService { relations: ['alumno', 'periodo', 'plataforma'], }); } + + async create(dto: CreateAlumnoInscritoDto): Promise { + const periodo = await this.periodoRepository.findOne({ + order: { + id_periodo: 'DESC', + }, + }); + + const existing = await this.alumnoInscritoRepo.findOne({ + where: { + alumno: { id_cuenta: dto.id_cuenta }, + periodo: { id_periodo: periodo?.id_periodo }, + }, + }); + + if (existing) { + throw new BadRequestException( + 'El alumno ya está inscrito en este periodo y plataforma', + ); + } + + const alumnoInscrito = this.alumnoInscritoRepo.create(dto); + return this.alumnoInscritoRepo.save(alumnoInscrito); + } } diff --git a/src/modules/Monedero/persona/persona.controller.ts b/src/modules/Monedero/persona/persona.controller.ts index ded93c5..0d9e332 100644 --- a/src/modules/Monedero/persona/persona.controller.ts +++ b/src/modules/Monedero/persona/persona.controller.ts @@ -23,7 +23,10 @@ export class PersonaController { const persona = req.user; if (!persona) { - return res.redirect(`${process.env.FRONTEND_URL}?error=oauth_failed`); + const error = req.query.error || 'oauth_denied'; + return res.redirect( + `${process.env.FRONTEND_URL}/oauth-callback?error=${error}`, + ); } const jwt = await this.personaService.generateJwt(persona); diff --git a/src/operations/operations.module.ts b/src/operations/operations.module.ts index 7341b65..983b478 100644 --- a/src/operations/operations.module.ts +++ b/src/operations/operations.module.ts @@ -5,6 +5,9 @@ import { TransaccionModule } from 'src/modules/Monedero/transaccion/transaccion. 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'; @Module({ imports: [ @@ -12,6 +15,8 @@ import { PagoKioscoModule } from 'src/modules/Monedero/pago-kiosco/pago-kiosco.m PagoKioscoModule, PersonaModule, PagoPatronatoModule, + AlumnoModule, + AlumnoInscritoModule, ], controllers: [OperationsController], providers: [OperationsService], diff --git a/src/operations/operations.service.ts b/src/operations/operations.service.ts index e591a78..6ecb928 100644 --- a/src/operations/operations.service.ts +++ b/src/operations/operations.service.ts @@ -1,4 +1,6 @@ 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 { 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'; @@ -9,6 +11,8 @@ export class OperationsService { private readonly transaccionService: TransaccionService, private readonly pagoKioscoService: PagoKioscoService, private readonly personaService: PersonaService, + private readonly alumnoInscritoServie: AlumnoInscritoService, + private readonly alumnoService: AlumnoService, ) {} async depositKiosco({ cantidad, idKiosco, transaccion }, idPersona: number) { @@ -36,6 +40,12 @@ export class OperationsService { let newSaldo: number; 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), + ); } else { newSaldo = await this.personaService.updateSaldo(idPersona, cantidad); }