@newpeak/barista-cli 0.1.11 ā 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/liberica/dict-types/get.d.ts.map +1 -1
- package/dist/commands/liberica/dict-types/get.js +9 -1
- package/dist/commands/liberica/dict-types/get.js.map +1 -1
- package/dist/commands/liberica/dict-types/index.d.ts.map +1 -1
- package/dist/commands/liberica/dict-types/index.js +2 -0
- package/dist/commands/liberica/dict-types/index.js.map +1 -1
- package/dist/commands/liberica/dict-types/list.d.ts.map +1 -1
- package/dist/commands/liberica/dict-types/list.js +19 -1
- package/dist/commands/liberica/dict-types/list.js.map +1 -1
- package/dist/commands/liberica/dict-types/tenant-items.d.ts +3 -0
- package/dist/commands/liberica/dict-types/tenant-items.d.ts.map +1 -0
- package/dist/commands/liberica/dict-types/tenant-items.js +275 -0
- package/dist/commands/liberica/dict-types/tenant-items.js.map +1 -0
- package/dist/commands/liberica/dicts/get.d.ts.map +1 -1
- package/dist/commands/liberica/dicts/get.js +9 -1
- package/dist/commands/liberica/dicts/get.js.map +1 -1
- package/dist/commands/liberica/dicts/list.d.ts.map +1 -1
- package/dist/commands/liberica/dicts/list.js +9 -1
- package/dist/commands/liberica/dicts/list.js.map +1 -1
- package/dist/core/api/client.d.ts +7 -7
- package/dist/core/api/client.d.ts.map +1 -1
- package/dist/core/api/client.js +15 -12
- package/dist/core/api/client.js.map +1 -1
- package/dist/core/config/manager.d.ts.map +1 -1
- package/dist/core/config/manager.js +1 -0
- package/dist/core/config/manager.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/types/dict.d.ts +2 -0
- package/dist/types/dict.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +7 -3
- package/docs/ARCHITECTURE.md +0 -184
- package/docs/COMMANDS.md +0 -352
- package/docs/COMMAND_DESIGN_SPEC.md +0 -840
- package/docs/INTEGRATION_NOTES.md +0 -270
- package/docs/commands/REFERENCE.md +0 -323
- package/docs/commands/arabica/auth/index.md +0 -296
- package/docs/commands/liberica/auth/index.md +0 -133
- package/docs/commands/liberica/calendar/DESIGN.md +0 -333
- package/docs/commands/liberica/client-contacts/create.md +0 -152
- package/docs/commands/liberica/client-contacts/delete.md +0 -123
- package/docs/commands/liberica/client-contacts/get.md +0 -133
- package/docs/commands/liberica/client-contacts/list.md +0 -143
- package/docs/commands/liberica/client-contacts/update.md +0 -158
- package/docs/commands/liberica/context/index.md +0 -60
- package/docs/commands/liberica/currency/create.md +0 -145
- package/docs/commands/liberica/currency/delete.md +0 -121
- package/docs/commands/liberica/currency/disable.md +0 -119
- package/docs/commands/liberica/currency/enable.md +0 -115
- package/docs/commands/liberica/currency/get.md +0 -118
- package/docs/commands/liberica/currency/list.md +0 -149
- package/docs/commands/liberica/currency/update.md +0 -141
- package/docs/commands/liberica/employees/create.md +0 -185
- package/docs/commands/liberica/employees/disable.md +0 -138
- package/docs/commands/liberica/employees/enable.md +0 -137
- package/docs/commands/liberica/employees/get.md +0 -153
- package/docs/commands/liberica/employees/list.md +0 -168
- package/docs/commands/liberica/employees/update.md +0 -180
- package/docs/commands/liberica/locations/create.md +0 -195
- package/docs/commands/liberica/locations/list.md +0 -171
- package/docs/commands/liberica/materials/create.md +0 -293
- package/docs/commands/liberica/materials/delete.md +0 -240
- package/docs/commands/liberica/materials/disable.md +0 -150
- package/docs/commands/liberica/materials/enable.md +0 -146
- package/docs/commands/liberica/materials/get.md +0 -188
- package/docs/commands/liberica/materials/list.md +0 -198
- package/docs/commands/liberica/materials/update.md +0 -250
- package/docs/commands/liberica/orgs/list.md +0 -62
- package/docs/commands/liberica/positions/list.md +0 -61
- package/docs/commands/liberica/roles/list.md +0 -67
- package/docs/commands/liberica/stock/ledger.md +0 -209
- package/docs/commands/liberica/stock/list.md +0 -165
- package/docs/commands/liberica/supplier-contacts/create.md +0 -152
- package/docs/commands/liberica/supplier-contacts/delete.md +0 -123
- package/docs/commands/liberica/supplier-contacts/get.md +0 -133
- package/docs/commands/liberica/supplier-contacts/list.md +0 -143
- package/docs/commands/liberica/supplier-contacts/update.md +0 -158
- package/docs/commands/liberica/teams/issues/close.md +0 -161
- package/docs/commands/liberica/teams/issues/create.md +0 -212
- package/docs/commands/liberica/teams/issues/delete.md +0 -179
- package/docs/commands/liberica/teams/issues/get.md +0 -167
- package/docs/commands/liberica/teams/issues/list.md +0 -182
- package/docs/commands/liberica/teams/issues/tests-design.md +0 -341
- package/docs/commands/liberica/teams/issues/update.md +0 -202
- package/docs/commands/liberica/teams/projects/create.md +0 -174
- package/docs/commands/liberica/teams/projects/delete.md +0 -180
- package/docs/commands/liberica/teams/projects/get.md +0 -150
- package/docs/commands/liberica/teams/projects/list.md +0 -179
- package/docs/commands/liberica/teams/projects/update.md +0 -175
- package/docs/commands/liberica/teams/tasks/create.md +0 -163
- package/docs/commands/liberica/teams/tasks/delete.md +0 -109
- package/docs/commands/liberica/teams/tasks/get.md +0 -121
- package/docs/commands/liberica/teams/tasks/list.md +0 -148
- package/docs/commands/liberica/teams/tasks/update.md +0 -158
- package/docs/commands/liberica/teams/work-logs/create.md +0 -151
- package/docs/commands/liberica/teams/work-logs/delete.md +0 -130
- package/docs/commands/liberica/teams/work-logs/get.md +0 -131
- package/docs/commands/liberica/teams/work-logs/list.md +0 -153
- package/docs/commands/liberica/teams/work-logs/update.md +0 -150
- package/docs/commands/liberica/transfer-in-forms/batch-delete.md +0 -157
- package/docs/commands/liberica/transfer-in-forms/batch-review.md +0 -157
- package/docs/commands/liberica/transfer-in-forms/batch-unreview.md +0 -157
- package/docs/commands/liberica/transfer-in-forms/create.md +0 -220
- package/docs/commands/liberica/transfer-in-forms/get.md +0 -221
- package/docs/commands/liberica/transfer-in-forms/list.md +0 -242
- package/docs/commands/liberica/transfer-in-forms/update.md +0 -185
- package/docs/commands/liberica/transfer-out-forms/batch-delete.md +0 -187
- package/docs/commands/liberica/transfer-out-forms/batch-review.md +0 -157
- package/docs/commands/liberica/transfer-out-forms/batch-unreview.md +0 -157
- package/docs/commands/liberica/transfer-out-forms/create.md +0 -280
- package/docs/commands/liberica/transfer-out-forms/get.md +0 -211
- package/docs/commands/liberica/transfer-out-forms/list.md +0 -233
- package/docs/commands/liberica/transfer-out-forms/update.md +0 -286
- package/docs/commands/liberica/uoms/create.md +0 -136
- package/docs/commands/liberica/uoms/delete.md +0 -119
- package/docs/commands/liberica/uoms/disable.md +0 -117
- package/docs/commands/liberica/uoms/enable.md +0 -115
- package/docs/commands/liberica/uoms/get.md +0 -119
- package/docs/commands/liberica/uoms/list.md +0 -155
- package/docs/commands/liberica/uoms/update.md +0 -148
- package/docs/commands/liberica/users/create.md +0 -170
- package/docs/commands/liberica/users/get.md +0 -151
- package/docs/commands/liberica/users/list.md +0 -175
- package/docs/commands/liberica/warehouses/create.md +0 -222
- package/docs/commands/liberica/warehouses/list.md +0 -184
- package/src/commands/arabica/auth/index.ts +0 -277
- package/src/commands/arabica/auth/login.ts +0 -5
- package/src/commands/arabica/auth/logout.ts +0 -5
- package/src/commands/arabica/auth/register.ts +0 -5
- package/src/commands/arabica/auth/status.ts +0 -5
- package/src/commands/arabica/index.ts +0 -23
- package/src/commands/auth.ts +0 -107
- package/src/commands/context.ts +0 -60
- package/src/commands/liberica/auth/index.ts +0 -176
- package/src/commands/liberica/calendar/index.ts +0 -13
- package/src/commands/liberica/calendar/list.ts +0 -214
- package/src/commands/liberica/calendar/set.ts +0 -130
- package/src/commands/liberica/client-contacts/create.ts +0 -115
- package/src/commands/liberica/client-contacts/delete.ts +0 -140
- package/src/commands/liberica/client-contacts/get.ts +0 -103
- package/src/commands/liberica/client-contacts/index.ts +0 -19
- package/src/commands/liberica/client-contacts/list.ts +0 -118
- package/src/commands/liberica/client-contacts/update.ts +0 -137
- package/src/commands/liberica/clients/create.ts +0 -122
- package/src/commands/liberica/clients/delete.ts +0 -125
- package/src/commands/liberica/clients/get.ts +0 -88
- package/src/commands/liberica/clients/index.ts +0 -19
- package/src/commands/liberica/clients/list.ts +0 -123
- package/src/commands/liberica/clients/update.ts +0 -103
- package/src/commands/liberica/context/index.ts +0 -43
- package/src/commands/liberica/currency/create.ts +0 -183
- package/src/commands/liberica/currency/delete.ts +0 -124
- package/src/commands/liberica/currency/disable.ts +0 -147
- package/src/commands/liberica/currency/enable.ts +0 -128
- package/src/commands/liberica/currency/get.ts +0 -91
- package/src/commands/liberica/currency/index.ts +0 -23
- package/src/commands/liberica/currency/list.ts +0 -140
- package/src/commands/liberica/currency/update.ts +0 -129
- package/src/commands/liberica/dict-types/get.ts +0 -74
- package/src/commands/liberica/dict-types/index.ts +0 -15
- package/src/commands/liberica/dict-types/list.ts +0 -118
- package/src/commands/liberica/dict-types/update.ts +0 -134
- package/src/commands/liberica/dicts/create.ts +0 -175
- package/src/commands/liberica/dicts/delete.ts +0 -107
- package/src/commands/liberica/dicts/get.ts +0 -80
- package/src/commands/liberica/dicts/index.ts +0 -19
- package/src/commands/liberica/dicts/list.ts +0 -114
- package/src/commands/liberica/dicts/update.ts +0 -116
- package/src/commands/liberica/employees/create.ts +0 -275
- package/src/commands/liberica/employees/delete.ts +0 -122
- package/src/commands/liberica/employees/disable.ts +0 -97
- package/src/commands/liberica/employees/enable.ts +0 -97
- package/src/commands/liberica/employees/get.ts +0 -115
- package/src/commands/liberica/employees/index.ts +0 -23
- package/src/commands/liberica/employees/list.ts +0 -131
- package/src/commands/liberica/employees/update.ts +0 -157
- package/src/commands/liberica/index.ts +0 -81
- package/src/commands/liberica/materials/create.ts +0 -199
- package/src/commands/liberica/materials/delete.ts +0 -105
- package/src/commands/liberica/materials/disable.ts +0 -148
- package/src/commands/liberica/materials/enable.ts +0 -129
- package/src/commands/liberica/materials/get.ts +0 -83
- package/src/commands/liberica/materials/index.ts +0 -23
- package/src/commands/liberica/materials/list.ts +0 -142
- package/src/commands/liberica/materials/update.ts +0 -125
- package/src/commands/liberica/mould/get.ts +0 -111
- package/src/commands/liberica/mould/index.ts +0 -17
- package/src/commands/liberica/mould/list.ts +0 -157
- package/src/commands/liberica/mould/set-status.ts +0 -99
- package/src/commands/liberica/mould/stock-in.ts +0 -165
- package/src/commands/liberica/operations/active.ts +0 -153
- package/src/commands/liberica/operations/batch-delete.ts +0 -131
- package/src/commands/liberica/operations/copy.ts +0 -138
- package/src/commands/liberica/operations/create.ts +0 -223
- package/src/commands/liberica/operations/deactive.ts +0 -152
- package/src/commands/liberica/operations/delete.ts +0 -128
- package/src/commands/liberica/operations/design.md +0 -587
- package/src/commands/liberica/operations/get.ts +0 -112
- package/src/commands/liberica/operations/index.ts +0 -27
- package/src/commands/liberica/operations/list.ts +0 -180
- package/src/commands/liberica/operations/update.ts +0 -218
- package/src/commands/liberica/orgs/index.ts +0 -34
- package/src/commands/liberica/positions/index.ts +0 -30
- package/src/commands/liberica/roles/index.ts +0 -59
- package/src/commands/liberica/stock/index.ts +0 -13
- package/src/commands/liberica/stock/ledger.ts +0 -159
- package/src/commands/liberica/stock/list.ts +0 -128
- package/src/commands/liberica/supplier-contacts/create.ts +0 -120
- package/src/commands/liberica/supplier-contacts/delete.ts +0 -88
- package/src/commands/liberica/supplier-contacts/get.ts +0 -94
- package/src/commands/liberica/supplier-contacts/index.ts +0 -19
- package/src/commands/liberica/supplier-contacts/list.ts +0 -130
- package/src/commands/liberica/supplier-contacts/update.ts +0 -127
- package/src/commands/liberica/suppliers/create.ts +0 -149
- package/src/commands/liberica/suppliers/delete.ts +0 -102
- package/src/commands/liberica/suppliers/disable.ts +0 -145
- package/src/commands/liberica/suppliers/enable.ts +0 -126
- package/src/commands/liberica/suppliers/get.ts +0 -86
- package/src/commands/liberica/suppliers/index.ts +0 -23
- package/src/commands/liberica/suppliers/list.ts +0 -134
- package/src/commands/liberica/suppliers/update.ts +0 -128
- package/src/commands/liberica/teams/index.ts +0 -17
- package/src/commands/liberica/teams/issues/close.ts +0 -104
- package/src/commands/liberica/teams/issues/create.ts +0 -254
- package/src/commands/liberica/teams/issues/delete.ts +0 -58
- package/src/commands/liberica/teams/issues/get.ts +0 -78
- package/src/commands/liberica/teams/issues/index.ts +0 -21
- package/src/commands/liberica/teams/issues/list.ts +0 -144
- package/src/commands/liberica/teams/issues/update.ts +0 -141
- package/src/commands/liberica/teams/projects/create.ts +0 -159
- package/src/commands/liberica/teams/projects/delete.ts +0 -58
- package/src/commands/liberica/teams/projects/get.ts +0 -87
- package/src/commands/liberica/teams/projects/index.ts +0 -19
- package/src/commands/liberica/teams/projects/list.ts +0 -147
- package/src/commands/liberica/teams/projects/update.ts +0 -117
- package/src/commands/liberica/teams/tasks/create.ts +0 -102
- package/src/commands/liberica/teams/tasks/delete.ts +0 -92
- package/src/commands/liberica/teams/tasks/get.ts +0 -64
- package/src/commands/liberica/teams/tasks/index.ts +0 -19
- package/src/commands/liberica/teams/tasks/list.ts +0 -102
- package/src/commands/liberica/teams/tasks/update.ts +0 -122
- package/src/commands/liberica/teams/work-logs/create.ts +0 -204
- package/src/commands/liberica/teams/work-logs/delete.ts +0 -58
- package/src/commands/liberica/teams/work-logs/get.ts +0 -87
- package/src/commands/liberica/teams/work-logs/index.ts +0 -19
- package/src/commands/liberica/teams/work-logs/list.ts +0 -141
- package/src/commands/liberica/teams/work-logs/update.ts +0 -120
- package/src/commands/liberica/transfer-in-forms/batch-delete.ts +0 -152
- package/src/commands/liberica/transfer-in-forms/batch-review.ts +0 -151
- package/src/commands/liberica/transfer-in-forms/batch-unreview.ts +0 -152
- package/src/commands/liberica/transfer-in-forms/create.ts +0 -179
- package/src/commands/liberica/transfer-in-forms/get.ts +0 -107
- package/src/commands/liberica/transfer-in-forms/index.ts +0 -23
- package/src/commands/liberica/transfer-in-forms/list.ts +0 -97
- package/src/commands/liberica/transfer-in-forms/update.ts +0 -213
- package/src/commands/liberica/transfer-out-forms/batch-delete.ts +0 -83
- package/src/commands/liberica/transfer-out-forms/batch-review.ts +0 -148
- package/src/commands/liberica/transfer-out-forms/batch-unreview.ts +0 -56
- package/src/commands/liberica/transfer-out-forms/create.ts +0 -194
- package/src/commands/liberica/transfer-out-forms/get.ts +0 -114
- package/src/commands/liberica/transfer-out-forms/index.ts +0 -23
- package/src/commands/liberica/transfer-out-forms/list.ts +0 -125
- package/src/commands/liberica/transfer-out-forms/update.ts +0 -197
- package/src/commands/liberica/uoms/create.ts +0 -134
- package/src/commands/liberica/uoms/delete.ts +0 -105
- package/src/commands/liberica/uoms/disable.ts +0 -148
- package/src/commands/liberica/uoms/enable.ts +0 -129
- package/src/commands/liberica/uoms/get.ts +0 -83
- package/src/commands/liberica/uoms/index.ts +0 -23
- package/src/commands/liberica/uoms/list.ts +0 -129
- package/src/commands/liberica/uoms/update.ts +0 -124
- package/src/commands/liberica/users/create.ts +0 -133
- package/src/commands/liberica/users/delete.ts +0 -49
- package/src/commands/liberica/users/disable.ts +0 -41
- package/src/commands/liberica/users/enable.ts +0 -30
- package/src/commands/liberica/users/get.ts +0 -46
- package/src/commands/liberica/users/index.ts +0 -27
- package/src/commands/liberica/users/list.ts +0 -68
- package/src/commands/liberica/users/me.ts +0 -42
- package/src/commands/liberica/users/reset-password.ts +0 -42
- package/src/commands/liberica/users/update.ts +0 -48
- package/src/commands/liberica/warehouses/create.ts +0 -204
- package/src/commands/liberica/warehouses/delete.ts +0 -112
- package/src/commands/liberica/warehouses/disable.ts +0 -174
- package/src/commands/liberica/warehouses/enable.ts +0 -174
- package/src/commands/liberica/warehouses/get.ts +0 -101
- package/src/commands/liberica/warehouses/index.ts +0 -25
- package/src/commands/liberica/warehouses/list.ts +0 -136
- package/src/commands/liberica/warehouses/locations/create.ts +0 -209
- package/src/commands/liberica/warehouses/locations/delete.ts +0 -116
- package/src/commands/liberica/warehouses/locations/disable.ts +0 -174
- package/src/commands/liberica/warehouses/locations/enable.ts +0 -174
- package/src/commands/liberica/warehouses/locations/get.ts +0 -84
- package/src/commands/liberica/warehouses/locations/index.ts +0 -23
- package/src/commands/liberica/warehouses/locations/list.ts +0 -140
- package/src/commands/liberica/warehouses/locations/update.ts +0 -135
- package/src/commands/liberica/warehouses/update.ts +0 -142
- package/src/core/api/client.ts +0 -4443
- package/src/core/auth/token-manager.ts +0 -183
- package/src/core/config/manager.ts +0 -164
- package/src/index.ts +0 -35
- package/src/types/calendar.ts +0 -36
- package/src/types/client-contact.ts +0 -78
- package/src/types/client.ts +0 -115
- package/src/types/currency.ts +0 -90
- package/src/types/dict.ts +0 -121
- package/src/types/employee.ts +0 -102
- package/src/types/index.ts +0 -93
- package/src/types/location.ts +0 -66
- package/src/types/material.ts +0 -61
- package/src/types/mould-stock-in.ts +0 -82
- package/src/types/mould.ts +0 -74
- package/src/types/operation.ts +0 -72
- package/src/types/org.ts +0 -25
- package/src/types/position.ts +0 -24
- package/src/types/stock.ts +0 -161
- package/src/types/supplier-contact.ts +0 -78
- package/src/types/supplier.ts +0 -66
- package/src/types/team-issue.ts +0 -94
- package/src/types/team-project.ts +0 -74
- package/src/types/team-task.ts +0 -98
- package/src/types/team-work-log.ts +0 -87
- package/src/types/transfer-in-form.ts +0 -265
- package/src/types/transfer-out-form.ts +0 -290
- package/src/types/uom.ts +0 -60
- package/src/types/user.ts +0 -64
- package/src/types/warehouse.ts +0 -82
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import Table from 'cli-table3';
|
|
4
|
-
import { configManager } from '../../../core/config/manager.js';
|
|
5
|
-
import { apiClient } from '../../../core/api/client.js';
|
|
6
|
-
import { DictItem, DictStatusFlag } from '../../../types/dict.js';
|
|
7
|
-
import { Environment } from '../../../types/index.js';
|
|
8
|
-
|
|
9
|
-
export function createDictListCommand(): Command {
|
|
10
|
-
const listCommand = new Command('list');
|
|
11
|
-
listCommand.description('List dictionary items by type');
|
|
12
|
-
|
|
13
|
-
listCommand
|
|
14
|
-
.requiredOption('-t, --type-code <string>', 'Dict type code (e.g., ID_TYPE, sex)')
|
|
15
|
-
.option('-p, --page <number>', 'Page number', '1')
|
|
16
|
-
.option('-s, --size <number>', 'Page size', '20')
|
|
17
|
-
.option('--status <string>', 'Status filter (enable/disable)')
|
|
18
|
-
.option('--json', 'Output as JSON')
|
|
19
|
-
.action(async (options) => {
|
|
20
|
-
const outputJson = options.json === true || process.argv.includes('--json');
|
|
21
|
-
|
|
22
|
-
const context = configManager.getCurrentContext();
|
|
23
|
-
const environment = (options.env as Environment) || context.environment;
|
|
24
|
-
const tenant = options.tenant || context.tenant;
|
|
25
|
-
|
|
26
|
-
const typeCode = options.typeCode as string;
|
|
27
|
-
const page = parseInt(options.page as string, 10) - 1;
|
|
28
|
-
const size = parseInt(options.size as string, 10);
|
|
29
|
-
|
|
30
|
-
const params: {
|
|
31
|
-
dictTypeCode: string;
|
|
32
|
-
pageNo: number;
|
|
33
|
-
pageSize: number;
|
|
34
|
-
status?: DictStatusFlag;
|
|
35
|
-
} = { dictTypeCode: typeCode, pageNo: page, pageSize: size };
|
|
36
|
-
|
|
37
|
-
if (options.status !== undefined) {
|
|
38
|
-
const statusVal = (options.status as string).toLowerCase();
|
|
39
|
-
if (statusVal === 'enable' || statusVal === '1') {
|
|
40
|
-
params.status = 1;
|
|
41
|
-
} else if (statusVal === 'disable' || statusVal === '2') {
|
|
42
|
-
params.status = 2;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const response = await apiClient.listDictItems(environment, tenant, params);
|
|
47
|
-
|
|
48
|
-
if (!response.success) {
|
|
49
|
-
console.error(chalk.red(`\nā Failed to list dict items: ${response.error?.message || 'Unknown error'}`));
|
|
50
|
-
if (response.error?.code) {
|
|
51
|
-
console.error(chalk.gray(` Error code: ${response.error.code}`));
|
|
52
|
-
}
|
|
53
|
-
console.error();
|
|
54
|
-
process.exit(1);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const records = (response.data as unknown as DictItem[]) || [];
|
|
58
|
-
|
|
59
|
-
if (!records || records.length === 0) {
|
|
60
|
-
if (outputJson) {
|
|
61
|
-
console.log(JSON.stringify({ success: true, data: { items: [] } }, null, 2));
|
|
62
|
-
} else {
|
|
63
|
-
console.log(chalk.bold('\nš Dict Items\n'));
|
|
64
|
-
console.log(chalk.gray(' No dict items found\n'));
|
|
65
|
-
}
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
if (outputJson) {
|
|
70
|
-
console.log(
|
|
71
|
-
JSON.stringify(
|
|
72
|
-
{
|
|
73
|
-
success: true,
|
|
74
|
-
data: {
|
|
75
|
-
items: records,
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
null,
|
|
79
|
-
2
|
|
80
|
-
)
|
|
81
|
-
);
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
console.log(chalk.bold('\nš Dict Items\n'));
|
|
86
|
-
|
|
87
|
-
const table = new Table({
|
|
88
|
-
head: [chalk.bold('ID'), chalk.bold('Code'), chalk.bold('Name'), chalk.bold('Sort'), chalk.bold('Status')],
|
|
89
|
-
colWidths: [14, 20, 30, 10, 10],
|
|
90
|
-
style: {
|
|
91
|
-
head: [],
|
|
92
|
-
border: [],
|
|
93
|
-
},
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
for (const item of records) {
|
|
97
|
-
const statusText = item.statusFlag === 1 ? chalk.green('Enable') : chalk.red('Disable');
|
|
98
|
-
table.push([
|
|
99
|
-
item.dictId,
|
|
100
|
-
item.dictCode || '-',
|
|
101
|
-
item.dictName || '-',
|
|
102
|
-
item.sortOrder?.toString() || '-',
|
|
103
|
-
statusText,
|
|
104
|
-
]);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
console.log(table.toString());
|
|
108
|
-
console.log();
|
|
109
|
-
console.log(chalk.gray(` Total: ${records.length}`));
|
|
110
|
-
console.log();
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
return listCommand;
|
|
114
|
-
}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import { configManager } from '../../../core/config/manager.js';
|
|
4
|
-
import { apiClient } from '../../../core/api/client.js';
|
|
5
|
-
import { Environment } from '../../../types/index.js';
|
|
6
|
-
import { DictItem, UpdateDictItemRequest } from '../../../types/dict.js';
|
|
7
|
-
|
|
8
|
-
export function createDictUpdateCommand(): Command {
|
|
9
|
-
const updateCommand = new Command('update');
|
|
10
|
-
updateCommand
|
|
11
|
-
.description('Update dictionary item')
|
|
12
|
-
.argument('<dictId>', 'Dictionary item ID')
|
|
13
|
-
.option('--code <code>', 'Dictionary code')
|
|
14
|
-
.option('--name <name>', 'Dictionary name')
|
|
15
|
-
.option('--parent <id>', 'Parent dict type ID')
|
|
16
|
-
.option('--status <status>', 'Status (1=enable, 2=disable)', (val) => {
|
|
17
|
-
const num = parseInt(val, 10);
|
|
18
|
-
if (num !== 1 && num !== 2) {
|
|
19
|
-
throw new Error('Status must be 1 or 2');
|
|
20
|
-
}
|
|
21
|
-
return num;
|
|
22
|
-
})
|
|
23
|
-
.option('--sort <sort>', 'Sort order', (val) => parseInt(val, 10))
|
|
24
|
-
.option('--json', 'Output as JSON')
|
|
25
|
-
.action(async (dictId: string, options: Record<string, unknown>) => {
|
|
26
|
-
const context = configManager.getCurrentContext();
|
|
27
|
-
const environment = context.environment as Environment;
|
|
28
|
-
const tenant = context.tenant;
|
|
29
|
-
|
|
30
|
-
const fields: Partial<UpdateDictItemRequest> = {};
|
|
31
|
-
if (options.code) fields.dictCode = options.code as string;
|
|
32
|
-
if (options.name) fields.dictName = options.name as string;
|
|
33
|
-
if (options.parent) fields.dictTypeId = options.parent as string;
|
|
34
|
-
if (options.status) fields.statusFlag = options.status as 1 | 2;
|
|
35
|
-
if (options.sort) fields.sortOrder = options.sort as number;
|
|
36
|
-
|
|
37
|
-
const providedFields = Object.keys(fields).filter(
|
|
38
|
-
(k) => fields[k as keyof UpdateDictItemRequest] !== undefined
|
|
39
|
-
);
|
|
40
|
-
if (providedFields.length === 0) {
|
|
41
|
-
console.error(
|
|
42
|
-
chalk.red('\nā No fields to update. Provide at least one of: --code, --name, --parent, --status, --sort\n')
|
|
43
|
-
);
|
|
44
|
-
process.exit(1);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
let currentItem: DictItem | undefined;
|
|
48
|
-
try {
|
|
49
|
-
const itemResponse = await apiClient.getDictItem(environment, tenant, dictId);
|
|
50
|
-
if (!itemResponse.success || !itemResponse.data) {
|
|
51
|
-
console.error(chalk.red(`\nā Dictionary item not found: ${dictId}`));
|
|
52
|
-
if (itemResponse.error?.message) {
|
|
53
|
-
console.error(chalk.gray(` ${itemResponse.error.message}`));
|
|
54
|
-
}
|
|
55
|
-
if (itemResponse.error?.code) {
|
|
56
|
-
console.error(chalk.gray(` Error code: ${itemResponse.error.code}`));
|
|
57
|
-
}
|
|
58
|
-
console.error();
|
|
59
|
-
process.exit(1);
|
|
60
|
-
}
|
|
61
|
-
currentItem = itemResponse.data as DictItem;
|
|
62
|
-
} catch (error) {
|
|
63
|
-
console.error(chalk.red(`\nā Failed to fetch dictionary item: ${error instanceof Error ? error.message : 'Unknown error'}\n`));
|
|
64
|
-
process.exit(1);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
console.log(chalk.bold(`\nš Update Dictionary Item (${environment})\n`));
|
|
68
|
-
console.log(chalk.gray(` Dict ID: ${dictId}`));
|
|
69
|
-
console.log(chalk.gray(` Current Name: ${currentItem.dictName}`));
|
|
70
|
-
console.log(chalk.gray('\n Changes:'));
|
|
71
|
-
for (const field of providedFields) {
|
|
72
|
-
const label = field.replace(/([A-Z])/g, (m) => ` ${m.toLowerCase()}`).trim();
|
|
73
|
-
const currentVal = (currentItem as unknown as Record<string, unknown>)[field] ?? '(not set)';
|
|
74
|
-
const newVal = fields[field as keyof UpdateDictItemRequest];
|
|
75
|
-
console.log(chalk.cyan(` ${label}: "${currentVal}" -> "${newVal}"`));
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const updateData: UpdateDictItemRequest = { dictId, dictTypeId: currentItem.dictTypeId, ...fields };
|
|
79
|
-
try {
|
|
80
|
-
const response = await apiClient.updateDictItem(environment, tenant, updateData);
|
|
81
|
-
|
|
82
|
-
if (response.success) {
|
|
83
|
-
if (options.json) {
|
|
84
|
-
console.log(JSON.stringify({ success: true, data: response.data }, null, 2));
|
|
85
|
-
} else {
|
|
86
|
-
console.log(chalk.green(`\nā Dictionary item updated successfully\n`));
|
|
87
|
-
}
|
|
88
|
-
} else {
|
|
89
|
-
if (options.json) {
|
|
90
|
-
console.log(JSON.stringify({ success: false, error: response.error }, null, 2));
|
|
91
|
-
} else {
|
|
92
|
-
console.error(chalk.red(`\nā Update failed: ${response.error?.message || 'Unknown error'}`));
|
|
93
|
-
if (response.error?.code) {
|
|
94
|
-
console.error(chalk.gray(` Error code: ${response.error.code}`));
|
|
95
|
-
}
|
|
96
|
-
console.error();
|
|
97
|
-
}
|
|
98
|
-
process.exit(1);
|
|
99
|
-
}
|
|
100
|
-
} catch (error) {
|
|
101
|
-
if (options.json) {
|
|
102
|
-
console.log(
|
|
103
|
-
JSON.stringify({
|
|
104
|
-
success: false,
|
|
105
|
-
error: { message: error instanceof Error ? error.message : 'Unknown error' },
|
|
106
|
-
})
|
|
107
|
-
);
|
|
108
|
-
} else {
|
|
109
|
-
console.error(chalk.red(`\nā Error: ${error instanceof Error ? error.message : 'Unknown error'}\n`));
|
|
110
|
-
}
|
|
111
|
-
process.exit(1);
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
return updateCommand;
|
|
116
|
-
}
|
|
@@ -1,275 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import inquirer from 'inquirer';
|
|
4
|
-
import { apiClient } from '../../../core/api/client.js';
|
|
5
|
-
import { configManager } from '../../../core/config/manager.js';
|
|
6
|
-
import { CreateEmployeeRequest } from '../../../types/employee.js';
|
|
7
|
-
|
|
8
|
-
const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
9
|
-
const PHONE_REGEX = /^[\d\s\-()+]+$/;
|
|
10
|
-
const DATE_REGEX = /^\d{4}-\d{2}-\d{2}$/;
|
|
11
|
-
const SEX_REGEX = /^[MF]$/;
|
|
12
|
-
|
|
13
|
-
function validateFields(data: Partial<CreateEmployeeRequest>): string | null {
|
|
14
|
-
if (data.employeeEmail && !EMAIL_REGEX.test(data.employeeEmail)) {
|
|
15
|
-
return 'Invalid email format. Please provide a valid email address.';
|
|
16
|
-
}
|
|
17
|
-
if (data.employeePhone && !PHONE_REGEX.test(data.employeePhone)) {
|
|
18
|
-
return 'Invalid phone format. Phone must contain only digits, spaces, hyphens, or parentheses.';
|
|
19
|
-
}
|
|
20
|
-
if (data.employeeJoinedDate && !DATE_REGEX.test(data.employeeJoinedDate)) {
|
|
21
|
-
return 'Invalid date format. Date must be in YYYY-MM-DD format.';
|
|
22
|
-
}
|
|
23
|
-
if (data.employeeSex && !SEX_REGEX.test(data.employeeSex)) {
|
|
24
|
-
return 'Invalid sex value. Must be M or F.';
|
|
25
|
-
}
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function formatTable(data: CreateEmployeeRequest): string {
|
|
30
|
-
const lines: string[] = [];
|
|
31
|
-
lines.push(` ${chalk.gray('Name:')} ${data.employeeName}`);
|
|
32
|
-
lines.push(` ${chalk.gray('Employee No:')} ${data.employeeNo}`);
|
|
33
|
-
if (data.employeeCode) lines.push(` ${chalk.gray('Code:')} ${data.employeeCode}`);
|
|
34
|
-
if (data.employeePhone) lines.push(` ${chalk.gray('Phone:')} ${data.employeePhone}`);
|
|
35
|
-
if (data.employeeEmail) lines.push(` ${chalk.gray('Email:')} ${data.employeeEmail}`);
|
|
36
|
-
if (data.employeeSex) lines.push(` ${chalk.gray('Sex:')} ${data.employeeSex}`);
|
|
37
|
-
if (data.organizationId) lines.push(` ${chalk.gray('Org ID:')} ${data.organizationId}`);
|
|
38
|
-
if (data.positionId) lines.push(` ${chalk.gray('Position ID:')} ${data.positionId}`);
|
|
39
|
-
if (data.employeeJoinedDate) lines.push(` ${chalk.gray('Joined Date:')} ${data.employeeJoinedDate}`);
|
|
40
|
-
return lines.join('\n');
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export function createEmployeeCreateCommand(): Command {
|
|
44
|
-
const cmd = new Command('create');
|
|
45
|
-
cmd.description('Create a new employee');
|
|
46
|
-
|
|
47
|
-
cmd
|
|
48
|
-
.option('-n, --name <name>', 'Employee name (required)')
|
|
49
|
-
.option('-c, --code <code>', 'Employee code (optional, auto-generated if empty)')
|
|
50
|
-
.option('-p, --phone <phone>', 'Phone number')
|
|
51
|
-
.option('-e, --email <email>', 'Email address')
|
|
52
|
-
.option('-s, --sex <sex>', 'Sex (M or F)')
|
|
53
|
-
.option('--org <name>', 'Organization name')
|
|
54
|
-
.option('--position <name>', 'Position name')
|
|
55
|
-
.option('-d, --joined-date <date>', 'Joined date (YYYY-MM-DD)')
|
|
56
|
-
.option('--no <no>', 'Employee number (required)')
|
|
57
|
-
.option('--dry-run', 'Preview without making API call')
|
|
58
|
-
.option('--json', 'Output as JSON');
|
|
59
|
-
|
|
60
|
-
cmd.action(async () => {
|
|
61
|
-
const context = configManager.getCurrentContext();
|
|
62
|
-
const opts = cmd.opts();
|
|
63
|
-
|
|
64
|
-
let name = opts.name as string | undefined;
|
|
65
|
-
let no = (opts.no as string | undefined) || (opts['no'] as string | undefined);
|
|
66
|
-
const code = opts.code as string | undefined;
|
|
67
|
-
const phone = opts.phone as string | undefined;
|
|
68
|
-
const email = opts.email as string | undefined;
|
|
69
|
-
const sex = opts.sex as string | undefined;
|
|
70
|
-
const orgName = opts.org as string | undefined;
|
|
71
|
-
const positionName = opts.position as string | undefined;
|
|
72
|
-
const joinedDate = opts.joinedDate as string | undefined;
|
|
73
|
-
const dryRun = opts.dryRun === true;
|
|
74
|
-
const jsonOutput = opts.json === true;
|
|
75
|
-
|
|
76
|
-
if (!name) {
|
|
77
|
-
const { inputName } = await inquirer.prompt([
|
|
78
|
-
{
|
|
79
|
-
type: 'input',
|
|
80
|
-
name: 'inputName',
|
|
81
|
-
message: 'Enter employee name:',
|
|
82
|
-
validate: (input: string) => input.trim().length > 0 || 'Employee name is required',
|
|
83
|
-
},
|
|
84
|
-
]);
|
|
85
|
-
name = inputName;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (!no) {
|
|
89
|
-
const { inputNo } = await inquirer.prompt([
|
|
90
|
-
{
|
|
91
|
-
type: 'input',
|
|
92
|
-
name: 'inputNo',
|
|
93
|
-
message: 'Enter employee number:',
|
|
94
|
-
validate: (input: string) => input.trim().length > 0 || 'Employee number is required',
|
|
95
|
-
},
|
|
96
|
-
]);
|
|
97
|
-
no = inputNo;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
let resolvedCode = code;
|
|
101
|
-
if (!resolvedCode) {
|
|
102
|
-
const codeResponse = await apiClient.getCodeByType(context.environment, context.tenant, 'TenantEmployeeCode');
|
|
103
|
-
if (codeResponse.success && codeResponse.data) {
|
|
104
|
-
resolvedCode = codeResponse.data;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
let resolvedOrgId: string | undefined;
|
|
109
|
-
if (orgName) {
|
|
110
|
-
const orgResponse = await apiClient.getOrgListName(context.environment, context.tenant);
|
|
111
|
-
if (!orgResponse.success || !orgResponse.data) {
|
|
112
|
-
const errMsg = orgResponse.error?.message || 'Failed to fetch organization list';
|
|
113
|
-
if (jsonOutput) {
|
|
114
|
-
console.log(JSON.stringify({ success: false, error: { code: orgResponse.error?.code || 'FETCH_ORG_ERROR', message: errMsg } }));
|
|
115
|
-
} else {
|
|
116
|
-
console.error(chalk.red(`\nā ${errMsg}\n`));
|
|
117
|
-
}
|
|
118
|
-
process.exit(1);
|
|
119
|
-
}
|
|
120
|
-
const found = orgResponse.data.find((o) => o.name === orgName);
|
|
121
|
-
if (!found) {
|
|
122
|
-
const errMsg = `Organization '${orgName}' not found`;
|
|
123
|
-
if (jsonOutput) {
|
|
124
|
-
console.log(JSON.stringify({ success: false, error: { code: 'ORG_NOT_FOUND', message: errMsg } }));
|
|
125
|
-
} else {
|
|
126
|
-
console.error(chalk.red(`\nā ${errMsg}\n`));
|
|
127
|
-
}
|
|
128
|
-
process.exit(1);
|
|
129
|
-
}
|
|
130
|
-
resolvedOrgId = found.id;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
let resolvedPositionId: string | undefined;
|
|
134
|
-
if (positionName) {
|
|
135
|
-
const posResponse = await apiClient.listPositions(context.environment, context.tenant);
|
|
136
|
-
if (!posResponse.success || !posResponse.data) {
|
|
137
|
-
const errMsg = posResponse.error?.message || 'Failed to fetch position list';
|
|
138
|
-
if (jsonOutput) {
|
|
139
|
-
console.log(JSON.stringify({ success: false, error: { code: posResponse.error?.code || 'FETCH_POSITION_ERROR', message: errMsg } }));
|
|
140
|
-
} else {
|
|
141
|
-
console.error(chalk.red(`\nā ${errMsg}\n`));
|
|
142
|
-
}
|
|
143
|
-
process.exit(1);
|
|
144
|
-
}
|
|
145
|
-
const found = posResponse.data.find((p) => p.name === positionName);
|
|
146
|
-
if (!found) {
|
|
147
|
-
const errMsg = `Position '${positionName}' not found`;
|
|
148
|
-
if (jsonOutput) {
|
|
149
|
-
console.log(JSON.stringify({ success: false, error: { code: 'POSITION_NOT_FOUND', message: errMsg } }));
|
|
150
|
-
} else {
|
|
151
|
-
console.error(chalk.red(`\nā ${errMsg}\n`));
|
|
152
|
-
}
|
|
153
|
-
process.exit(1);
|
|
154
|
-
}
|
|
155
|
-
resolvedPositionId = found.id;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
const data: CreateEmployeeRequest = {
|
|
159
|
-
employeeName: name!,
|
|
160
|
-
employeeNo: no!,
|
|
161
|
-
employeeCode: resolvedCode,
|
|
162
|
-
employeePhone: phone,
|
|
163
|
-
employeeEmail: email,
|
|
164
|
-
employeeSex: sex as 'M' | 'F' | undefined,
|
|
165
|
-
organizationId: resolvedOrgId,
|
|
166
|
-
positionId: resolvedPositionId,
|
|
167
|
-
employeeJoinedDate: joinedDate,
|
|
168
|
-
};
|
|
169
|
-
|
|
170
|
-
const validationError = validateFields(data);
|
|
171
|
-
if (validationError) {
|
|
172
|
-
if (jsonOutput) {
|
|
173
|
-
console.log(JSON.stringify({ success: false, error: { code: 'VALIDATION_ERROR', message: validationError } }));
|
|
174
|
-
} else {
|
|
175
|
-
console.error(chalk.red(`\nā Validation error: ${validationError}\n`));
|
|
176
|
-
}
|
|
177
|
-
process.exit(1);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
if (dryRun) {
|
|
181
|
-
if (jsonOutput) {
|
|
182
|
-
console.log(JSON.stringify({ success: true, dryRun: true, data }));
|
|
183
|
-
} else {
|
|
184
|
-
console.log(chalk.bold('\nš Dry-Run Mode: No changes will be made\n'));
|
|
185
|
-
console.log(' Employee to be created:');
|
|
186
|
-
console.log(formatTable(data));
|
|
187
|
-
console.log();
|
|
188
|
-
}
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
const requestData: CreateEmployeeRequest = {
|
|
193
|
-
employeeName: data.employeeName,
|
|
194
|
-
employeeNo: data.employeeNo,
|
|
195
|
-
employeeCode: data.employeeCode,
|
|
196
|
-
employeePhone: data.employeePhone,
|
|
197
|
-
employeeEmail: data.employeeEmail,
|
|
198
|
-
employeeSex: data.employeeSex,
|
|
199
|
-
organizationId: data.organizationId,
|
|
200
|
-
positionId: data.positionId,
|
|
201
|
-
employeeJoinedDate: data.employeeJoinedDate,
|
|
202
|
-
};
|
|
203
|
-
|
|
204
|
-
if (!jsonOutput) {
|
|
205
|
-
console.log(chalk.bold('\nš Creating Employee\n'));
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
const response = await apiClient.createEmployee(context.environment, context.tenant, requestData);
|
|
209
|
-
|
|
210
|
-
if (!response.success) {
|
|
211
|
-
const errorMsg = response.error?.message || 'Failed to create employee';
|
|
212
|
-
const errorCode = response.error?.code || 'CREATE_EMPLOYEE_ERROR';
|
|
213
|
-
if (jsonOutput) {
|
|
214
|
-
console.log(JSON.stringify({ success: false, error: { code: errorCode, message: errorMsg } }));
|
|
215
|
-
} else {
|
|
216
|
-
console.error(chalk.red(`\nā Failed to create employee: ${errorMsg}`));
|
|
217
|
-
if (response.error?.code) {
|
|
218
|
-
console.error(chalk.gray(` Error code: ${response.error.code}`));
|
|
219
|
-
}
|
|
220
|
-
console.error();
|
|
221
|
-
}
|
|
222
|
-
process.exit(1);
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
if (response.success) {
|
|
226
|
-
const emp = response.data as {
|
|
227
|
-
employeeId?: number;
|
|
228
|
-
employeeCode?: string;
|
|
229
|
-
employeeName?: string;
|
|
230
|
-
employeeNo?: string;
|
|
231
|
-
employeePhone?: string;
|
|
232
|
-
employeeEmail?: string;
|
|
233
|
-
employeeSex?: string;
|
|
234
|
-
organizationId?: number;
|
|
235
|
-
orgName?: string;
|
|
236
|
-
positionId?: string;
|
|
237
|
-
positionName?: string;
|
|
238
|
-
statusFlag?: number;
|
|
239
|
-
createTime?: string;
|
|
240
|
-
} | undefined;
|
|
241
|
-
|
|
242
|
-
if (jsonOutput) {
|
|
243
|
-
console.log(JSON.stringify({ success: true, data: emp }));
|
|
244
|
-
} else {
|
|
245
|
-
console.log(chalk.green('ā Employee created successfully\n'));
|
|
246
|
-
if (emp?.employeeId) console.log(` ${chalk.gray('Employee ID:')} ${chalk.green(String(emp.employeeId))}`);
|
|
247
|
-
if (emp?.employeeName) console.log(` ${chalk.gray('Name:')} ${emp.employeeName}`);
|
|
248
|
-
if (emp?.employeeNo) console.log(` ${chalk.gray('Employee No:')} ${emp.employeeNo}`);
|
|
249
|
-
if (emp?.employeeCode) console.log(` ${chalk.gray('Code:')} ${emp.employeeCode}`);
|
|
250
|
-
if (emp?.orgName) console.log(` ${chalk.gray('Organization:')} ${emp.orgName}`);
|
|
251
|
-
if (emp?.positionName) console.log(` ${chalk.gray('Position:')} ${emp.positionName}`);
|
|
252
|
-
if (emp?.statusFlag !== undefined) {
|
|
253
|
-
const statusText = emp.statusFlag === 1 ? 'Enabled' : 'Disabled';
|
|
254
|
-
console.log(` ${chalk.gray('Status:')} ${chalk.green(statusText)}`);
|
|
255
|
-
}
|
|
256
|
-
console.log();
|
|
257
|
-
}
|
|
258
|
-
} else {
|
|
259
|
-
const errorMsg = response.error?.message || 'Failed to create employee';
|
|
260
|
-
const errorCode = response.error?.code || 'CREATE_EMPLOYEE_ERROR';
|
|
261
|
-
if (jsonOutput) {
|
|
262
|
-
console.log(JSON.stringify({ success: false, error: { code: errorCode, message: errorMsg } }));
|
|
263
|
-
} else {
|
|
264
|
-
console.error(chalk.red(`\nā Failed to create employee: ${errorMsg}`));
|
|
265
|
-
if (response.error?.code) {
|
|
266
|
-
console.error(chalk.gray(` Error code: ${response.error.code}`));
|
|
267
|
-
}
|
|
268
|
-
console.error();
|
|
269
|
-
}
|
|
270
|
-
process.exit(1);
|
|
271
|
-
}
|
|
272
|
-
});
|
|
273
|
-
|
|
274
|
-
return cmd;
|
|
275
|
-
}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import inquirer from 'inquirer';
|
|
4
|
-
import { configManager } from '../../../core/config/manager.js';
|
|
5
|
-
import { apiClient } from '../../../core/api/client.js';
|
|
6
|
-
import { Environment } from '../../../types/index.js';
|
|
7
|
-
import { Employee } from '../../../types/employee.js';
|
|
8
|
-
|
|
9
|
-
export function createEmployeeDeleteCommand(): Command {
|
|
10
|
-
const deleteCommand = new Command('delete');
|
|
11
|
-
deleteCommand
|
|
12
|
-
.description('Delete an employee')
|
|
13
|
-
.argument('<id>', 'Employee ID')
|
|
14
|
-
.option('--force', 'Skip confirmation prompt')
|
|
15
|
-
.option('--dry-run', 'Preview the operation without executing')
|
|
16
|
-
.option('--json', 'Output as JSON')
|
|
17
|
-
.action(async (id: string, options: Record<string, unknown>) => {
|
|
18
|
-
const context = configManager.getCurrentContext();
|
|
19
|
-
const environment = context.environment as Environment;
|
|
20
|
-
const tenant = context.tenant;
|
|
21
|
-
const jsonOutput = options.json === true;
|
|
22
|
-
|
|
23
|
-
const employeeId = id;
|
|
24
|
-
|
|
25
|
-
if (!jsonOutput) {
|
|
26
|
-
console.log(chalk.bold(`\nšļø Delete Employee (${environment})\n`));
|
|
27
|
-
console.log(chalk.gray(` Employee ID: ${employeeId}`));
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if (options.dryRun) {
|
|
31
|
-
if (jsonOutput) {
|
|
32
|
-
console.log(JSON.stringify({ success: true, dryRun: true, employeeId }));
|
|
33
|
-
} else {
|
|
34
|
-
console.log(chalk.cyan('\nš Dry-Run Mode: No actual API call will be made\n'));
|
|
35
|
-
console.log(chalk.gray(' This operation will delete the employee.'));
|
|
36
|
-
console.log();
|
|
37
|
-
}
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
let employee: Employee | undefined;
|
|
42
|
-
try {
|
|
43
|
-
const employeeResponse = await apiClient.getEmployee(environment, tenant, employeeId);
|
|
44
|
-
if (!employeeResponse.success || !employeeResponse.data) {
|
|
45
|
-
const errMsg = `Employee not found: ${employeeId}`;
|
|
46
|
-
if (jsonOutput) {
|
|
47
|
-
console.log(JSON.stringify({ success: false, error: { code: 'NOT_FOUND', message: errMsg } }));
|
|
48
|
-
} else {
|
|
49
|
-
console.error(chalk.red(`\nā ${errMsg}\n`));
|
|
50
|
-
}
|
|
51
|
-
process.exit(1);
|
|
52
|
-
}
|
|
53
|
-
employee = employeeResponse.data as Employee;
|
|
54
|
-
} catch (error) {
|
|
55
|
-
const errMsg = error instanceof Error ? error.message : 'Unknown error';
|
|
56
|
-
if (jsonOutput) {
|
|
57
|
-
console.log(JSON.stringify({ success: false, error: { code: 'FETCH_ERROR', message: `Failed to fetch employee: ${errMsg}` } }));
|
|
58
|
-
} else {
|
|
59
|
-
console.error(chalk.red(`\nā Failed to fetch employee: ${errMsg}\n`));
|
|
60
|
-
}
|
|
61
|
-
process.exit(1);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (!options.force) {
|
|
65
|
-
if (!jsonOutput) {
|
|
66
|
-
console.log(chalk.gray(` Name: ${employee.employeeName}`));
|
|
67
|
-
console.log(chalk.gray(` Code: ${employee.employeeNo}`));
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
const { confirm } = await inquirer.prompt([
|
|
71
|
-
{
|
|
72
|
-
type: 'confirm',
|
|
73
|
-
name: 'confirm',
|
|
74
|
-
message: `Delete employee "${employee.employeeName}"? This action cannot be undone.`,
|
|
75
|
-
default: false,
|
|
76
|
-
},
|
|
77
|
-
]);
|
|
78
|
-
|
|
79
|
-
if (!confirm) {
|
|
80
|
-
if (!jsonOutput) {
|
|
81
|
-
console.log(chalk.gray('\n Operation cancelled.\n'));
|
|
82
|
-
}
|
|
83
|
-
process.exit(0);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
try {
|
|
88
|
-
const response = await apiClient.deleteEmployee(environment, tenant, employeeId);
|
|
89
|
-
|
|
90
|
-
if (response.success) {
|
|
91
|
-
if (jsonOutput) {
|
|
92
|
-
console.log(JSON.stringify({ success: true, employeeId, name: employee.employeeName }));
|
|
93
|
-
} else {
|
|
94
|
-
console.log(chalk.green(`\nā Employee "${employee.employeeName}" (ID: ${employeeId}) deleted\n`));
|
|
95
|
-
}
|
|
96
|
-
} else {
|
|
97
|
-
const errorMsg = response.error?.message || 'Unknown error';
|
|
98
|
-
const errorCode = response.error?.code || 'DELETE_ERROR';
|
|
99
|
-
if (jsonOutput) {
|
|
100
|
-
console.log(JSON.stringify({ success: false, error: { code: errorCode, message: errorMsg } }));
|
|
101
|
-
} else {
|
|
102
|
-
console.error(chalk.red(`\nā Failed to delete employee: ${errorMsg}`));
|
|
103
|
-
if (response.error?.code) {
|
|
104
|
-
console.error(chalk.gray(` Error code: ${response.error.code}`));
|
|
105
|
-
}
|
|
106
|
-
console.error();
|
|
107
|
-
}
|
|
108
|
-
process.exit(1);
|
|
109
|
-
}
|
|
110
|
-
} catch (error) {
|
|
111
|
-
const errMsg = error instanceof Error ? error.message : 'Unknown error';
|
|
112
|
-
if (jsonOutput) {
|
|
113
|
-
console.log(JSON.stringify({ success: false, error: { code: 'ERROR', message: errMsg } }));
|
|
114
|
-
} else {
|
|
115
|
-
console.error(chalk.red(`\nā Error: ${errMsg}\n`));
|
|
116
|
-
}
|
|
117
|
-
process.exit(1);
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
return deleteCommand;
|
|
122
|
-
}
|