DRIVER
👷🏼 Technical Specification: Driver Setup
📋 Feature Overview
🛠️ Technical Implementation
A. Permissions & Access Control
Note: Access is controlled via
PermissionGuard and component-level checks.| Scope | Permission Code | Description & Page Usage |
|---|---|---|
| Menu Visibility | DRIVER.MENU |
Sidebar menu
|
| Page |
DRIVER.LISTING |
Access to listing route.\listing-driver-manage |
DRIVER.VIEW |
Access to add/edit route.
|
|
| Add Permission | DRIVER.UPDATE |
Controls the + Add button visibility.\listing-driver-manage |
| View Permission | DRIVER.VIEW |
Access to the Driver Listing.
|
| Delete |
DRIVER.DELETE |
Visibility of the Delete 🗑️ icon.\listing-driver-manage |
| Bank Info View Permission | DRIVER_BANK_INFO.VIEW |
Visibility of the Bank icon in listing.\listing-driver-manage |
| | |
| Edit/Save |
DRIVER.UPDATE |
Ability to save changes on Add/Edit \add-driver-manage |
| |
B. API Interaction
Base URL:
${environment.baseApiUrl}1. Retrieve Driver List
\listing-driver-manage/drivers/getQuery
POST
filterisDeleted||$eq||0join2. DeleteRetrieve DriverCompany (Soft Delete)Name
\listing-driver-manage/drivers/update
POST
3. Check Driver In Carriers
\listing-driver-manage{ "id": Number, "isDeleted": true }
Get Driver ID
POST
4. Delete Driver
\listing-driver-manageDelete
/drivers/update
POST
4. Get Single Driver (Edit Mode)
\add-driver-manage/drivers/getQuery
POST
filterid||$eq||{id}join\add-driver-manageCreate
/drivers/create
POST
Update
/drivers/update
POST
{ "companyId": Number, "fullName": "String", "identificationNumber": "String", "nationality": "String", "mobileNumber": "String", "drivingLicenseClass": "String", "licenseExpiryDate": "yyyy-MM-dd", "gdlExpiryDate": "yyyy-MM-dd", "isDeleted": 0 }
\add-driver-manageCreate User
/admin/createUser
POST
Link User
/drivers/update (Updates driver with returned userId)
POST
Detach User
/driver/detachDriver (Payload: { driverId })
POST
\add-driver-bank-info{ "driverId": Number, "accountCode": "String", "bankBeneficiaryName": "String", "bankBeneficiaryNric": "String", "bankBeneficiaryAccountNo": "String", "driverBeneficiaryRelationship": "String" }
7. Helper APIs (Dropdowns)
\add-driver-manageCompanies
/companies/getQuery
POST
Nationalities
/settings/getQuery (Type: Nationality)
POST
Address
POST
C. Validation & Business Logic
1. Dependency Checks (Pre-Delete) \listing-driver-manage
Before deleting a driver, the system ensures they are not assigned to an active Carrier.
|
2. Unique ID Validation \add-driver-manage
Trigger:On Save.Logic:Calls/drivers/getQuery. Filter:identificationNumber||$eq||{inputID};isDeleted||$eq||0.Error:"Driver identification number already exists".
3. Date Formatting \add-driver-manage
Library:Luxon (DateTime).Logic:Before saving, all date fields (malaysiaRoadTaxExpiry, etc.) are converted to standardyyyy-MM-ddformat. Null strings converted to null.