import { Document } from 'mongoose'; import { ATTENDANCE_STATUS, ATTENDANCE_TYPE, USER_TYPES } from '../constants/app'; import { IDefaultAttributes } from './commonInterface'; export interface IAttendanceUser { userId: string; status: ATTENDANCE_STATUS; description: string; checkedInTime: Date; checkedOutTime: Date; } export interface IAttendanceModelAttributes extends IDefaultAttributes, Document { id: string; date: Date; type: ATTENDANCE_TYPE; userType: USER_TYPES; instituteId?: string; users: IAttendanceUser[]; batchId?: string; lectureId?: string; slotId?: string; academicCalendarId?: string; } export interface IAttendanceAnalyticsResponse { standardWise: { standard: string; totalStudents: number; present: number; absent: number; }[]; batchWise: { batch: string; totalStudents: number; present: number; absent: number; }[]; } export interface IFilterWiserAttendanceResponse { key: string; male: { averagePresent: number; averageAbsent: number; categories: { GENERAL: number; OBC: number; SC: number; ST: number; EWS: number; }; }; female: { averagePresent: number; averageAbsent: number; categories: { GENERAL: number; OBC: number; SC: number; ST: number; EWS: number; }; }; total: { averagePresent: number; averageAbsent: number; presentPercent: number; absentPercent: number; }; } export type ITodayAttendanceResponse = { type: 'boys' | 'girls' | 'total'; present: number; absent: number; } | { type: 'average'; present: number; absent: number; total: number; presentPercent: number; absentPercent: number; } | { type: 'todayData'; totalStudents: number; todayPresentStudentsPercentage: number; todayAbsentStudentsPercentage: number; };