EKAJAYA - MOVER
🚛 Technical Specification: Mover 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 | MOVER.MENU |
Sidebar menu visibility. |
| Page Access | MOVER.LISTING |
Access to listing route. |
| Create Action | MOVER.UPDATE |
Controls the + Add button \listing-mover-manage |
| View Access | MOVER.VIEW |
|
| ||
| Delete Action | MOVER.DELETE |
Visibility of the Delete 🗑️ icon.\listing-mover-manage |
| Edit/Save Action | MOVER.UPDATE |
Ability to save changes on Add/Edit screen.\add-mover-manage |
B. API Interaction
Base URL:
${environment.baseApiUrl}1. Retrieve Mover List
\listing-mover-manageEndpoint
/movers/getQuery
Method
POST
Key Params
filter: isDeleted||$eq||0 (plus dynamic filters).join: vehicleBrand, company2. Delete Mover (Soft Delete)
\listing-mover-manageEndpoint
/movers/update
Method
POST
Logic
Updates record setting
isDeleted: true.{ "id": Number, "isDeleted": true }
3. Get Single Mover (Edit Mode)
\add-mover-manageEndpoint
/movers/getQuery
Method
POST
Query Params
filter: id||$eq||{id}limit: 1\add-mover-manageCreate EP
/movers/create
POST
Update EP
/movers/update
POST
{
"companyId": Number,
"plateNo": "String",
"vehicleBrandId": Number,
"model": "String",
"chassisNumber": "String",
"bdm": "String",
"spadPermitOwner": "String",
"malaysiaRoadTaxExpiry": "yyyy-MM-dd",
"isDeleted": 0
}
{ "id": Number, "isDeleted": true }
5. Helper APIs (Dropdowns)
\listing-mover-manage \add-mover-manageCompanies
/companies/getQuery
POST
Vehicle Brands
/vehicleBrands/getQuery
POST
Permit Owners
/settings/getQuery (type="SPAD Permit Owner")
POST
Gear Box Types
/settings/getQuery (type="Gear Box Type")
POST
C. Validation & Business Logic
1. Unique Plate Number Validation
Trigger:On Save.Logic:Calls/movers/getQuery. Filter:plateNo||$eq||{input}.Error:Blocking error: "Mover plate number already exists".
2. Dependency Checks (Pre-Delete) \listing-mover-manage
Before deleting a mover, the system ensures it is not assigned to an active Carrier.
| Module | Endpoint | Filter Logic |
|---|---|---|
| 🚛 Carriers | /carriers/getQuery |
moverId |
Error: "Unable to delete Mover due to tagging to carrier."
2. Unique Plate Number Validation \add-mover-manage
- Trigger: On Save.
- Logic: Calls
/movers/getQuery. Filter:plateNo||$eq||{input}. - Error: Blocking error: "Mover plate number already exists".
3. Date Formatting \add-mover-manage
- Library: Luxon (DateTime).
- Logic: Before saving, all date fields (malaysiaRoadTaxExpiry, etc.) are converted to standard
yyyy-MM-ddformat.