112 lines
3.1 KiB
TypeScript
112 lines
3.1 KiB
TypeScript
import {
|
|
Controller,
|
|
Get,
|
|
Post,
|
|
Body,
|
|
Patch,
|
|
Param,
|
|
Delete,
|
|
UseInterceptors,
|
|
ParseIntPipe,
|
|
UploadedFile,
|
|
} from '@nestjs/common';
|
|
import { CuestionarioService } from './cuestionario.service';
|
|
import {
|
|
CreateCuestionarioDto,
|
|
CreateCuestionarioEventoDto,
|
|
} from './dto/create-cuestionario.dto';
|
|
import { UpdateCuestionarioDto } from './dto/update-cuestionario.dto';
|
|
import { FileInterceptor } from '@nestjs/platform-express';
|
|
import { diskStorage } from 'multer';
|
|
import { extname } from 'path';
|
|
import { CuestionarioApiDocumentation } from './docs/cuestionario.documentation';
|
|
|
|
@Controller('cuestionario')
|
|
@CuestionarioApiDocumentation.ApiController
|
|
export class CuestionarioController {
|
|
constructor(private readonly cuestionarioService: CuestionarioService) {}
|
|
|
|
@Post()
|
|
@CuestionarioApiDocumentation.ApiCreate
|
|
create(@Body() createCuestionarioDto: CreateCuestionarioDto) {
|
|
return this.cuestionarioService.create(createCuestionarioDto);
|
|
}
|
|
|
|
@Post('evento')
|
|
@CuestionarioApiDocumentation.ApiCreateWithEvento
|
|
createCuestionarioEvento(
|
|
@Body() createCuestionarioDto: CreateCuestionarioEventoDto,
|
|
) {
|
|
return this.cuestionarioService.createCuestionarioEvento(
|
|
createCuestionarioDto,
|
|
);
|
|
}
|
|
|
|
@Post(':id/banner')
|
|
@UseInterceptors(
|
|
FileInterceptor('banner', {
|
|
storage: diskStorage({
|
|
destination: './public/banners', // Asegúrate de que esta carpeta exista
|
|
filename: (req, file, cb) => {
|
|
const uniqueSuffix =
|
|
Date.now() + '-' + Math.round(Math.random() * 1e9);
|
|
const ext = extname(file.originalname);
|
|
cb(null, `banner-${uniqueSuffix}${ext}`);
|
|
},
|
|
}),
|
|
fileFilter: (req, file, cb) => {
|
|
const allowedTypes = /jpeg|jpg|png|webp/;
|
|
const ext = extname(file.originalname).toLowerCase();
|
|
if (allowedTypes.test(ext)) {
|
|
cb(null, true);
|
|
} else {
|
|
cb(new Error('Tipo de archivo no permitido'), false);
|
|
}
|
|
},
|
|
}),
|
|
)
|
|
async subirBannerEvento(
|
|
@Param('id', ParseIntPipe) id: number,
|
|
@UploadedFile() file: Express.Multer.File,
|
|
) {
|
|
if (!file) {
|
|
throw new Error('No se ha recibido un archivo válido');
|
|
}
|
|
|
|
return this.cuestionarioService.asociarBanner(id, file.filename);
|
|
}
|
|
|
|
@Get()
|
|
@CuestionarioApiDocumentation.ApiGetAll
|
|
findAll() {
|
|
return this.cuestionarioService.findAll();
|
|
}
|
|
|
|
@Get(':id')
|
|
@CuestionarioApiDocumentation.ApiGetOne
|
|
findOne(@Param('id') id: string) {
|
|
return this.cuestionarioService.findOne(+id);
|
|
}
|
|
|
|
@Get(':id/formulario')
|
|
@CuestionarioApiDocumentation.ApiGetFormulario
|
|
findFormulario(@Param('id') id: string) {
|
|
return this.cuestionarioService.findCompleto(+id);
|
|
}
|
|
|
|
@Patch(':id')
|
|
@CuestionarioApiDocumentation.ApiUpdate
|
|
update(
|
|
@Param('id') id: string,
|
|
@Body() updateCuestionarioDto: UpdateCuestionarioDto,
|
|
) {
|
|
return this.cuestionarioService.update(+id, updateCuestionarioDto);
|
|
}
|
|
|
|
@Delete(':id')
|
|
@CuestionarioApiDocumentation.ApiRemove
|
|
remove(@Param('id') id: string) {
|
|
return this.cuestionarioService.remove(+id);
|
|
}
|
|
}
|