56 lines
1.3 KiB
TypeScript
56 lines
1.3 KiB
TypeScript
|
|
import { adminApiClient } from './client'
|
||
|
|
|
||
|
|
export interface DashboardStats {
|
||
|
|
users: number
|
||
|
|
cards: number
|
||
|
|
packs: number
|
||
|
|
enabledPacks: number
|
||
|
|
payments: number
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface RecentUser {
|
||
|
|
id: number
|
||
|
|
name?: string
|
||
|
|
email?: string
|
||
|
|
createdAt?: string
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface TopPack {
|
||
|
|
id: number
|
||
|
|
title: string
|
||
|
|
cards: number
|
||
|
|
enabled: boolean
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface ChartDataPoint {
|
||
|
|
date: string
|
||
|
|
registrations?: number
|
||
|
|
revenue?: number
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface DashboardData {
|
||
|
|
stats: DashboardStats
|
||
|
|
recentUsers: RecentUser[]
|
||
|
|
topPacks: TopPack[]
|
||
|
|
}
|
||
|
|
|
||
|
|
export const analyticsApi = {
|
||
|
|
// Get dashboard analytics
|
||
|
|
getDashboard: async (): Promise<DashboardData> => {
|
||
|
|
const response = await adminApiClient.get('/api/v2/admin/analytics/dashboard')
|
||
|
|
return response.data
|
||
|
|
},
|
||
|
|
|
||
|
|
// Get user registration chart data
|
||
|
|
getUsersChart: async (): Promise<{ data: ChartDataPoint[]; period: string }> => {
|
||
|
|
const response = await adminApiClient.get('/api/v2/admin/analytics/users/chart')
|
||
|
|
return response.data
|
||
|
|
},
|
||
|
|
|
||
|
|
// Get revenue chart data
|
||
|
|
getRevenueChart: async (): Promise<{ data: ChartDataPoint[]; period: string; currency: string }> => {
|
||
|
|
const response = await adminApiClient.get('/api/v2/admin/analytics/revenue/chart')
|
||
|
|
return response.data
|
||
|
|
},
|
||
|
|
}
|