CLIENT
👥 Technical Specification: Client Setup
📋 Feature Overview
🛠️ Technical Implementation
A. Permissions & Access Control
Note: Access is controlled via
PermissionGuard and template checks.| Scope | Permission Code | Description & Page Usage |
|---|---|---|
| Menu Visibility | CLIENT.MENU |
Sidebar menu visibility.
|
| Page Access | CLIENT.LISTING |
Access to listing route.\listing-client-profile |
| Create Action | CLIENT.CREATE |
Visibility of the + Add button.\listing-client-profile |
| View/Edit Access | CLIENT.VIEW |
Controls visibility of the Edit icon.\listing-client-profile |
| Delete Action | CLIENT.DELETE |
Visibility of the Delete 🗑️ icon.\listing-client-profile |
| Update Action | CLIENT.UPDATE |
Ability to save changes on Edit screen.\add-client-profile-manage |
B. API Interaction
Base URL:
${environment.baseApiUrl}1. Retrieve Client List
\listing-client-profileEndpoint
/clients/getQuery
Method
POST
Key Params
filter: isDeleted||$eq||0 (plus search on Code, Name, RegNo).sort: clientName2. Delete Client
\listing-client-profileEndpoint
/client/delete
Method
POST
{ "id": Number }
3. Assign User Functionality
AssignUserDialogDialog
AssignUserDialog
POST
Check Link
/clientUsers/getQuery (clientId filter)
POST
Available Users
/users/getQuery (isDeleted=0)
POST
Create/Update
/clientUsers/create OR /update
POST
4. Get Single Client (Edit Mode)
\add-client-profile-manageEndpoint
/clients/getQuery
Method
POST
Query Params
filter: id||$eq||{id}join: deliveryAddressList, deliveryAddressList.district...5. Create Client (Master-Detail)
\add-client-profile-manageEndpoint
/clients/mdCreate
Method
POST
{
"clientCode": "String",
"clientName": "String",
"deliveryAddressList": [ ... ],
"clientType": "String",
"countryId": Number
}
6. Update Client
\add-client-profile-manageEndpoint
/clients/mdUpdate
Method
POST
Payload is same as Create, but includes "id": Number.
7. Helper APIs (Dropdowns)
\add-client-profile-manageCountries
/countries/getQuery
POST
States
/states/getQuery (countryId filter)
POST
Districts
/districts/getQuery (stateId filter)
POST
Client Type
/settings/getQuery (type=Client Type)
POST
C. Validation & Business Logic
1. Unique Code Validation \add-client-profile-manage
- Trigger: On Save.
- Logic: Calls
/clients/getQuery. Filter:clientCode||$eq||{inputCode}. - Error: Blocking error: "Client code already exists".
2. Delivery Address Validation \add-client-profile-manage
- Trigger: On Save.
- Logic: Checks
this.dataSource.deliveryAddressList. - Error: If list is null or empty: "Please add delivery address".
3. User Assignment Logic AssignUserDialog
Ensures a client can be linked to a system user (User ID) for Client Portal login.
- Behavior: If a link exists, it updates the record in
client_userstable; otherwise, it creates a new record.