{"version":3,"sources":["../src/types/activitiesHistory.ts"],"sourcesContent":["/**\n * Activities History Type Definitions\n * Types and interfaces for activities history and models functionality\n * Based on /activities/history and /activity-drafts endpoints\n */\n\nimport { ActivityType } from '../components/ActivityCreate/ActivityCreate.types';\nimport {\n  GenericApiStatus,\n  GenericDisplayStatus,\n  BadgeActionType,\n  getStatusBadgeAction,\n  mapApiStatusToDisplay,\n} from './common';\n\n/**\n * Activity status from backend API /activities/history\n * Re-exported from common for backward compatibility\n */\nexport { GenericApiStatus as ActivityApiStatus } from './common';\n\n/**\n * Activity status for display in UI (Badge component)\n * Re-exported from common for backward compatibility\n */\nexport { GenericDisplayStatus as ActivityDisplayStatus } from './common';\n\n/**\n * Badge action types for activity status visualization\n * Re-exported from common for backward compatibility\n */\nexport { BadgeActionType as ActivityBadgeActionType } from './common';\n\n/**\n * Activity draft type enum (matches backend ACTIVITY_DRAFT_TYPE)\n */\nexport enum ActivityDraftType {\n  MODELO = 'MODELO',\n  RASCUNHO = 'RASCUNHO',\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 ActivitySubject extends EntityRef {\n  areaKnowledgeId: string;\n}\n\n/**\n * Breakdown item per school/class for an activity response\n */\nexport interface ActivityBreakdownItem {\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 * Activity history response from backend API /activities/history\n */\nexport interface ActivityHistoryResponse {\n  id: string;\n  title: string;\n  startDate: string | null;\n  finalDate: string | null;\n  status: GenericApiStatus;\n  completionPercentage: number;\n  subject: ActivitySubject | null;\n  creator: EntityRef | null;\n  totalStudents?: number;\n  answeredStudents?: number;\n  breakdown?: ActivityBreakdownItem[];\n}\n\n/**\n * Activity table item interface for activities list table\n */\nexport interface ActivityTableItem extends Record<string, unknown> {\n  id: string;\n  startDate: string | null;\n  deadline: string | null;\n  creator: string;\n  /** Creator user id, used to gate owner-only actions (e.g. delete) */\n  creatorId?: string | null;\n  title: string;\n  school: string;\n  year: string;\n  subject: string;\n  class: string;\n  status: GenericDisplayStatus;\n  completionPercentage: number;\n}\n\n/**\n * Pagination info from API\n */\nexport interface ActivityPagination {\n  total: number;\n  page: number;\n  limit: number;\n  totalPages: number;\n}\n\n/**\n * Activities history API complete response\n */\nexport interface ActivitiesHistoryApiResponse {\n  message: string;\n  data: {\n    activities: ActivityHistoryResponse[];\n    pagination: ActivityPagination;\n  };\n}\n\n/**\n * Activity history filters for API query parameters\n */\nexport interface ActivityHistoryFilters {\n  page?: number;\n  limit?: number;\n  type?:\n    | 'ATIVIDADE'\n    | 'PROVA'\n    | 'SIMULADO'\n    | 'QUESTIONARIO'\n    | 'AULA_RECOMENDADA';\n  search?: string;\n  sortBy?: 'finalDate' | 'title' | 'completionPercentage';\n  sortOrder?: 'asc' | 'desc';\n\n  // Raw TableProvider filter keys (arrays of selected ids/values).\n  // Remapped to the backend contract by buildActivityHistoryQueryParams.\n  status?: string[] | GenericApiStatus;\n  subject?: string[];\n  school?: string[];\n  class?: string[];\n  schoolYear?: string[];\n  creatorType?: string[];\n\n  // Legacy single-value fields, consumed by buildActivityHistoryQueryParams\n  // as fallbacks when the raw multi-select keys above are absent.\n  startDate?: string;\n  finalDate?: string;\n  subjectId?: string;\n  schoolId?: string;\n  classId?: string;\n}\n\n/**\n * Activity draft filters object from backend\n */\nexport interface ActivityDraftFilters {\n  questionTypes?: string[];\n  questionBanks?: string[];\n  subjects?: string[];\n  topics?: string[];\n  subtopics?: string[];\n  contents?: string[];\n}\n\n/**\n * Subject object with icon and color information\n */\nexport interface SubjectData {\n  id: string;\n  name: string;\n  icon: string;\n  color: string;\n}\n\n/**\n * Activity model response from backend API (/activity-drafts)\n */\nexport interface ActivityModelResponse {\n  id: string;\n  type: ActivityDraftType;\n  title: string | null;\n  creatorUserInstitutionId: string | null;\n  subjectId: string | null;\n  subject?: SubjectData | null;\n  filters: ActivityDraftFilters | null;\n  createdAt: string;\n  updatedAt: string;\n}\n\n/**\n * Activity model table item for display\n */\nexport interface ActivityModelTableItem extends Record<string, unknown> {\n  id: string;\n  type: ActivityType;\n  title: string;\n  savedAt: string;\n  subject: SubjectData | null;\n  subjectId: string | null;\n}\n\n/**\n * Activity models API response\n */\nexport interface ActivityModelsApiResponse {\n  message: string;\n  data: {\n    activityDrafts: ActivityModelResponse[];\n    total: number;\n  };\n}\n\n/**\n * Activity model filters for API query\n */\nexport interface ActivityModelFilters {\n  page?: number;\n  limit?: number;\n  search?: string;\n  subjectId?: string;\n  type?: ActivityDraftType;\n}\n\n/**\n * Filter option for dropdowns\n * Extends with index signature to be compatible with CheckBoxGroup Item type\n */\nexport interface ActivityFilterOption {\n  id: string;\n  name: string;\n  [key: string]: unknown;\n}\n\n/**\n * User data for filter options (schools, classes, subjects)\n */\nexport interface ActivityUserFilterData {\n  schools?: Array<{ id: string; name: string }>;\n  classes?: Array<{ id: string; name: string; schoolId?: string }>;\n  subjects?: Array<{ id: string; name: string }>;\n  schoolYears?: Array<{ id: string; name: string }>;\n}\n\n/**\n * Get status badge action based on activity display status\n * @param status - Activity display status\n * @returns Badge action type for styling\n */\nexport const getActivityStatusBadgeAction = (\n  status: GenericDisplayStatus\n): BadgeActionType => getStatusBadgeAction(status);\n\n/**\n * Activity status options for filter\n */\nexport const ACTIVITY_FILTER_STATUS_OPTIONS: ActivityFilterOption[] = [\n  { id: GenericApiStatus.A_VENCER, name: 'A Vencer' },\n  { id: GenericApiStatus.VENCIDA, name: 'Vencida' },\n  { id: GenericApiStatus.CONCLUIDA, name: 'Concluída' },\n];\n\n/**\n * Map API status to display status\n * @param apiStatus - Status from backend API\n * @returns Formatted status for UI display\n */\nexport const mapActivityStatusToDisplay = (\n  apiStatus: GenericApiStatus\n): GenericDisplayStatus => mapApiStatusToDisplay(apiStatus);\n"],"mappings":";;;;;;AAoCO,IAAK,oBAAL,kBAAKA,uBAAL;AACL,EAAAA,mBAAA,YAAS;AACT,EAAAA,mBAAA,cAAW;AAFD,SAAAA;AAAA,GAAA;AAwNL,IAAM,+BAA+B,CAC1C,WACoB,qBAAqB,MAAM;AAK1C,IAAM,iCAAyD;AAAA,EACpE,EAAE,+BAA+B,MAAM,WAAW;AAAA,EAClD,EAAE,6BAA8B,MAAM,UAAU;AAAA,EAChD,EAAE,iCAAgC,MAAM,eAAY;AACtD;AAOO,IAAM,6BAA6B,CACxC,cACyB,sBAAsB,SAAS;","names":["ActivityDraftType"]}