Company Setup
🏢 Technical Specification: Company Setup
📋 Feature Overview
💼 Functional Workflow
📝 UI Input Fields
🛠️ Technical Implementation
A. Permissions & Access Control
Note: Access is controlled via
PermissionGuard and UI directives (*ngIf).| Scope | Permission Code | Description |
|---|---|---|
| Menu Visibility | COMPANY.MENU |
Sidebar menu item visibility for both listing and edit/add company. |
| Page Access | COMPANY.LISTING |
Access to /listing-company. |
| View/Edit Access | COMPANY.VIEW |
Access to /add-company-manage. |
|
Create Action |
COMPANY.CREATE |
Visibility of the Add + button. |
| Update/Edit Action | COMPANY.UPDATE |
Ability to save changes on Edit screen. |
| Delete Action | COMPANY.DELETE |
Visibility of the Delete 🗑️ icon. |
B. API Interaction
Base URL:
${environment.baseApiUrl}1. Retrieve Company List (Query)
Endpoint
/companies/getQuery
Method
POST
Purpose
Fetches paginated data for the grid.
Params
filter: isDeleted||$eq||0sort: companyName2. Get Single Company (Edit Mode)
Endpoint
/companies/getOne
Method
GET
Params
id (Number)3. Create Company
Endpoint
/companies/create
Method
POST
{
"companyName": "String",
"description": "String",
"remark": "String",
"isInternal": Boolean
}
4. Update Company
Endpoint
/companies/update
Method
POST
Payload is same as Create, but includes "id": Number.
5. Delete Company (Soft Delete)
Endpoint
/companies/update
Method
POST
Logic
Updates record setting
isDeleted: true.{
"id": Number,
"isDeleted": true
}
C. Validation & Business Logic
1. Unique Name Validation
- Trigger: On Save (Create Mode Only)
- Logic: Calls
/companies/getQuerywith filtercompanyName||$eq||{Input} - Error: Blocking error: "Company name already exists".
2. Pre-Delete Dependency Checks
Before allowing a delete, the system checks if the company is tied to active records in other modules.
| # | Module | Endpoint | Filter |
|---|---|---|---|
| 1 | 👥 Users | /companyUsers/getQuery |
companyId |
| 2 | 🚚 Drivers | /drivers/getQuery |
companyId |
| 3 | 📦 Movers | /movers/getQuery |
companyId |
| 4 | ⛽ Tankers | /tankers/getQuery |
companyId |