/**
 * Awin-Affiliate-Link-Helper fuer Lieferando-Bestell-Buttons.
 *
 * WICHTIG: awinaffid und awinmid sind hier bewusst LEERE PLATZHALTER.
 * Solange sie leer sind, wird KEIN awinmid/awinaffid an die URL angehaengt
 * und der Link zeigt direkt (unverguetet) auf Lieferando - es verdient dann
 * niemand an den Klicks. Sobald du eine echte Awin-Publisher-ID (awinaffid)
 * und die Lieferando-Merchant-ID (awinmid) hast, einfach hier eintragen -
 * das ist die EINZIGE Stelle, die angepasst werden muss.
 *
 * BUGFIX/UPDATE: Der fruehere globale Schalter SHOW_ORDER_BUTTON ist entfernt.
 * Sichtbarkeit des "Direkt bestellen"-Buttons wird jetzt PRO RESTAURANT
 * anhand des lieferando_url-Felds entschieden (leer = ausgeblendet, befuellt
 * = aktiv) - siehe components/kokonutui/swipe-card-stack.tsx und
 * components/match-overlay.tsx, die jeweils direkt auf lieferandoUrl pruefen,
 * statt eine globale Konstante zu importieren. Der Product Owner pflegt die
 * Ref-Links vorerst manuell direkt im lieferando_url-Feld pro Sponsor -
 * getLieferandoAffiliateUrl() gibt diesen Link dann unveraendert durch
 * (Awin-Wrapping bleibt optional und automatisch, falls die IDs unten
 * spaeter doch noch eingetragen werden).
 */

const AWIN_PUBLISHER_ID = ''; // <-- deine Awin "awinaffid" hier eintragen, sobald vorhanden
const AWIN_LIEFERANDO_MERCHANT_ID = ''; // <-- Awin "awinmid" fuer Lieferando hier eintragen, sobald vorhanden

const LIEFERANDO_BASE_URL = 'https://www.lieferando.de';

function buildLieferandoSearchUrl(name: string, city?: string | null): string {
  const query = city ? `${name} ${city}` : name;
  return `${LIEFERANDO_BASE_URL}/suche?query=${encodeURIComponent(query)}`;
}

function wrapAwinTracking(targetUrl: string, clickref?: string | number): string {
  if (!AWIN_PUBLISHER_ID || !AWIN_LIEFERANDO_MERCHANT_ID) {
    return targetUrl;
  }
  const params = new URLSearchParams({
    awinmid: AWIN_LIEFERANDO_MERCHANT_ID,
    awinaffid: AWIN_PUBLISHER_ID,
    ued: targetUrl,
  });
  if (clickref !== undefined && clickref !== null) {
    params.set('clickref', String(clickref));
  }
  return `https://www.awin1.com/cread.php?${params.toString()}`;
}

export function getLieferandoAffiliateUrl(params: {
  restaurantId?: number | string;
  name: string;
  city?: string | null;
  lieferandoUrl?: string | null;
}): string {
  const { restaurantId, name, city, lieferandoUrl } = params;
  const target = lieferandoUrl && lieferandoUrl.trim()
    ? lieferandoUrl.trim()
    : buildLieferandoSearchUrl(name, city);
  return wrapAwinTracking(target, restaurantId);
}

export function isAwinDummyMode(): boolean {
  return !AWIN_PUBLISHER_ID || !AWIN_LIEFERANDO_MERCHANT_ID;
}
