added periodo

This commit is contained in:
2025-11-03 19:26:45 -06:00
parent 76a86ae3b0
commit 3c23ad8a01
9 changed files with 97 additions and 12 deletions
@@ -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;
}
@@ -0,0 +1,5 @@
import { Controller, Get, Param } from '@nestjs/common';
import { PeriodoService } from './periodo.service';
@Controller('periodo')
export class PeriodoController {}
+10
View File
@@ -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 {}
+35
View File
@@ -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<Periodo>,
) {}
async getById(id_periodo: number): Promise<Periodo> {
const periodo = await this.periodoRepository.findOne({
where: { id_periodo },
});
if (!periodo) {
throw new NotFoundException('periodo no encontrado');
}
return periodo;
}
async getLatestPeriodo(): Promise<Periodo> {
const periodo = await this.periodoRepository.findOne({
order: { id_periodo: 'DESC' },
});
if (!periodo) {
throw new NotFoundException('No hay periodos registrados');
}
return periodo;
}
}
@@ -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`,
);
}
+5 -1
View File
@@ -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;
}
+2 -2
View File
@@ -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);
}
}
+2 -1
View File
@@ -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],
+13 -2
View File
@@ -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);
}