/**
 * Example: Query project timeline and display statistics
 *
 * Usage:
 *   npx tsx examples/query-timeline.ts <project-id>
 */

import { createGanttClientFromEnv } from "../index.js";

async function main(): Promise<void> {
  const projectId = process.argv[2];

  if (!projectId) {
    console.error("Usage: npx tsx examples/query-timeline.ts <project-id>");
    process.exit(1);
  }

  const client = createGanttClientFromEnv();

  console.log(`Fetching timeline for project ${projectId}...\n`);

  const timeline = await client.getProjectTimeline(projectId);

  console.log(`Project: ${timeline.project.name}`);
  console.log(`Status: ${timeline.project.status}`);

  if (timeline.project.startDate && timeline.project.endDate) {
    console.log(`Timeline: ${timeline.project.startDate} → ${timeline.project.endDate}`);
  }

  console.log(`\nTasks (${timeline.stats.total} total):`);
  console.log(`  ✓ Completed: ${timeline.stats.completed}`);
  console.log(`  ⊙ In Progress: ${timeline.stats.inProgress}`);
  console.log(`  □ Not Started: ${timeline.stats.notStarted}`);
  console.log(`  ⏸ Paused: ${timeline.stats.paused}`);
  console.log(`  ⚠ Target passed: ${timeline.stats.targetPassed}`);

  console.log("\nTask List:");

  const statusIcon = (status: string): string => {
    switch (status) {
      case "COMPLETED":
        return "✓";
      case "IN_PROGRESS":
        return "⊙";
      case "PAUSED":
        return "⏸";
      case "ARCHIVED":
        return "📦";
      default:
        return "□";
    }
  };

  const now = new Date();

  for (const task of timeline.tasks) {
    const icon = statusIcon(task.status);
    const dueInfo = task.dueDate ? ` Due: ${task.dueDate}` : "";

    const targetPassed =
      task.dueDate && new Date(task.dueDate) < now && task.status !== "COMPLETED"
        ? " (target passed)"
        : "";

    console.log(`${icon} ${task.title} [${task.status}]${dueInfo}${targetPassed}`);
  }
}

main().catch((error) => {
  console.error("Error:", error.message);
  process.exit(1);
});
