fix data table

This commit is contained in:
natib21
2026-06-20 09:38:12 +00:00
parent abccdffc38
commit 963392edb3
4 changed files with 46 additions and 6 deletions

View File

@@ -1,4 +1,4 @@
import { IsString, IsEnum, IsNumber, IsOptional } from 'class-validator';
import { IsString, IsEnum, IsNumber, IsOptional, IsUUID } from 'class-validator';
import { VehicleType, FuelType, VehicleStatus } from '../entities/vehicle.entity';
export class CreateVehicleDto {
@@ -29,4 +29,12 @@ export class CreateVehicleDto {
@IsOptional()
@IsString()
description?: string;
@IsOptional()
@IsUUID()
assignedDriverId?: string;
@IsOptional()
@IsString()
assignedDriverName?: string;
}

View File

@@ -56,4 +56,10 @@ export class Vehicle extends BaseEntity {
@Column({ type: 'text', nullable: true })
description?: string | null;
@Column({ name: 'assigned_driver_id', type: 'uuid', nullable: true })
assignedDriverId?: string;
@Column({ name: 'assigned_driver_name', nullable: true })
assignedDriverName?: string;
}

View File

@@ -299,6 +299,34 @@ const FleetResourcePage = () => {
}
};
const handleAssignDriver = async () => {
if (!assigningDriver || !("id" in assigningDriver) || !selectedDriver) return;
try {
const selectedDriverRecord = (drivers as Array<Record<string, unknown>>).find(
(d) => String(d.id) === selectedDriver
);
if (!selectedDriverRecord) return;
const driverName = `${selectedDriverRecord.firstName} ${selectedDriverRecord.lastName}`;
await update.mutateAsync({
id: String(assigningDriver.id),
data: {
assignedDriverId: selectedDriver,
assignedDriverName: driverName,
},
});
toast({ title: "Driver assigned successfully" });
setAssigningDriver(null);
setSelectedDriver("");
} catch (err: unknown) {
const message =
(err as { response?: { data?: { message?: string } } })?.response?.data?.message ??
"Assignment failed";
toast({ title: "Assignment failed", description: String(message), variant: "destructive" });
}
};
const itemLabel = config.label.toLowerCase();
return (
@@ -519,12 +547,9 @@ const FleetResourcePage = () => {
Cancel
</Button>
<Button
onClick={() => {
toast({ title: "Driver assigned successfully" });
setAssigningDriver(null);
setSelectedDriver("");
}}
onClick={handleAssignDriver}
disabled={!selectedDriver}
loading={update.isPending}
>
Assign
</Button>

View File

@@ -55,6 +55,7 @@ export const vehiclesConfig: FleetResourceConfig = {
{ id: "year", header: "Year", accessorKey: "year", format: "number", size: 80 },
{ id: "fuelType", header: "Fuel Type", accessorKey: "fuelType", format: "code", size: 110 },
{ id: "capacity", header: "Capacity (tons)", accessorKey: "capacity", format: "number", size: 130 },
{ id: "assignedDriverName", header: "Assigned Driver", accessorKey: "assignedDriverName", format: "code", size: 140 },
{ id: "status", header: "Status", accessorKey: "status", format: "statusBadge", size: 100 },
],
formFields: [