{"version":3,"sources":["../src/utils/lessonAvailabilityUtils.ts"],"sourcesContent":["/**\n * Lesson Availability Utilities\n * Helper functions for checking recommended lesson availability based on dates\n */\n\nimport {\n  LESSON_AVAILABILITY,\n  type LessonAvailability,\n  type LessonAvailabilityResult,\n} from '../types/lessonAvailability';\nimport { formatDateToBrazilian } from './activityDetailsUtils';\n\n/**\n * Check if a date string represents a date in the past\n * @param dateString - ISO date string to check\n * @returns true if the date is in the past\n */\nconst isDateInPast = (dateString: string): boolean => {\n  const date = new Date(dateString);\n  const now = new Date();\n  return now > date;\n};\n\n/**\n * Check if a date string represents a date in the future\n * @param dateString - ISO date string to check\n * @returns true if the date is in the future\n */\nconst isDateInFuture = (dateString: string): boolean => {\n  const date = new Date(dateString);\n  const now = new Date();\n  return now < date;\n};\n\n/**\n * Check lesson availability based on start and end dates\n * @param startDate - ISO string for lesson start date (when it becomes available)\n * @param finalDate - ISO string for lesson end date (when it expires)\n * @returns LessonAvailabilityResult with status and formatted dates\n *\n * @example\n * ```typescript\n * const result = checkLessonAvailability('2024-01-01', '2024-12-31');\n * // { status: 'DISPONIVEL', startDate: Date, endDate: Date, ... }\n * ```\n */\nexport const checkLessonAvailability = (\n  startDate: string | null,\n  finalDate: string | null\n): LessonAvailabilityResult => {\n  const start = startDate ? new Date(startDate) : null;\n  const end = finalDate ? new Date(finalDate) : null;\n\n  let status: LessonAvailability = LESSON_AVAILABILITY.DISPONIVEL;\n\n  if (startDate && isDateInFuture(startDate)) {\n    status = LESSON_AVAILABILITY.NAO_INICIADA;\n  } else if (finalDate && isDateInPast(finalDate)) {\n    status = LESSON_AVAILABILITY.EXPIRADA;\n  }\n\n  return {\n    status,\n    startDate: start,\n    endDate: end,\n    formattedStartDate: startDate ? formatDateToBrazilian(startDate) : null,\n    formattedEndDate: finalDate ? formatDateToBrazilian(finalDate) : null,\n  };\n};\n\n/**\n * Check if a lesson is not yet available (before start date)\n * @param startDate - ISO string for lesson start date\n * @returns true if the lesson has not started yet\n *\n * @example\n * ```typescript\n * if (isLessonNotYetAvailable('2025-01-01')) {\n *   showNotAvailableModal();\n * }\n * ```\n */\nexport const isLessonNotYetAvailable = (startDate: string | null): boolean => {\n  if (!startDate) return false;\n  return isDateInFuture(startDate);\n};\n\n/**\n * Check if a lesson has expired (after end date)\n * @param finalDate - ISO string for lesson end date\n * @returns true if the lesson has expired\n *\n * @example\n * ```typescript\n * if (isLessonExpired('2023-12-31')) {\n *   showExpiredView();\n * }\n * ```\n */\nexport const isLessonExpired = (finalDate: string | null): boolean => {\n  if (!finalDate) return false;\n  return isDateInPast(finalDate);\n};\n"],"mappings":";;;;;;;;AAiBA,IAAM,eAAe,CAAC,eAAgC;AACpD,QAAM,OAAO,IAAI,KAAK,UAAU;AAChC,QAAM,MAAM,oBAAI,KAAK;AACrB,SAAO,MAAM;AACf;AAOA,IAAM,iBAAiB,CAAC,eAAgC;AACtD,QAAM,OAAO,IAAI,KAAK,UAAU;AAChC,QAAM,MAAM,oBAAI,KAAK;AACrB,SAAO,MAAM;AACf;AAcO,IAAM,0BAA0B,CACrC,WACA,cAC6B;AAC7B,QAAM,QAAQ,YAAY,IAAI,KAAK,SAAS,IAAI;AAChD,QAAM,MAAM,YAAY,IAAI,KAAK,SAAS,IAAI;AAE9C,MAAI,SAA6B,oBAAoB;AAErD,MAAI,aAAa,eAAe,SAAS,GAAG;AAC1C,aAAS,oBAAoB;AAAA,EAC/B,WAAW,aAAa,aAAa,SAAS,GAAG;AAC/C,aAAS,oBAAoB;AAAA,EAC/B;AAEA,SAAO;AAAA,IACL;AAAA,IACA,WAAW;AAAA,IACX,SAAS;AAAA,IACT,oBAAoB,YAAY,sBAAsB,SAAS,IAAI;AAAA,IACnE,kBAAkB,YAAY,sBAAsB,SAAS,IAAI;AAAA,EACnE;AACF;AAcO,IAAM,0BAA0B,CAAC,cAAsC;AAC5E,MAAI,CAAC,UAAW,QAAO;AACvB,SAAO,eAAe,SAAS;AACjC;AAcO,IAAM,kBAAkB,CAAC,cAAsC;AACpE,MAAI,CAAC,UAAW,QAAO;AACvB,SAAO,aAAa,SAAS;AAC/B;","names":[]}