import basketballSchedule from './schedule/basketball.json'
import volleyballSchedule from './schedule/volleyball.json'
import jrSchedule from './schedule/jr.json'
import nextUpData from './schedule/nextUp.json'
import jrRecapData from './schedule/jrRecap.json'

export interface NextUpEntry {
  date: Date
  when: string
  what: string
}

function toNextUp(entries: { date: string; when: string; what: string }[]): NextUpEntry[] {
  return entries.map((entry) => ({ ...entry, date: new Date(`${entry.date}T00:00:00`) }))
}

export const bbNextUp: NextUpEntry[] = toNextUp(nextUpData.basketball)
export const vbNextUp: NextUpEntry[] = toNextUp(nextUpData.volleyball)
export const jrNextUp: NextUpEntry[] = toNextUp(nextUpData.jr)

export function getNextUp(list: NextUpEntry[]): NextUpEntry {
  const today = new Date()
  today.setHours(0, 0, 0, 0)
  return list.find((item) => item.date >= today) ?? list[list.length - 1]
}

export interface KeyDate {
  month: string
  day: string
  title: string
  note: string
  games?: string[]
  highlight?: boolean
}

export interface DayCard {
  name: string
  date: string
  type: string
  desc?: string
  variant: 'skills' | 'team' | 'game' | 'off'
}

export interface StandingsRow {
  team: string
  wins: number
  losses: number
}

export interface ProgramSchedule {
  id: 'basketball' | 'volleyball' | 'jr'
  label: string
  ages: string
  location: string
  seasonInfo: string
  earlyBird: string
  registerUrl: string
  countdownPrefix: string
  countdownSuffix: string
  countdownUnderway: string
  seasonUnderwayIso?: string
  countdownSeasonUnderway?: string
  weekBoard: DayCard[]
  keyDatesHeading: string
  keyDates: KeyDate[]
  footnote?: string
  standingsStartNote?: { heading: string; body: string }
  standings?: StandingsRow[]
}

export const programSchedules: ProgramSchedule[] = [
  basketballSchedule,
  volleyballSchedule,
  jrSchedule,
] as ProgramSchedule[]

export const jrRecap = jrRecapData
