EKAJAYA - 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 visibility. |
| Page Access | DRIVER.LISTING |
Access to listing route.\listing-driver-manage |
| Create Action | DRIVER.UPDATE |
Controls the + Add button visibility.\listing-driver-manage |
| View Access | DRIVER.VIEW |
Controls visibility of Edit icon.\listing-driver-manage |
| Edit/Save Action | DRIVER.UPDATE |
Ability to save changes on Add/Edit screen.\add-driver-manage |
| Delete Action | DRIVER.DELETE |
Visibility of the Delete 🗑️ icon.\listing-driver-manage |
| Bank Info View | DRIVER_BANK_INFO.VIEW |
Visibility of the Bank icon.\listing-driver-manage |
| Bank Info Update | DRIVER_BANK_INFO.UPDATE |
Ability to save bank details.\add-driver-bank-info |
B. API Interaction
Base URL:
${environment.baseApiUrl}1. Retrieve Driver List
\listing-driver-manageEndpoint
/drivers/getQuery
Method
POST
Key Params
filter: isDeleted||$eq||0 (plus fullName/companyId).join: company2. Get Single Driver (Edit Mode)
\add-driver-manageEndpoint
/drivers/getQuery
Method
POST
Query Params
filter: id||$eq||{id}join: user, district, district.state3. Create/Update Driver Profile
\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
}
4. Manage Bank Info
\add-driver-bank-infoGet Info
/driverBankInfos/getQuery (filter: driverId)
POST
Create/Update
/driverBankInfos/create OR /update
POST
{
"driverId": Number,
"accountCode": "String",
"bankBeneficiaryName": "String",
"bankBeneficiaryNric": "String",
"bankBeneficiaryAccountNo": "String",
"driverBeneficiaryRelationship": "String"
}
5. User Activation (Driver App Access)
\add-driver-manageCreate User
/admin/createUser
POST
Link User
/drivers/update (Updates driver with returned userId)
POST
Detach User
/driver/detachDriver (Payload: { driverId })
POST
6. Delete Driver
\listing-driver-manageEndpoint
/drivers/update
Method
POST
{ "id": Number, "isDeleted": true }
7. Helper APIs (Dropdowns)
\add-driver-manageCompanies
/companies/getQuery
POST
Nationalities
/settings/getQuery (Type: Nationality)
POST
Relationships
/settings/getQuery (Type: Driver Beneficiary Relation)
POST
Address
/countries/getQuery, /states/getQuery, /districts/getQuery
POST
C. Validation & Business Logic
1. 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".
2. Dependency Checks (Pre-Delete) \listing-driver-manage
Before deleting a driver, the system ensures they are not assigned to an active Carrier.
| Module | Endpoint | Filter Logic |
|---|---|---|
| 🚚 Carriers | /carriers/getQuery |
driverId |
Error: "Unable to delete Driver due to tagging to carrier."