import { Injectable } from '@nestjs/common'; import { UserStatusEnum } from 'src/auth/user-status.enum'; import { AuthService } from 'src/auth/auth.service'; import { UsersStatsInterface } from 'src/dashboard/interface/user-stats.interface'; import { BrowserStatsInterface } from 'src/dashboard/interface/browser-stats.interface'; import { OsStatsInterface } from 'src/dashboard/interface/os-stats.interface'; @Injectable() export class DashboardService { constructor(private readonly authService: AuthService) {} async getUserStat(): Promise { const totalUserPromise = this.authService.countByCondition({}); const totalActiveUserPromise = this.authService.countByCondition({ status: UserStatusEnum.ACTIVE }); const totalInActiveUserPromise = this.authService.countByCondition({ status: UserStatusEnum.INACTIVE }); const [total, active, inactive] = await Promise.all([ totalUserPromise, totalActiveUserPromise, totalInActiveUserPromise ]); return { total, active, inactive }; } getOsData(): Promise> { return this.authService.getRefreshTokenGroupedData('os'); } getBrowserData(): Promise> { return this.authService.getRefreshTokenGroupedData('browser'); } }