import { Controller, Get, Param, Query, UseGuards, ParseUUIDPipe } from '@nestjs/common';
import { UserAnalyticsService } from './user-analytics.service';
import { AdminAuthGuard } from './admin-auth.guard';
import { AccountsQueryDto, DevicesQueryDto } from './user-analytics.dto';

@Controller('admins/analytics')
@UseGuards(AdminAuthGuard)
export class UserAnalyticsController {
  constructor(private readonly userAnalyticsService: UserAnalyticsService) {}

  @Get('accounts/stats')
  async accountStats() {
    return this.userAnalyticsService.accountStats();
  }

  @Get('accounts')
  async listAccounts(@Query() query: AccountsQueryDto) {
    return this.userAnalyticsService.listAccounts(query);
  }

  @Get('accounts/:id/devices')
  async listUserDevices(@Param('id', ParseUUIDPipe) id: string) {
    return this.userAnalyticsService.listUserDevices(id);
  }

  @Get('devices/stats')
  async deviceStats() {
    return this.userAnalyticsService.deviceStats();
  }

  @Get('devices')
  async listDevices(@Query() query: DevicesQueryDto) {
    return this.userAnalyticsService.listDevices(query);
  }
}
