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 visibility for both listing and edit/add company.
Page Access COMPANY.LISTING Access to listing route.
\listing-company

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. Retrieve Company List (Query)
\listing-company \add-company-manage
Endpoint
/companies/getQuery
Method
POST
Usage
  • Listing: Fetches paginated data for the grid.
  • Add/Manage: Used to check for Unique Company Name (Duplicate Check).
Params
filter: isDeleted||$eq||0
sort: companyName
2. Delete 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) \add-company-manage
Endpoint
/companies/getOne
Method
GET
Params
id (Number)
4. Create/Update Company \add-company-manage
Create EP
/companies/create
Update EP
/companies/update
Method
POST
{
  "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.

# Module Endpoint Filter
1 👥 Users /companyUsers/getQuery companyId
2 🚚 Drivers /drivers/getQuery companyId
3 📦 Movers /movers/getQuery companyId
4 ⛽ Tankers /tankers/getQuery companyId

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".