@memberjunction/core-actions 2.131.0 → 2.133.0
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/custom/files/excel-writer.action.d.ts +24 -11
- package/dist/custom/files/excel-writer.action.d.ts.map +1 -1
- package/dist/custom/files/excel-writer.action.js +149 -139
- package/dist/custom/files/excel-writer.action.js.map +1 -1
- package/dist/custom/lists/add-records-to-list.action.d.ts +27 -0
- package/dist/custom/lists/add-records-to-list.action.d.ts.map +1 -0
- package/dist/custom/lists/add-records-to-list.action.js +200 -0
- package/dist/custom/lists/add-records-to-list.action.js.map +1 -0
- package/dist/custom/lists/create-list.action.d.ts +27 -0
- package/dist/custom/lists/create-list.action.d.ts.map +1 -0
- package/dist/custom/lists/create-list.action.js +180 -0
- package/dist/custom/lists/create-list.action.js.map +1 -0
- package/dist/custom/lists/get-list-records.action.d.ts +42 -0
- package/dist/custom/lists/get-list-records.action.d.ts.map +1 -0
- package/dist/custom/lists/get-list-records.action.js +240 -0
- package/dist/custom/lists/get-list-records.action.js.map +1 -0
- package/dist/custom/lists/get-record-list-membership.action.d.ts +24 -0
- package/dist/custom/lists/get-record-list-membership.action.d.ts.map +1 -0
- package/dist/custom/lists/get-record-list-membership.action.js +177 -0
- package/dist/custom/lists/get-record-list-membership.action.js.map +1 -0
- package/dist/custom/lists/index.d.ts +25 -0
- package/dist/custom/lists/index.d.ts.map +1 -0
- package/dist/custom/lists/index.js +56 -0
- package/dist/custom/lists/index.js.map +1 -0
- package/dist/custom/lists/remove-records-from-list.action.d.ts +44 -0
- package/dist/custom/lists/remove-records-from-list.action.d.ts.map +1 -0
- package/dist/custom/lists/remove-records-from-list.action.js +195 -0
- package/dist/custom/lists/remove-records-from-list.action.js.map +1 -0
- package/dist/custom/lists/update-list-item-status.action.d.ts +36 -0
- package/dist/custom/lists/update-list-item-status.action.d.ts.map +1 -0
- package/dist/custom/lists/update-list-item-status.action.js +201 -0
- package/dist/custom/lists/update-list-item-status.action.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/package.json +24 -23
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.LoadAddRecordsToListAction = exports.AddRecordsToListAction = void 0;
|
|
10
|
+
const global_1 = require("@memberjunction/global");
|
|
11
|
+
const actions_1 = require("@memberjunction/actions");
|
|
12
|
+
const core_1 = require("@memberjunction/core");
|
|
13
|
+
/**
|
|
14
|
+
* Action to add one or more records to a list.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* await runAction({
|
|
19
|
+
* ActionName: 'Add Records to List',
|
|
20
|
+
* Params: [
|
|
21
|
+
* { Name: 'ListID', Value: 'abc-123-def' },
|
|
22
|
+
* { Name: 'RecordIDs', Value: ['rec1', 'rec2', 'rec3'] },
|
|
23
|
+
* { Name: 'SkipDuplicates', Value: true },
|
|
24
|
+
* { Name: 'DefaultStatus', Value: 'Active' }
|
|
25
|
+
* ]
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
let AddRecordsToListAction = class AddRecordsToListAction extends actions_1.BaseAction {
|
|
30
|
+
async InternalRunAction(params) {
|
|
31
|
+
try {
|
|
32
|
+
// Extract parameters
|
|
33
|
+
const listId = this.getStringParam(params, 'ListID');
|
|
34
|
+
const recordIds = this.getArrayParam(params, 'RecordIDs');
|
|
35
|
+
const skipDuplicates = this.getBooleanParam(params, 'SkipDuplicates', true);
|
|
36
|
+
const defaultStatus = this.getStringParam(params, 'DefaultStatus') || 'Active';
|
|
37
|
+
const additionalData = this.getStringParam(params, 'AdditionalData');
|
|
38
|
+
// Validate required parameters
|
|
39
|
+
if (!listId) {
|
|
40
|
+
return {
|
|
41
|
+
Success: false,
|
|
42
|
+
ResultCode: 'MISSING_PARAMETER',
|
|
43
|
+
Message: 'ListID is required'
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (!recordIds || recordIds.length === 0) {
|
|
47
|
+
return {
|
|
48
|
+
Success: false,
|
|
49
|
+
ResultCode: 'MISSING_PARAMETER',
|
|
50
|
+
Message: 'RecordIDs is required and must contain at least one record ID'
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// Validate list exists
|
|
54
|
+
const md = new core_1.Metadata();
|
|
55
|
+
const rv = new core_1.RunView();
|
|
56
|
+
const listResult = await rv.RunView({
|
|
57
|
+
EntityName: 'Lists',
|
|
58
|
+
ExtraFilter: `ID = '${listId}'`,
|
|
59
|
+
ResultType: 'entity_object'
|
|
60
|
+
}, params.ContextUser);
|
|
61
|
+
if (!listResult.Success || !listResult.Results || listResult.Results.length === 0) {
|
|
62
|
+
return {
|
|
63
|
+
Success: false,
|
|
64
|
+
ResultCode: 'LIST_NOT_FOUND',
|
|
65
|
+
Message: `List with ID '${listId}' not found`
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
// Get existing memberships if skipping duplicates
|
|
69
|
+
let existingRecordIds = new Set();
|
|
70
|
+
if (skipDuplicates) {
|
|
71
|
+
const recordIdFilter = recordIds.map((id) => `'${id}'`).join(',');
|
|
72
|
+
const existingResult = await rv.RunView({
|
|
73
|
+
EntityName: 'List Details',
|
|
74
|
+
ExtraFilter: `ListID = '${listId}' AND RecordID IN (${recordIdFilter})`,
|
|
75
|
+
ResultType: 'entity_object'
|
|
76
|
+
}, params.ContextUser);
|
|
77
|
+
if (existingResult.Success && existingResult.Results) {
|
|
78
|
+
for (const detail of existingResult.Results) {
|
|
79
|
+
existingRecordIds.add(detail.RecordID);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Add records to list
|
|
84
|
+
let addedCount = 0;
|
|
85
|
+
let skippedCount = 0;
|
|
86
|
+
let failedCount = 0;
|
|
87
|
+
const errors = [];
|
|
88
|
+
for (const recordId of recordIds) {
|
|
89
|
+
// Skip if already exists
|
|
90
|
+
if (skipDuplicates && existingRecordIds.has(recordId)) {
|
|
91
|
+
skippedCount++;
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
const listDetail = await md.GetEntityObject('List Details', params.ContextUser);
|
|
96
|
+
listDetail.NewRecord();
|
|
97
|
+
listDetail.ListID = listId;
|
|
98
|
+
listDetail.RecordID = recordId;
|
|
99
|
+
listDetail.Sequence = 0;
|
|
100
|
+
listDetail.Status = defaultStatus;
|
|
101
|
+
if (additionalData) {
|
|
102
|
+
listDetail.AdditionalData = additionalData;
|
|
103
|
+
}
|
|
104
|
+
const saveResult = await listDetail.Save();
|
|
105
|
+
if (saveResult) {
|
|
106
|
+
addedCount++;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
failedCount++;
|
|
110
|
+
errors.push(`Failed to add record '${recordId}'`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
failedCount++;
|
|
115
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
116
|
+
errors.push(`Error adding record '${recordId}': ${errorMessage}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Prepare result
|
|
120
|
+
const result = {
|
|
121
|
+
TotalRecords: recordIds.length,
|
|
122
|
+
Added: addedCount,
|
|
123
|
+
Skipped: skippedCount,
|
|
124
|
+
Failed: failedCount,
|
|
125
|
+
Errors: errors
|
|
126
|
+
};
|
|
127
|
+
// Add output parameters
|
|
128
|
+
this.addOutputParam(params, 'TotalRecords', result.TotalRecords);
|
|
129
|
+
this.addOutputParam(params, 'Added', result.Added);
|
|
130
|
+
this.addOutputParam(params, 'Skipped', result.Skipped);
|
|
131
|
+
this.addOutputParam(params, 'Failed', result.Failed);
|
|
132
|
+
this.addOutputParam(params, 'Errors', result.Errors);
|
|
133
|
+
const success = failedCount === 0;
|
|
134
|
+
return {
|
|
135
|
+
Success: success,
|
|
136
|
+
ResultCode: success ? 'SUCCESS' : 'PARTIAL_SUCCESS',
|
|
137
|
+
Message: success
|
|
138
|
+
? `Successfully added ${addedCount} record(s) to list${skippedCount > 0 ? `, skipped ${skippedCount} duplicate(s)` : ''}`
|
|
139
|
+
: `Added ${addedCount}, failed ${failedCount}. Errors: ${errors.join('; ')}`
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
144
|
+
return {
|
|
145
|
+
Success: false,
|
|
146
|
+
ResultCode: 'UNEXPECTED_ERROR',
|
|
147
|
+
Message: `Failed to add records to list: ${errorMessage}`
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
getStringParam(params, name) {
|
|
152
|
+
const param = params.Params.find(p => p.Name.toLowerCase() === name.toLowerCase() && p.Type === 'Input');
|
|
153
|
+
return param?.Value != null ? String(param.Value) : undefined;
|
|
154
|
+
}
|
|
155
|
+
getArrayParam(params, name) {
|
|
156
|
+
const param = params.Params.find(p => p.Name.toLowerCase() === name.toLowerCase() && p.Type === 'Input');
|
|
157
|
+
if (!param?.Value)
|
|
158
|
+
return [];
|
|
159
|
+
if (Array.isArray(param.Value)) {
|
|
160
|
+
return param.Value.map(v => String(v));
|
|
161
|
+
}
|
|
162
|
+
if (typeof param.Value === 'string') {
|
|
163
|
+
try {
|
|
164
|
+
const parsed = JSON.parse(param.Value);
|
|
165
|
+
return Array.isArray(parsed) ? parsed.map(v => String(v)) : [param.Value];
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
return [param.Value];
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return [String(param.Value)];
|
|
172
|
+
}
|
|
173
|
+
getBooleanParam(params, name, defaultValue) {
|
|
174
|
+
const param = params.Params.find(p => p.Name.toLowerCase() === name.toLowerCase() && p.Type === 'Input');
|
|
175
|
+
if (param?.Value != null) {
|
|
176
|
+
const val = String(param.Value).toLowerCase();
|
|
177
|
+
if (val === 'true' || val === '1' || val === 'yes')
|
|
178
|
+
return true;
|
|
179
|
+
if (val === 'false' || val === '0' || val === 'no')
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
return defaultValue;
|
|
183
|
+
}
|
|
184
|
+
addOutputParam(params, name, value) {
|
|
185
|
+
params.Params.push({
|
|
186
|
+
Name: name,
|
|
187
|
+
Type: 'Output',
|
|
188
|
+
Value: value
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
exports.AddRecordsToListAction = AddRecordsToListAction;
|
|
193
|
+
exports.AddRecordsToListAction = AddRecordsToListAction = __decorate([
|
|
194
|
+
(0, global_1.RegisterClass)(actions_1.BaseAction, "Add Records to List")
|
|
195
|
+
], AddRecordsToListAction);
|
|
196
|
+
function LoadAddRecordsToListAction() {
|
|
197
|
+
// Prevents tree-shaking
|
|
198
|
+
}
|
|
199
|
+
exports.LoadAddRecordsToListAction = LoadAddRecordsToListAction;
|
|
200
|
+
//# sourceMappingURL=add-records-to-list.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-records-to-list.action.js","sourceRoot":"","sources":["../../../src/custom/lists/add-records-to-list.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
|
|
2
|
+
import { BaseAction } from "@memberjunction/actions";
|
|
3
|
+
/**
|
|
4
|
+
* Action to create a new list and optionally add initial records.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* await runAction({
|
|
9
|
+
* ActionName: 'Create List',
|
|
10
|
+
* Params: [
|
|
11
|
+
* { Name: 'Name', Value: 'My Priority Contacts' },
|
|
12
|
+
* { Name: 'Description', Value: 'High priority contacts for Q4' },
|
|
13
|
+
* { Name: 'EntityName', Value: 'Contacts' },
|
|
14
|
+
* { Name: 'CategoryID', Value: 'cat-123' },
|
|
15
|
+
* { Name: 'AddRecordIDs', Value: ['contact1', 'contact2'] }
|
|
16
|
+
* ]
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare class CreateListAction extends BaseAction {
|
|
21
|
+
protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
|
|
22
|
+
private getStringParam;
|
|
23
|
+
private getArrayParam;
|
|
24
|
+
private addOutputParam;
|
|
25
|
+
}
|
|
26
|
+
export declare function LoadCreateListAction(): void;
|
|
27
|
+
//# sourceMappingURL=create-list.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-list.action.d.ts","sourceRoot":"","sources":["../../../src/custom/lists/create-list.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIrD;;;;;;;;;;;;;;;;GAgBG;AACH,qBACa,gBAAiB,SAAQ,UAAU;cAE9B,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6HvF,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,cAAc;CAOvB;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.LoadCreateListAction = exports.CreateListAction = void 0;
|
|
10
|
+
const global_1 = require("@memberjunction/global");
|
|
11
|
+
const actions_1 = require("@memberjunction/actions");
|
|
12
|
+
const core_1 = require("@memberjunction/core");
|
|
13
|
+
/**
|
|
14
|
+
* Action to create a new list and optionally add initial records.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* await runAction({
|
|
19
|
+
* ActionName: 'Create List',
|
|
20
|
+
* Params: [
|
|
21
|
+
* { Name: 'Name', Value: 'My Priority Contacts' },
|
|
22
|
+
* { Name: 'Description', Value: 'High priority contacts for Q4' },
|
|
23
|
+
* { Name: 'EntityName', Value: 'Contacts' },
|
|
24
|
+
* { Name: 'CategoryID', Value: 'cat-123' },
|
|
25
|
+
* { Name: 'AddRecordIDs', Value: ['contact1', 'contact2'] }
|
|
26
|
+
* ]
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
let CreateListAction = class CreateListAction extends actions_1.BaseAction {
|
|
31
|
+
async InternalRunAction(params) {
|
|
32
|
+
try {
|
|
33
|
+
// Extract parameters
|
|
34
|
+
const name = this.getStringParam(params, 'Name');
|
|
35
|
+
const description = this.getStringParam(params, 'Description');
|
|
36
|
+
const entityName = this.getStringParam(params, 'EntityName');
|
|
37
|
+
const entityId = this.getStringParam(params, 'EntityID');
|
|
38
|
+
const categoryId = this.getStringParam(params, 'CategoryID');
|
|
39
|
+
const addRecordIds = this.getArrayParam(params, 'AddRecordIDs');
|
|
40
|
+
// Validate required parameters
|
|
41
|
+
if (!name) {
|
|
42
|
+
return {
|
|
43
|
+
Success: false,
|
|
44
|
+
ResultCode: 'MISSING_PARAMETER',
|
|
45
|
+
Message: 'Name is required'
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (!entityName && !entityId) {
|
|
49
|
+
return {
|
|
50
|
+
Success: false,
|
|
51
|
+
ResultCode: 'MISSING_PARAMETER',
|
|
52
|
+
Message: 'Either EntityName or EntityID is required'
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const md = new core_1.Metadata();
|
|
56
|
+
const rv = new core_1.RunView();
|
|
57
|
+
// Resolve entity ID if name provided
|
|
58
|
+
let resolvedEntityId = entityId;
|
|
59
|
+
if (entityName && !entityId) {
|
|
60
|
+
const entityResult = await rv.RunView({
|
|
61
|
+
EntityName: 'Entities',
|
|
62
|
+
ExtraFilter: `Name = '${entityName}'`,
|
|
63
|
+
ResultType: 'entity_object'
|
|
64
|
+
}, params.ContextUser);
|
|
65
|
+
if (!entityResult.Success || !entityResult.Results || entityResult.Results.length === 0) {
|
|
66
|
+
return {
|
|
67
|
+
Success: false,
|
|
68
|
+
ResultCode: 'ENTITY_NOT_FOUND',
|
|
69
|
+
Message: `Entity '${entityName}' not found`
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
resolvedEntityId = entityResult.Results[0].ID;
|
|
73
|
+
}
|
|
74
|
+
// Create the list
|
|
75
|
+
const list = await md.GetEntityObject('Lists', params.ContextUser);
|
|
76
|
+
list.NewRecord();
|
|
77
|
+
list.Name = name;
|
|
78
|
+
list.Description = description || '';
|
|
79
|
+
list.EntityID = resolvedEntityId;
|
|
80
|
+
list.UserID = params.ContextUser.ID;
|
|
81
|
+
if (categoryId) {
|
|
82
|
+
list.CategoryID = categoryId;
|
|
83
|
+
}
|
|
84
|
+
const saveResult = await list.Save();
|
|
85
|
+
if (!saveResult) {
|
|
86
|
+
return {
|
|
87
|
+
Success: false,
|
|
88
|
+
ResultCode: 'SAVE_FAILED',
|
|
89
|
+
Message: 'Failed to create list'
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
// Add initial records if provided
|
|
93
|
+
let recordsAdded = 0;
|
|
94
|
+
const errors = [];
|
|
95
|
+
if (addRecordIds && addRecordIds.length > 0) {
|
|
96
|
+
for (const recordId of addRecordIds) {
|
|
97
|
+
try {
|
|
98
|
+
const listDetail = await md.GetEntityObject('List Details', params.ContextUser);
|
|
99
|
+
listDetail.NewRecord();
|
|
100
|
+
listDetail.ListID = list.ID;
|
|
101
|
+
listDetail.RecordID = recordId;
|
|
102
|
+
listDetail.Sequence = recordsAdded;
|
|
103
|
+
listDetail.Status = 'Active';
|
|
104
|
+
const detailSaveResult = await listDetail.Save();
|
|
105
|
+
if (detailSaveResult) {
|
|
106
|
+
recordsAdded++;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
errors.push(`Failed to add record '${recordId}'`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
114
|
+
errors.push(`Error adding record '${recordId}': ${errorMessage}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Add output parameters
|
|
119
|
+
this.addOutputParam(params, 'ListID', list.ID);
|
|
120
|
+
this.addOutputParam(params, 'ListName', list.Name);
|
|
121
|
+
this.addOutputParam(params, 'RecordsAdded', recordsAdded);
|
|
122
|
+
const result = {
|
|
123
|
+
ListID: list.ID,
|
|
124
|
+
ListName: list.Name,
|
|
125
|
+
RecordsAdded: recordsAdded
|
|
126
|
+
};
|
|
127
|
+
return {
|
|
128
|
+
Success: true,
|
|
129
|
+
ResultCode: 'SUCCESS',
|
|
130
|
+
Message: `List '${name}' created successfully${recordsAdded > 0 ? ` with ${recordsAdded} initial record(s)` : ''}`
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
135
|
+
return {
|
|
136
|
+
Success: false,
|
|
137
|
+
ResultCode: 'UNEXPECTED_ERROR',
|
|
138
|
+
Message: `Failed to create list: ${errorMessage}`
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
getStringParam(params, name) {
|
|
143
|
+
const param = params.Params.find(p => p.Name.toLowerCase() === name.toLowerCase() && p.Type === 'Input');
|
|
144
|
+
return param?.Value != null ? String(param.Value) : undefined;
|
|
145
|
+
}
|
|
146
|
+
getArrayParam(params, name) {
|
|
147
|
+
const param = params.Params.find(p => p.Name.toLowerCase() === name.toLowerCase() && p.Type === 'Input');
|
|
148
|
+
if (!param?.Value)
|
|
149
|
+
return [];
|
|
150
|
+
if (Array.isArray(param.Value)) {
|
|
151
|
+
return param.Value.map(v => String(v));
|
|
152
|
+
}
|
|
153
|
+
if (typeof param.Value === 'string') {
|
|
154
|
+
try {
|
|
155
|
+
const parsed = JSON.parse(param.Value);
|
|
156
|
+
return Array.isArray(parsed) ? parsed.map(v => String(v)) : [param.Value];
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
return [param.Value];
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return [String(param.Value)];
|
|
163
|
+
}
|
|
164
|
+
addOutputParam(params, name, value) {
|
|
165
|
+
params.Params.push({
|
|
166
|
+
Name: name,
|
|
167
|
+
Type: 'Output',
|
|
168
|
+
Value: value
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
exports.CreateListAction = CreateListAction;
|
|
173
|
+
exports.CreateListAction = CreateListAction = __decorate([
|
|
174
|
+
(0, global_1.RegisterClass)(actions_1.BaseAction, "Create List")
|
|
175
|
+
], CreateListAction);
|
|
176
|
+
function LoadCreateListAction() {
|
|
177
|
+
// Prevents tree-shaking
|
|
178
|
+
}
|
|
179
|
+
exports.LoadCreateListAction = LoadCreateListAction;
|
|
180
|
+
//# sourceMappingURL=create-list.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-list.action.js","sourceRoot":"","sources":["../../../src/custom/lists/create-list.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
|
|
2
|
+
import { BaseAction } from "@memberjunction/actions";
|
|
3
|
+
/**
|
|
4
|
+
* Action to retrieve records from a list with optional filtering and pagination.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* // Get all records from a list
|
|
9
|
+
* await runAction({
|
|
10
|
+
* ActionName: 'Get List Records',
|
|
11
|
+
* Params: [
|
|
12
|
+
* { Name: 'ListID', Value: 'abc-123-def' }
|
|
13
|
+
* ]
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* // Get filtered records with pagination
|
|
17
|
+
* await runAction({
|
|
18
|
+
* ActionName: 'Get List Records',
|
|
19
|
+
* Params: [
|
|
20
|
+
* { Name: 'ListID', Value: 'abc-123-def' },
|
|
21
|
+
* { Name: 'FilterByStatus', Value: 'Active' },
|
|
22
|
+
* { Name: 'MaxRecords', Value: 100 },
|
|
23
|
+
* { Name: 'IncludeRecordDetails', Value: true }
|
|
24
|
+
* ]
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare class GetListRecordsAction extends BaseAction {
|
|
29
|
+
protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
|
|
30
|
+
private getStringParam;
|
|
31
|
+
private getNumericParam;
|
|
32
|
+
private getBooleanParam;
|
|
33
|
+
private addOutputParam;
|
|
34
|
+
/**
|
|
35
|
+
* Build the SQL filter to select records that match the given list details.
|
|
36
|
+
* For single PK entities, uses a simple IN clause with the raw RecordID values.
|
|
37
|
+
* For composite PK entities, uses an OR clause with concatenated key matching.
|
|
38
|
+
*/
|
|
39
|
+
private buildRecordFilter;
|
|
40
|
+
}
|
|
41
|
+
export declare function LoadGetListRecordsAction(): void;
|
|
42
|
+
//# sourceMappingURL=get-list-records.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-list-records.action.d.ts","sourceRoot":"","sources":["../../../src/custom/lists/get-list-records.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIrD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBACa,oBAAqB,SAAQ,UAAU;cAElC,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyJvF,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;IAQtB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;CAmC1B;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
|