import { useQuery } from "@tanstack/react-query"; import { Card, Container, Grid, Group, Loader, Select, Stack, Text, Title } 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"; 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, isFetching: isStatsFetching } = 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 {Number(statsData.totalPurchases) || 0} Total Fuel {(Number(statsData.totalLiters) || 0).toFixed(2)} L Total Cost ETB {(Number(statsData.totalCost) || 0).toLocaleString("en-US", { maximumFractionDigits: 2 })} Avg Price/L ETB {(Number(statsData.averagePricePerLiter) || 0).toFixed(2)} {/* Efficiency Metrics */} Fuel Efficiency {efficiency} km/L Cost per KM ETB {costPerKm} {/* Summary */}
Summary {selectedVehicle?.plateNumber} consumed{" "} {(Number(statsData.totalLiters) || 0).toFixed(2)} liters {" "} over the last {monthsBack} months, costing{" "} ETB {(Number(statsData.totalCost) || 0).toLocaleString("en-US", { maximumFractionDigits: 2 })} . Average fuel price was{" "} ETB {(Number(statsData.averagePricePerLiter) || 0).toFixed(2)} per liter .
) : selectedVehicleId && isStatsFetching ? ( ) : ( Select a vehicle to view fuel consumption statistics )}
); }