import { Controller, Get, Query, UseGuards } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { ApiBearerAuth, ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
import type { LoginUserInfo } from '../../auth/dto/login.dto';
import { RequireModule, RequirePermission } from '../../auth/decorators';
import { ModuleGuard } from '../../auth/guards/module.guard';
import { PermissionGuard } from '../../auth/guards/permission.guard';
import { GetUser } from '../../auth/get-user.decorator';
import { MiDiaService } from './mi-dia.service';

@ApiTags('Cartera Inteligente — Mi Día')
@ApiBearerAuth()
@UseGuards(AuthGuard('jwt'), ModuleGuard, PermissionGuard)
@RequireModule('COBRANZAS')
@Controller({ path: 'cartera/mi-dia', version: '1' })
export class MiDiaController {
  constructor(private readonly service: MiDiaService) {}

  @Get()
  @RequirePermission('COBRANZAS', 'COB_CART_VER')
  @ApiOperation({
    summary: 'Dashboard del día: KPIs + seguimientos pendientes + cuentas críticas',
  })
  @ApiQuery({ name: 'solo_mis_clientes', required: false, type: Boolean })
  get(
    @GetUser() user: LoginUserInfo,
    @Query('solo_mis_clientes') soloMios?: string,
  ) {
    return this.service.getMiDia(user.empresa_id, user.id, {
      solo_mis_clientes: soloMios === 'true',
    });
  }
}
