// Supabase client, status config, helpers

const SUPABASE_URL = 'https://dfdlbxmpwcfwywyreqpa.supabase.co';
const SUPABASE_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImRmZGxieG1wd2Nmd3l3eXJlcXBhIiwicm9sZSI6ImFub24iLCJpYXQiOjE3Njk0NjgyMTAsImV4cCI6MjA4NTA0NDIxMH0.7kMbEQD4aJhfLuDuHANlMQrmhUyJQrpMXbTz4e9LyJw';

const sb = window.supabase.createClient(SUPABASE_URL, SUPABASE_KEY);

const STATUS_BADGE = {
  'created':    { label: 'Erstellt',       cls: 'badge-created' },
  'email-sent': { label: 'Gesendet',       cls: 'badge-email-sent' },
  'uploading':  { label: 'Hochladen',      cls: 'badge-uploading' },
  'submitted':  { label: 'Hochgeladen',    cls: 'badge-submitted' },
  'processing': { label: 'In Bearbeitung', cls: 'badge-processing' },
  'done':       { label: 'Video fertig',   cls: 'badge-done' },
};

const STATUS_STEPS = [
  { key: 'created',    label: 'Auftrag erstellt' },
  { key: 'email-sent', label: 'E-Mail gesendet' },
  { key: 'uploading',  label: 'Kunde lädt hoch' },
  { key: 'submitted',  label: 'Upload abgeschlossen' },
  { key: 'processing', label: 'Video wird erstellt' },
  { key: 'done',       label: 'Video fertig' },
];

function statusIndex(status) {
  return STATUS_STEPS.findIndex(s => s.key === status);
}

function formatDate(iso) {
  if (!iso) return '';
  const d = new Date(iso);
  return d.toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric' }) +
    ', ' + d.toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit' });
}

function initials(name) {
  if (!name) return '?';
  return name.split(/\s+/).filter(Boolean).map(w => w[0]).join('').slice(0, 2).toUpperCase();
}

function isOpen(status) {
  return status !== 'done';
}

function generateToken() {
  const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
  const values = new Uint8Array(24);
  crypto.getRandomValues(values);
  return Array.from(values).map(v => chars[v % chars.length]).join('');
}

function mapOrder(row) {
  const dbStatus = row.status || 'created';
  const reactStatus = dbStatus === 'email_sent' ? 'email-sent' : dbStatus;
  return {
    id: row.id,
    token: row.token,
    customerName: row.customer_name || row.customer_email || '(unbekannt)',
    deceased: row.deceased_name || '',
    email: row.customer_email || '',
    phone: row.customer_phone || '',
    status: reactStatus,
    note: row.internal_note || '',
    adminNote: row.admin_note || '',
    photos: 0,
    sessionId: row.session_id || null,
    createdAt: row.created_at,
    funeralHomeId: row.funeral_home_id,
  };
}

Object.assign(window, {
  sb,
  STATUS_BADGE,
  STATUS_STEPS,
  statusIndex,
  formatDate,
  initials,
  isOpen,
  generateToken,
  mapOrder,
});
