/* eslint-disable */
// Anonymized seed data for manager UI walkthrough.
// All workers/candidates/jobs are realistic-fake (per spec).

(function () {

// ---- Workers currently onboarding -----------------------------------
// Status enum: "Ready to Work" | "Fully Cleared Requirements" | "Screenings"
//            | "Enrollment Complete" | "Offer Accepted" | "Offer Sent"
//            | "Offer Initiated" | "Offer Rejected" | "Revoked"
const ONBOARDINGS = [
  { id: 1,  name: "Maya Chen",        email: "maya.chen@example.com",        job: "Software Engineer",            status: "Ready to Work",               start: "May 4, 2026",  location: "Remote — US",                  required: { f: 3, t: 3 }, cleared: { f: 5, t: 5 }, criminal: "Clear",   mvr: "—",        drug: "Clear"   },
  { id: 2,  name: "Felix Becker",     email: "felix.becker@example.com",     job: "Account Manager",             status: "Ready to Work",               start: "May 4, 2026",  location: "Remote — Germany (EOR)",       required: { f: 3, t: 3 }, cleared: { f: 4, t: 5 }, criminal: "Clear",   mvr: "—",        drug: "—"       },
  { id: 3,  name: "Kenji Tanaka",     email: "kenji.tanaka@example.com",     job: "QA Tester",                   status: "Fully Cleared Requirements",  start: "May 4, 2026",  location: "San Francisco, CA",            required: { f: 3, t: 3 }, cleared: { f: 5, t: 5 }, criminal: "Clear",   mvr: "Clear",    drug: "Clear"   },
  { id: 4,  name: "Theo Martinez",    email: "theo.martinez@example.com",    job: "Business Analyst",            status: "Fully Cleared Requirements",  start: "May 4, 2026",  location: "Remote — US",                  required: { f: 3, t: 3 }, cleared: { f: 5, t: 5 }, criminal: "Clear",   mvr: "—",        drug: "Clear"   },
  { id: 5,  name: "Olivia Brown",     email: "olivia.brown@example.com",     job: "Marketing Coordinator",       status: "Screenings",                  start: "May 6, 2026",  location: "Remote — US",                  required: { f: 1, t: 3 }, cleared: { f: 2, t: 5 }, criminal: "Pending", mvr: "—",        drug: "Pending" },
  { id: 6,  name: "Diego Ramirez",    email: "diego.ramirez@example.com",    job: "Data Analyst",                status: "Screenings",                  start: "May 11, 2026", location: "Austin, TX",                   required: { f: 1, t: 3 }, cleared: { f: 1, t: 5 }, criminal: "Clear",   mvr: "—",        drug: "Pending" },
  { id: 7,  name: "Hannah Kim",       email: "hannah.kim@example.com",       job: "Executive Assistant",         status: "Screenings",                  start: "May 11, 2026", location: "New York, NY",                 required: { f: 2, t: 3 }, cleared: { f: 3, t: 5 }, criminal: "Clear",   mvr: "—",        drug: "Pending" },
  { id: 8,  name: "Aisha Patel",      email: "aisha.patel@example.com",      job: "Recruiter",                   status: "Enrollment Complete",         start: "May 4, 2026",  location: "Remote — US",                  required: { f: 3, t: 3 }, cleared: { f: 5, t: 5 }, criminal: "Clear",   mvr: "—",        drug: "Clear"   },
  { id: 9,  name: "Jamal Williams",   email: "jamal.williams@example.com",   job: "Sales Development Rep",       status: "Enrollment Complete",         start: "May 11, 2026", location: "Chicago, IL",                  required: { f: 3, t: 3 }, cleared: { f: 5, t: 5 }, criminal: "Clear",   mvr: "—",        drug: "Clear"   },
  { id: 10, name: "Benji Cohen",      email: "benji.cohen@example.com",      job: "Trust & Safety Analyst",      status: "Enrollment Complete",         start: "May 11, 2026", location: "Remote — US",                  required: { f: 3, t: 3 }, cleared: { f: 5, t: 5 }, criminal: "Clear",   mvr: "—",        drug: "Clear"   },
  { id: 11, name: "Ethan Walker",     email: "ethan.walker@example.com",     job: "Customer Support Specialist", status: "Offer Accepted",              start: "May 5, 2026",  location: "Remote — US",                  required: { f: 0, t: 3 }, cleared: { f: 0, t: 5 }, criminal: "—",       mvr: "—",        drug: "—"       },
  { id: 12, name: "Noah Anderson",    email: "noah.anderson@example.com",    job: "Project Coordinator",         status: "Offer Accepted",              start: "May 4, 2026",  location: "Denver, CO",                   required: { f: 0, t: 3 }, cleared: { f: 0, t: 5 }, criminal: "—",       mvr: "—",        drug: "—"       },
  { id: 13, name: "Priya Singh",      email: "priya.singh@example.com",      job: "Operations Associate",        status: "Offer Accepted",              start: "May 12, 2026", location: "New York, NY",                 required: { f: 0, t: 3 }, cleared: { f: 0, t: 5 }, criminal: "—",       mvr: "—",        drug: "—"       },
  { id: 14, name: "Lin Zhao",         email: "lin.zhao@example.com",         job: "Technical Writer",            status: "Offer Sent",                  start: "May 13, 2026", location: "Remote — US",                  required: { f: 0, t: 3 }, cleared: { f: 0, t: 5 }, criminal: "—",       mvr: "—",        drug: "—"       },
  { id: 15, name: "Amara Okafor",     email: "amara.okafor@example.com",     job: "Community Manager",           status: "Offer Sent",                  start: "May 18, 2026", location: "Remote — US",                  required: { f: 0, t: 3 }, cleared: { f: 0, t: 5 }, criminal: "—",       mvr: "—",        drug: "—"       },
  { id: 16, name: "Sofia Rossi",      email: "sofia.rossi@example.com",      job: "Product Designer",            status: "Offer Sent",                  start: "May 18, 2026", location: "Remote — US",                  required: { f: 0, t: 3 }, cleared: { f: 0, t: 5 }, criminal: "—",       mvr: "—",        drug: "—"       },
  { id: 17, name: "Zara Khan",        email: "zara.khan@example.com",        job: "UX Researcher",               status: "Offer Initiated",             start: "May 25, 2026", location: "Remote — Canada",              required: { f: 0, t: 3 }, cleared: { f: 0, t: 5 }, criminal: "—",       mvr: "—",        drug: "—"       },
  { id: 18, name: "Naomi Park",       email: "naomi.park@example.com",       job: "Research Associate",          status: "Offer Initiated",             start: "Jun 1, 2026",  location: "Boston, MA",                   required: { f: 0, t: 3 }, cleared: { f: 0, t: 5 }, criminal: "—",       mvr: "—",        drug: "—"       },
  { id: 19, name: "Marcus Johnson",   email: "marcus.johnson@example.com",   job: "Content Moderator",           status: "Offer Rejected",              start: "—",            location: "Remote — US",                  required: { f: 0, t: 3 }, cleared: { f: 0, t: 5 }, criminal: "—",       mvr: "—",        drug: "—"       },
  { id: 20, name: "Lucas Silva",      email: "lucas.silva@example.com",      job: "Implementation Specialist",   status: "Revoked",                     start: "—",            location: "Remote — US",                  required: { f: 0, t: 3 }, cleared: { f: 0, t: 5 }, criminal: "—",       mvr: "—",        drug: "—"       },
];

// Map row.start → comparable Date (returns null for "—")
function parseStart(s) {
  if (!s || s === "—") return null;
  return new Date(s);
}

// ---- Search index — Workers + Candidates ------------------------------
const SEARCH_INDEX = [
  // Workers (anyone in roster)
  { kind: "worker",    name: "Maya Chen",       sub: "Started 5/4/2026 · Software Engineer" },
  { kind: "worker",    name: "Felix Becker",    sub: "Started 5/4/2026 · Account Manager" },
  { kind: "worker",    name: "Kenji Tanaka",    sub: "Started 5/4/2026 · QA Tester" },
  { kind: "worker",    name: "Hannah Kim",      sub: "Started 5/11/2026 · Executive Assistant" },
  { kind: "worker",    name: "Aisha Patel",     sub: "Started 5/4/2026 · Recruiter" },
  { kind: "worker",    name: "Diego Ramirez",   sub: "Started 5/11/2026 · Data Analyst" },
  // Candidates (applicants)
  { kind: "candidate", name: "Maya Robinson",   sub: "Applied 3/2/2026 · Software Engineer" },
  { kind: "candidate", name: "Maya Lindqvist",  sub: "Applied 1/14/2026 · Senior Software Engineer" },
  { kind: "candidate", name: "Mayank Gupta",    sub: "Applied 11/20/2025 · Software Engineer (Backend)" },
  { kind: "candidate", name: "Hannah Weiss",    sub: "Applied 2/8/2026 · Executive Assistant" },
  { kind: "candidate", name: "Hannah Brooks",   sub: "Applied 9/14/2025 · Office Manager" },
  { kind: "candidate", name: "Felix Adebayo",   sub: "Applied 4/2/2026 · Account Manager" },
  { kind: "candidate", name: "Felix Wozniak",   sub: "Applied 12/2/2025 · Sales Engineer" },
];

// Search: match name (case-insensitive contains)
function searchWorkspace(q) {
  if (!q) return [];
  const needle = q.toLowerCase();
  return SEARCH_INDEX.filter(r => r.name.toLowerCase().includes(needle)).slice(0, 6);
}

// CSV column sets
const CORE_COLS = [
  "Worker Name", "Start Date", "Job Title", "Onboarding Status",
  "Required for Work", "Fully Cleared Requirements", "Notes",
];
const EXTRA_COLS = ["Location", "Criminal", "MVR", "Drug Test"];

function rowToCsv(r, withExtras) {
  const v = (x) => `"${String(x).replace(/"/g, '""')}"`;
  const base = [
    v(r.name),
    v(r.start),
    v(r.job),
    v(r.status),
    v(`${r.required.f} of ${r.required.t}`),
    v(`${r.cleared.f} of ${r.cleared.t}`),
    v(""), // notes empty
  ];
  if (!withExtras) return base.join(",");
  return [
    base[0], base[1], v(r.location), base[2], base[3], base[4], base[5],
    v(r.criminal), v(r.mvr), v(r.drug), base[6],
  ].join(",");
}

function buildCsv(rows, withExtras) {
  const header = withExtras
    ? ["Worker Name","Start Date","Location","Job Title","Onboarding Status",
       "Required for Work","Fully Cleared Requirements","Criminal","MVR","Drug Test","Notes"]
    : CORE_COLS;
  return [header.map(h => `"${h}"`).join(","), ...rows.map(r => rowToCsv(r, withExtras))].join("\n");
}

Object.assign(window, {
  ONBOARDINGS, parseStart,
  SEARCH_INDEX, searchWorkspace,
  CORE_COLS, EXTRA_COLS, buildCsv,
});
})();
