export type EventType = 'conference' | 'exhibition' | 'seminar' | 'international';

export interface Event {
  id: string;
  title: string;
  date: number;
  dateEnd?: number;
  month: string;
  year: number;
  type: EventType;
  location: string;
  city: string;
  registrationOpen: boolean;
  description: string;
}

export const events: Event[] = [
  {
    id: 'smu-steel-summit-2026',
    title: 'اجلاس فولاد SMU ۲۰۲۶',
    date: 2,
    dateEnd: 4,
    month: 'شهریور',
    year: 1405,
    type: 'conference',
    location: 'مرکز همایش‌های بین‌المللی جورجیا، آتلانتا، ایالات متحده',
    city: 'آتلانتا',
    registrationOpen: true,
    description: 'گردهمایی مدیران بازار فولاد آمریکای شمالی با تمرکز بر قیمت، عرضه، تقاضا، تجارت و فناوری‌های مؤثر بر زنجیره فولاد.',
  },
  {
    id: 'china-international-steel-congress-2026',
    title: 'پانزدهمین کنگره بین‌المللی فولاد چین',
    date: 28,
    dateEnd: 29,
    month: 'شهریور',
    year: 1405,
    type: 'conference',
    location: 'شانگهای، چین',
    city: 'شانگهای',
    registrationOpen: true,
    description: 'کنگره صنعت فولاد چین با محورهای ارتقای کیفیت، تحول دیجیتال، هوشمندسازی، توسعه کم‌کربن و همکاری‌های بین‌المللی.',
  },
  {
    id: 'future-green-steel-2026',
    title: 'اجلاس آینده فولاد سبز ۲۰۲۶',
    date: 6,
    dateEnd: 7,
    month: 'آبان',
    year: 1405,
    type: 'conference',
    location: 'لندن، بریتانیا',
    city: 'لندن',
    registrationOpen: true,
    description: 'اجلاس مدیران صنعت فولاد، انرژی و سرمایه‌گذاری برای بررسی تولید فولاد کم‌کربن، هیدروژن، استانداردها و تأمین مالی پروژه‌ها.',
  },
  {
    id: 'iran-steel-congress-1403',
    title: 'کنگره بین‌المللی فولاد ایران ۱۴۰۳',
    date: 12,
    month: 'اسفند',
    year: 1403,
    type: 'conference',
    location: 'مرکز همایش‌های بین‌المللی تهران',
    city: 'تهران',
    registrationOpen: true,
    description:
      'بزرگ‌ترین گردهمایی سالانه متخصصان، سیاست‌گذاران و فعالان صنعت فولاد ایران با حضور ۱۲۰۰ نفر شرکت‌کننده از ۲۵ کشور.',
  },
  {
    id: 'middle-east-steel-metals-2024',
    title: 'Middle East Steel & Metals 2024',
    date: 25,
    month: 'اسفند',
    year: 1403,
    type: 'exhibition',
    location: 'مرکز نمایشگاهی دبی ورلد ترید سنتر',
    city: 'دبی',
    registrationOpen: true,
    description:
      'نمایشگاه تخصصی فولاد و فلزات خاورمیانه با حضور بیش از ۳۰۰ شرکت از ۴۰ کشور؛ فرصتی برای معرفی ظرفیت‌های صادراتی صنعت فولاد ایران.',
  },
  {
    id: 'steel-policy-seminar-1404',
    title: 'نشست تخصصی سیاست‌گذاری فولاد ۱۴۰۴',
    date: 8,
    month: 'فروردین',
    year: 1404,
    type: 'seminar',
    location: 'پژوهشکده توسعه صنعتی ایران',
    city: 'تهران',
    registrationOpen: true,
    description:
      'نشست تخصصی با حضور نمایندگان وزارت صمت، سازمان ایمیدرو و انجمن‌های تخصصی برای بررسی سیاست‌های سال ۱۴۰۴ در صنعت فولاد.',
  },
  {
    id: 'world-steel-forum-2025',
    title: 'World Steel Forum 2025',
    date: 20,
    month: 'فروردین',
    year: 1404,
    type: 'international',
    location: 'مرکز کنفرانس برلین',
    city: 'برلین',
    registrationOpen: false,
    description:
      'اجلاس سالانه انجمن جهانی فولاد با تمرکز بر کربن‌زدایی، تجارت جهانی و تحولات ساختاری صنعت فولاد تا افق ۲۰۳۰.',
  },
  {
    id: 'iran-metallurgy-expo-1404',
    title: 'نمایشگاه متالورژی ایران',
    date: 15,
    month: 'اردیبهشت',
    year: 1404,
    type: 'exhibition',
    location: 'نمایشگاه بین‌المللی اصفهان',
    city: 'اصفهان',
    registrationOpen: false,
    description:
      'نمایشگاه تخصصی متالورژی، فولاد و فلزات غیرآهنی ایران با محوریت فناوری‌های نوین تولید و تجهیزات صنعتی.',
  },
  {
    id: 'oecd-steel-summit-2025',
    title: 'اجلاس OECD فولاد',
    date: 3,
    month: 'خرداد',
    year: 1404,
    type: 'international',
    location: 'دفتر مرکزی OECD',
    city: 'پاریس',
    registrationOpen: false,
    description:
      'نشست سالانه کمیته فولاد OECD برای بررسی مازاد ظرفیت جهانی، سیاست‌های تجاری و استانداردهای پایداری در صنعت فولاد.',
  },
];

const PANEL_API = (import.meta as ImportMeta & { env?: Record<string, string> }).env?.VITE_PANEL_API || ''

const FA_DIGITS = '۰۱۲۳۴۵۶۷۸۹'
const AR_DIGITS = '٠١٢٣٤٥٦٧٨٩'

const normalizeDigits = (value: unknown) => String(value ?? '').replace(/[۰-۹٠-٩]/g, (digit) => {
  const faIndex = FA_DIGITS.indexOf(digit)
  if (faIndex >= 0) return String(faIndex)
  const arIndex = AR_DIGITS.indexOf(digit)
  return arIndex >= 0 ? String(arIndex) : digit
})

const parseEventRange = (value: unknown): [number, number | undefined] => {
  const candidates = normalizeDigits(value)
    .match(/\d+/g)
    ?.map(Number)
    .filter((number) => number >= 1 && number <= 31)
  const start = candidates?.[0] ?? 1
  const end = candidates && candidates.length > 1 ? candidates.at(-1) : undefined
  return [start, end && end >= start ? end : undefined]
}

const parseEventYear = (value: unknown) => {
  const year = Number(normalizeDigits(value).match(/\d{4}/)?.[0])
  return Number.isFinite(year) ? year : 1405
}

export async function bootstrapEvents(): Promise<void> {
  try {
    const res = await fetch(`${PANEL_API}/api/events?limit=200`)
    if (!res.ok) return
    const fetched = await res.json()
    if (!Array.isArray(fetched) || fetched.length === 0) return
    events.length = 0
    events.push(...fetched.map((e: Record<string, unknown>) => {
      const [date, dateEnd] = parseEventRange(e.dateFa)
      return {
        id: String(e.id), title: String(e.titleFa ?? ''), date, dateEnd,
        month: String(e.monthFa ?? ''), year: parseEventYear(e.year), type: e.type as EventType,
        location: String(e.locationFa ?? ''), city: String(e.cityFa ?? ''),
        registrationOpen: Boolean(e.registrationOpen), description: String(e.descriptionFa ?? ''),
      }
    }))
  } catch { /* panel offline → keep static fallback */ }
}
