// admin-data.jsx — network data for the LBC back-office
const ADMIN_USER = { name:'Théo Lambert', role:'Opérations LBC', initials:'TL' };

const RATE = { Bronze:6, Silver:8, Gold:10 };
const TIER_COLOR = { Bronze:'#B0703A', Silver:'#8A93A0', Gold:'#C2992E' };

const PARTNERS = [];

const PENDING_PARTNERS = [];

const NET_LEADS = [];

const ADMIN_MONTHLY = [ {m:'Déc',v:0},{m:'Jan',v:0},{m:'Fév',v:0},{m:'Mar',v:0},{m:'Avr',v:0},{m:'Mai',v:0} ];
const ADMIN_STATUS_DIST = [
  { label:'Reçu',         value:8, color:'#8A96A0' },
  { label:'Devis envoyé', value:9, color:'#2563EB' },
  { label:'Accepté',      value:8, color:'#C77A0A' },
  { label:'Effectué',     value:7, color:'#16965A' },
  { label:'Versé',        value:3, color:'#A9791F' },
  { label:'Perdu',        value:2, color:'#C2C8CD' },
];

function adminAgg() {
  const active = PARTNERS.length;
  const leadsMonth = ADMIN_MONTHLY[ADMIN_MONTHLY.length-1].v;
  const leadsPrev = ADMIN_MONTHLY[ADMIN_MONTHLY.length-2].v;
  const volume = PARTNERS.reduce((s,p)=>s+p.volume,0);
  const verse = PARTNERS.reduce((s,p)=>s+p.verse,0);
  const pending = PARTNERS.reduce((s,p)=>s+p.pending,0);
  return { active, leadsMonth, leadsPrev, volume, verse, pending };
}

const BOX_PRICE = { S:119, M:199, L:299, XL:399 };
const BOX_SIZE  = { S:'1 – 5 m²', M:'6 – 10 m²', L:'11 – 15 m²', XL:'16 – 20 m²' };

const ADMIN_CLIENTS = [];

const ADMIN_STORAGE = ADMIN_CLIENTS.filter(c=>c.storage).map(c=>({
  client:c.name, from:c.from, to:c.to, tier:c.storage, size:BOX_SIZE[c.storage], price:BOX_PRICE[c.storage], since:c.date, state:'Stocké',
  initials:c.name.split(' ').map(x=>x[0]).join('') }));

function clientsAgg() {
  const cs = ADMIN_CLIENTS;
  const volume = cs.reduce((s,c)=>s+c.value,0);
  return { count:cs.length, volume, avg:cs.length?Math.round(volume/cs.length):0, withStorage:cs.filter(c=>c.storage).length };
}
function storageAgg() {
  const b = ADMIN_STORAGE;
  const mrr = b.reduce((s,x)=>s+x.price,0);
  const bySize = ['S','M','L','XL'].map(k=>({ key:k, n:b.filter(x=>x.tier===k).length }));
  return { boxes:b.length, mrr, avg:b.length?Math.round(mrr/b.length):0, bySize };
}

const MONTHLY_REVENUE = [ {m:'Déc',v:0},{m:'Jan',v:0},{m:'Fév',v:0},{m:'Mar',v:0},{m:'Avr',v:0},{m:'Mai',v:0} ];

// Planning — juin 2026 (déménagements + récupérations de box). d = jour du mois.
const PLANNING = [];
const PLANNING_MONTH = { year:2026, month:5, label:'Juin 2026' }; // month 0-indexed (5 = juin)

function financeAgg() {
  const movesCA = PARTNERS.reduce((s,p)=>s+p.volume,0);
  const storageMrr = ADMIN_STORAGE.reduce((s,x)=>s+x.price,0);
  const commissions = PARTNERS.reduce((s,p)=>s+p.verse,0);
  const clientsCA = ADMIN_CLIENTS.reduce((s,c)=>s+c.value,0);
  return { movesCA, storageMrr, storageAnnual: storageMrr*12, commissions, clients: ADMIN_CLIENTS.length, clientsCA };
}

Object.assign(window, {
  LBC_ADMIN: { ADMIN_USER, PARTNERS, PENDING_PARTNERS, NET_LEADS, ADMIN_MONTHLY, ADMIN_STATUS_DIST, RATE, TIER_COLOR, adminAgg,
    ADMIN_CLIENTS, ADMIN_STORAGE, BOX_PRICE, BOX_SIZE, clientsAgg, storageAgg, MONTHLY_REVENUE, financeAgg, PLANNING, PLANNING_MONTH },
});
