fixed register

This commit is contained in:
2025-11-21 20:46:04 -06:00
parent 35f0381af9
commit 2d5898d1af
8 changed files with 107 additions and 33 deletions
@@ -1,4 +1,4 @@
import { IsEmail, IsNotEmpty, IsNumber, IsString } from 'class-validator';
import { IsDate, IsDateString, IsEmail, IsEnum, IsNotEmpty, IsNumber, IsOptional, IsString } from 'class-validator';
export class CreateStudentDto {
@IsNotEmpty()
@@ -19,4 +19,46 @@ export class CreateStudentDto {
@IsEmail()
@IsString()
correo: string;
}
}
export class CreateAlumnoDto {
@IsNotEmpty()
@IsNumber()
id_cuenta: number;
@IsNotEmpty()
@IsString()
nombre: string;
@IsOptional()
@IsDate()
fecha_nacimiento?: Date | null;
@IsOptional()
@IsEmail()
correo?: string | null;
@IsOptional()
@IsNumber()
credito?: number;
@IsOptional()
@IsEnum(['si', 'no'])
vigente?: 'si' | 'no';
@IsOptional()
@IsNumber()
id_periodo?: number | null;
@IsNotEmpty()
@IsDate()
fecha_registro: Date;
@IsOptional()
@IsNumber()
generacion?: number | null;
@IsOptional()
@IsNumber()
id_carrera?: number | null;
}
@@ -1,7 +1,6 @@
import { Controller, Get, Post, Body, Param } from '@nestjs/common';
import { Controller, Get, 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 {
@@ -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';
import { PeriodoModule } from '../periodo/periodo.module';
import { PlataformaService } from '../plataforma/periodo.service';
import { PlataformaModule } from '../plataforma/periodo.module';
@Module({
imports: [TypeOrmModule.forFeature([AlumnoInscrito, Periodo], 'dbAT')],
imports: [TypeOrmModule.forFeature([AlumnoInscrito], 'dbAT'),PeriodoModule,PlataformaModule],
controllers: [AlumnoInscritoController],
providers: [AlumnoInscritoService],
exports: [AlumnoInscritoService],
@@ -2,16 +2,17 @@ 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';
import { PeriodoService } from '../periodo/periodo.service';
import { CreateAlumnoDto } from '../alumno/dto/create-student.dto';
import { PlataformaService } from '../plataforma/periodo.service';
@Injectable()
export class AlumnoInscritoService {
constructor(
@InjectRepository(AlumnoInscrito, 'dbAT')
private readonly alumnoInscritoRepo: Repository<AlumnoInscrito>,
@InjectRepository(Periodo, 'dbAT')
private readonly periodoRepository: Repository<Periodo>,
private readonly periodoService: PeriodoService,
private readonly plataformaService: PlataformaService,
) {}
async findAll(): Promise<AlumnoInscrito[]> {
@@ -27,17 +28,19 @@ export class AlumnoInscritoService {
});
}
async create(dto: CreateAlumnoInscritoDto): Promise<AlumnoInscrito> {
const periodo = await this.periodoRepository.findOne({
order: {
id_periodo: 'DESC',
},
});
async create(
alumno: CreateAlumnoDto,
namePlataforma: string,
): Promise<AlumnoInscrito> {
const periodo = await this.periodoService.getLatestPeriodo();
const plataforma = await this.plataformaService.getByName(namePlataforma);
const existing = await this.alumnoInscritoRepo.findOne({
where: {
alumno: { id_cuenta: dto.id_cuenta },
alumno: { id_cuenta: alumno.id_cuenta },
periodo: { id_periodo: periodo?.id_periodo },
plataforma: { id_plataforma: plataforma?.id_plataforma },
},
});
@@ -47,7 +50,12 @@ export class AlumnoInscritoService {
);
}
const alumnoInscrito = this.alumnoInscritoRepo.create(dto);
const alumnoInscrito = this.alumnoInscritoRepo.create({
alumno: { id_cuenta: alumno.id_cuenta },
periodo: { id_periodo: periodo.id_periodo },
plataforma: { id_plataforma: plataforma.id_plataforma },
});
return this.alumnoInscritoRepo.save(alumnoInscrito);
}
}
@@ -7,7 +7,7 @@ export class CreateAlumnoInscritoDto {
@IsNotEmpty()
@IsNumber()
id_periodo: number;
id_periodo?: number;
@IsNotEmpty()
@IsNumber()
@@ -1,4 +1,13 @@
import { Controller, Get, Param } from '@nestjs/common';
import { PlataformaService } from './periodo.service';
@Controller('plataforma')
export class PlataformaController {}
export class PlataformaController {
constructor(private readonly plataformaService:PlataformaService){}
//test
@Get()
GetPlataforma(){
return this.plataformaService.getByName("windows");
}
}
+7
View File
@@ -13,4 +13,11 @@ export class OperationsController {
const idPersona = req.user.idPersona;
return await this.operationsService.depositKiosco(abonoKiosco, idPersona);
}
//test
@Post('inscription')
async inscription(@Body() body: { plataforma: string; idPersona: number }) {
const { plataforma, idPersona } = body;
return await this.operationsService.inscriptionAT(plataforma, idPersona);
}
}
+20 -13
View File
@@ -1,12 +1,10 @@
import { Injectable, NotFoundException } 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';
import { PlataformaService } from 'src/modules/AT/plataforma/periodo.service';
@Injectable()
export class OperationsService {
@@ -16,8 +14,6 @@ export class OperationsService {
private readonly personaService: PersonaService,
private readonly alumnoInscritoServie: AlumnoInscritoService,
private readonly alumnoService: AlumnoService,
private readonly periodoService: PeriodoService,
private readonly plataformaService: PlataformaService,
) {}
async depositKiosco(abono: abonoKioscoDto, idPersona: number) {
@@ -45,17 +41,14 @@ export class OperationsService {
let newSaldo: number;
if (transaccion === 'Inscripcion') {
if (!plataforma) {
throw new NotFoundException('Debe de colocar una plataforma');
}
const [saldoActual, persona, periodo, plataformaData] = await Promise.all(
const [saldoActual, persona] = await Promise.all(
[
this.personaService.saldo(idPersona),
this.personaService.findById(idPersona),
this.periodoService.getLatestPeriodo(),
this.plataformaService.getByName(plataforma),
],
);
@@ -63,11 +56,7 @@ export class OperationsService {
Number(persona.numeroIdentificar),
);
await this.alumnoInscritoServie.create({
id_cuenta: alumno.id_cuenta,
id_periodo: periodo.id_periodo,
id_plataforma: plataformaData.id_plataforma,
});
await this.alumnoInscritoServie.create(alumno,plataforma);
newSaldo = saldoActual;
} else {
@@ -76,4 +65,22 @@ export class OperationsService {
return newSaldo;
}
async inscriptionAT(plataforma: string, idPersona: number) {
if (!plataforma) {
throw new NotFoundException('Debe de colocar una plataforma');
}
const [saldoActual, persona] = await Promise.all([
this.personaService.saldo(idPersona),
this.personaService.findById(idPersona),
]);
const alumno = await this.alumnoService.findOneById(
Number(persona.numeroIdentificar),
);
await this.alumnoInscritoServie.create(alumno,plataforma)
return saldoActual;
}
}