import {
  Body,
  Controller,
  Delete,
  Get,
  Param,
  Patch,
  Post,
  UseGuards,
} from '@nestjs/common';
import { Roles } from '../../common/decorators/roles.decorator';
import { JwtAuthGuard } from '../../common/guards/jwt-auth.guard';
import { RolesGuard } from '../../common/guards/roles.guard';
import { CreateModuleSettingDto } from './dto/create-module-setting.dto';
import { UpdateModuleSettingDto } from './dto/update-module-setting.dto';
import { SettingsService } from './settings.service';

@UseGuards(JwtAuthGuard, RolesGuard)
@Roles('super_admin')
@Controller('settings')
export class SettingsController {
  constructor(private readonly settingsService: SettingsService) {}

  @Post('modules')
  create(@Body() data: CreateModuleSettingDto) {
    return this.settingsService.create(data);
  }

  @Get('modules')
  findAll() {
    return this.settingsService.findAll();
  }

  @Get('modules/:id')
  findOne(@Param('id') id: string) {
    return this.settingsService.findOne(Number(id));
  }

  @Patch('modules/:id')
  update(@Param('id') id: string, @Body() data: UpdateModuleSettingDto) {
    return this.settingsService.update(Number(id), data);
  }

  @Patch('modules/:id/toggle')
  toggle(@Param('id') id: string) {
    return this.settingsService.toggle(Number(id));
  }

  @Delete('modules/:id')
  remove(@Param('id') id: string) {
    return this.settingsService.remove(Number(id));
  }
}