import api from './axiosInstance.api'; export interface ActivityLog { _id: string; user: { _id: string; username: string; email: string; profilePhoto: string; role: string; }; action: string; category: string; description: string; metadata: any; timestamp: string; success: boolean; } export interface ActivityTimelineResponse { activities: ActivityLog[]; pagination: { total: number; limit: number; skip: number; pages: number; }; } /** * Get user activity timeline */ export const getUserActivityTimeline = async (params: { userId?: string; role?: string; limit?: number; skip?: number; startDate?: string; endDate?: string; category?: string; action?: string; }): Promise => { const response = await api.get<{ success: boolean; data: ActivityTimelineResponse }>('/activity/timeline', { params }); return response.data.data; }; /** * Get dashboard overview stats */ export const getDashboardOverview = async (params: { startDate?: string; endDate?: string; organization?: string; } = {}): Promise => { const response = await api.get('/analytics/overview', { params }); return response.data; }; /** * Get theme coverage stats */ export const getThemeCoverage = async (params: { startDate?: string; endDate?: string; organization?: string; } = {}): Promise => { const response = await api.get('/analytics/theme-coverage', { params }); return response.data; }; /** * Get organization statistics */ export const getOrganizationStats = async (params: { startDate?: string; endDate?: string; } = {}): Promise => { const response = await api.get('/analytics/organizations', { params }); return response.data; }; /** * Get system-wide recent activities (admin only) */ export const getSystemRecentActivities = async (params: { limit?: number; skip?: number; } = {}): Promise => { const response = await api.get<{ success: boolean; data: ActivityTimelineResponse }>('/activity/recent', { params }); return response.data.data; }; export default { getUserActivityTimeline, getDashboardOverview, getThemeCoverage, getOrganizationStats, getSystemRecentActivities };