mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-27 00:52:50 +00:00
fix data table
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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: [
|
||||
|
||||
Reference in New Issue
Block a user