Se agregó la documentación en swagger
This commit is contained in:
@@ -7,11 +7,9 @@ import {
|
||||
} from '@nestjs/common';
|
||||
import { MailService } from './mail.service';
|
||||
import { ExcelService } from 'src/excel/excel.service';
|
||||
import { FileInterceptor } from '@nestjs/platform-express';
|
||||
import * as fs from 'fs';
|
||||
import * as csv from 'csv-parser';
|
||||
import { diskStorage } from 'multer'; // Importar para almacenar en el sistema de archivos
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { ApiSendMail, ApiSendMailExcel} from './mail.decorators';
|
||||
|
||||
|
||||
@ApiTags('Mail') // Grupo de endpoints
|
||||
@Controller('mail')
|
||||
@@ -22,7 +20,9 @@ export class MailController {
|
||||
) {}
|
||||
|
||||
// Endpoint para enviar correos a través de una solicitud POST
|
||||
|
||||
@Post('send')
|
||||
@ApiSendMail()
|
||||
async sendMail(@Body() body: { to: string; subject: string; text: string; fecha_recibido: Date }) {
|
||||
const { to, subject, text, fecha_recibido } = body;
|
||||
|
||||
@@ -31,9 +31,10 @@ export class MailController {
|
||||
}
|
||||
|
||||
@Post('send-excel')
|
||||
async sendMailExcel() {
|
||||
@ApiSendMailExcel()
|
||||
async sendMailExcel(@UploadedFile() file: Express.Multer.File) {
|
||||
|
||||
const emails=this.excelService.readEmailsFromExcel('./src/excel_Usuarios/usuarios_fake.xlsx');
|
||||
const emails=this.excelService.readEmailsFromExcel(file);
|
||||
let fechaActual: Date = new Date();
|
||||
|
||||
for (const email of await emails) {
|
||||
@@ -45,46 +46,4 @@ export class MailController {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Post('send-bulk')
|
||||
//@UseInterceptors(FileInterceptor('file'))
|
||||
@UseInterceptors(
|
||||
FileInterceptor('file', {
|
||||
storage: diskStorage({
|
||||
destination: './uploads', // Carpeta donde guardar los archivos
|
||||
filename: (req, file, cb) => {
|
||||
// Guardar el archivo con su nombre original
|
||||
const filename = file.originalname;
|
||||
cb(null, filename);
|
||||
},
|
||||
}),
|
||||
}),
|
||||
)
|
||||
async sendBulkMails(@UploadedFile() file: Express.Multer.File) {
|
||||
const emails: string[] = [];
|
||||
const subject = 'Correo de prueba';
|
||||
const text = 'Este es un correo enviado de manera masiva.';
|
||||
|
||||
// Leer el archivo CSV
|
||||
return new Promise((resolve, reject) => {
|
||||
fs.createReadStream(file.path)
|
||||
.pipe(csv())
|
||||
.on('data', (row) => {
|
||||
emails.push(row.email); // Agregar cada correo a la lista
|
||||
})
|
||||
.on('end', async () => {
|
||||
// Enviar correos en bulk usando el servicio de correos
|
||||
const result = await this.mailService.sendBulkMails(
|
||||
emails,
|
||||
subject,
|
||||
text,
|
||||
);
|
||||
resolve(result);
|
||||
})
|
||||
.on('error', (error) => {
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user