@memberjunction/core 0.9.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.
Files changed (55) hide show
  1. package/dist/generic/applicationInfo.d.ts +26 -0
  2. package/dist/generic/applicationInfo.js +57 -0
  3. package/dist/generic/applicationInfo.js.map +1 -0
  4. package/dist/generic/baseEntity.d.ts +88 -0
  5. package/dist/generic/baseEntity.js +450 -0
  6. package/dist/generic/baseEntity.js.map +1 -0
  7. package/dist/generic/baseInfo.d.ts +8 -0
  8. package/dist/generic/baseInfo.js +38 -0
  9. package/dist/generic/baseInfo.js.map +1 -0
  10. package/dist/generic/entityInfo.d.ts +340 -0
  11. package/dist/generic/entityInfo.js +647 -0
  12. package/dist/generic/entityInfo.js.map +1 -0
  13. package/dist/generic/interfaces.d.ts +235 -0
  14. package/dist/generic/interfaces.js +51 -0
  15. package/dist/generic/interfaces.js.map +1 -0
  16. package/dist/generic/logging.d.ts +4 -0
  17. package/dist/generic/logging.js +69 -0
  18. package/dist/generic/logging.js.map +1 -0
  19. package/dist/generic/metadata.d.ts +155 -0
  20. package/dist/generic/metadata.js +227 -0
  21. package/dist/generic/metadata.js.map +1 -0
  22. package/dist/generic/providerBase.d.ts +134 -0
  23. package/dist/generic/providerBase.js +517 -0
  24. package/dist/generic/providerBase.js.map +1 -0
  25. package/dist/generic/runReport.d.ts +11 -0
  26. package/dist/generic/runReport.js +27 -0
  27. package/dist/generic/runReport.js.map +1 -0
  28. package/dist/generic/runView.d.ts +106 -0
  29. package/dist/generic/runView.js +36 -0
  30. package/dist/generic/runView.js.map +1 -0
  31. package/dist/generic/securityInfo.d.ts +99 -0
  32. package/dist/generic/securityInfo.js +195 -0
  33. package/dist/generic/securityInfo.js.map +1 -0
  34. package/dist/generic/transactionGroup.d.ts +24 -0
  35. package/dist/generic/transactionGroup.js +79 -0
  36. package/dist/generic/transactionGroup.js.map +1 -0
  37. package/dist/generic/util.d.ts +4 -0
  38. package/dist/generic/util.js +100 -0
  39. package/dist/generic/util.js.map +1 -0
  40. package/dist/generic/viewInfo.d.ts +57 -0
  41. package/dist/generic/viewInfo.js +121 -0
  42. package/dist/generic/viewInfo.js.map +1 -0
  43. package/dist/index.d.ts +15 -0
  44. package/dist/index.js +80 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/views/UserViewEntityBase.d.ts +171 -0
  47. package/dist/views/UserViewEntityBase.js +466 -0
  48. package/dist/views/UserViewEntityBase.js.map +1 -0
  49. package/dist/views/runView.d.ts +106 -0
  50. package/dist/views/runView.js +36 -0
  51. package/dist/views/runView.js.map +1 -0
  52. package/dist/views/viewInfo.d.ts +0 -0
  53. package/dist/views/viewInfo.js +118 -0
  54. package/dist/views/viewInfo.js.map +1 -0
  55. package/package.json +24 -0
@@ -0,0 +1,26 @@
1
+ import { BaseInfo } from './baseInfo';
2
+ import { EntityInfo } from './entityInfo';
3
+ import { IMetadataProvider } from './interfaces';
4
+ export declare class ApplicationEntityInfo extends BaseInfo {
5
+ ApplicationName: string;
6
+ EntityID: number;
7
+ Sequence: number;
8
+ DefaultForNewUser: boolean;
9
+ Application: string;
10
+ Entity: string;
11
+ EntityBaseTable: string;
12
+ EntityCodeName: string;
13
+ EntityClassName: string;
14
+ EntityBaseTableCodeName: string;
15
+ private _EntityInfo;
16
+ get EntityInfo(): EntityInfo;
17
+ _setEntity(entity: EntityInfo): void;
18
+ constructor(initData?: any);
19
+ }
20
+ export declare class ApplicationInfo extends BaseInfo {
21
+ Name: string;
22
+ Description: string;
23
+ private _ApplicationEntities;
24
+ get ApplicationEntities(): ApplicationEntityInfo[];
25
+ constructor(md: IMetadataProvider, initData?: any);
26
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApplicationInfo = exports.ApplicationEntityInfo = void 0;
4
+ const baseInfo_1 = require("./baseInfo");
5
+ class ApplicationEntityInfo extends baseInfo_1.BaseInfo {
6
+ get EntityInfo() {
7
+ return this._EntityInfo;
8
+ }
9
+ _setEntity(entity) {
10
+ this._EntityInfo = entity;
11
+ }
12
+ constructor(initData = null) {
13
+ super();
14
+ this.ApplicationName = null;
15
+ this.EntityID = null;
16
+ this.Sequence = null;
17
+ this.DefaultForNewUser = null;
18
+ this.Application = null;
19
+ this.Entity = null;
20
+ this.EntityBaseTable = null;
21
+ this.EntityCodeName = null;
22
+ this.EntityClassName = null;
23
+ this.EntityBaseTableCodeName = null;
24
+ this._EntityInfo = null;
25
+ this.copyInitData(initData);
26
+ }
27
+ }
28
+ exports.ApplicationEntityInfo = ApplicationEntityInfo;
29
+ class ApplicationInfo extends baseInfo_1.BaseInfo {
30
+ get ApplicationEntities() {
31
+ return this._ApplicationEntities;
32
+ }
33
+ constructor(md, initData = null) {
34
+ super();
35
+ this.Name = null;
36
+ this.Description = null;
37
+ this._ApplicationEntities = [];
38
+ this.copyInitData(initData);
39
+ if (initData) {
40
+ let ae = initData.ApplicationEntities || initData._ApplicationEntities;
41
+ if (ae) {
42
+ const mdEntities = md.Entities;
43
+ this._ApplicationEntities = [];
44
+ for (let i = 0; i < ae.length; i++) {
45
+ //
46
+ const aei = new ApplicationEntityInfo(ae[i]);
47
+ this._ApplicationEntities.push(aei);
48
+ const match = mdEntities.find(e => e.ID == ae[i].EntityID);
49
+ if (match)
50
+ aei._setEntity(match);
51
+ }
52
+ }
53
+ }
54
+ }
55
+ }
56
+ exports.ApplicationInfo = ApplicationInfo;
57
+ //# sourceMappingURL=applicationInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applicationInfo.js","sourceRoot":"","sources":["../../src/generic/applicationInfo.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAIrC,MAAa,qBAAsB,SAAQ,mBAAQ;IAa/C,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAA;IAC3B,CAAC;IAED,UAAU,CAAC,MAAkB;QACzB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;IAC7B,CAAC;IAED,YAAa,WAAgB,IAAI;QAC7B,KAAK,EAAE,CAAA;QArBX,oBAAe,GAAW,IAAI,CAAA;QAC9B,aAAQ,GAAW,IAAI,CAAA;QACvB,aAAQ,GAAW,IAAI,CAAA;QACvB,sBAAiB,GAAY,IAAI,CAAA;QACjC,gBAAW,GAAW,IAAI,CAAA;QAC1B,WAAM,GAAW,IAAI,CAAA;QACrB,oBAAe,GAAW,IAAI,CAAA;QAC9B,mBAAc,GAAW,IAAI,CAAA;QAC7B,oBAAe,GAAW,IAAI,CAAA;QAC9B,4BAAuB,GAAW,IAAI,CAAA;QAE9B,gBAAW,GAAe,IAAI,CAAA;QAWlC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC;CACJ;AAzBD,sDAyBC;AAED,MAAa,eAAgB,SAAQ,mBAAQ;IAKzC,IAAW,mBAAmB;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IAED,YAAa,EAAqB,EAAE,WAAgB,IAAI;QACpD,KAAK,EAAE,CAAA;QATX,SAAI,GAAW,IAAI,CAAA;QACnB,gBAAW,GAAW,IAAI,CAAA;QAElB,yBAAoB,GAA4B,EAAE,CAAA;QAOtD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QAC3B,IAAI,QAAQ,EAAE;YACV,IAAI,EAAE,GAAG,QAAQ,CAAC,mBAAmB,IAAI,QAAQ,CAAC,oBAAoB,CAAC;YACvE,IAAI,EAAE,EAAE;gBACJ,MAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAC;gBAC/B,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAChC,GAAG;oBACH,MAAM,GAAG,GAAG,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC5C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBAEnC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;oBAC1D,IAAI,KAAK;wBACL,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;iBAC5B;aACJ;SACJ;IACL,CAAC;CAEJ;AA9BD,0CA8BC"}
@@ -0,0 +1,88 @@
1
+ import { EntityFieldInfo, EntityInfo, EntityFieldTSType, EntityPermissionType, RecordChange, ValidationResult, EntityRelationshipInfo } from './entityInfo';
2
+ import { EntitySaveOptions, IEntityDataProvider } from './interfaces';
3
+ import { UserInfo } from './securityInfo';
4
+ import { TransactionGroupBase } from './transactionGroup';
5
+ export declare class EntityField {
6
+ private _entityFieldInfo;
7
+ private _OldValue;
8
+ private _Value;
9
+ private _NeverSet;
10
+ get Name(): string;
11
+ get FieldType(): EntityFieldTSType;
12
+ get SQLType(): string;
13
+ get Value(): any;
14
+ get ReadOnly(): boolean;
15
+ get EntityFieldInfo(): EntityFieldInfo;
16
+ set Value(value: any);
17
+ get Dirty(): boolean;
18
+ FormatValue(decimals?: number, currency?: string): string;
19
+ Validate(): ValidationResult;
20
+ constructor(fieldInfo: EntityFieldInfo, Value?: any);
21
+ ResetOldValue(): void;
22
+ get OldValue(): any;
23
+ }
24
+ export declare class DataObjectRelatedEntityParam {
25
+ relatedEntityName: string;
26
+ filter?: string;
27
+ }
28
+ export declare class DataObjectParams {
29
+ oldValues: boolean;
30
+ omitNullValues: boolean;
31
+ omitEmptyStrings: boolean;
32
+ excludeFields: string[];
33
+ includeRelatedEntityData: boolean;
34
+ relatedEntityList: DataObjectRelatedEntityParam[];
35
+ }
36
+ export declare class BaseEntityAIActionParams {
37
+ name: string;
38
+ actionId: number;
39
+ modelId: number;
40
+ systemPrompt: string;
41
+ userMessage: string;
42
+ result: any;
43
+ }
44
+ export declare abstract class BaseEntity {
45
+ [key: string]: any;
46
+ private _EntityInfo;
47
+ private _Fields;
48
+ private _recordLoaded;
49
+ private _contextCurrentUser;
50
+ private _transactionGroup;
51
+ constructor(Entity: EntityInfo);
52
+ get TransactionGroup(): TransactionGroupBase;
53
+ set TransactionGroup(group: TransactionGroupBase);
54
+ get EntityInfo(): EntityInfo;
55
+ get Fields(): EntityField[];
56
+ GetFieldByName(fieldName: string): EntityField;
57
+ get Dirty(): boolean;
58
+ get ID(): number;
59
+ get RecordLoaded(): boolean;
60
+ Set(FieldName: string, Value: any): void;
61
+ Get(FieldName: string): any;
62
+ SetMany(object: any): void;
63
+ GetAll(oldValues?: boolean): {};
64
+ GetDataObjectJSON(params: DataObjectParams, minifyJSON?: boolean): Promise<string>;
65
+ GetDataObject(params: DataObjectParams): Promise<any>;
66
+ GetRelatedEntityData(re: EntityRelationshipInfo, filter?: string): Promise<any[]>;
67
+ private init;
68
+ set ContextCurrentUser(user: UserInfo);
69
+ get ContextCurrentUser(): UserInfo;
70
+ NewRecord(): boolean;
71
+ Save(options?: EntitySaveOptions): Promise<boolean>;
72
+ protected get ActiveUser(): UserInfo;
73
+ CheckPermissions(type: EntityPermissionType, throwError: boolean): boolean;
74
+ protected ThrowPermissionError(u: UserInfo, type: EntityPermissionType, additionalInfoMessage: string): void;
75
+ Revert(): boolean;
76
+ Load(ID: number, EntityRelationshipsToLoad?: string[]): Promise<boolean>;
77
+ LoadFromData(data: any): boolean;
78
+ private loadFieldsFromData;
79
+ Validate(): ValidationResult;
80
+ Delete(): Promise<boolean>;
81
+ BeforeEntityAIAction(params: BaseEntityAIActionParams): Promise<boolean>;
82
+ AfterEntityAIAction(params: BaseEntityAIActionParams): Promise<boolean>;
83
+ private static _globalProviderKey;
84
+ static get Provider(): IEntityDataProvider;
85
+ static set Provider(value: IEntityDataProvider);
86
+ get RecordChanges(): Promise<RecordChange[]>;
87
+ static GetRecordChanges(entityName: string, recordId: number): Promise<RecordChange[]>;
88
+ }
@@ -0,0 +1,450 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseEntity = exports.BaseEntityAIActionParams = exports.DataObjectParams = exports.DataObjectRelatedEntityParam = exports.EntityField = void 0;
4
+ const mj_global_1 = require("mj_global");
5
+ const entityInfo_1 = require("./entityInfo");
6
+ const interfaces_1 = require("./interfaces");
7
+ const metadata_1 = require("./metadata");
8
+ const runView_1 = require("../views/runView");
9
+ class EntityField {
10
+ get Name() {
11
+ return this._entityFieldInfo.Name;
12
+ }
13
+ get FieldType() {
14
+ return this._entityFieldInfo.TSType;
15
+ }
16
+ get SQLType() {
17
+ return this._entityFieldInfo.Type;
18
+ }
19
+ get Value() {
20
+ return this._Value;
21
+ }
22
+ get ReadOnly() {
23
+ return !this._entityFieldInfo.AllowUpdateAPI;
24
+ }
25
+ get EntityFieldInfo() {
26
+ return this._entityFieldInfo;
27
+ }
28
+ set Value(value) {
29
+ if (!this.ReadOnly ||
30
+ this._NeverSet /* Allow one time set of any field because BaseEntity Object passes in ReadOnly fields when we load,
31
+ after that load for a given INSTANCE of an EntityField object we never set a ReadOnly Field*/) {
32
+ this._Value = value;
33
+ if (this._NeverSet &&
34
+ this._OldValue == null &&
35
+ value != null) {
36
+ // initial value set
37
+ this._OldValue = value;
38
+ }
39
+ this._NeverSet = false;
40
+ }
41
+ }
42
+ get Dirty() {
43
+ if (this.ReadOnly)
44
+ return false;
45
+ else {
46
+ const oldNull = this._OldValue === null || this.OldValue === undefined;
47
+ const curNull = this.Value === null || this.Value === undefined;
48
+ if (oldNull && curNull)
49
+ return false; // BOTH are null or undefined, not dirty
50
+ else
51
+ return this._OldValue !== this.Value;
52
+ }
53
+ }
54
+ FormatValue(decimals = 2, currency = 'USD') {
55
+ return this.EntityFieldInfo.FormatValue(this.Value, decimals, currency);
56
+ }
57
+ Validate() {
58
+ const ef = this._entityFieldInfo;
59
+ const result = new entityInfo_1.ValidationResult();
60
+ result.Success = true; // assume success
61
+ if (!ef.ReadOnly) {
62
+ // only do validation on updatable fields
63
+ if (!ef.AllowsNull && (this.Value === null || this.Value === undefined)) {
64
+ // make sure this isn't a field that has a default value and we are inside a new record
65
+ if (ef.DefaultValue === null || ef.DefaultValue === undefined || ef.DefaultValue.trim().length === 0) {
66
+ // we have no default value, so this is an error
67
+ result.Success = false;
68
+ result.Errors.push(new entityInfo_1.ValidationErrorInfo(ef.Name, `${ef.DisplayNameOrName} cannot be null`, null));
69
+ }
70
+ else {
71
+ // we do have a default value, but our current value is null. If we are in an EXISTING record, this is an error, check the OldValue to determine this
72
+ if (this._OldValue !== null && this._OldValue !== undefined) {
73
+ result.Success = false;
74
+ result.Errors.push(new entityInfo_1.ValidationErrorInfo(ef.Name, `${ef.DisplayNameOrName} cannot be null`, null));
75
+ }
76
+ }
77
+ }
78
+ if (ef.TSType == entityInfo_1.EntityFieldTSType.String && ef.MaxLength > 0 && this.Value && this.Value.length > ef.MaxLength) {
79
+ result.Success = false;
80
+ result.Errors.push(new entityInfo_1.ValidationErrorInfo(ef.Name, `${ef.DisplayNameOrName} cannot be longer than ${ef.MaxLength} characters. Current value is ${this.Value.length} characters`, this.Value));
81
+ }
82
+ if (ef.TSType == entityInfo_1.EntityFieldTSType.Date && (this.Value !== null && this.Value !== undefined && !(this.Value instanceof Date))) {
83
+ // invalid non-null date, but that is okay if we are a new record and we have a default value
84
+ result.Success = false;
85
+ result.Errors.push(new entityInfo_1.ValidationErrorInfo(ef.Name, `${this.Value} is not a valid date for ${ef.DisplayNameOrName}`, this.Value));
86
+ }
87
+ }
88
+ return result;
89
+ }
90
+ constructor(fieldInfo, Value) {
91
+ this._NeverSet = true;
92
+ this._entityFieldInfo = fieldInfo;
93
+ if (Value)
94
+ this.Value = Value;
95
+ else if (fieldInfo.DefaultValue) {
96
+ this.Value = fieldInfo.DefaultValue;
97
+ this._NeverSet = true; // set this back to true because we are setting the default value and we want to be able to set this ONCE from BaseEntity when we load
98
+ }
99
+ else {
100
+ this.Value = null; // we need to set the value to null instead of being undefined as the value is defined, it is NULL
101
+ this._NeverSet = true; // set this back to true because we are setting the value to null;
102
+ }
103
+ }
104
+ ResetOldValue() {
105
+ this._OldValue = this.Value;
106
+ }
107
+ get OldValue() {
108
+ return this._OldValue;
109
+ }
110
+ }
111
+ exports.EntityField = EntityField;
112
+ class DataObjectRelatedEntityParam {
113
+ }
114
+ exports.DataObjectRelatedEntityParam = DataObjectRelatedEntityParam;
115
+ class DataObjectParams {
116
+ constructor() {
117
+ this.oldValues = false;
118
+ this.omitNullValues = true;
119
+ this.omitEmptyStrings = true;
120
+ this.excludeFields = null;
121
+ this.includeRelatedEntityData = true;
122
+ this.relatedEntityList = null;
123
+ }
124
+ }
125
+ exports.DataObjectParams = DataObjectParams;
126
+ class BaseEntityAIActionParams {
127
+ }
128
+ exports.BaseEntityAIActionParams = BaseEntityAIActionParams;
129
+ class BaseEntity {
130
+ constructor(Entity) {
131
+ this._Fields = [];
132
+ this._recordLoaded = false;
133
+ this._contextCurrentUser = null;
134
+ this._transactionGroup = null;
135
+ this._EntityInfo = Entity;
136
+ this.init();
137
+ }
138
+ get TransactionGroup() {
139
+ return this._transactionGroup;
140
+ }
141
+ set TransactionGroup(group) {
142
+ this._transactionGroup = group;
143
+ }
144
+ get EntityInfo() {
145
+ return this._EntityInfo;
146
+ }
147
+ get Fields() {
148
+ return this._Fields;
149
+ }
150
+ GetFieldByName(fieldName) {
151
+ return this.Fields.find(f => f.Name.trim().toLowerCase() == fieldName.trim().toLowerCase());
152
+ }
153
+ get Dirty() {
154
+ return !this.ID || this.ID <= 0 || this.Fields.some(f => f.Dirty);
155
+ }
156
+ get ID() {
157
+ return this.Get('ID');
158
+ }
159
+ get RecordLoaded() {
160
+ return this._recordLoaded;
161
+ }
162
+ Set(FieldName, Value) {
163
+ let field = this.Fields.find(f => f.Name == FieldName);
164
+ if (field != null) {
165
+ field.Value = Value;
166
+ }
167
+ }
168
+ Get(FieldName) {
169
+ let field = this.Fields.find(f => f.Name == FieldName);
170
+ if (field != null) {
171
+ // if the field is a date and the value is a string, convert it to a date
172
+ if (field.EntityFieldInfo.TSType == entityInfo_1.EntityFieldTSType.Date && (typeof field.Value === 'string' || typeof field.Value === 'number')) {
173
+ field.Value = new Date(field.Value);
174
+ }
175
+ return field.Value;
176
+ }
177
+ return null;
178
+ }
179
+ SetMany(object) {
180
+ for (let key in object) {
181
+ this.Set(key, object[key]);
182
+ }
183
+ }
184
+ GetAll(oldValues = false) {
185
+ let obj = {};
186
+ for (let field of this.Fields) {
187
+ obj[field.Name] = oldValues ? field.OldValue : field.Value;
188
+ if (field.EntityFieldInfo.TSType == entityInfo_1.EntityFieldTSType.Date && obj[field.Name] && !(obj[field.Name] instanceof Date)) {
189
+ obj[field.Name] = new Date(obj[field.Name]); // a timestamp, convert to JS Date Object
190
+ }
191
+ }
192
+ return obj;
193
+ }
194
+ async GetDataObjectJSON(params, minifyJSON = true) {
195
+ const obj = await this.GetDataObject(params);
196
+ if (minifyJSON)
197
+ return JSON.stringify(obj);
198
+ else
199
+ return JSON.stringify(obj, null, 2);
200
+ }
201
+ async GetDataObject(params) {
202
+ // first, get the object from GetAll
203
+ const obj = this.GetAll(params.oldValues);
204
+ // next, check each value and if it is null or empty string, remove it if those options were set
205
+ for (let key in obj) {
206
+ const v = obj[key];
207
+ if (params.omitNullValues && v === null)
208
+ delete obj[key]; // null value, and caller didn't want null values
209
+ else if (params.omitEmptyStrings && (v !== null && typeof v === 'string' && v.trim().length === 0))
210
+ delete obj[key]; // blank string, and caller didn't want blank strings
211
+ else if (params.excludeFields && params.excludeFields.indexOf(key) >= 0)
212
+ delete obj[key]; // caller asked to not get this field
213
+ }
214
+ if (params.includeRelatedEntityData) {
215
+ // now, get the related entity data
216
+ for (let i = 0; i < this._EntityInfo.RelatedEntities.length; i++) {
217
+ const re = this._EntityInfo.RelatedEntities[i];
218
+ const pre = params.relatedEntityList ? params.relatedEntityList.find(r => r.relatedEntityName === re.RelatedEntity) : null;
219
+ if (pre) {
220
+ // pre now has the param that matches the related entity (re) that we are looking at
221
+ // we are now here because either the caller didn't provide a list of entities to include
222
+ // (which means to include all of 'em), or they did and this entity is in the list
223
+ const reData = await this.GetRelatedEntityData(re, pre.filter);
224
+ if (reData)
225
+ obj[re.RelatedEntity] = reData; // got some data (or an empty array) back, add it to the object
226
+ }
227
+ }
228
+ }
229
+ return obj;
230
+ }
231
+ async GetRelatedEntityData(re, filter = null) {
232
+ // we need to query the database to get related entity info
233
+ const params = entityInfo_1.EntityInfo.BuildRelationshipViewParams(this, re, filter);
234
+ const rv = new runView_1.RunView();
235
+ const result = await rv.RunView(params, this._contextCurrentUser);
236
+ if (result && result.Success)
237
+ return result.Results;
238
+ }
239
+ init() {
240
+ this._recordLoaded = false;
241
+ this._Fields = [];
242
+ if (this.EntityInfo)
243
+ for (let field of this.EntityInfo.Fields) {
244
+ this.Fields.push(new EntityField(field));
245
+ }
246
+ }
247
+ set ContextCurrentUser(user) {
248
+ this._contextCurrentUser = user;
249
+ }
250
+ get ContextCurrentUser() {
251
+ return this._contextCurrentUser;
252
+ }
253
+ NewRecord() {
254
+ this.init();
255
+ return true;
256
+ }
257
+ async Save(options) {
258
+ const _options = options ? options : new interfaces_1.EntitySaveOptions();
259
+ const type = this.ID && this.ID > 0 ? entityInfo_1.EntityPermissionType.Update : entityInfo_1.EntityPermissionType.Create;
260
+ this.CheckPermissions(type, true); // this will throw an error and exit out if we don't have permission
261
+ if (_options.IgnoreDirtyState || this.Dirty) {
262
+ if (BaseEntity.Provider == null) {
263
+ throw new Error('No provider set');
264
+ }
265
+ else {
266
+ const valResult = this.Validate();
267
+ if (valResult.Success) {
268
+ const data = await BaseEntity.Provider.Save(this, this.ActiveUser, _options);
269
+ if (data) {
270
+ this.init(); // wipe out the current data to flush out the DIRTY flags, load the ID as part of this too
271
+ this.loadFieldsFromData(data);
272
+ return true;
273
+ }
274
+ else
275
+ return false;
276
+ }
277
+ else {
278
+ throw valResult; // pass this along to the caller
279
+ }
280
+ }
281
+ }
282
+ else
283
+ return true; // nothing to save since we're not dirty
284
+ }
285
+ get ActiveUser() {
286
+ return this.ContextCurrentUser || metadata_1.Metadata.Provider.CurrentUser; // use the context user ahead of the Provider.Current User - this is for SERVER side ops where the user changes per request
287
+ }
288
+ CheckPermissions(type, throwError) {
289
+ const u = this.ActiveUser;
290
+ if (!u)
291
+ throw new Error('No user set - either the context user for the entity object must be set, or the Metadata.Provider.CurrentUser must be set');
292
+ const permissions = this.EntityInfo.GetUserPermisions(u);
293
+ let bAllowed = false;
294
+ switch (type) {
295
+ case entityInfo_1.EntityPermissionType.Create:
296
+ bAllowed = permissions.CanCreate;
297
+ break;
298
+ case entityInfo_1.EntityPermissionType.Read:
299
+ bAllowed = permissions.CanRead;
300
+ break;
301
+ case entityInfo_1.EntityPermissionType.Update:
302
+ bAllowed = permissions.CanUpdate;
303
+ break;
304
+ case entityInfo_1.EntityPermissionType.Delete:
305
+ bAllowed = permissions.CanDelete;
306
+ break;
307
+ }
308
+ if (!bAllowed && throwError) {
309
+ this.ThrowPermissionError(u, type, null);
310
+ return false; // this never happens due to the thrown error but have it anyway to avoid strict compile errors
311
+ }
312
+ else
313
+ return bAllowed;
314
+ }
315
+ ThrowPermissionError(u, type, additionalInfoMessage) {
316
+ throw new Error(`User: ${u.Name} (ID: ${u.ID}, Email: ${u.Email})
317
+ Does NOT have permission to ${entityInfo_1.EntityPermissionType[type]} ${this.EntityInfo.Name} records.
318
+ If you believe this is an error, please contact your system administrator.${additionalInfoMessage ? '\nAdditional Information: ' + additionalInfoMessage : ''}}`);
319
+ }
320
+ Revert() {
321
+ if (this.Dirty) {
322
+ for (let field of this.Fields) {
323
+ field.Value = field.OldValue;
324
+ }
325
+ }
326
+ return true;
327
+ }
328
+ async Load(ID, EntityRelationshipsToLoad = null) {
329
+ if (BaseEntity.Provider == null) {
330
+ throw new Error('No provider set');
331
+ }
332
+ else {
333
+ const start = new Date().getTime();
334
+ this.CheckPermissions(entityInfo_1.EntityPermissionType.Read, true); // this will throw an error and exit out if we don't have permission
335
+ if (this.ID !== null)
336
+ this.init(); // wipe out current data if we're loading on top of existing record
337
+ const data = await BaseEntity.Provider.Load(this, ID, EntityRelationshipsToLoad, this.ActiveUser);
338
+ this.loadFieldsFromData(data);
339
+ if (EntityRelationshipsToLoad) {
340
+ for (let relationship of EntityRelationshipsToLoad) {
341
+ if (data[relationship]) {
342
+ // we have some data, put into an array for ease of access
343
+ this[relationship] = data[relationship];
344
+ }
345
+ }
346
+ }
347
+ this._recordLoaded = true;
348
+ // const end = new Date().getTime();
349
+ // const time = end - start;
350
+ // LogStatus(`BaseEntity.Load(${this.EntityInfo.Name}, ID: ${ID}, EntityRelationshipsToLoad.length: ${EntityRelationshipsToLoad ? EntityRelationshipsToLoad.length : 0 }), took ${time}ms`);
351
+ return true;
352
+ }
353
+ return false;
354
+ }
355
+ LoadFromData(data) {
356
+ console.warn('LoadFromData should ONLY be used when you are sure that the data you are loading is current in the database, if you are not sure if your data is current, use Load() instead');
357
+ this.loadFieldsFromData(data); // just use the internal method, but the point of this wrapper is to emit the above warning to the console for devs to see.
358
+ return true;
359
+ }
360
+ loadFieldsFromData(data) {
361
+ if (data) {
362
+ const keys = Object.keys(data);
363
+ for (let key of keys) {
364
+ this.Set(key, data[key]);
365
+ }
366
+ return true;
367
+ }
368
+ }
369
+ Validate() {
370
+ const result = new entityInfo_1.ValidationResult();
371
+ result.Success = true; // start off with assumption of success, if any field fails, we'll set this to false
372
+ for (let field of this.Fields) {
373
+ const err = field.Validate();
374
+ err.Errors.forEach(element => {
375
+ result.Errors.push(element);
376
+ });
377
+ result.Success = result.Success && err.Success; // if any field fails, we fail, but keep going to get all of the validation messages
378
+ }
379
+ return result;
380
+ }
381
+ async Delete() {
382
+ if (BaseEntity.Provider == null) {
383
+ throw new Error('No provider set');
384
+ }
385
+ else {
386
+ this.CheckPermissions(entityInfo_1.EntityPermissionType.Delete, true); // this will throw an error and exit out if we don't have permission
387
+ if (await BaseEntity.Provider.Delete(this, this.ActiveUser)) {
388
+ // record deleted correctly
389
+ // wipe out the current data to flush out the DIRTY flags by calling NewRecord()
390
+ this.NewRecord();
391
+ return true;
392
+ }
393
+ else // record didn't save, return false, but also don't wipe out the entity like we do if the Delete() worked
394
+ return false;
395
+ }
396
+ }
397
+ /*
398
+ Called before an Action is executed by the AI Engine
399
+ This is intended to be overriden by subclass as needed, these methods called at the right time by the execution context
400
+
401
+ **/
402
+ async BeforeEntityAIAction(params) {
403
+ return true; // default implementation does nothing
404
+ }
405
+ /*
406
+ Called after an Action is executed by the AI Engine
407
+ **/
408
+ async AfterEntityAIAction(params) {
409
+ return true; // default implementation does nothing
410
+ }
411
+ static get Provider() {
412
+ const g = mj_global_1.MJGlobal.Instance.GetGlobalObjectStore();
413
+ if (g)
414
+ return g[BaseEntity._globalProviderKey];
415
+ else
416
+ throw new Error('No global object store, so we cant get the static provider');
417
+ }
418
+ static set Provider(value) {
419
+ const g = mj_global_1.MJGlobal.Instance.GetGlobalObjectStore();
420
+ if (g)
421
+ g[BaseEntity._globalProviderKey] = value;
422
+ else
423
+ throw new Error('No global object store, so we cant set the static provider');
424
+ }
425
+ get RecordChanges() {
426
+ if (this.ID && this.ID > 0)
427
+ return BaseEntity.GetRecordChanges(this.EntityInfo.Name, this.ID);
428
+ else
429
+ throw new Error('Cannot get record changes for a record that has not been saved yet');
430
+ }
431
+ static async GetRecordChanges(entityName, recordId) {
432
+ if (BaseEntity.Provider === null) {
433
+ throw new Error('No provider set');
434
+ }
435
+ else {
436
+ const results = await BaseEntity.Provider.GetRecordChanges(entityName, recordId);
437
+ if (results) {
438
+ const changes = [];
439
+ for (let result of results)
440
+ changes.push(new entityInfo_1.RecordChange(result));
441
+ return changes;
442
+ }
443
+ else
444
+ return [];
445
+ }
446
+ }
447
+ }
448
+ BaseEntity._globalProviderKey = 'MJ_BaseEntityProvider';
449
+ exports.BaseEntity = BaseEntity;
450
+ //# sourceMappingURL=baseEntity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseEntity.js","sourceRoot":"","sources":["../../src/generic/baseEntity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare abstract class BaseInfo {
2
+ /**
3
+ * Primary Key
4
+ */
5
+ ID: number;
6
+ protected copyInitData(initData: any): void;
7
+ protected stripContainingParens(value: string): string;
8
+ }