import type { ProjectHealthLevel, ProjectStatus, SprintStatus } from '@/features/projects/types/project.types';
import type { StatusTone } from '@/styles/theme';

export function projectStatusTone(status: ProjectStatus): StatusTone {
  switch (status) {
    case 'active':
      return 'inProgress';
    case 'on_hold':
      return 'pending';
    case 'completed':
      return 'resolved';
    case 'cancelled':
      return 'closed';
    case 'archived':
      return 'closed';
    case 'planned':
    default:
      return 'draft';
  }
}

export function sprintStatusTone(status: SprintStatus): StatusTone {
  switch (status) {
    case 'active':
      return 'inProgress';
    case 'completed':
      return 'resolved';
    case 'cancelled':
    case 'archived':
      return 'closed';
    case 'planned':
      return 'open';
    case 'draft':
    default:
      return 'draft';
  }
}

export function formatHealthLevel(level: ProjectHealthLevel | string): string {
  switch (level) {
    case 'initializing':
      return 'Initializing';
    case 'healthy':
      return 'Healthy';
    case 'attention':
      return 'Needs Attention';
    case 'critical':
      return 'At Risk';
    default:
      return level.replace(/_/g, ' ');
  }
}

export function healthStatusTone(level: ProjectHealthLevel | string): StatusTone {
  switch (level) {
    case 'healthy':
    case 'good':
      return 'success';
    case 'initializing':
      return 'draft';
    case 'attention':
    case 'warning':
    case 'at_risk':
      return 'warning';
    case 'critical':
    default:
      return 'error';
  }
}

export function workloadStatusTone(status: string): StatusTone {
  switch (status) {
    case 'overloaded':
      return 'error';
    case 'underloaded':
      return 'open';
    case 'balanced':
    default:
      return 'active';
  }
}

export function formatProjectStatus(status: ProjectStatus): string {
  return status.replace(/_/g, ' ');
}

export function formatSprintStatus(status: SprintStatus): string {
  return status.replace(/_/g, ' ');
}
