mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
Backend: FuelService + FuelController: - Added getFleetFuelStats() aggregating all vehicles - Route: GET /api/fuel/stats (before :vehicleId route) - Returns: totalCost, totalLiters, totalPurchases, averagePricePerLiter MaintenanceService + MaintenanceController: - Added getFleetMaintenanceStats() aggregating all vehicles - Route: GET /api/maintenance/stats (before :vehicleId route) - Returns: totalCost, numberOfMaintenanceItems, averageCostPerMaintenance, costByType Both endpoints aggregate over past 12 months (customizable via query param). Enables dashboard to show fleet-wide operating costs. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
import { Controller, Post, Get, Body, Param, Query } from '@nestjs/common';
|
|
import { ApiTags, ApiOperation } from '@nestjs/swagger';
|
|
import { FuelService } from './fuel.service';
|
|
import { CreateFuelPurchaseDto } from './dto/create-fuel-purchase.dto';
|
|
|
|
@ApiTags('Fuel Management')
|
|
@Controller('fuel')
|
|
export class FuelController {
|
|
constructor(private readonly fuelService: FuelService) {}
|
|
|
|
@Post('purchases')
|
|
@ApiOperation({ summary: 'Record fuel purchase' })
|
|
async recordFuelPurchase(@Body() dto: CreateFuelPurchaseDto) {
|
|
return this.fuelService.recordFuelPurchase(dto);
|
|
}
|
|
|
|
@Get('purchases')
|
|
@ApiOperation({ summary: 'Get all fuel purchases' })
|
|
async getAllFuelPurchases() {
|
|
return this.fuelService.getAllFuelPurchases();
|
|
}
|
|
|
|
@Get('purchases/:vehicleId')
|
|
@ApiOperation({ summary: 'Get fuel purchases for vehicle' })
|
|
async getFuelPurchases(
|
|
@Param('vehicleId') vehicleId: string,
|
|
@Query('startDate') startDate: string,
|
|
@Query('endDate') endDate: string,
|
|
) {
|
|
return this.fuelService.getFuelPurchases(
|
|
vehicleId,
|
|
new Date(startDate),
|
|
new Date(endDate),
|
|
);
|
|
}
|
|
|
|
@Get('consumption/:vehicleId/:month')
|
|
@ApiOperation({ summary: 'Get monthly fuel consumption' })
|
|
async getMonthlyConsumption(
|
|
@Param('vehicleId') vehicleId: string,
|
|
@Param('month') month: string,
|
|
) {
|
|
return this.fuelService.getMonthlyConsumption(vehicleId, new Date(month));
|
|
}
|
|
|
|
@Get('stats')
|
|
@ApiOperation({ summary: 'Get fleet-wide fuel statistics' })
|
|
async getFleetFuelStats(@Query('months') months: number = 12) {
|
|
return this.fuelService.getFleetFuelStats(months);
|
|
}
|
|
|
|
@Get('stats/:vehicleId')
|
|
@ApiOperation({ summary: 'Get fuel statistics for vehicle' })
|
|
async getVehicleFuelStats(
|
|
@Param('vehicleId') vehicleId: string,
|
|
@Query('months') months: number = 12,
|
|
) {
|
|
return this.fuelService.getVehicleFuelStats(vehicleId, months);
|
|
}
|
|
}
|