create user with base AT and create
This commit is contained in:
@@ -14,6 +14,8 @@ import { dbAT } from './database/config/AT.config';
|
||||
import { dbMonedero } from './database/config/Monedero.config';
|
||||
import { PagoKioscoModule } from './modules/Monedero/pago-kiosco/pago-kiosco.module';
|
||||
import { AlumnoModule } from './modules/AT/alumno/student.module';
|
||||
import { AlumnoInscritoModule } from './modules/AT/alumno_inscrito/alumno_inscrito.module';
|
||||
import { PeriodoModule } from './modules/AT/periodo/periodo.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -37,6 +39,8 @@ import { AlumnoModule } from './modules/AT/alumno/student.module';
|
||||
NombreTransaccionModule,
|
||||
////Module AT
|
||||
AlumnoModule,
|
||||
AlumnoInscritoModule,
|
||||
PeriodoModule,
|
||||
],
|
||||
controllers: [AppController],
|
||||
providers: [AppService],
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Controller, Get, Post, Param } from '@nestjs/common';
|
||||
import { Controller, Get, Param } from '@nestjs/common';
|
||||
import { AlumnoService } from './student.service';
|
||||
|
||||
@Controller('student')
|
||||
|
||||
@@ -7,7 +7,7 @@ import { Alumno } from 'src/database/AT/entities/student.entity';
|
||||
export class AlumnoService {
|
||||
constructor(
|
||||
@InjectRepository(Alumno, 'dbAT')
|
||||
private readonly studentRepository: Repository<Alumno>,
|
||||
private readonly alumnoRepository: Repository<Alumno>,
|
||||
// @InjectRepository(Carrera, 'dbAT')
|
||||
// private readonly carreraRepository: Repository<Carrera>,
|
||||
) {}
|
||||
@@ -22,12 +22,12 @@ export class AlumnoService {
|
||||
// }
|
||||
// const createStudent = { ...rest, carrera, fecha_registro: new Date() };
|
||||
|
||||
// const student = this.studentRepository.create(createStudent);
|
||||
// return await this.studentRepository.save(student);
|
||||
// const student = this.alumnoRepository.create(createStudent);
|
||||
// return await this.alumnoRepository.save(student);
|
||||
// }
|
||||
|
||||
async findOne(id_cuenta: number): Promise<Alumno> {
|
||||
const student = await this.studentRepository.findOne({
|
||||
const student = await this.alumnoRepository.findOne({
|
||||
where: { id_cuenta },
|
||||
select: { id_cuenta: true, nombre: true, credito: true },
|
||||
});
|
||||
@@ -40,12 +40,24 @@ export class AlumnoService {
|
||||
}
|
||||
|
||||
async findOneByName(nombre: string): Promise<Alumno> {
|
||||
const student = await this.studentRepository.findOne({
|
||||
const student = await this.alumnoRepository.findOne({
|
||||
where: { nombre },
|
||||
});
|
||||
|
||||
if (!student) {
|
||||
throw new NotFoundException(`Student not found`);
|
||||
throw new NotFoundException(`Alumno not found`);
|
||||
}
|
||||
|
||||
return student;
|
||||
}
|
||||
|
||||
async findOneById(id_cuenta: number): Promise<Alumno> {
|
||||
const student = await this.alumnoRepository.findOne({
|
||||
where: { id_cuenta },
|
||||
});
|
||||
|
||||
if (!student) {
|
||||
throw new NotFoundException('Alumno not found');
|
||||
}
|
||||
|
||||
return student;
|
||||
|
||||
@@ -1,17 +1,11 @@
|
||||
import { Controller, Get, Post, Body, Param } from '@nestjs/common';
|
||||
import { AlumnoInscritoService } from './alumno_inscrito.service';
|
||||
import { CreateAlumnoInscritoDto } from './dto/create-alumno_inscrito.dto';
|
||||
import { AlumnoInscrito } from 'src/database/AT/entities/alumno_inscrito.entity';
|
||||
|
||||
@Controller('alumno-inscrito')
|
||||
export class AlumnoInscritoController {
|
||||
constructor(private readonly alumnoInscritoService: AlumnoInscritoService) {}
|
||||
|
||||
@Post()
|
||||
async create(@Body() dto: CreateAlumnoInscritoDto): Promise<AlumnoInscrito> {
|
||||
return this.alumnoInscritoService.create(dto);
|
||||
}
|
||||
|
||||
@Get()
|
||||
async findAll(): Promise<AlumnoInscrito[]> {
|
||||
return this.alumnoInscritoService.findAll();
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { BadRequestException, Injectable } from '@nestjs/common';
|
||||
import { CreateAlumnoInscritoDto } from './dto/create-alumno_inscrito.dto';
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { AlumnoInscrito } from 'src/database/AT/entities/alumno_inscrito.entity';
|
||||
@@ -11,24 +10,6 @@ export class AlumnoInscritoService {
|
||||
private readonly alumnoInscritoRepo: Repository<AlumnoInscrito>,
|
||||
) {}
|
||||
|
||||
async create(dto: CreateAlumnoInscritoDto): Promise<AlumnoInscrito> {
|
||||
const existing = await this.alumnoInscritoRepo.findOne({
|
||||
where: {
|
||||
alumno: { id_cuenta: dto.id_cuenta },
|
||||
periodo: { id_periodo: dto.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);
|
||||
}
|
||||
|
||||
async findAll(): Promise<AlumnoInscrito[]> {
|
||||
return this.alumnoInscritoRepo.find({
|
||||
relations: ['alumno', 'periodo', 'plataforma'],
|
||||
@@ -37,7 +18,7 @@ export class AlumnoInscritoService {
|
||||
|
||||
async findByAlumno(id_cuenta: number): Promise<AlumnoInscrito[]> {
|
||||
return this.alumnoInscritoRepo.find({
|
||||
where: { alumno: { id_cuenta }, periodo: { id_periodo: 27 } },
|
||||
where: { alumno: { id_cuenta } },
|
||||
relations: ['alumno', 'periodo', 'plataforma'],
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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,11 @@
|
||||
import { Controller, Get } from '@nestjs/common';
|
||||
import { PeriodoService } from './periodo.service';
|
||||
|
||||
@Controller('periodo')
|
||||
export class PeriodoController {
|
||||
constructor(private readonly periodoService: PeriodoService) {}
|
||||
@Get('latest')
|
||||
getLatestPeriodo() {
|
||||
return this.periodoService.getLatestPeriodo();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { PeriodoService } from './periodo.service';
|
||||
import { PeriodoController } from './periodo.controller';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { Periodo } from 'src/database/AT/entities/periodo.entity';
|
||||
|
||||
@Module({
|
||||
imports: [TypeOrmModule.forFeature([Periodo], 'dbAT')],
|
||||
controllers: [PeriodoController],
|
||||
providers: [PeriodoService],
|
||||
})
|
||||
export class PeriodoModule {}
|
||||
@@ -0,0 +1,21 @@
|
||||
import { Injectable } 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, 'dbAT')
|
||||
private readonly periodoRepository: Repository<Periodo>,
|
||||
) {}
|
||||
|
||||
async getLatestPeriodo() {
|
||||
return await this.periodoRepository
|
||||
.find({
|
||||
order: { id_periodo: 'DESC' },
|
||||
take: 1,
|
||||
})
|
||||
.then((periodos) => periodos[0]);
|
||||
}
|
||||
}
|
||||
@@ -49,8 +49,6 @@ export class GoogleStrategy extends PassportStrategy(Strategy, 'google') {
|
||||
|
||||
const user = await this.personaService.validateOrCreateGoogleUser({
|
||||
email,
|
||||
nombre,
|
||||
apellido,
|
||||
});
|
||||
|
||||
done(null, user);
|
||||
|
||||
@@ -8,6 +8,7 @@ import { JwtModule } from '@nestjs/jwt';
|
||||
import { GoogleStrategy } from './google.strategy';
|
||||
import { JwtStrategy } from './jwt.strategy';
|
||||
import { Persona } from 'src/database/Monedero/entities/persona.entity';
|
||||
import { AlumnoModule } from 'src/modules/AT/alumno/student.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -24,6 +25,7 @@ import { Persona } from 'src/database/Monedero/entities/persona.entity';
|
||||
};
|
||||
},
|
||||
}),
|
||||
AlumnoModule,
|
||||
],
|
||||
controllers: [PersonaController],
|
||||
providers: [PersonaService, GoogleStrategy, JwtStrategy],
|
||||
|
||||
@@ -3,6 +3,7 @@ import { JwtService } from '@nestjs/jwt';
|
||||
import { Repository } from 'typeorm';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Persona } from 'src/database/Monedero/entities/persona.entity';
|
||||
import { AlumnoService } from 'src/modules/AT/alumno/student.service';
|
||||
|
||||
@Injectable()
|
||||
export class PersonaService {
|
||||
@@ -10,6 +11,8 @@ export class PersonaService {
|
||||
@InjectRepository(Persona, 'dbMonedero')
|
||||
private readonly personaRepository: Repository<Persona>,
|
||||
private readonly jwtService: JwtService,
|
||||
|
||||
private readonly alumnoService: AlumnoService,
|
||||
) {}
|
||||
|
||||
async findAll() {
|
||||
@@ -50,39 +53,39 @@ export class PersonaService {
|
||||
};
|
||||
}
|
||||
|
||||
async validateOrCreateGoogleUser(data: {
|
||||
email: string;
|
||||
nombre: string;
|
||||
apellido: string;
|
||||
}) {
|
||||
async validateOrCreateGoogleUser(data: { email: string }) {
|
||||
let persona = await this.findByEmail(data.email);
|
||||
|
||||
if (!persona) {
|
||||
const apellidoArray = data.apellido.split(' ');
|
||||
const numeroIdentificar = data.email.split('@')[0];
|
||||
|
||||
const alum = await this.alumnoService.findOneById(
|
||||
Number(numeroIdentificar),
|
||||
);
|
||||
|
||||
const apellidoArray = alum.nombre.split(' ');
|
||||
|
||||
const apellidoP = apellidoArray[0] || '';
|
||||
const apellidoM = apellidoArray[1] || '';
|
||||
let realName;
|
||||
const numeroIdentificar = data.email.split('@')[0];
|
||||
|
||||
const nombre = apellidoArray.slice(2).join(' ');
|
||||
|
||||
let tipo;
|
||||
if (numeroIdentificar.length === 9) {
|
||||
tipo = 'Alumno';
|
||||
realName = apellidoArray.slice(2).join(' ') || '';
|
||||
} else {
|
||||
tipo = 'Academico';
|
||||
realName = data.nombre;
|
||||
}
|
||||
|
||||
persona = await this.create({
|
||||
nombre: realName || '',
|
||||
apellidoP: apellidoP || '',
|
||||
apellidoM: apellidoM || '',
|
||||
nombre,
|
||||
apellidoP,
|
||||
apellidoM,
|
||||
password: '',
|
||||
fechaPasswordTem: new Date(),
|
||||
correo: data.email,
|
||||
carreraAds: '',
|
||||
cantidadCuenta: 0,
|
||||
carreraAds: alum.carrera.carrera,
|
||||
cantidadCuenta: alum.credito,
|
||||
usuario: numeroIdentificar,
|
||||
numeroIdentificar: numeroIdentificar || '',
|
||||
tipoUsuario: tipo,
|
||||
|
||||
Reference in New Issue
Block a user