Prashikshak / Web /src /api /analytics.api.ts
Abhisingh-18's picture
Initial commit: Prashikshak - disaster management training platform
9a92a42
Raw
History Blame Contribute Delete
2.39 kB
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<ActivityTimelineResponse> => {
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<any> => {
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<any> => {
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<any> => {
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<ActivityTimelineResponse> => {
const response = await api.get<{ success: boolean; data: ActivityTimelineResponse }>('/activity/recent', { params });
return response.data.data;
};
export default {
getUserActivityTimeline,
getDashboardOverview,
getThemeCoverage,
getOrganizationStats,
getSystemRecentActivities
};