import { Module, forwardRef } from "@nestjs/common";
import { TenancyModule } from "../tenancy/tenancy.module";
import { TallerParametrosModule } from "../taller-parametros/taller-parametros.module";
import { MaepluMirrorService } from "./maeplu-mirror.service";
import { ProductosController } from "./productos.controller";
import { ProductosService } from "./productos.service";

// forwardRef a proposito (Task 20): TallerParametrosModule ahora importa
// FacturacionPosModule, que a su vez importa ProductosModule -- este import
// de aca cierra un ciclo de TRES modulos (TallerParametrosModule ->
// FacturacionPosModule -> ProductosModule -> TallerParametrosModule), no
// solo el de dos que agrega Task 20. Sin este forwardRef, el binding de
// TallerParametrosModule llega undefined en tiempo de ejecucion (orden de
// evaluacion de imports de ES modules) aunque `npm run build` compile bien
// y las pruebas unitarias (instanciacion manual) no lo detecten -- solo un
// boot real del arbol de modulos (ver test/auth-guard-coverage.e2e-spec.ts)
// lo revela.
@Module({
  imports: [TenancyModule, forwardRef(() => TallerParametrosModule)],
  controllers: [ProductosController],
  providers: [ProductosService, MaepluMirrorService],
  exports: [ProductosService, MaepluMirrorService],
})
export class ProductosModule {}
