carga masiva incompleta
2}
This commit is contained in:
@@ -5,9 +5,11 @@ import { InstitucionCarreraService } from './institucion-carrera.service';
|
||||
import { InstitucionCarrera } from './entity/institucion-carrera.entity';
|
||||
import { Nivel } from '../carrera/entity/nivel.entity';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
import { CarreraModule } from '../carrera/carrera.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
CarreraModule,
|
||||
InstitucionModule,
|
||||
TypeOrmModule.forFeature([InstitucionCarrera, Nivel]),
|
||||
],
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import { Injectable, NotFoundException } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { Carrera } from 'src/carrera/entity/carrera.entity';
|
||||
import { Institucion } from 'src/institucion/entity/institucion.entity';
|
||||
import { InstitucionCarrera } from './entity/institucion-carrera.entity';
|
||||
import { CarreraService } from '../carrera/carrera.service';
|
||||
import { InstitucionService } from '../institucion/institucion.service';
|
||||
|
||||
@Injectable()
|
||||
@@ -9,6 +12,7 @@ export class InstitucionCarreraService {
|
||||
constructor(
|
||||
@InjectRepository(InstitucionCarrera)
|
||||
private repository: Repository<InstitucionCarrera>,
|
||||
private carreraService: CarreraService,
|
||||
private institucionService: InstitucionService,
|
||||
) {}
|
||||
|
||||
@@ -27,4 +31,20 @@ export class InstitucionCarreraService {
|
||||
return institucionCarrera;
|
||||
});
|
||||
}
|
||||
|
||||
async findByIdInstitucionIdCarrera(
|
||||
id_institucion: number | Institucion,
|
||||
id_carrera: number | Carrera,
|
||||
) {
|
||||
const institucion =
|
||||
typeof id_institucion === 'number'
|
||||
? await this.institucionService.findById(id_institucion)
|
||||
: id_institucion;
|
||||
const carrera =
|
||||
typeof id_carrera === 'number'
|
||||
? await this.institucionService.findById(id_carrera)
|
||||
: id_carrera;
|
||||
|
||||
return this.repository.findOne({ carrera, institucion });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import { UploadFileService } from './upload-file.service';
|
||||
import { CarreraModule } from '../carrera/carrera.module';
|
||||
import { EquipoModule } from '../equipo/equipo.module';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
import { InstitucionCarreraModule } from '../institucion-carrera/institucion-carrera.module';
|
||||
import { TipoUsuarioModule } from '../tipo-usuario/tipo-usuario.module';
|
||||
import { UsuarioModule } from '../usuario/usuario.module';
|
||||
|
||||
@@ -13,6 +14,7 @@ import { UsuarioModule } from '../usuario/usuario.module';
|
||||
CarreraModule,
|
||||
EquipoModule,
|
||||
InstitucionModule,
|
||||
InstitucionCarreraModule,
|
||||
MulterModule.register({
|
||||
dest: './upload',
|
||||
fileFilter: (req, file, cb) => {
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import * as fs from 'fs';
|
||||
import * as csvtojson from 'csvtojson';
|
||||
import { BadRequestException, Injectable } from '@nestjs/common';
|
||||
import { Institucion } from '../institucion/entity/institucion.entity';
|
||||
import { InstitucionCarrera } from 'src/institucion-carrera/entity/institucion-carrera.entity';
|
||||
import { TipoUsuario } from '../tipo-usuario/entity/tipo-usuario.entity';
|
||||
import { CarreraService } from '../carrera/carrera.service';
|
||||
import { EquipoService } from '../equipo/equipo.service';
|
||||
import { InstitucionService } from '../institucion/institucion.service';
|
||||
import { InstitucionCarreraService } from '../institucion-carrera/institucion-carrera.service';
|
||||
import { TipoUsuarioService } from '../tipo-usuario/tipo-usuario.service';
|
||||
import { UsuarioService } from '../usuario/usuario.service';
|
||||
import { Carrera } from '../carrera/entity/carrera.entity';
|
||||
import { Institucion } from '../institucion/entity/institucion.entity';
|
||||
import { TipoUsuario } from '../tipo-usuario/entity/tipo-usuario.entity';
|
||||
import { UploadFileCargaMasivaUsuarioDto } from './dto/upload-file-carga-masiva-usuario.dto';
|
||||
|
||||
@Injectable()
|
||||
@@ -17,6 +18,7 @@ export class UploadFileService {
|
||||
private carreraService: CarreraService,
|
||||
private equipoService: EquipoService,
|
||||
private institucionService: InstitucionService,
|
||||
private institucionCarreraService: InstitucionCarreraService,
|
||||
private tipoUsuarioService: TipoUsuarioService,
|
||||
private usuarioService: UsuarioService,
|
||||
) {}
|
||||
@@ -37,8 +39,9 @@ export class UploadFileService {
|
||||
const path = `${file.destination}/${file.filename}`;
|
||||
const institucion = await this.institucionService.findById(id_institucion);
|
||||
const errores: string[] = [];
|
||||
const mensajes: string[] = [];
|
||||
|
||||
// if (!file) throw new BadRequestException('No se mando un archivo.');
|
||||
if (!file) throw new BadRequestException('No se mando un archivo.');
|
||||
return csvtojson()
|
||||
.fromFile(path)
|
||||
.then(async (usuarios: [UploadFileCargaMasivaUsuarioDto]) => {
|
||||
@@ -63,8 +66,7 @@ export class UploadFileService {
|
||||
if (!usuarios[i].apellido_m) error += ' falta del campo apellido_m';
|
||||
if (error != this.errorBase(i)) error += ',';
|
||||
if (!usuarios[i].apellido_p) error += ' falta del campo apellido_p';
|
||||
error += '.';
|
||||
errores.push(error);
|
||||
errores.push(`${error}.`);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -77,37 +79,43 @@ export class UploadFileService {
|
||||
false,
|
||||
);
|
||||
const carrera =
|
||||
usuarios[i].carrera && tipoUsuario.id_tipo_usuario > 5
|
||||
tipoUsuario &&
|
||||
usuarios[i].carrera &&
|
||||
tipoUsuario.id_tipo_usuario > 5
|
||||
? await this.carreraService.findByCarrera(
|
||||
usuarios[i].carrera,
|
||||
false,
|
||||
)
|
||||
: null;
|
||||
const institucionCarrera = carrera
|
||||
? await this.institucionCarreraService.findByIdInstitucionIdCarrera(
|
||||
institucion,
|
||||
carrera,
|
||||
)
|
||||
: null;
|
||||
|
||||
console.log(usuario);
|
||||
if (!tipoUsuario || (tipoUsuario.id_tipo_usuario > 5 && !carrera)) {
|
||||
if (tipoUsuario.id_tipo_usuario !== 5 && !carrera)
|
||||
error += ' falta del campo carrera para el alumno';
|
||||
if (error != this.errorBase(i)) error += ',';
|
||||
if (!tipoUsuario) error += ' no existe este tipo de usuario';
|
||||
error += '.';
|
||||
if (
|
||||
!tipoUsuario ||
|
||||
tipoUsuario.id_tipo_usuario < 5 ||
|
||||
(!carrera && tipoUsuario.id_tipo_usuario < 6) ||
|
||||
(carrera && !institucionCarrera)
|
||||
) {
|
||||
if (!tipoUsuario) error += ' no existe este tipo de usuario.';
|
||||
if (tipoUsuario.id_tipo_usuario < 5)
|
||||
' no se puede asignar este tipo de usuario a este usuario.';
|
||||
if (!carrera && tipoUsuario.id_tipo_usuario < 6)
|
||||
error += ' falta del campo carrera para el alumno.';
|
||||
if (carrera && !institucionCarrera)
|
||||
error += ' la carrera no pertenece a la institución.';
|
||||
errores.push(error);
|
||||
continue;
|
||||
}
|
||||
if (usuario) {
|
||||
const data: {
|
||||
carrera?: Carrera;
|
||||
id_usuario: number;
|
||||
institucion: Institucion;
|
||||
tipoUsuario: TipoUsuario;
|
||||
} = {
|
||||
id_usuario: usuario.id_usuario,
|
||||
institucion,
|
||||
tipoUsuario,
|
||||
};
|
||||
|
||||
if (carrera) data.carrera = carrera;
|
||||
// await this.usuarioService.update(data).then((usuarioUpdated) => {});
|
||||
usuario.institucion = institucion;
|
||||
usuario.tipoUsuario = tipoUsuario;
|
||||
usuario.activo = true;
|
||||
if (institucionCarrera) usuario.carrera = institucionCarrera;
|
||||
await this.usuarioService.update(usuario).then((usuarioUpdated) => {});
|
||||
} else
|
||||
await this.usuarioService
|
||||
.create(
|
||||
|
||||
Reference in New Issue
Block a user