---
import AchizitiiLayout from '../../layouts/AchizitiiLayout.astro';
import {
  getAuthorityProfile,
  getSupplierProfile,
  getAuthorityNetwork,
  getSupplierNetwork,
} from '../../lib/profile-queries.js';
import { NetworkGraph } from '../../components/profile/NetworkGraph';
import '../../components/profile/profile.css';

export const prerender = false;

const cuiRaw = Astro.params.cui as string;
const cui = cuiRaw.replace(/^RO\s*/i, '').trim();

// Auto-detect entity type — try supplier first (more common for queries)
const [supplierProfile, authorityProfile] = await Promise.all([
  getSupplierProfile(cui),
  getAuthorityProfile(cui),
]);

// Prefer the one with more contracts as primary view
let network = null;
let entityType: 'authority' | 'supplier' = 'supplier';
let profile: any = supplierProfile;

if (authorityProfile && authorityProfile.total_contracts > 0 &&
    (!supplierProfile || authorityProfile.total_contracts >= supplierProfile.contracts_won)) {
  entityType = 'authority';
  profile = authorityProfile;
  network = await getAuthorityNetwork(cui, 20);
} else if (supplierProfile) {
  entityType = 'supplier';
  profile = supplierProfile;
  network = await getSupplierNetwork(cui, 20);
} else {
  return Astro.redirect('/404');
}

const fmt = (n: number | null | undefined) => n == null ? '–' : new Intl.NumberFormat('ro-RO', { maximumFractionDigits: 0 }).format(n);
---

<AchizitiiLayout
  title={`Rețea: ${profile.name} · vreaudigital.ro`}
  description={`Rețeaua de ${entityType === 'authority' ? 'furnizori' : 'autorități'} pentru ${profile.name}.`}
>
  <main class="bg-page">
    <section class="max-w-content mx-auto px-4 py-6">

      <nav class="text-meta text-sm mb-3">
        <a href="/" class="hover:text-stamp">Achiziții</a> ›
        <a href={`/${entityType === 'authority' ? 'autoritate' : 'firma'}/${cui}`} class="hover:text-stamp">
          {profile.name}
        </a> ›
        <span class="text-ink">Rețea</span>
      </nav>

      <span class="label-meta">Rețea de relații · {entityType === 'authority' ? 'autoritate contractantă' : 'furnizor'}</span>
      <h1 class="font-display text-3xl text-ink mt-1 mb-2">{profile.name}</h1>
      <p class="text-base text-meta max-w-3xl">
        {entityType === 'authority'
          ? 'Top 20 furnizori cu cele mai mari valori atribuite. Fă click pe oricare nod pentru a vedea celelalte autorități cu care lucrează acel furnizor — descoperi pattern de "client repetat" sau prezență națională.'
          : 'Top 20 autorități contractante de la care firma a câștigat. Fă click pe oricare nod pentru a vedea celelalte firme care primesc contracte de la acea autoritate — descoperi rețelele de furnizori care orbitează aceeași instituție.'}
      </p>

      <div class="rule-meta mt-4" />

      <NetworkGraph data={network} client:load />

      <div class="mt-6 panel" style="background: var(--rule-soft); border: none; padding: 14px 18px;">
        <div class="label-meta text-stamp" style="font-size: 9.5px;">cum citești această diagramă</div>
        <p class="text-xs text-meta mt-1 leading-relaxed">
          Mărimea cercurilor = valoarea totală a contractelor. Grosimea liniilor = la fel.
          Click pe orice furnizor/autoritate satelit deschide un mini-graf cu celelalte 4 entități cu care interacționează.
          Pattern-uri de urmărit: aceeași firmă apare lângă mai multe autorități = furnizor "național";
          o autoritate cu doar 2-3 satelite mari = posibilă captură; cluster-uri foarte dense = ecosistem regional/sectorial coerent.
        </p>
      </div>

    </section>
  </main>
</AchizitiiLayout>
