import { Controller, Get, Post, Body, Patch, Param, Delete, Query, ParseIntPipe, DefaultValuePipe, UseGuards, } from '@nestjs/common'; import { RecurrenceRulesService } from './recurrence-rules.service'; import { CreateRecurrenceRuleDto } from './dto/create-recurrence-rule.dto'; import { UpdateRecurrenceRuleDto } from './dto/update-recurrence-rule.dto'; import { QueryRecurrenceRuleDto } from './dto/query-recurrence-rule.dto'; import { JwtAuthGuard } from '../auth/jwt-auth.guard'; import { Roles } from '../auth/roles.decorator'; import { Role } from '../auth/role.enum'; import { RolesGuard } from '../auth/roles.guard'; @Controller('recurrence-rules') @UseGuards(JwtAuthGuard, RolesGuard) @Roles(Role.Admin) export class RecurrenceRulesController { constructor(private readonly recurrenceRulesService: RecurrenceRulesService) {} @Post() create(@Body() createRecurrenceRuleDto: CreateRecurrenceRuleDto) { return this.recurrenceRulesService.create(createRecurrenceRuleDto); } @Get() findAll(@Query() queryParams: QueryRecurrenceRuleDto) { return this.recurrenceRulesService.findAll(queryParams); } @Get('search') search( @Query('q') term: string, @Query('page', new DefaultValuePipe(1), ParseIntPipe) page: number, @Query('limit', new DefaultValuePipe(10), ParseIntPipe) limit: number, ) { return this.recurrenceRulesService.search(term, { page, limit }); } @Get(':id') findOne(@Param('id', ParseIntPipe) id: number) { return this.recurrenceRulesService.findOne(id); } @Patch(':id') update(@Param('id', ParseIntPipe) id: number, @Body() updateRecurrenceRuleDto: UpdateRecurrenceRuleDto) { return this.recurrenceRulesService.update(id, updateRecurrenceRuleDto); } @Delete(':id') remove(@Param('id', ParseIntPipe) id: number) { return this.recurrenceRulesService.remove(id); } }