184 lines
7.5 KiB
TypeScript
184 lines
7.5 KiB
TypeScript
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 { CarritoService } from '../carrito/carrito.service'
|
|
import { TipoUsuarioService } from '../tipo-usuario/tipo-usuario.service';
|
|
import { UsuarioService } from '../usuario/usuario.service';
|
|
import { ProgramaService } from '../programa/programa.service'
|
|
import { UploadFileCargaMasivaUsuarioDto } from './dto/upload-file-carga-masiva-usuario.dto';
|
|
import { UploadFileCargaMasivaEquipoDto } from './dto/upload-file-carga-masiva-equipo.dto'
|
|
|
|
@Injectable()
|
|
export class UploadFileService {
|
|
constructor(
|
|
private carreraService: CarreraService,
|
|
private equipoService: EquipoService,
|
|
private institucionService: InstitucionService,
|
|
private institucionCarreraService: InstitucionCarreraService,
|
|
private carritoService: CarritoService,
|
|
private tipoUsuarioService: TipoUsuarioService,
|
|
private usuarioService: UsuarioService,
|
|
private programaService: ProgramaService
|
|
) {}
|
|
//programa y status
|
|
async createEquipos(file: Express.Multer.File, id_carrito: number, id_programa: number, id_status: number) {
|
|
const path = `${file.destination}/${file.fieldname}`
|
|
const carrito = await this.carreraService.findById(id_carrito)
|
|
const errores: string[] = []
|
|
|
|
if (!file) throw new BadRequestException('No se mando el archivo de equipos.')
|
|
return csvtojson()
|
|
.fromFile(path)
|
|
.then(async (equipos: [UploadFileCargaMasivaEquipoDto]) => {
|
|
for (let i = 0; i < equipos.length; i++) {
|
|
let error = this.errorBase(i)
|
|
|
|
if(!equipos[i].modulo ||
|
|
!equipos[i].carrito ||
|
|
!equipos[i].tipo ||
|
|
!equipos[i].equipo ||
|
|
!equipos[i].numero_inventario ||
|
|
!equipos[i].numero_serie ||
|
|
!equipos[i].entradas ||
|
|
!equipos[i].programas) {
|
|
if (!equipos[i].modulo)
|
|
error += 'falta el campo de modulo'
|
|
if (error != this.errorBase(i)) error += ',';
|
|
if (!equipos[i].carrito)
|
|
error += ' falta del campo carrito';
|
|
if (error != this.errorBase(i)) error += ',';
|
|
if (!equipos[i].tipo) error += ' falta del campo tipo (tipo de equipo)';
|
|
if (error != this.errorBase(i)) error += ',';
|
|
if (!equipos[i].equipo) error += ' falta del campo equipo';
|
|
if (error != this.errorBase(i)) error += ',';
|
|
if (!equipos[i].numero_inventario) error += ' falta del campo número de inventario';
|
|
if (error != this.errorBase(i)) error += ',';
|
|
if (!equipos[i].numero_serie) error += ' falta del campo número de serie';
|
|
if (error != this.errorBase(i)) error += ',';
|
|
if (!equipos[i].entradas) error += ' falta del campo entradas';
|
|
errores.push(`${error}.`);
|
|
continue;
|
|
}
|
|
|
|
const programa = await this.programaService.findByPrograma(equipos[i].programas)
|
|
}
|
|
})
|
|
}
|
|
|
|
async createUsuarios(file: Express.Multer.File, id_institucion: number) {
|
|
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.');
|
|
return csvtojson()
|
|
.fromFile(path)
|
|
.then(async (usuarios: [UploadFileCargaMasivaUsuarioDto]) => {
|
|
for (let i = 0; i < usuarios.length; i++) {
|
|
let error = this.errorBase(i);
|
|
|
|
if (
|
|
!usuarios[i].numero_cuenta ||
|
|
!usuarios[i].tipo_usuario ||
|
|
!usuarios[i].nombres ||
|
|
!usuarios[i].apellido_m ||
|
|
!usuarios[i].apellido_p
|
|
) {
|
|
if (!usuarios[i].numero_cuenta)
|
|
error += ' falta del campo numero_cuenta';
|
|
if (error != this.errorBase(i)) error += ',';
|
|
if (!usuarios[i].tipo_usuario)
|
|
error += ' falta del campo tipo_usuario';
|
|
if (error != this.errorBase(i)) error += ',';
|
|
if (!usuarios[i].nombres) error += ' falta del campo nombres';
|
|
if (error != this.errorBase(i)) error += ',';
|
|
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';
|
|
errores.push(`${error}.`);
|
|
continue;
|
|
}
|
|
|
|
const tipoUsuario = await this.tipoUsuarioService.findByTipoUsuario(
|
|
usuarios[i].tipo_usuario,
|
|
false,
|
|
);
|
|
const usuario = await this.usuarioService.findByUsuario(
|
|
usuarios[i].numero_cuenta,
|
|
false,
|
|
);
|
|
const carrera =
|
|
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;
|
|
|
|
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) {
|
|
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(
|
|
usuarios[i].numero_cuenta,
|
|
institucion.id_institucion,
|
|
tipoUsuario.id_tipo_usuario,
|
|
carrera ? carrera.id_carrera : null,
|
|
)
|
|
.then((usuario) => {});
|
|
}
|
|
return fs.unlink(path, (err) => {
|
|
console.log(err);
|
|
});
|
|
})
|
|
.then((res) => {
|
|
console.log(res);
|
|
return { message: 'Se subió y cargo correctamente tu archivo csv.' };
|
|
});
|
|
}
|
|
|
|
downloadLogo(id_institucion: number) {}
|
|
|
|
errorBase(index) {
|
|
return `Se salto la linea ${index + 2} por:`;
|
|
}
|
|
|
|
uploadLogo(file: Express.Multer.File, id_institucion: number) {}
|
|
}
|