mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-27 19:00:55 +00:00
75 lines
2.5 KiB
TypeScript
75 lines
2.5 KiB
TypeScript
import { Controller, Get, Query } from '@nestjs/common';
|
|
import {
|
|
ApiBearerAuth,
|
|
ApiOkResponse,
|
|
ApiOperation,
|
|
ApiTags,
|
|
} from '@nestjs/swagger';
|
|
|
|
import { BookingView } from '../../common/booking-guards';
|
|
import { OverviewQueryDto } from './dto/overview-query.dto';
|
|
import { OverviewResponseDto } from './dto/overview-response.dto';
|
|
import {
|
|
OverviewBillingTabDto,
|
|
OverviewBookingsTabDto,
|
|
OverviewCustomersTabDto,
|
|
OverviewOperationsTabDto,
|
|
OverviewStaffTabDto,
|
|
} from './dto/overview-tab-response.dto';
|
|
import { OverviewService } from './overview.service';
|
|
|
|
@ApiTags('Overview')
|
|
@ApiBearerAuth()
|
|
@Controller('overview')
|
|
export class OverviewController {
|
|
constructor(private readonly overviewService: OverviewService) {}
|
|
|
|
@Get()
|
|
@BookingView()
|
|
@ApiOperation({ summary: 'Aggregated dashboard summary for backoffice overview' })
|
|
@ApiOkResponse({ type: OverviewResponseDto })
|
|
getDashboard(@Query() query: OverviewQueryDto): Promise<OverviewResponseDto> {
|
|
return this.overviewService.getDashboard(query.range ?? '30d');
|
|
}
|
|
|
|
@Get('bookings')
|
|
@BookingView()
|
|
@ApiOperation({ summary: 'Bookings tab metrics and charts' })
|
|
@ApiOkResponse({ type: OverviewBookingsTabDto })
|
|
getBookingsTab(@Query() query: OverviewQueryDto): Promise<OverviewBookingsTabDto> {
|
|
return this.overviewService.getBookingsTab(query.range ?? '30d');
|
|
}
|
|
|
|
@Get('billing')
|
|
@BookingView()
|
|
@ApiOperation({ summary: 'Billing tab metrics and charts' })
|
|
@ApiOkResponse({ type: OverviewBillingTabDto })
|
|
getBillingTab(@Query() query: OverviewQueryDto): Promise<OverviewBillingTabDto> {
|
|
return this.overviewService.getBillingTab(query.range ?? '30d');
|
|
}
|
|
|
|
@Get('operations')
|
|
@BookingView()
|
|
@ApiOperation({ summary: 'Operations tab metrics and charts' })
|
|
@ApiOkResponse({ type: OverviewOperationsTabDto })
|
|
getOperationsTab(): Promise<OverviewOperationsTabDto> {
|
|
return this.overviewService.getOperationsTab();
|
|
}
|
|
|
|
@Get('customers')
|
|
@BookingView()
|
|
@ApiOperation({ summary: 'Customers tab metrics and charts' })
|
|
@ApiOkResponse({ type: OverviewCustomersTabDto })
|
|
getCustomersTab(@Query() query: OverviewQueryDto): Promise<OverviewCustomersTabDto> {
|
|
return this.overviewService.getCustomersTab(query.range ?? '30d');
|
|
}
|
|
|
|
@Get('staff')
|
|
@BookingView()
|
|
@ApiOperation({ summary: 'Staff tab metrics and charts' })
|
|
@ApiOkResponse({ type: OverviewStaffTabDto })
|
|
getStaffTab(@Query() query: OverviewQueryDto): Promise<OverviewStaffTabDto> {
|
|
return this.overviewService.getStaffTab(query.range ?? '30d');
|
|
}
|
|
}
|