import { useQuery } from "@tanstack/react-query"; import { Box, Card, Container, Grid, Group, Select, Stack, Table, Text, Title, Badge } from "@mantine/core"; import Breadcrumbs from "@/components/ui/Breadcrumbs"; import { api } from "@/auth/http"; import { QUERY_KEYS } from "@/constants/QUERY_KEYS"; import { vehiclesService, type Vehicle as VehicleType } from "@/services/vehicles.service"; import { useState } from "react"; interface FuelStats { vehicleId: string; totalPurchases: number; totalLiters: number; totalCost: number; averagePricePerLiter: number; dateRange: { startDate: string; endDate: string }; } export default function FuelStatsPage() { const [selectedVehicleId, setSelectedVehicleId] = useState(""); const [monthsBack, setMonthsBack] = useState("12"); // Fetch vehicles const { data: vehiclesData } = useQuery({ queryKey: QUERY_KEYS.VEHICLES.list(), queryFn: async () => { const res = await vehiclesService.getAll({ limit: 1000 }); return res.data || []; }, }); // Fetch fuel stats const { data: statsData } = useQuery({ queryKey: ["fuel-stats", selectedVehicleId, monthsBack], queryFn: async () => { if (!selectedVehicleId) return null; const res = await api.get(`/fuel/stats/${selectedVehicleId}?months=${monthsBack}`); return res.data; }, enabled: !!selectedVehicleId, }); const vehicleOptions = vehiclesData?.map((v: VehicleType) => ({ value: v.id, label: `${v.plateNumber} - ${v.manufacturer} ${v.model}`, })) || []; const selectedVehicle = vehiclesData?.find((v: VehicleType) => v.id === selectedVehicleId); const costPerKm = statsData && selectedVehicle?.actualDistanceKm ? (statsData.totalCost / selectedVehicle.actualDistanceKm).toFixed(2) : "—"; const efficiency = statsData ? (statsData.totalLiters > 0 ? (selectedVehicle?.actualDistanceKm || 0) / statsData.totalLiters : 0).toFixed(2) : "—"; return ( Fuel Consumption Analysis {/* Filters */} setMonthsBack(val || "12")} /> {selectedVehicleId && statsData ? ( <> {/* Stats Cards */} Total Purchases {statsData.totalPurchases} Total Fuel {statsData.totalLiters.toFixed(2)} L Total Cost ETB {statsData.totalCost.toLocaleString("en-US", { maximumFractionDigits: 2 })} Avg Price/L ETB {statsData.averagePricePerLiter.toFixed(2)} {/* Efficiency Metrics */} Fuel Efficiency {efficiency} km/L Cost per KM ETB {costPerKm} {/* Summary */}
Summary {selectedVehicle?.plateNumber} consumed{" "} {statsData.totalLiters.toFixed(2)} liters {" "} over the last {monthsBack} months, costing{" "} ETB {statsData.totalCost.toLocaleString("en-US", { maximumFractionDigits: 2 })} . Average fuel price was{" "} ETB {statsData.averagePricePerLiter.toFixed(2)} per liter .
) : ( Select a vehicle to view fuel consumption statistics )}
); }