diff --git a/src/Profesor/dto/profesorDto.dto.ts b/src/Profesor/dto/profesorDto.dto.ts index c62ecdc..e4d3b2f 100644 --- a/src/Profesor/dto/profesorDto.dto.ts +++ b/src/Profesor/dto/profesorDto.dto.ts @@ -2,6 +2,9 @@ import { Type } from "class-transformer"; import { IsBoolean, IsInt, IsNotEmpty, IsNumber, IsString, IsOptional, Length, ValidateNested} from "class-validator"; export class profesorDto{ + + @IsInt() + id_profesor: number; @IsInt() @IsNotEmpty() diff --git a/src/Profesor/entities/profesor.entity.ts b/src/Profesor/entities/profesor.entity.ts index 97e6292..2a997b8 100644 --- a/src/Profesor/entities/profesor.entity.ts +++ b/src/Profesor/entities/profesor.entity.ts @@ -16,10 +16,10 @@ import { User } from 'src/users/entities/user.entity'; @Entity() export class Profesor { - @PrimaryColumn() + @PrimaryColumn({ type: 'int', nullable: false }) id_profesor: number; - @Column({ type: 'int',nullable: false }) + @Column({ type: 'int', nullable: false }) id_usuario: number; @Column({ type: 'varchar', length: 10, nullable: true }) @@ -86,19 +86,19 @@ export class Profesor { fecha_actualizacion: Date; @ManyToOne(() => Edificio, edificio => edificio.profesores) - @JoinColumn({ name: 'id_edificio' }) + @JoinColumn({ name: 'id_edificio', referencedColumnName: 'id_edificio', foreignKeyConstraintName: 'FK_edificio' }) edificio: Edificio; @ManyToOne(() => Adscripcion, adscripcion => adscripcion.profesores) - @JoinColumn({ name: 'id_adscripcion' }) + @JoinColumn({ name: 'id_adscripcion', referencedColumnName: 'id_adscripcion', foreignKeyConstraintName: 'FK_adscripcion' }) adscripcion: Adscripcion; @ManyToOne(() => Categoria, categoria => categoria.profesores) - @JoinColumn({ name: 'id_categoria' }) + @JoinColumn({ name: 'id_categoria', referencedColumnName: 'id_categoria', foreignKeyConstraintName: 'FK_categoria' }) categoria: Categoria; @ManyToOne(() => User, user => user.profesores) - @JoinColumn({ name: 'id_usuario' }) + @JoinColumn({ name: 'id_usuario', referencedColumnName: 'id_usuario', foreignKeyConstraintName: 'FK_usuario' }) user: User; @OneToMany(() => DatosAcademicos, datosAcademicos => datosAcademicos.profesor,{ cascade: true }) diff --git a/src/Profesor/profesor.service.ts b/src/Profesor/profesor.service.ts index 0930789..a5b1d04 100644 --- a/src/Profesor/profesor.service.ts +++ b/src/Profesor/profesor.service.ts @@ -26,6 +26,19 @@ export class ProfesorService { private readonly proyectosAcademicosRepository: Repository, ) {} + private async findAvailableId(): Promise { + let id = 1; + let exists = true; + + while (exists) { + if (!await this.profesorRepository.findOne({ where: { id_profesor: id } })) { + exists = false; + return id; + } + id++; + } + } + //register teacher async register(data: profesorDto): Promise { const { num_trabajador, rfc, proyectosAcademicos, datosAcademicos, lineasInvestigacion} = data; @@ -38,6 +51,9 @@ export class ProfesorService { throw new HttpException('number of worker already exist', 403); } + const availableId = await this.findAvailableId(); + data.id_profesor = availableId; + const savedProfesor = await this.profesorRepository.save(data); if (proyectosAcademicos && proyectosAcademicos.length > 0) { diff --git a/src/datos_academicos/entities/datos_academicos.entity.ts b/src/datos_academicos/entities/datos_academicos.entity.ts index 5d5f3bb..7bf8688 100644 --- a/src/datos_academicos/entities/datos_academicos.entity.ts +++ b/src/datos_academicos/entities/datos_academicos.entity.ts @@ -16,6 +16,6 @@ export class DatosAcademicos { grados_obtenidos: string; @ManyToOne(() => Profesor, (profesor) => profesor.datosAcademicos) - @JoinColumn({ name: 'id_profesor' }) + @JoinColumn({ name: 'id_profesor', referencedColumnName: 'id_profesor', foreignKeyConstraintName: 'FK_datos_academicos' }) profesor: Profesor; } diff --git a/src/lineas_investigacion/entities/lineas_investigacion.entity.ts b/src/lineas_investigacion/entities/lineas_investigacion.entity.ts index 4f71dbf..80d5cfa 100644 --- a/src/lineas_investigacion/entities/lineas_investigacion.entity.ts +++ b/src/lineas_investigacion/entities/lineas_investigacion.entity.ts @@ -14,6 +14,6 @@ export class LineasInvestigacion { lineas_inv_html: string; @ManyToOne(() => Profesor, profesor => profesor.lineasInvestigacion) - @JoinColumn({ name: 'id_profesor' }) + @JoinColumn({ name: 'id_profesor', referencedColumnName: 'id_profesor', foreignKeyConstraintName: 'FK_lineas_investigacion' }) profesor: Profesor; } diff --git a/src/proyectos_academicos/entities/proyectos_academicos.entity.ts b/src/proyectos_academicos/entities/proyectos_academicos.entity.ts index 75837e8..232dd83 100644 --- a/src/proyectos_academicos/entities/proyectos_academicos.entity.ts +++ b/src/proyectos_academicos/entities/proyectos_academicos.entity.ts @@ -14,6 +14,6 @@ export class ProyectosAcademicos { proyecto_html: string; @ManyToOne(() => Profesor, profesor => profesor.proyectosAcademicos) - @JoinColumn({ name: 'id_profesor' }) + @JoinColumn({ name: 'id_profesor', referencedColumnName: 'id_profesor', foreignKeyConstraintName: 'FK_proyectos_academicos' }) profesor: Profesor; }