/* ===== ค่าคงที่สำหรับ UI + ตัวช่วยจัดการ CSV รายชื่อ ===== */

const DEMO_PERSON = "นายสราวุธ";

const ROLES = [
  "ได้รับรางวัลชนะเลิศ",
  "ได้รับรางวัลรองชนะเลิศ อันดับ 1",
  "ผ่านการอบรม",
  "เข้าร่วมกิจกรรม",
  "ครูผู้ฝึกสอน",
];

/* เดาสีป้าย (tone) จากข้อความบทบาท */
function toneForRole(role) {
  const r = (role || "").trim();
  if (r.includes("รองชนะเลิศ")) return "muted";
  if (r.includes("ชนะเลิศ") || r.includes("ดีเด่น") || r.includes("เหรียญทอง")) return "gold";
  return "primary";
}

/* แยกคอลัมน์ 1 บรรทัด CSV รองรับค่าที่มีเครื่องหมายคำพูด */
function splitCsvLine(line) {
  const out = [];
  let cur = "", inQ = false;
  for (let i = 0; i < line.length; i++) {
    const c = line[i];
    if (inQ) {
      if (c === '"' && line[i + 1] === '"') { cur += '"'; i++; }
      else if (c === '"') inQ = false;
      else cur += c;
    } else {
      if (c === '"') inQ = true;
      else if (c === "," || c === "\t") { out.push(cur); cur = ""; }
      else cur += c;
    }
  }
  out.push(cur);
  return out.map(s => s.trim());
}

/* แปลงข้อความ CSV → [{no,name,school,role,tone}] */
function parseRecipientsCsv(text) {
  const clean = text.replace(/^﻿/, ""); // ตัด BOM
  const lines = clean.split(/\r?\n/).filter(l => l.trim());
  if (!lines.length) return [];
  // ตรวจว่าบรรทัดแรกเป็นหัวตารางไหม
  const first = splitCsvLine(lines[0]).join("").toLowerCase();
  const hasHeader = /ชื่อ|นามสกุล|name|โรงเรียน|school|ประเภท|รางวัล|กิจกรรม|รายการ|เลขที่/.test(first);
  const body = hasHeader ? lines.slice(1) : lines;
  return body.map((line, i) => {
    // คอลัมน์: ชื่อ-นามสกุล, โรงเรียน, ประเภทรางวัล, กิจกรรม/รายการ, เลขที่
    const [name, school, role, activity, no] = splitCsvLine(line);
    return {
      no: (no || "").trim() || String(i + 1),
      name: (name || "").trim(),
      school: (school || "").trim(),
      role: (role || "เข้าร่วมกิจกรรม").trim(),
      tone: toneForRole(role),
      activity: (activity || "").trim(),
    };
  }).filter(r => r.name);
}

/* สร้างไฟล์ CSV ตัวอย่างให้ดาวน์โหลด */
function downloadSampleCsv() {
  const rows = [
    "ชื่อ-นามสกุล,โรงเรียน,ประเภทรางวัล,กิจกรรม/รายการ,เลขที่",
    "เด็กหญิงณภัทร นะเรืองรัมย์,โรงเรียนวัดบ้านกะชาย,ได้รับรางวัลระดับเหรียญทอง,กิจกรรม การแข่งขันคีตะมวยไทย ระดับชั้น ม.1 - ม.3,น.5158/2567",
    "เด็กชายกิตติพงษ์ ใจกล้า,โรงเรียนบ้านด่าน,ได้รับรางวัลระดับเหรียญเงิน,กิจกรรม การแข่งขันวาดภาพระบายสี ระดับชั้น ป.4 - ป.6,น.5159/2567",
  ];
  const blob = new Blob(["﻿" + rows.join("\n")], { type: "text/csv;charset=utf-8" });
  const url = URL.createObjectURL(blob);
  const a = document.createElement("a");
  a.href = url; a.download = "ตัวอย่างรายชื่อ.csv";
  document.body.appendChild(a); a.click(); a.remove();
  setTimeout(() => URL.revokeObjectURL(url), 4000);
}

Object.assign(window, { DEMO_PERSON, ROLES, toneForRole, parseRecipientsCsv, downloadSampleCsv });
