{"version":3,"sources":["../src/types/examsHistory.ts"],"sourcesContent":["/**\n * Exam History Types\n *\n * This file contains types related to the exam history feature,\n * including API responses, table items, and filters.\n *\n * Uses /activities/history endpoint with type=PROVA to filter for exams.\n */\n\n/**\n * Filter option type for exam filters\n */\nexport interface ExamFilterOption {\n  id: string;\n  name: string;\n  [key: string]: unknown;\n}\n\n/**\n * Exam status enum - specific for PROVA type activities\n * Manually set by professor (different from automatic activity status)\n */\nexport enum ExamStatus {\n  AGENDADA = 'AGENDADA',\n  EM_ANDAMENTO = 'EM_ANDAMENTO',\n  FINALIZADA = 'FINALIZADA',\n  CANCELADA = 'CANCELADA',\n}\n\n/**\n * Exam display status for UI\n */\nexport enum ExamDisplayStatus {\n  AGENDADA = 'Agendada',\n  EM_ANDAMENTO = 'Em andamento',\n  FINALIZADA = 'Finalizada',\n  CANCELADA = 'Cancelada',\n}\n\n/**\n * Map API exam status to display status\n * @param apiStatus - Status from backend API\n * @returns Formatted status for UI display\n */\nexport const mapExamStatusToDisplay = (\n  apiStatus: ExamStatus\n): ExamDisplayStatus => {\n  const statusMap: Record<ExamStatus, ExamDisplayStatus> = {\n    [ExamStatus.AGENDADA]: ExamDisplayStatus.AGENDADA,\n    [ExamStatus.EM_ANDAMENTO]: ExamDisplayStatus.EM_ANDAMENTO,\n    [ExamStatus.FINALIZADA]: ExamDisplayStatus.FINALIZADA,\n    [ExamStatus.CANCELADA]: ExamDisplayStatus.CANCELADA,\n  };\n  return statusMap[apiStatus] || ExamDisplayStatus.AGENDADA;\n};\n\n/**\n * Filter options extracted from exams API responses\n */\nexport interface ExamApiFilterOptions {\n  schools: ExamFilterOption[];\n  classes: ExamFilterOption[];\n  subjects: ExamFilterOption[];\n  schoolYears: ExamFilterOption[];\n}\n\n/**\n * Generic entity reference with id and name\n */\ntype EntityRef = { id: string; name: string };\n\n/**\n * Subject object from backend API response\n */\nexport interface ExamSubject extends EntityRef {\n  areaKnowledgeId: string;\n}\n\n/**\n * Breakdown item per school/class for an exam response\n */\nexport interface ExamBreakdownItem {\n  school?: EntityRef | null;\n  schoolYear?: EntityRef | null;\n  class?: EntityRef | null;\n  totalStudents: number;\n  answeredStudents: number;\n  completionPercentage: number;\n}\n\n/**\n * Exam history response from backend API /exams/history\n */\nexport interface ExamHistoryResponse {\n  id: string;\n  title: string;\n  startDate: string | null;\n  status: ExamStatus;\n  completionPercentage: number;\n  questionCount: number;\n  createdAt: string;\n  subject: ExamSubject | null;\n  creator: EntityRef | null;\n  totalStudents?: number;\n  answeredStudents?: number;\n  breakdown?: ExamBreakdownItem[];\n}\n\n/**\n * Exam table item interface for exams list table\n *\n * Columns:\n * - startDate: Data da prova (inicio)\n * - title: Titulo\n * - school: Escola\n * - class: Turma\n * - status: Status (Agendada, Em andamento, Finalizada, Cancelada)\n * - questionCount: Questoes\n * - createdAt: Criada em\n * - completionPercentage: Conclusao\n */\nexport interface ExamTableItem extends Record<string, unknown> {\n  id: string;\n  startDate: string;\n  title: string;\n  school: string;\n  class: string;\n  status: ExamDisplayStatus;\n  questionCount: number;\n  createdAt: string;\n  completionPercentage: number;\n}\n\n/**\n * Exams history API complete response from /activities/history endpoint with type=PROVA\n */\nexport interface ExamsHistoryApiResponse {\n  message: string;\n  data: {\n    activities: ExamHistoryResponse[];\n    pagination: {\n      total: number;\n      page: number;\n      limit: number;\n      totalPages: number;\n    };\n  };\n}\n\n/**\n * Exam history filters for API query parameters\n */\nexport interface ExamHistoryFilters {\n  page?: number;\n  limit?: number;\n  status?: ExamStatus;\n  search?: string;\n  startDate?: string;\n  subjectId?: string;\n  schoolId?: string;\n  classId?: string;\n  sortBy?: 'startDate' | 'title' | 'completionPercentage' | 'createdAt';\n  sortOrder?: 'asc' | 'desc';\n}\n\n/**\n * Exam pagination interface\n */\nexport interface ExamPagination {\n  total: number;\n  page: number;\n  limit: number;\n  totalPages: number;\n}\n"],"mappings":";AAsBO,IAAK,aAAL,kBAAKA,gBAAL;AACL,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,kBAAe;AACf,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,eAAY;AAJF,SAAAA;AAAA,GAAA;AAUL,IAAK,oBAAL,kBAAKC,uBAAL;AACL,EAAAA,mBAAA,cAAW;AACX,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,gBAAa;AACb,EAAAA,mBAAA,eAAY;AAJF,SAAAA;AAAA,GAAA;AAYL,IAAM,yBAAyB,CACpC,cACsB;AACtB,QAAM,YAAmD;AAAA,IACvD,CAAC,yBAAmB,GAAG;AAAA,IACvB,CAAC,iCAAuB,GAAG;AAAA,IAC3B,CAAC,6BAAqB,GAAG;AAAA,IACzB,CAAC,2BAAoB,GAAG;AAAA,EAC1B;AACA,SAAO,UAAU,SAAS,KAAK;AACjC;","names":["ExamStatus","ExamDisplayStatus"]}