import { Body, Controller, Get, Post, UseGuards } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger';
import { GetUser } from 'src/auth/get-user.decorator';
import { BulkToggleMedioPagoDto, ToggleMedioPagoDto } from './dto/toggle-medio-pago.dto';
import { MedioPagoService } from './medio-pago.service';

@ApiTags('Medios de Pago')
@ApiBearerAuth()
@UseGuards(AuthGuard('jwt'))
@Controller({ path: 'medio-pago', version: '1' })
export class MedioPagoController {
  constructor(private readonly service: MedioPagoService) {}

  // Obtener todos los medios de pago (catálogo SIFEN)
  @Get('catalogo')
  findAllCatalogo() {
    return this.service.findAllMediosPago();
  }

  // Obtener medios de pago con estado por empresa
  @Get()
  findByEmpresa(@GetUser() user: any) {
    return this.service.findByEmpresa(user.empresa_id);
  }

  // Obtener solo los activos (para POS)
  @Get('activos')
  findActiveByEmpresa(@GetUser() user: any) {
    return this.service.findActiveByEmpresa(user.empresa_id);
  }

  // Activar/desactivar un medio de pago
  @Post('toggle')
  toggle(@Body() dto: ToggleMedioPagoDto, @GetUser() user: any) {
    return this.service.toggle(dto, user.empresa_id);
  }

  // Actualizar múltiples medios de pago
  @Post('bulk-toggle')
  bulkToggle(@Body() dto: BulkToggleMedioPagoDto, @GetUser() user: any) {
    return this.service.bulkToggle(dto.medios, user.empresa_id);
  }
}
