From a308dc9c80ead72c6147441c993e974d3727e9f3 Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Thu, 2 Jun 2022 14:22:27 -0500 Subject: [PATCH] carga masiva usuario a espera de prueba --- .../upload-file-carga-masiva-usuario.dto.ts | 12 ++-- src/upload-file/upload-file.controller.ts | 21 ++++--- src/upload-file/upload-file.service.ts | 60 ++++++++++++------- 3 files changed, 57 insertions(+), 36 deletions(-) diff --git a/src/upload-file/dto/upload-file-carga-masiva-usuario.dto.ts b/src/upload-file/dto/upload-file-carga-masiva-usuario.dto.ts index f9b3e2c..9b969a1 100644 --- a/src/upload-file/dto/upload-file-carga-masiva-usuario.dto.ts +++ b/src/upload-file/dto/upload-file-carga-masiva-usuario.dto.ts @@ -1,13 +1,13 @@ export class UploadFileCargaMasivaUsuarioDto { - carrera?: string; - - numero_cuenta?: string; - - tipo_usuario?: string; - nombres: string; apellido_p: string; apellido_m: string; + + carrera?: string; + + numero_cuenta?: string; + + tipo_usuario?: string; } diff --git a/src/upload-file/upload-file.controller.ts b/src/upload-file/upload-file.controller.ts index 6aaec79..d5d891f 100644 --- a/src/upload-file/upload-file.controller.ts +++ b/src/upload-file/upload-file.controller.ts @@ -1,3 +1,4 @@ +import * as fs from 'fs'; import { Controller, Get, @@ -8,13 +9,13 @@ import { UseInterceptors, } from '@nestjs/common'; import { FileInterceptor } from '@nestjs/platform-express'; +import { ApiTags } from '@nestjs/swagger'; import { UploadFileService } from './upload-file.service'; import { IdInstitucionDto } from '../dto/id-institucion.dto'; -import { UploadFileEquipo } from './dto/upload-file-equipo' -import { ApiTags } from '@nestjs/swagger'; +import { UploadFileEquipo } from './dto/upload-file-equipo'; @Controller('upload-file') -// @ApiTags('upload-file') +@ApiTags('upload-file') export class UploadFileController { constructor(private uploadFileService: UploadFileService) {} @@ -26,7 +27,9 @@ export class UploadFileController { ) { return this.uploadFileService.createEquipos( file, - parseInt(query.id_carrito), parseInt(query.id_programa), parseInt(query.id_status) + parseInt(query.id_carrito), + parseInt(query.id_programa), + parseInt(query.id_status), ); } @@ -36,10 +39,12 @@ export class UploadFileController { @UploadedFile() file: Express.Multer.File, @Query() query: IdInstitucionDto, ) { - return this.uploadFileService.createUsuarios( - file, - parseInt(query.id_institucion), - ); + return this.uploadFileService + .createUsuarios(file, parseInt(query.id_institucion)) + .then((res) => { + fs.unlink(res.path, (err) => {}); + return res.response; + }); } @Get('download-logo') diff --git a/src/upload-file/upload-file.service.ts b/src/upload-file/upload-file.service.ts index 319732f..6d425ff 100644 --- a/src/upload-file/upload-file.service.ts +++ b/src/upload-file/upload-file.service.ts @@ -13,6 +13,7 @@ import { UsuarioService } from '../usuario/usuario.service'; import { InstitucionProgramaService } from '../institucion-programa/institucion-programa.service'; import { UploadFileCargaMasivaUsuarioDto } from './dto/upload-file-carga-masiva-usuario.dto'; import { UploadFileCargaMasivaEquipoDto } from './dto/upload-file-carga-masiva-equipo.dto'; +import { Usuario } from 'src/usuario/entity/usuario.entity'; @Injectable() export class UploadFileService { @@ -87,8 +88,9 @@ export class UploadFileService { const institucion = await this.institucionService.findById(id_institucion); const errores: string[] = []; const mensajes: string[] = []; + const usuariosNuevos: Usuario[] = []; - if (!file) throw new BadRequestException('No se mando un archivo.'); + if (!file) throw new BadRequestException('No se mando ningún archivo.'); return csvtojson() .fromFile(path) .then(async (usuarios: [UploadFileCargaMasivaUsuarioDto]) => { @@ -158,31 +160,45 @@ export class UploadFileService { continue; } if (usuario) { - usuario.tipoUsuario = tipoUsuario; - usuario.activo = true; - if (institucionCarrera) + if ( + usuario.tipoUsuario.id_tipo_usuario != tipoUsuario.id_tipo_usuario + ) + usuario.tipoUsuario = tipoUsuario; + if (!usuario.activo) usuario.activo = true; + if ( + institucionCarrera && + usuario.institucionCarrera.id_institucion_carrera != + institucionCarrera.id_institucion_carrera + ) usuario.institucionCarrera = 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) => {}); + .then(({ message }) => mensajes.push(message)); + } else + await this.usuarioService + .create( + usuarios[i].numero_cuenta, + `${usuarios[i].apellido_p.trim()} ${usuarios[ + i + ].apellido_m.trim()} ${usuarios[i].nombres.trim()}`, + institucion, + tipoUsuario, + institucionCarrera ? institucionCarrera : null, + ) + .then((res) => { + usuariosNuevos.push(res.usuario); + mensajes.push(res.message); + }); } - return fs.unlink(path, (err) => { - console.log(err); - }); - }) - .then((res) => { - console.log(res); - return { message: 'Se subió y cargo correctamente tu archivo csv.' }; + return { + response: { + message: 'Se subió y cargó correctamente tu archivo csv.', + mensajes, + usuariosNuevos, + errores, + }, + path, + }; }); }