import {
  Injectable,
  Logger,
  OnApplicationBootstrap,
} from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { TenantsService } from '../modules/tenants/tenants.service';

@Injectable()
export class SeedOnBootService implements OnApplicationBootstrap {
  private readonly logger = new Logger(SeedOnBootService.name);

  constructor(
    private readonly tenants: TenantsService,
    private readonly cfg: ConfigService,
  ) {}

  async onApplicationBootstrap(): Promise<void> {
    if (this.cfg.get<string>('nodeEnv') === 'production') {
      return; // never auto-seed in production
    }
    const demoSubdomain = 'demo';
    try {
      const existing = await this.tenants.list();
      if (existing.find((t) => t.subdomain === demoSubdomain)) {
        this.logger.log(
          `Demo tenant "${demoSubdomain}" already exists. Login: admin@demo.local / admin12345`,
        );
        return;
      }
      const r = await this.tenants.create({
        subdomain: demoSubdomain,
        name: 'Demo Sahakari',
        legalName: 'Demo Cooperative Ltd.',
        adminEmail: 'admin@demo.local',
        adminPassword: 'admin12345',
        adminFullName: 'Demo Admin',
        contactPhone: '9800000000',
      });
      this.logger.log(
        `Auto-seeded demo tenant "${r.tenant.subdomain}" (admin user id: ${r.adminUserId})`,
      );
      this.logger.log(
        `Login with: subdomain=demo  email=admin@demo.local  password=admin12345`,
      );
    } catch (e) {
      this.logger.warn(`Auto-seed skipped: ${(e as Error).message}`);
    }
  }
}
