// data.jsx — seed data for the Idea Pipeline app
// Users (team members), Business Ideas (projects), Tasks.

const USERS = [
  { id: 'u1', name: 'Anjana Perera',    role: 'Founder / Lead',   initials: 'AP', hue: 262, email: 'anjana@ideapipeline.lk',  accessRole: 'owner' },
  { id: 'u2', name: 'Dilini Fernando',  role: 'Product',          initials: 'DF', hue: 200, email: 'dilini@ideapipeline.lk',  accessRole: 'manager' },
  { id: 'u3', name: 'Kasun Jayasuriya', role: 'Engineering',      initials: 'KJ', hue: 152, email: 'kasun@ideapipeline.lk',   accessRole: 'manager' },
  { id: 'u4', name: 'Hashini Silva',    role: 'Design',           initials: 'HS', hue: 24,  email: 'hashini@ideapipeline.lk', accessRole: 'member' },
  { id: 'u5', name: 'Ravindu Bandara',  role: 'Growth',           initials: 'RB', hue: 330, email: 'ravindu@ideapipeline.lk', accessRole: 'member' },
  { id: 'u6', name: 'Nethmi Gunaratne', role: 'Finance / Ops',    initials: 'NG', hue: 48,  email: 'nethmi@ideapipeline.lk',  accessRole: 'manager' },
];

// current "logged-in" user — drives the My Tasks view
const ME = 'u2';

const STAGES = [
  { id: 'pending',   label: 'Pending',     hint: 'Not started yet' },
  { id: 'inprocess', label: 'In Process',  hint: 'Being worked on' },
  { id: 'complete',  label: 'Complete',    hint: 'Done & verified' },
];

const PRIORITIES = {
  high:   { label: 'High',   hue: 14  },
  medium: { label: 'Medium', hue: 38  },
  low:    { label: 'Low',    hue: 215 },
};

const IDEA_STATUS = {
  idea:     { label: 'Idea',      hue: 268 },
  active:   { label: 'Active',    hue: 152 },
  onhold:   { label: 'On Hold',   hue: 38  },
  launched: { label: 'Launched',  hue: 200 },
};

let _tid = 0;
const tid = () => 't' + (++_tid);

function mkTasks(defs) {
  return defs.map((d) => ({
    id: tid(),
    title: d[0],
    stage: d[1],
    assignee: d[2],
    priority: d[3],
    due: d[4],
    desc: d[5] || '',
    cost: d[6] || 0,        // LKR
    spentOn: d[7] || '',    // ISO date the expense was incurred
    comments: [],           // {id, author, text, time}
  }));
}

const PROJECTS = [
  {
    id: 'p1',
    name: 'QuickCart',
    tagline: '15-minute grocery delivery for Colombo neighbourhoods',
    category: 'Q-Commerce',
    status: 'active',
    owner: 'u1',
    team: ['u1', 'u2', 'u3', 'u5'],
    created: 'May 2026',
    tasks: mkTasks([
      ['Validate demand in 3 pilot suburbs', 'complete', 'u5', 'high', 'Jun 2', 'Door-to-door + WhatsApp survey of 200 households.', 65000, '2026-06-02'],
      ['Define MVP feature scope', 'complete', 'u2', 'high', 'Jun 4', 'Cart, checkout, rider assignment, live tracking.', 20000, '2026-06-04'],
      ['Design ordering flow', 'inprocess', 'u4', 'high', 'Jun 14', 'Mobile-first. Browse → cart → 15-min promise → track.', 90000, '2026-06-10'],
      ['Build rider dispatch logic', 'inprocess', 'u3', 'high', 'Jun 18', 'Nearest-rider matching with surge handling.', 240000, '2026-06-09'],
      ['Negotiate with 5 local grocers', 'inprocess', 'u1', 'medium', 'Jun 16', 'Margin & exclusivity terms.', 35000, '2026-06-08'],
      ['Set up payment gateway', 'pending', 'u3', 'medium', 'Jun 22', 'Card + cash on delivery + wallet.', 75000, ''],
      ['Plan launch-week promo', 'pending', 'u5', 'low', 'Jun 28', 'Referral credits + first-order discount.', 180000, ''],
      ['Draft unit economics model', 'pending', 'u6', 'high', 'Jun 20', 'Per-order cost vs basket size break-even.', 0, ''],
    ]),
  },
  {
    id: 'p2',
    name: 'LeafLedger',
    tagline: 'Carbon-footprint tracking made simple for SMEs',
    category: 'Climate SaaS',
    status: 'idea',
    owner: 'u2',
    team: ['u2', 'u4', 'u6'],
    created: 'Jun 2026',
    tasks: mkTasks([
      ['Interview 10 SME owners', 'inprocess', 'u2', 'high', 'Jun 19', 'Understand reporting pain & willingness to pay.', 30000, '2026-06-11'],
      ['Map emission data sources', 'pending', 'u6', 'medium', 'Jun 24', 'Utility bills, fuel, supplier data.', 15000, ''],
      ['Sketch dashboard concept', 'pending', 'u4', 'medium', 'Jun 26', '', 25000, ''],
      ['Research compliance standards', 'complete', 'u2', 'medium', 'Jun 8', 'GHG Protocol scopes 1/2/3.', 18000, '2026-06-08'],
    ]),
  },
  {
    id: 'p3',
    name: 'PaySplit',
    tagline: 'Split group expenses & settle up instantly',
    category: 'Fintech',
    status: 'active',
    owner: 'u3',
    team: ['u3', 'u2', 'u4', 'u6'],
    created: 'Apr 2026',
    tasks: mkTasks([
      ['Build expense-splitting engine', 'complete', 'u3', 'high', 'May 28', 'Equal, exact, percentage splits.', 160000, '2026-05-28'],
      ['Design group & friends UI', 'complete', 'u4', 'high', 'Jun 1', '', 85000, '2026-06-01'],
      ['Integrate bank settlement API', 'inprocess', 'u3', 'high', 'Jun 17', 'Instant transfer between members.', 120000, '2026-06-12'],
      ['Write onboarding copy', 'inprocess', 'u2', 'low', 'Jun 15', '', 12000, '2026-06-13'],
      ['Security & data-privacy review', 'pending', 'u6', 'high', 'Jun 25', 'PCI scope + local data rules.', 95000, ''],
      ['Beta test with 3 friend groups', 'pending', 'u5', 'medium', 'Jul 1', '', 20000, ''],
    ]),
  },
  {
    id: 'p4',
    name: 'FarmLink',
    tagline: 'Direct marketplace connecting farmers to restaurants',
    category: 'Marketplace',
    status: 'onhold',
    owner: 'u5',
    team: ['u5', 'u1', 'u6'],
    created: 'Mar 2026',
    tasks: mkTasks([
      ['Sign up 20 farmers in pilot region', 'complete', 'u5', 'high', 'May 20', '', 40000, '2026-05-20'],
      ['Build catalogue & pricing tool', 'inprocess', 'u1', 'medium', 'Jun 30', 'Seasonal pricing, stock levels.', 110000, '2026-06-10'],
      ['Logistics cost study', 'pending', 'u6', 'high', 'Jul 5', 'Cold-chain feasibility.', 55000, ''],
    ]),
  },
  {
    id: 'p5',
    name: 'MediQueue',
    tagline: 'Skip the waiting room — book clinic slots in advance',
    category: 'HealthTech',
    status: 'launched',
    owner: 'u4',
    team: ['u4', 'u3', 'u2', 'u1'],
    created: 'Jan 2026',
    tasks: mkTasks([
      ['Onboard 12 clinics', 'complete', 'u1', 'high', 'Feb 10', '', 70000, '2026-02-10'],
      ['Build appointment engine', 'complete', 'u3', 'high', 'Feb 20', '', 220000, '2026-02-20'],
      ['Launch patient app', 'complete', 'u4', 'high', 'Mar 1', '', 140000, '2026-03-01'],
      ['Add SMS reminders', 'complete', 'u2', 'medium', 'Mar 12', '', 45000, '2026-03-12'],
      ['Scale to 50 clinics', 'inprocess', 'u1', 'high', 'Jul 10', 'Outbound sales + referral program.', 300000, '2026-06-05'],
      ['Add telemedicine module', 'pending', 'u3', 'medium', 'Aug 1', '', 130000, ''],
    ]),
  },
];

// ---- seed discussion threads ----
let _cid = 0;
const cmt = (author, text, time) => ({ id: 'c' + (++_cid), author, text, time });

// project-level comments
PROJECTS.forEach((p) => { p.comments = p.comments || []; });
const proj = (id) => PROJECTS.find((p) => p.id === id);
proj('p1').comments = [
  cmt('u1', 'Pilot suburbs are confirmed: Nugegoda, Dehiwala, Rajagiriya. Let’s keep the 15-min promise realistic — only within a 2km radius for launch.', 'Jun 6 · 9:12 AM'),
  cmt('u5', 'Survey response was strong — 68% said they’d try it if delivery is under Rs 150. Pricing model needs to reflect that.', 'Jun 7 · 2:40 PM'),
  cmt('u3', 'Dispatch logic is the long pole. I’ll need the grocer integration specs by Wed to stay on track.', 'Jun 10 · 11:05 AM'),
];
proj('p3').comments = [
  cmt('u3', 'Settlement API sandbox is live. Instant transfers working between test accounts — moving to security review next.', 'Jun 12 · 4:18 PM'),
  cmt('u6', 'Flagging: we need a data-privacy sign-off before any real bank credentials touch the system.', 'Jun 13 · 8:50 AM'),
];
proj('p2').comments = [
  cmt('u2', 'Early SME interviews suggest the real pain is *reporting for tenders*, not compliance. Might reshape the MVP.', 'Jun 11 · 3:30 PM'),
];

// task-level comments
const task = (pid, part) => proj(pid).tasks.find((t) => t.title.includes(part));
task('p1', 'Design ordering').comments = [
  cmt('u2', 'Can we surface the 15-min countdown right on the cart screen? That’s our hook.', 'Jun 11 · 10:02 AM'),
  cmt('u4', 'Yes — added a live timer chip in the latest mockup. Will share by EOD.', 'Jun 11 · 1:45 PM'),
];
task('p1', 'rider dispatch').comments = [
  cmt('u3', 'Surge handling is in. Edge case: what happens when no rider is within range? Need a fallback ETA.', 'Jun 9 · 5:20 PM'),
];
task('p1', 'payment gateway').comments = [
  cmt('u6', 'Let’s confirm the gateway fees before committing — affects unit economics.', 'Jun 12 · 9:00 AM'),
];

// ---- workspace roles & permissions ----
const ROLES = {
  owner:   { label: 'Owner',   hue: 262, desc: 'Full control of the workspace, members, billing and every project.' },
  manager: { label: 'Manager', hue: 200, desc: 'Runs projects — creates ideas, assigns tasks and manages expenses.' },
  member:  { label: 'Member',  hue: 152, desc: 'Works on assigned tasks, logs expenses and joins discussions.' },
  viewer:  { label: 'Viewer',  hue: 38,  desc: 'Read-only access to projects, tasks and reports.' },
};
const ROLE_ORDER = ['owner', 'manager', 'member', 'viewer'];

// each item: which roles are allowed (1 = yes)
const PERMISSIONS = [
  { group: 'Business Ideas', items: [
    { key: 'View all ideas',              roles: { owner: 1, manager: 1, member: 1, viewer: 1 } },
    { key: 'Create a new idea',           roles: { owner: 1, manager: 1, member: 0, viewer: 0 } },
    { key: 'Edit idea details & status',  roles: { owner: 1, manager: 1, member: 0, viewer: 0 } },
    { key: 'Delete or archive an idea',   roles: { owner: 1, manager: 0, member: 0, viewer: 0 } },
  ] },
  { group: 'Tasks', items: [
    { key: 'View tasks',                  roles: { owner: 1, manager: 1, member: 1, viewer: 1 } },
    { key: 'Create & assign tasks',       roles: { owner: 1, manager: 1, member: 0, viewer: 0 } },
    { key: 'Move tasks across stages',    roles: { owner: 1, manager: 1, member: 1, viewer: 0 } },
    { key: 'Edit any task',               roles: { owner: 1, manager: 1, member: 0, viewer: 0 } },
    { key: 'Edit tasks assigned to me',   roles: { owner: 1, manager: 1, member: 1, viewer: 0 } },
  ] },
  { group: 'Expenses', items: [
    { key: 'View expense reports',        roles: { owner: 1, manager: 1, member: 1, viewer: 1 } },
    { key: 'Add / edit task costs',       roles: { owner: 1, manager: 1, member: 1, viewer: 0 } },
    { key: 'Export expense statement',    roles: { owner: 1, manager: 1, member: 0, viewer: 0 } },
  ] },
  { group: 'Discussion', items: [
    { key: 'Read comments',               roles: { owner: 1, manager: 1, member: 1, viewer: 1 } },
    { key: 'Post comments',               roles: { owner: 1, manager: 1, member: 1, viewer: 0 } },
  ] },
  { group: 'Team & Workspace', items: [
    { key: 'Invite & remove members',     roles: { owner: 1, manager: 0, member: 0, viewer: 0 } },
    { key: 'Change member roles',         roles: { owner: 1, manager: 0, member: 0, viewer: 0 } },
    { key: 'Manage workspace settings',   roles: { owner: 1, manager: 0, member: 0, viewer: 0 } },
  ] },
];

window.SEED = { USERS, ME, STAGES, PRIORITIES, IDEA_STATUS, PROJECTS, ROLES, ROLE_ORDER, PERMISSIONS };
