Skip to main content

Company Setup

đŸĸ Technical Specification: Company Setup


📋 Feature Overview

Attribute Detail
Module âš™ī¸ Settings
Feature Name Company Setup
Description Acts as the master data management tool for company entities. Supports creating internal/external companies and manages soft deletes.
User Guide 📄 [Ekajaya Admin User Guide - Setting Module, Page 3]

đŸ•šī¸đŸ’ŧ Functional Workflow

  • 📍 Navigation Go to Settings > Company
  • đŸ‘ī¸ Listing View Displays paginated list. Search filters: Name, Description, Remark.
  • ➕ Add Action Click the Add button to open the creation form.
  • âœī¸ Edit Action Click the Pencil icon on a row to modify details.
  • đŸ—‘ī¸ Delete Action Click the Trash icon to perform a soft delete (validation required).

📝 UI Input Fields

Field Name Type Required Description
Company Name Text YES Must be unique across active records.
Description Text NO Optional details about the company.
Remark Text NO Optional internal remarks.
Is Internal? Checkbox NO Flag to mark the company as an internal entity.

đŸ› ī¸ 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||0
sort: companyName
2. 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/getQuery with filter companyName||$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