import 'dotenv/config';
import { PrismaClient } from '@prisma/client';
import { seedPresentismoDemo } from '../src/rrhh/seeds/presentismo-demo.seed';

type CliOptions = {
  empresaId?: string;
};

const prisma = new PrismaClient();

function parseArgs(argv: string[]): CliOptions {
  const options: CliOptions = {};
  for (let i = 0; i < argv.length; i++) {
    const raw = argv[i];
    if (!raw.startsWith('--')) continue;

    if (raw.startsWith('--empresa-id=')) {
      const value = raw.slice('--empresa-id='.length).trim();
      if (value) options.empresaId = value;
      continue;
    }

    if (raw === '--empresa-id') {
      const value = (argv[i + 1] || '').trim();
      if (value && !value.startsWith('--')) {
        options.empresaId = value;
        i += 1;
      }
    }
  }
  return options;
}

function requireEmpresaId(options: CliOptions): string {
  if (!options.empresaId) {
    throw new Error(
      'Parámetro obligatorio faltante: --empresa-id=<UUID>. Ejemplo: npm run seed:rrhh:presentismo -- --empresa-id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
    );
  }
  const empresaId = options.empresaId.trim();
  const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
  if (!uuidRegex.test(empresaId)) {
    throw new Error(`El valor de --empresa-id no es un UUID válido: ${empresaId}`);
  }
  return empresaId;
}

async function main() {
  const options = parseArgs(process.argv.slice(2));
  const empresaId = requireEmpresaId(options);

  const result = await seedPresentismoDemo(prisma, empresaId);

  console.log('Seed RRHH Presentismo completado');
  console.log(JSON.stringify(result, null, 2));
}

main()
  .catch((error) => {
    console.error('[seed-rrhh-presentismo] Error:', error.message || error);
    process.exitCode = 1;
  })
  .finally(async () => {
    await prisma.$disconnect();
  });

