Skip to main content

COMPANY

🏢 Technical Specification: Company Setup


📋 Feature Overview

Attribute Detail
Module ⚙️ Settings (COMPANY)
Feature Name Company Setup
Description Acts as the master data management tool for company entities. Supports creating internal/external companies and manages soft deletes.
Page & Detail
1. Listing Page: /listing-company
Displays grid of companies, filters, and delete actions.
2. Add/Edit Page: /add-company-manage
Form for creating new companies or updating details.
User Guide 📄 [Ekajaya Admin User Guide - Setting Module, Section 1]

🛠️ Technical Implementation

A. Permissions & Access Control

Note: Access is controlled via PermissionGuard and UI directives.
Scope Permission Code Description & Page Usage
Menu Visibility COMPANY.MENU

Sidebar menu item visibilityvisibility.

for

\listing-company

both

\add-company-manage

listing and edit/add company.
Page AccessRouting COMPANY.LISTING Access to listing route.
\listing-company
Page RoutingCOMPANY.VIEW

Access to add route.

\add-company-manage

Create Action

COMPANY.CREATE

Visibility of the Add + button.
\listing-company

View/Edit Access COMPANY.VIEW Controls visibility of action buttons to navigate to edit page.
\listing-company
Delete Action COMPANY.DELETE Visibility of the Delete 🗑️ icon.
\listing-company
Update/Edit Action COMPANY.UPDATE Ability to save changes on Edit screen.
\add-company-manage

B. API Interaction

Base URL: ${environment.baseApiUrl}
1. RetrieveListing Company List (Query)
\listing-company
/companies/getQuery
POST
Filter: \add-company-managecompanyName, description, remark, isDeleted=0
Endpoint
/companies/companyUsers/getQuery
Method
POST
UsageFilter: companyId (Dependency Check - Users)
  • Listing:
    /drivers/getQuery
    FetchesPOST
  • paginated
    Filter: datacompanyId, for the grid.
  • Add/Manage: Used to check for Unique Company NameisDeleted=0 (DuplicateDependency Check).
  • Check
- Drivers)
Params
/movers/getQuery
POST
filter:Filter: isDeleted||$eq||companyId, isDeleted=0
sort: (Dependency Check - Movers)
/tankers/getQuery
POST
Filter: companyNamecompanyId, isDeleted=0 (Dependency Check - Tankers)
/companies/update
POST
Purpose: Soft Delete (isDeleted=true)
2. DeleteAdd Company (Soft Delete) \listing-company
Endpoint
/companies/update
Method
POST
Logic
Updates record setting isDeleted: true.
{
  "id": Number,
  "isDeleted": true
}
3. Get Single Company (Edit Mode)Manage \add-company-manage
Endpoint
/companies/getOne
Method
GET
Params
Purpose:
idFetch (Number)
specific
record by ID
4. Create/Update
/companies/getQuery
CompanyPOST
Filter: \add-company-managecompanyName (Uniqueness Check)
Create EP
/companies/create
POST
UpdatePurpose: EPCreate new dataSource record
/companies/update
MethodPOST
POSTPurpose: Update existing dataSource record
{
  "companyName": "String",
  "description": "String",
  "remark": "String",
  "isInternal": Boolean
}

C. Validation & Business Logic

1. Pre-Delete Dependency Checks \listing-company

Before allowing a delete, the system checks if the company is tied to active records in other modules.

#ModuleEndpointFilter
1👥 Users/companyUsers/getQuerycompanyId
2🚚 Drivers/drivers/getQuerycompanyId
3📦 Movers/movers/getQuerycompanyId
4⛽ Tankers/tankers/getQuerycompanyId

2. Unique Name Validation \add-company-manage

  • Trigger: On Save (Create Mode Only)
  • Logic: Calls /companies/getQuery with filter companyName||$eq||{Input}
  • Error: Blocking error: "Company name already exists".