feat: display vehicle name instead of ID in fuel purchases table

Backend:
- FuelService.getAllFuelPurchases() now loads vehicle relationship
- Uses leftJoinAndSelect to eagerly load Vehicle data
- Returns complete FuelPurchase with nested vehicle object

Frontend:
- Table displays vehicle.registrationNumber (primary)
- Falls back to vehicle.plateNumber if registration unavailable
- Falls back to vehicleId as last resort

Better UX: shows human-readable vehicle info instead of UUID.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
natib21
2026-06-30 14:23:54 +00:00
parent 67ba168a22
commit fea869a19c
2 changed files with 6 additions and 2 deletions

View File

@@ -31,7 +31,11 @@ export class FuelService {
}
async getAllFuelPurchases(): Promise<FuelPurchase[]> {
return this.purchaseRepository.find({ order: { purchaseDate: 'DESC' } });
return this.purchaseRepository
.createQueryBuilder('purchase')
.leftJoinAndSelect('purchase.vehicle', 'vehicle')
.orderBy('purchase.purchaseDate', 'DESC')
.getMany();
}
async getFuelPurchases(

View File

@@ -199,7 +199,7 @@ export default function FuelPurchasePage() {
<Table.Tbody>
{(purchasesData as FuelPurchase[])?.map((purchase) => (
<Table.Tr key={purchase.id}>
<Table.Td>{purchase.vehicleName || purchase.vehicleId}</Table.Td>
<Table.Td>{(purchase as any).vehicle?.registrationNumber || (purchase as any).vehicle?.plateNumber || purchase.vehicleId}</Table.Td>
<Table.Td>{new Date(purchase.purchaseDate).toLocaleDateString()}</Table.Td>
<Table.Td align="right">{Number(purchase.liters).toFixed(2)}</Table.Td>
<Table.Td align="right">ETB {Number(purchase.costPerLiter).toFixed(2)}</Table.Td>