// Data, constants, helpers, icons

const GOVERNORATES = [
  "بغداد","البصرة","نينوى","أربيل","السليمانية","دهوك","كركوك","الأنبار",
  "صلاح الدين","ديالى","واسط","بابل","كربلاء","النجف","القادسية","المثنى","ذي قار","ميسان"
];

const SPECIALTIES = [
  "مشويات","شرقي","غربي","بيتزا","برغر","بارستا","حلويات","معجنات","عصائر","شيف عام"
];

const STATUSES = [
  "جديد","تم التواصل","مناسب","مرشح لمطعم","تم توظيفه","غير مناسب","غير متاح حالياً"
];

const RATINGS = ["ممتاز","جيد","متوسط","ضعيف","يحتاج تجربة"];

// Sample seed data
const SEED = [
  {
    id: "C001", name: "أحمد كريم حسن", phone: "07701234567", age: 34,
    currentGov: "بغداد", acceptedGovs: ["بغداد","كربلاء","النجف"],
    specialty: "مشويات", expYears: 8, expPlaces: "مطعم السلطان، مطعم نارنج، مطعم الفانوس",
    lastPlace: "مطعم نارنج - الكرادة", salary: 1200000, accomm: true, outside: true,
    portfolio: "", status: "مناسب", rating: "ممتاز",
    notes: "قوي بالمشاوي، شغله نظيف ومرتب، سريع بالطلبات الكثيرة. عنده خبرة فعلية بالكباب والتكة.",
    createdAt: Date.now() - 1000*60*60*24*12
  },
  {
    id: "C002", name: "محمد علي ياسين", phone: "07801122334", age: 28,
    currentGov: "البصرة", acceptedGovs: ["البصرة","ميسان","ذي قار"],
    specialty: "بيتزا", expYears: 5, expPlaces: "بيتزا روما، Slice House",
    lastPlace: "Slice House - البصرة", salary: 900000, accomm: false, outside: true,
    portfolio: "https://instagram.com/chef.mhd", status: "تم التواصل", rating: "جيد",
    notes: "محترم ومرتب بالكلام. يشتغل على فرن حجري. ينتظر جواب نهائي.",
    createdAt: Date.now() - 1000*60*60*24*5
  },
  {
    id: "C003", name: "ياسر عبد الله محمود", phone: "07512345678", age: 41,
    currentGov: "نينوى", acceptedGovs: ["نينوى","أربيل","دهوك","كركوك"],
    specialty: "شرقي", expYears: 15, expPlaces: "مطعم بيت الموصل، مطعم الواحة، فندق نينوى",
    lastPlace: "فندق نينوى - الموصل", salary: 1500000, accomm: true, outside: true,
    portfolio: "", status: "مرشح لمطعم", rating: "ممتاز",
    notes: "خبرة طويلة بالأكلات الشرقية. ممتاز بالكبسة والمندي والقوزي. مرشح لمطعم جديد بأربيل.",
    createdAt: Date.now() - 1000*60*60*24*20
  },
  {
    id: "C004", name: "زينب صباح كاظم", phone: "07707788991", age: 26,
    currentGov: "بغداد", acceptedGovs: ["بغداد"],
    specialty: "حلويات", expYears: 4, expPlaces: "حلويات أبو عفيف، Sweet Corner",
    lastPlace: "Sweet Corner - المنصور", salary: 750000, accomm: false, outside: false,
    portfolio: "https://instagram.com/zainab.sweets", status: "جديد", rating: "جيد",
    notes: "تشتغل كيك وحلويات غربية. شغلها جميل ومرتب. تحتاج تجربة عملية.",
    createdAt: Date.now() - 1000*60*60*24*2
  },
  {
    id: "C005", name: "عمر فاضل ناصر", phone: "07809988776", age: 31,
    currentGov: "أربيل", acceptedGovs: ["أربيل","السليمانية","دهوك","كركوك","بغداد"],
    specialty: "برغر", expYears: 6, expPlaces: "Burger Stop، Black Bun، The Grill",
    lastPlace: "Black Bun - أربيل", salary: 1100000, accomm: true, outside: true,
    portfolio: "", status: "تم توظيفه", rating: "ممتاز",
    notes: "اشتغل بسلسلة مطاعم. سريع وملتزم. تم تعيينه بمطعم بأربيل.",
    createdAt: Date.now() - 1000*60*60*24*35
  },
  {
    id: "C006", name: "حسين جبار عبد الكريم", phone: "07712233445", age: 38,
    currentGov: "النجف", acceptedGovs: ["النجف","كربلاء","بابل","القادسية"],
    specialty: "شيف عام", expYears: 12, expPlaces: "مطعم الحضرة، مطعم الزائر، فندق قصر الأمير",
    lastPlace: "فندق قصر الأمير - النجف", salary: 1400000, accomm: true, outside: false,
    portfolio: "", status: "مناسب", rating: "ممتاز",
    notes: "شيف تنفيذي سابق. يدير مطبخ كامل. خبرة بالولائم والمناسبات.",
    createdAt: Date.now() - 1000*60*60*24*8
  },
  {
    id: "C007", name: "ليث رعد سلمان", phone: "07901234500", age: 24,
    currentGov: "السليمانية", acceptedGovs: ["السليمانية","أربيل"],
    specialty: "بارستا", expYears: 3, expPlaces: "Caribou، Café Latté",
    lastPlace: "Café Latté - السليمانية", salary: 700000, accomm: false, outside: true,
    portfolio: "https://instagram.com/laith.barista", status: "تم التواصل", rating: "جيد",
    notes: "لاتيه آرت ممتاز. هادئ ومرتب. مهتم بفرصة بأربيل.",
    createdAt: Date.now() - 1000*60*60*24*4
  },
  {
    id: "C008", name: "كريم وليد إبراهيم", phone: "07703344556", age: 45,
    currentGov: "بغداد", acceptedGovs: ["بغداد"],
    specialty: "غربي", expYears: 18, expPlaces: "فندق بابل، Le Royal، مطعم الأركان",
    lastPlace: "مطعم الأركان - الجادرية", salary: 2000000, accomm: false, outside: false,
    portfolio: "", status: "غير مناسب", rating: "متوسط",
    notes: "خبرة كبيرة لكن مبالغ بالراتب. يحتاج تجربة فعلية للتأكد من المستوى.",
    createdAt: Date.now() - 1000*60*60*24*45
  }
];

// ملاحظة: الحفظ صار عبر الـ API (راجع api.js). لم نعد نستخدم localStorage للبيانات.

// ID generator (يُستخدم لمعاينة الكود في النموذج فقط — الكود النهائي يولّده الخادم)
function nextId(existing){
  let max = 0;
  for(const c of existing){
    const n = parseInt((c.id||"").replace(/\D/g,""),10);
    if(!isNaN(n) && n > max) max = n;
  }
  return "C" + String(max+1).padStart(3,"0");
}

// Format helpers
function formatSalary(v){
  if(!v) return "—";
  const n = Number(v);
  if(isNaN(n)) return v;
  return new Intl.NumberFormat("ar-IQ").format(n) + " د.ع";
}
function initialsOf(name){
  const parts = (name||"").trim().split(/\s+/);
  return (parts[0]?.[0]||"") + (parts[1]?.[0]||"");
}
function avatarColorFor(name){
  let h = 0;
  for(const ch of name||""){ h = (h*31 + ch.charCodeAt(0)) >>> 0 }
  return ["","c2","c3","c4","c5"][h % 5];
}

// Icon component (lucide-style inline SVG)
function Icon({ name, size = 16, stroke = 1.75 }) {
  const paths = {
    search: <><circle cx="11" cy="11" r="7"/><path d="m20 20-3.5-3.5"/></>,
    plus: <><path d="M12 5v14M5 12h14"/></>,
    x: <><path d="M18 6 6 18M6 6l12 12"/></>,
    phone: <><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.37 1.9.72 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.35 1.85.59 2.81.72A2 2 0 0 1 22 16.92Z"/></>,
    whatsapp: <><path d="M3 21l1.65-3.8a9 9 0 1 1 3.4 2.9L3 21" /><path d="M9 10a.5.5 0 0 0 1 0V9a.5.5 0 0 0-1 0v1a5 5 0 0 0 5 5h1a.5.5 0 0 0 0-1h-1a.5.5 0 0 0 0 1"/></>,
    map: <><path d="M3 6l6-3 6 3 6-3v15l-6 3-6-3-6 3z"/><path d="M9 3v15M15 6v15"/></>,
    star: <><path d="m12 2 3 7 7 .8-5.3 4.7L18 22l-6-4-6 4 1.3-7.5L2 9.8 9 9z"/></>,
    briefcase: <><rect x="2" y="7" width="20" height="14" rx="2"/><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"/></>,
    cash: <><rect x="2" y="6" width="20" height="12" rx="2"/><circle cx="12" cy="12" r="3"/><path d="M6 12h.01M18 12h.01"/></>,
    home: <><path d="m3 11 9-7 9 7v9a2 2 0 0 1-2 2h-4v-7h-6v7H5a2 2 0 0 1-2-2z"/></>,
    user: <><circle cx="12" cy="8" r="4"/><path d="M4 21a8 8 0 0 1 16 0"/></>,
    users: <><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></>,
    chef: <><path d="M6 14h12v6a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2z"/><path d="M6 14a4 4 0 0 1-1-7.87A4 4 0 0 1 12 4a4 4 0 0 1 7-.13A4 4 0 0 1 18 14"/></>,
    edit: <><path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 1 1 3 3L7 19l-4 1 1-4z"/></>,
    trash: <><path d="M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"/></>,
    check: <><path d="M20 6 9 17l-5-5"/></>,
    filter: <><path d="M3 4h18l-7 9v6l-4 2v-8z"/></>,
    chevron: <><path d="m6 9 6 6 6-6"/></>,
    grid: <><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/></>,
    list: <><path d="M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01"/></>,
    note: <><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6M9 13h6M9 17h4"/></>,
    sparkles: <><path d="m12 3 1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5z"/><path d="M19 14l.7 2.1L22 17l-2.3.9L19 20l-.7-2.1L16 17l2.3-.9z"/></>,
    link: <><path d="M10 13a5 5 0 0 0 7 0l3-3a5 5 0 1 0-7-7l-1 1"/><path d="M14 11a5 5 0 0 0-7 0l-3 3a5 5 0 0 0 7 7l1-1"/></>,
    download: <><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="M7 10l5 5 5-5"/><path d="M12 15V3"/></>,
    upload: <><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="M17 8l-5-5-5 5"/><path d="M12 3v12"/></>,
    sortAsc: <><path d="M7 14l5-5 5 5"/></>,
    sortDesc: <><path d="M7 10l5 5 5-5"/></>,
    sortBoth: <><path d="M8 9l4-4 4 4M8 15l4 4 4-4"/></>,
    building: <><rect x="4" y="2" width="16" height="20" rx="1"/><path d="M9 22v-4h6v4M8 6h.01M16 6h.01M8 10h.01M16 10h.01M8 14h.01M16 14h.01"/></>
  };
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none"
         stroke="currentColor" strokeWidth={stroke} strokeLinecap="round" strokeLinejoin="round"
         className="icon" aria-hidden="true">
      {paths[name]}
    </svg>
  );
}

window.GOVERNORATES = GOVERNORATES;
window.SPECIALTIES = SPECIALTIES;
window.STATUSES = STATUSES;
window.RATINGS = RATINGS;
window.nextId = nextId;
window.formatSalary = formatSalary;
window.initialsOf = initialsOf;
window.avatarColorFor = avatarColorFor;
window.Icon = Icon;
