carga masiva incompleta

2}
This commit is contained in:
xXpuma99Xx
2022-05-11 21:55:43 -05:00
parent 3dc575c59d
commit 1c09d5c8af
4 changed files with 59 additions and 27 deletions
@@ -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 });
}
}
+2
View File
@@ -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) => {
+35 -27
View File
@@ -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(