TANKER
🚛 Technical Specification: Tanker 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 | TANKER.MENU |
Sidebar menu visibility.
|
| Page Routing | TANKER.LISTING |
Access to listing route.\listing-tanker-manage |
| Page Routing | TANKER.VIEW |
Access to add route.
|
| Create Action | TANKER.UPDATE |
Controls the + Add button on listing.\listing-tanker-manage |
| View Access | TANKER.VIEW |
Controls visibility of Edit icon.\listing-tanker-manage |
| Delete Action | TANKER.DELETE |
Visibility of the Delete 🗑️ icon.\listing-tanker-manage |
| Edit/Save Action | TANKER.UPDATE |
Ability to save changes on Add/Edit screen.\add-tanker-manage |
B. API Interaction
Base URL:
${environment.baseApiUrl}1. RetrieveListing Tanker ListManage
\listing-tanker-manage/companies/getQuery
POSTFilter:
isDeleted=0 (Active companies)/tankers/getQuery
POST
tankerNumber, companyId, isDeleted=0filter/carriers/getQuery
POSTFilter: plusDependency dynamicCheck)
isDeleted||$eq||tankerId, isDeleted=0 (join/tankers/update
Purpose: Soft Delete (
isDeleted=true)2. DeleteAdd Tanker (Soft Delete)
\listing-tanker-manageisDeleted: true{ "id": Number, "isDeleted": true }
\add-tanker-manage/companies/getQuery
POSTFilter:
isDeleted=0 (Active companies)/settings/getQuery
POSTFilter:
type='SPAD Permit Owner'/tankers/getQuery
POST
filterid||$eq||{id}idlimit/tankers/getQuery
Filter:
\add-tanker-managetankerNumber (Uniqueness Check)/tankers/create
POST
dataSource record/tankers/update
POST
Purpose: Update existing
dataSource record{ "companyId": Number, "tankerNumber": "String", "type": "String", "model": "String", "chassisNumber": "String", "bdm": "String", "spadPermitOwner": "String", "malaysiaRoadTaxExpiry": "yyyy-MM-dd", "singaporeRoadTaxExpiry": "yyyy-MM-dd", "opcCapacity": "String", "isDeleted": 0 }
\listing-tanker-manage\add-tanker-manageC. Validation & Business Logic
1. Dependency Checks (Pre-Delete) \listing-tanker-manage
Before deleting a tanker, the system ensures it is not assigned to an active Carrier.
|
2. Unique Tanker Number Validation \add-tanker-manage
Trigger:On Save.Logic:Calls/tankers/getQuery. Filter:tankerNumber||$eq||{input}.Error:Blocking error: "Tanker number already exists".
3. Date Formatting \add-tanker-manage
Library:Luxon (DateTime).Logic:Before saving, all date fields (malaysiaRoadTaxExpiry, etc.) are converted to standardyyyy-MM-ddformat. Null strings converted to null.