import { Controller, Get, UseGuards } from '@nestjs/common';
import { ErpJwtGuard } from './erp-jwt.guard';
import { GetSesion } from './get-sesion.decorator';
import { Sesion, soporteHabilitado } from './sesion.types';

/**
 * Cómo ve el servicio al usuario: empresa efectiva, privilegios y alcance.
 * Lo usa el frontend para mostrar la sección, y el test de contraste contra
 * GET /auth/me del ERP.
 */
@Controller({ path: 'sesion', version: '1' })
@UseGuards(ErpJwtGuard)
export class SesionController {
  @Get()
  actual(@GetSesion() sesion: Sesion) {
    return {
      usuario: { id: sesion.usuarioId, username: sesion.username, nombre: sesion.nombre },
      empresa: {
        id: sesion.empresaId,
        ruc: sesion.empresaRuc,
        razon_social: sesion.empresaRazonSocial,
        tipo: sesion.empresaTipo,
      },
      is_superadmin: sesion.isSuperadmin,
      acceso_elevado: sesion.accesoElevado,
      es_novasis: sesion.esNovasis,
      /** Módulo SOPORTE_IA activo para la empresa y privilegio en el perfil. */
      habilitado: soporteHabilitado(sesion),
      alcance: sesion.alcance,
      privilegios: [...sesion.privilegios].sort(),
    };
  }
}
