se cambio función
This commit is contained in:
@@ -1,16 +1,55 @@
|
||||
import { applyDecorators } from '@nestjs/common';
|
||||
import { ApiTags, ApiOperation, ApiConsumes, ApiBody, ApiResponse } from '@nestjs/swagger';
|
||||
import {
|
||||
ApiTags,
|
||||
ApiOperation,
|
||||
ApiConsumes,
|
||||
ApiBody,
|
||||
ApiResponse,
|
||||
ApiBearerAuth,
|
||||
ApiQuery,
|
||||
} from '@nestjs/swagger';
|
||||
|
||||
export class ExcelDocumentation {
|
||||
/**
|
||||
* Decorators Swagger para el endpoint POST /excel/verify
|
||||
*/
|
||||
static getMovimientos() {
|
||||
return applyDecorators(
|
||||
ApiBearerAuth(),
|
||||
ApiOperation({
|
||||
summary: 'Obtener movimientos',
|
||||
description:
|
||||
'Obtiene un listado paginado de movimientos según el origen del usuario autenticado.',
|
||||
}),
|
||||
ApiQuery({
|
||||
name: 'page',
|
||||
required: false,
|
||||
type: Number,
|
||||
example: 1,
|
||||
description: 'Número de página',
|
||||
}),
|
||||
ApiQuery({
|
||||
name: 'limit',
|
||||
required: false,
|
||||
type: Number,
|
||||
example: 10,
|
||||
description: 'Cantidad de registros por página',
|
||||
}),
|
||||
ApiResponse({
|
||||
status: 200,
|
||||
description: 'Listado de movimientos obtenido correctamente',
|
||||
}),
|
||||
ApiResponse({
|
||||
status: 401,
|
||||
description: 'No autorizado',
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
static verifyExcel() {
|
||||
return applyDecorators(
|
||||
ApiTags('Excel'),
|
||||
ApiOperation({
|
||||
summary: 'Verificar archivo Excel',
|
||||
description: 'Valida duplicados, filas en blanco y formato básico de los datos sin realizar carga en la base.'
|
||||
description:
|
||||
'Valida duplicados, filas en blanco y formato básico de los datos sin realizar carga en la base.',
|
||||
}),
|
||||
ApiConsumes('multipart/form-data'),
|
||||
ApiBody({
|
||||
@@ -20,10 +59,10 @@ export class ExcelDocumentation {
|
||||
file: {
|
||||
type: 'string',
|
||||
format: 'binary',
|
||||
description: 'Archivo Excel (.xlsx) con usuarios a validar'
|
||||
}
|
||||
}
|
||||
}
|
||||
description: 'Archivo Excel (.xlsx) con usuarios a validar',
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
ApiResponse({
|
||||
status: 200,
|
||||
@@ -35,12 +74,18 @@ export class ExcelDocumentation {
|
||||
errors: {
|
||||
type: 'array',
|
||||
items: { type: 'string' },
|
||||
example: ['Fila 2: cuenta duplicada "42515101".', 'Fila 3: fecha de nacimiento inválida "1988051".']
|
||||
}
|
||||
}
|
||||
}
|
||||
example: [
|
||||
'Fila 2: cuenta duplicada "42515101".',
|
||||
'Fila 3: fecha de nacimiento inválida "1988051".',
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
ApiResponse({
|
||||
status: 400,
|
||||
description: 'No se recibió archivo o formato inválido.',
|
||||
}),
|
||||
ApiResponse({ status: 400, description: 'No se recibió archivo o formato inválido.' })
|
||||
);
|
||||
}
|
||||
|
||||
@@ -52,7 +97,8 @@ export class ExcelDocumentation {
|
||||
ApiTags('Excel'),
|
||||
ApiOperation({
|
||||
summary: 'Cargar archivo Excel',
|
||||
description: 'Valida y persiste los datos en la base de datos. Retorna el número de registros insertados.'
|
||||
description:
|
||||
'Valida y persiste los datos en la base de datos. Retorna el número de registros insertados.',
|
||||
}),
|
||||
ApiConsumes('multipart/form-data'),
|
||||
ApiBody({
|
||||
@@ -62,10 +108,10 @@ export class ExcelDocumentation {
|
||||
file: {
|
||||
type: 'string',
|
||||
format: 'binary',
|
||||
description: 'Archivo Excel (.xlsx) con usuarios a cargar'
|
||||
}
|
||||
}
|
||||
}
|
||||
description: 'Archivo Excel (.xlsx) con usuarios a cargar',
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
ApiResponse({
|
||||
status: 201,
|
||||
@@ -73,9 +119,9 @@ export class ExcelDocumentation {
|
||||
schema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
inserted: { type: 'number', example: 3 }
|
||||
}
|
||||
}
|
||||
inserted: { type: 'number', example: 3 },
|
||||
},
|
||||
},
|
||||
}),
|
||||
ApiResponse({
|
||||
status: 400,
|
||||
@@ -86,52 +132,37 @@ export class ExcelDocumentation {
|
||||
errors: {
|
||||
type: 'array',
|
||||
items: { type: 'string' },
|
||||
example: ['Fila 5: rfc contiene caracteres inválidos.']
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
example: ['Fila 5: rfc contiene caracteres inválidos.'],
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static downloadExcel() {
|
||||
return applyDecorators(
|
||||
ApiTags('Excel'),
|
||||
//ApiBearerAuth('bearer'),
|
||||
ApiOperation({
|
||||
summary: 'Descargar usuarios',
|
||||
description: 'Exporta todos los usuarios en un archivo TSV (o CSV) y registra el movimiento.'
|
||||
description:
|
||||
'Exporta todos los usuarios en un archivo TSV (o CSV) y registra el movimiento.',
|
||||
}),
|
||||
ApiResponse({
|
||||
status: 200,
|
||||
description: 'TSV generado correctamente',
|
||||
content: {
|
||||
'text/tab-separated-values': {
|
||||
schema: { type: 'string', example: 'num_cuenta\\tnombre\\t...\\n...' }
|
||||
}
|
||||
}
|
||||
schema: {
|
||||
type: 'string',
|
||||
example: 'num_cuenta\\tnombre\\t...\\n...',
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
ApiResponse({ status: 401, description: 'No autorizado' }),
|
||||
ApiResponse({ status: 500, description: 'Error al generar descarga' }),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user