mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-29 07:10:57 +00:00
- Introduced OverviewContractKpisDto and OverviewRecentContractDto for contract metrics. - Implemented OverviewContractsTabDto to structure the contracts tab response. - Added contract-related constants for status groupings and pipeline stages. - Created OverviewContractsTabPanel and OverviewRecentContractsTable components for UI representation. - Updated OverviewService and OverviewRepository to fetch contract data. - Integrated contracts tab into OverviewController and OverviewTabContent. - Added hooks for fetching contracts data in useOverview. - Updated types in the overview module to include contracts. - Enhanced the contract detail page with a "View contract" button for generated PDFs.
128 lines
3.7 KiB
TypeScript
128 lines
3.7 KiB
TypeScript
import { ApiProperty } from '@nestjs/swagger';
|
|
|
|
export class OverviewBookingKpisDto {
|
|
@ApiProperty() totalActive!: number;
|
|
@ApiProperty() needsAction!: number;
|
|
@ApiProperty() urgent!: number;
|
|
@ApiProperty() inApproval!: number;
|
|
@ApiProperty() submittedToday!: number;
|
|
}
|
|
|
|
export class OverviewContractKpisDto {
|
|
@ApiProperty() totalActive!: number;
|
|
@ApiProperty() needsAction!: number;
|
|
@ApiProperty() inApproval!: number;
|
|
@ApiProperty() inClearance!: number;
|
|
@ApiProperty() createdToday!: number;
|
|
}
|
|
|
|
export class OverviewOperationsKpisDto {
|
|
@ApiProperty() trainsActive!: number;
|
|
@ApiProperty() wagonsAvailable!: number;
|
|
@ApiProperty() containersInTransit!: number;
|
|
@ApiProperty() cargoesLoaded!: number;
|
|
}
|
|
|
|
export class OverviewCustomerKpisDto {
|
|
@ApiProperty() totalCustomers!: number;
|
|
@ApiProperty() newCustomersThisMonth!: number;
|
|
}
|
|
|
|
export class OverviewBillingKpisDto {
|
|
@ApiProperty() revenueMtdEtb!: number;
|
|
@ApiProperty() revenueMtdUsd!: number;
|
|
@ApiProperty() pendingPayments!: number;
|
|
@ApiProperty() successfulPaymentsMtd!: number;
|
|
}
|
|
|
|
export class OverviewStaffKpisDto {
|
|
@ApiProperty() activeEmployees!: number;
|
|
@ApiProperty() activeUsers!: number;
|
|
}
|
|
|
|
export class OverviewKpisDto {
|
|
@ApiProperty({ type: OverviewBookingKpisDto })
|
|
bookings!: OverviewBookingKpisDto;
|
|
|
|
@ApiProperty({ type: OverviewContractKpisDto })
|
|
contracts!: OverviewContractKpisDto;
|
|
|
|
@ApiProperty({ type: OverviewOperationsKpisDto })
|
|
operations!: OverviewOperationsKpisDto;
|
|
|
|
@ApiProperty({ type: OverviewCustomerKpisDto })
|
|
customers!: OverviewCustomerKpisDto;
|
|
|
|
@ApiProperty({ type: OverviewBillingKpisDto })
|
|
billing!: OverviewBillingKpisDto;
|
|
|
|
@ApiProperty({ type: OverviewStaffKpisDto })
|
|
staff!: OverviewStaffKpisDto;
|
|
}
|
|
|
|
export class OverviewTrendPointDto {
|
|
@ApiProperty({ example: '2026-06-01' }) date!: string;
|
|
@ApiProperty() count!: number;
|
|
}
|
|
|
|
export class OverviewStatusCountDto {
|
|
@ApiProperty() status!: string;
|
|
@ApiProperty() count!: number;
|
|
}
|
|
|
|
export class OverviewPipelineCountDto {
|
|
@ApiProperty() stage!: string;
|
|
@ApiProperty() count!: number;
|
|
}
|
|
|
|
export class OverviewPaymentTrendPointDto {
|
|
@ApiProperty({ example: '2026-06-01' }) date!: string;
|
|
@ApiProperty() amountEtb!: number;
|
|
@ApiProperty() amountUsd!: number;
|
|
}
|
|
|
|
export class OverviewRecentBookingDto {
|
|
@ApiProperty() id!: string;
|
|
@ApiProperty() reference!: string;
|
|
@ApiProperty() customerLabel!: string;
|
|
@ApiProperty() status!: string;
|
|
@ApiProperty() priorityScore!: number;
|
|
@ApiProperty({ nullable: true }) totalAmount!: number | null;
|
|
@ApiProperty({ nullable: true }) paymentCurrency!: string | null;
|
|
@ApiProperty() createdAt!: string;
|
|
}
|
|
|
|
export class OverviewRecentContractDto {
|
|
@ApiProperty() id!: string;
|
|
@ApiProperty() reference!: string;
|
|
@ApiProperty() customerLabel!: string;
|
|
@ApiProperty() status!: string;
|
|
@ApiProperty() contractKind!: string;
|
|
@ApiProperty() freightType!: string;
|
|
@ApiProperty({ nullable: true }) paymentCurrency!: string | null;
|
|
@ApiProperty({ nullable: true }) validUntil!: string | null;
|
|
@ApiProperty() createdAt!: string;
|
|
}
|
|
|
|
export class OverviewResponseDto {
|
|
@ApiProperty({ type: OverviewKpisDto })
|
|
kpis!: OverviewKpisDto;
|
|
|
|
@ApiProperty({ type: [OverviewTrendPointDto] })
|
|
bookingTrend!: OverviewTrendPointDto[];
|
|
|
|
@ApiProperty({ type: [OverviewStatusCountDto] })
|
|
bookingsByStatus!: OverviewStatusCountDto[];
|
|
|
|
@ApiProperty({ type: [OverviewPipelineCountDto] })
|
|
bookingsByPipeline!: OverviewPipelineCountDto[];
|
|
|
|
@ApiProperty({ type: [OverviewPaymentTrendPointDto] })
|
|
paymentTrend!: OverviewPaymentTrendPointDto[];
|
|
|
|
@ApiProperty({ type: [OverviewRecentBookingDto] })
|
|
recentBookings!: OverviewRecentBookingDto[];
|
|
|
|
@ApiProperty() generatedAt!: string;
|
|
}
|