import { Body, Controller, Get, Put, UseGuards } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { GetUser } from 'src/auth/get-user.decorator';
import type { LoginUserInfo } from 'src/auth/dto/login.dto';
import { RequireModule } from 'src/auth/decorators/require-module.decorator';
import { RequirePermission } from 'src/auth/decorators/require-permission.decorator';
import { ModuleGuard } from 'src/auth/guards/module.guard';
import { PermissionGuard } from 'src/auth/guards/permission.guard';
import { BancardConfigService } from './bancard-config.service';
import { UpsertBancardConfigDto } from './dto/upsert-bancard-config.dto';

@Controller('bancard/config')
@UseGuards(AuthGuard('jwt'), ModuleGuard, PermissionGuard)
@RequireModule('FISCAL')
export class BancardConfigController {
  constructor(private readonly configService: BancardConfigService) {}

  @Get()
  @RequirePermission('FISCAL', 'FIS_BAN_BANCARD_CONFIG')
  getConfig(@GetUser() user: LoginUserInfo) {
    return this.configService.getConfig(user.empresa_id);
  }

  @Put()
  @RequirePermission('FISCAL', 'FIS_BAN_BANCARD_CONFIG')
  upsertConfig(@Body() dto: UpsertBancardConfigDto, @GetUser() user: LoginUserInfo) {
    return this.configService.upsertConfig(user.empresa_id, dto);
  }
}
