analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
1 lines • 3.97 kB
Source Map (JSON)
{"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":[]}