import { Body, Controller, Get, HttpException, HttpStatus, Param, ParseIntPipe, Post, Res, UploadedFile, UseGuards, UseInterceptors, } from '@nestjs/common'; import { FileInterceptor } from '@nestjs/platform-express'; import { EmailDto } from './dto/emailDto.dto'; import { EmailService } from './email.service'; import { Response } from 'express'; import * as xlsx from 'xlsx'; import { AuthGuard } from '@nestjs/passport'; @Controller('email') export class EmailController { constructor(private readonly emailService: EmailService) { } @UseGuards(AuthGuard('jwt')) @Post('/evento/:id') async sendEmail( @Param('id', ParseIntPipe) id: number, @Body() emailDto: EmailDto, @Res() res, ): Promise { return this.emailService.sendEmail(id, emailDto, res); } @UseGuards(AuthGuard('jwt')) @Post('constancias/:id') @UseInterceptors(FileInterceptor('file')) async sendConstancias( @UploadedFile() file, @Param('id', ParseIntPipe) id: number, @Res() res, ) { if (!file) { throw new HttpException( 'No se ha cargado ningun archivo', HttpStatus.BAD_REQUEST, ); } return this.emailService.sendConstancias(file, id, res); } //@UseGuards(AuthGuard('jwt')) @Get(':id/participantes/xlsx') async descargarExcel( @Param('id') idEvento: number, @Res() res: Response, ) { console.log('entro en el controller') return this.emailService.getParticipantesExcel(idEvento, res); } }