import getFertilityStatus from './sympto'
import cycleModule from './cycle'
import { fertilityStatus } from '../labels/labels'

const { getCycleDaysBeforeDay, getPreviousCycles } = cycleModule()

export default function (dateString) {
  const cycle = getCycleDaysBeforeDay(dateString)
  if (!cycle) return fertilityStatus.unknown

  const previousCycles = getPreviousCycles(cycle[0])

  const status = getFertilityStatus({
    cycle: formatCycleForSympto(cycle),
    previousCycles: previousCycles.map(formatCycleForSympto)
  })

  if (status.phases.postOvulatory) {
    const phase = status.phases.postOvulatory
    if (phase.start.date === dateString) {
      return fertilityStatus.fertileUntilEvening
    }
  }

  if (status.assumeFertility) {
    return fertilityStatus.fertile
  } else {
    return fertilityStatus.infertile
  }
}

function formatCycleForSympto(cycle) {
  // we get earliest last, but sympto wants earliest first
  cycle.reverse()
  return cycle
}