@trudb/tru-common-lib 0.1.551 → 0.1.552

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.
@@ -0,0 +1,18 @@
1
+ export class TruServerError {
2
+ id;
3
+ type;
4
+ code;
5
+ message;
6
+ stackTrace;
7
+ status;
8
+ constructor(error) {
9
+ let parsedError = JSON.parse(error.error);
10
+ this.id = parsedError.$id;
11
+ this.type = parsedError.$type;
12
+ this.code = parsedError.Code;
13
+ this.message = parsedError.Message;
14
+ this.stackTrace = parsedError.StackTrace;
15
+ this.status = error.status;
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXNlcnZlci1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY2xhc3Nlcy90cnUtc2VydmVyLWVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLEVBQUUsQ0FBUztJQUNYLElBQUksQ0FBUztJQUNiLElBQUksQ0FBUztJQUNiLE9BQU8sQ0FBUztJQUNoQixVQUFVLENBQVM7SUFDbkIsTUFBTSxDQUFTO0lBRWYsWUFBWSxLQUF3QjtRQUNsQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsRUFBRSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgVHJ1UHJvcGVydHlDb25maWdCYXNlIH0gZnJvbSAnLi4vYmFzZS1jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctYmFzZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgVHJ1U2VydmVyRXJyb3Ige1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIGNvZGU6IG51bWJlcjtcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgc3RhY2tUcmFjZTogc3RyaW5nO1xyXG4gIHN0YXR1czogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgIGxldCBwYXJzZWRFcnJvciA9IEpTT04ucGFyc2UoZXJyb3IuZXJyb3IpO1xyXG4gICAgdGhpcy5pZCA9IHBhcnNlZEVycm9yLiRpZDtcclxuICAgIHRoaXMudHlwZSA9IHBhcnNlZEVycm9yLiR0eXBlO1xyXG4gICAgdGhpcy5jb2RlID0gcGFyc2VkRXJyb3IuQ29kZTtcclxuICAgIHRoaXMubWVzc2FnZSA9IHBhcnNlZEVycm9yLk1lc3NhZ2U7XHJcbiAgICB0aGlzLnN0YWNrVHJhY2UgPSBwYXJzZWRFcnJvci5TdGFja1RyYWNlO1xyXG4gICAgdGhpcy5zdGF0dXMgPSBlcnJvci5zdGF0dXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  import { Injectable } from "@angular/core";
2
2
  import { TruErrorDialog } from "../components/error-dialog/tru-error-dialog";
3
3
  import { TruErrorDialogConfig } from "../components/error-dialog/classes/tru-error-dialog-config";
4
+ import { TruServerError } from "../classes/tru-server-error";
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/common/http";
6
7
  import * as i2 from "@angular/material/dialog";
@@ -24,24 +25,35 @@ export class TruErrorManager {
24
25
  this.baseUrl = appEnvironment.appUri;
25
26
  this.appName = appEnvironment.appName;
26
27
  }
27
- parseErrorMessage(error) {
28
- if (error.error && error.error.message) {
29
- return error.error.message;
30
- }
31
- else if (error.error && typeof error.error === 'string') {
32
- return error.error;
33
- }
34
- else {
35
- return `Server returned code ${error.status}, body was: ${error.error}`;
36
- }
37
- }
38
- handleError = (error) => {
39
- if (error.type.toString() === 'tru-db-custom-exception') {
28
+ logErrorEvent = (message, context, area) => {
29
+ area = area || 'unknown';
30
+ console.log('[' + area + '|' + context + '] ' + message);
31
+ var logEvent = {
32
+ eventType: 'Error',
33
+ eventDate: new Date(),
34
+ applicationName: this.appName,
35
+ applicationUrl: this.baseUrl,
36
+ applicationArea: area,
37
+ context: context,
38
+ message: message
39
+ };
40
+ this.http
41
+ .post(`${this.baseUrl}/api/log/logevent`, logEvent)
42
+ .subscribe(() => {
43
+ }, (ex) => {
44
+ console.log('Unable to log error to server. ' + ex);
45
+ });
46
+ };
47
+ handleClientSideError = (error) => {
48
+ };
49
+ handleServerSideError = (error) => {
50
+ let serverError = new TruServerError(error);
51
+ if (serverError.type === 'tru-db-custom-exception') {
40
52
  //var service = $injector.get(error.httpResponse.data.serviceName);
41
53
  //var exceptionData = error.httpResponse.data.data;
42
54
  //service(exceptionData);
43
55
  }
44
- else if (error.type.toString().indexOf('TruDbRequireValidChoiceException') !== -1) {
56
+ else if (serverError.type.indexOf('TruDbRequireValidChoiceException') !== -1) {
45
57
  let dialogConfig = new TruErrorDialogConfig('Require Valid Choice Exception', error.message);
46
58
  this.dialog.open(TruErrorDialog, {
47
59
  disableClose: true,
@@ -50,7 +62,7 @@ export class TruErrorManager {
50
62
  data: dialogConfig
51
63
  });
52
64
  }
53
- else if (error.type.toString().indexOf('DuplicateKeyError') !== -1) {
65
+ else if (serverError.type.indexOf('DuplicateKeyError') !== -1) {
54
66
  let dialogConfig = new TruErrorDialogConfig('Duplicate Key Error', error.message
55
67
  .replace('Cannot insert duplicate key row in object', 'Cannot insert duplicate value in table')
56
68
  .replace('dbo.', '')
@@ -63,7 +75,7 @@ export class TruErrorManager {
63
75
  data: dialogConfig
64
76
  });
65
77
  }
66
- else if (error.type.toString().indexOf('OptimisticLockViolation') !== -1) {
78
+ else if (serverError.type.indexOf('OptimisticLockViolation') !== -1) {
67
79
  let dialogConfig = new TruErrorDialogConfig('Concurrent saves not allowed', 'Please review any changes and save again.');
68
80
  this.dialog.open(TruErrorDialog, {
69
81
  disableClose: true,
@@ -82,28 +94,12 @@ export class TruErrorManager {
82
94
  //this.uiNotification.showErrorDialog(message);
83
95
  //this.logErrorEvent(message);
84
96
  }
85
- //if (window.appInsights) window.appInsights.trackException(error, null, {
86
- // 'User': dataService.activeUser.username
87
- //});
88
97
  };
89
- logErrorEvent = (message, context, area) => {
90
- area = area || 'unknown';
91
- console.log('[' + area + '|' + context + '] ' + message);
92
- var logEvent = {
93
- eventType: 'Error',
94
- eventDate: new Date(),
95
- applicationName: this.appName,
96
- applicationUrl: this.baseUrl,
97
- applicationArea: area,
98
- context: context,
99
- message: message
100
- };
101
- this.http
102
- .post(`${this.baseUrl}/api/log/logevent`, logEvent)
103
- .subscribe(() => {
104
- }, (ex) => {
105
- console.log('Unable to log error to server. ' + ex);
106
- });
98
+ handleError = (error) => {
99
+ if (error.type)
100
+ this.handleClientSideError(error);
101
+ else
102
+ this.handleServerSideError(error);
107
103
  };
108
104
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, deps: [{ token: i1.HttpClient }, { token: i2.MatDialog }, { token: i3.TruTextManager }, { token: i4.TruUiNotification }, { token: i5.TruAppEnvironment }], target: i0.ɵɵFactoryTarget.Injectable });
109
105
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, providedIn: 'root' });
@@ -114,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
114
110
  providedIn: 'root',
115
111
  }]
116
112
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.MatDialog }, { type: i3.TruTextManager }, { type: i4.TruUiNotification }, { type: i5.TruAppEnvironment }] });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWVycm9yLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL3NlcnZpY2VzL3RydS1lcnJvci1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDOzs7Ozs7O0FBUWxHLE1BQU0sT0FBTyxlQUFlO0lBS2hCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFSRixPQUFPLENBQVM7SUFDaEIsT0FBTyxDQUFTO0lBRXhCLFlBQ1UsSUFBZ0IsRUFDaEIsTUFBaUIsRUFDakIsV0FBMkIsRUFDM0IsY0FBaUMsRUFDakMsY0FBaUM7UUFKakMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUM7SUFDeEMsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQXdCO1FBQ2hELElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDN0IsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7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SUFBSSxHQUFHLEdBQUcsR0FBRyxPQUFPLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELElBQUksUUFBUSxHQUFHO1lBQ2IsU0FBUyxFQUFFLE9BQU87WUFDbEIsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ3JCLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTztZQUM3QixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDNUIsZUFBZSxFQUFFLElBQUk7WUFDckIsT0FBTyxFQUFFLE9BQU87WUFDaEIsT0FBTyxFQUFFLE9BQU87U0FDakIsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJO2FBQ04sSUFBSSxDQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sbUJBQW1CLEVBQUUsUUFBUSxDQUFDO2FBQ3ZELFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFFaEIsQ0FBQyxFQUFFLENBQUMsRUFBTyxFQUFFLEVBQUU7WUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFBO3VHQXpHVSxlQUFlOzJHQUFmLGVBQWUsY0FGZCxNQUFNOzsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBUcnVVaU5vdGlmaWNhdGlvbiB9IGZyb20gXCIuL3RydS11aS1ub3RpZmljYXRpb25cIjtcclxuaW1wb3J0IHsgVHJ1VGV4dE1hbmFnZXIgfSBmcm9tIFwiLi90cnUtdGV4dC1tYW5hZ2VyXCI7XHJcbmltcG9ydCB7IFRydUVycm9yRGlhbG9nIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZXJyb3ItZGlhbG9nL3RydS1lcnJvci1kaWFsb2dcIjtcclxuaW1wb3J0IHsgVHJ1RXJyb3JEaWFsb2dDb25maWcgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9lcnJvci1kaWFsb2cvY2xhc3Nlcy90cnUtZXJyb3ItZGlhbG9nLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSBcIi4vdHJ1LWFwcC1lbnZpcm9ubWVudFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRydUVycm9yTWFuYWdlciB7XHJcbiAgcHJpdmF0ZSBiYXNlVXJsOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBhcHBOYW1lOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgdGV4dE1hbmFnZXI6IFRydVRleHRNYW5hZ2VyLFxyXG4gICAgcHJpdmF0ZSB1aU5vdGlmaWNhdGlvbjogVHJ1VWlOb3RpZmljYXRpb24sXHJcbiAgICBwcml2YXRlIGFwcEVudmlyb25tZW50OiBUcnVBcHBFbnZpcm9ubWVudCkge1xyXG4gICAgdGhpcy5iYXNlVXJsID0gYXBwRW52aXJvbm1lbnQuYXBwVXJpO1xyXG4gICAgdGhpcy5hcHBOYW1lID0gYXBwRW52aXJvbm1lbnQuYXBwTmFtZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFyc2VFcnJvck1lc3NhZ2UoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKTogc3RyaW5nIHtcclxuICAgIGlmIChlcnJvci5lcnJvciAmJiBlcnJvci5lcnJvci5tZXNzYWdlKSB7XHJcbiAgICAgIHJldHVybiBlcnJvci5lcnJvci5tZXNzYWdlO1xyXG4gICAgfSBlbHNlIGlmIChlcnJvci5lcnJvciAmJiB0eXBlb2YgZXJyb3IuZXJyb3IgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiBlcnJvci5lcnJvcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBgU2VydmVyIHJldHVybmVkIGNvZGUgJHtlcnJvci5zdGF0dXN9LCBib2R5IHdhczogJHtlcnJvci5lcnJvcn1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRXJyb3IgPSAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICBpZiAoZXJyb3IudHlwZS50b1N0cmluZygpID09PSAndHJ1LWRiLWN1c3RvbS1leGNlcHRpb24nKSB7XHJcbiAgICAgIC8vdmFyIHNlcnZpY2UgPSAkaW5qZWN0b3IuZ2V0KGVycm9yLmh0dHBSZXNwb25zZS5kYXRhLnNlcnZpY2VOYW1lKTtcclxuICAgICAgLy92YXIgZXhjZXB0aW9uRGF0YSA9IGVycm9yLmh0dHBSZXNwb25zZS5kYXRhLmRhdGE7XHJcbiAgICAgIC8vc2VydmljZShleGNlcHRpb25EYXRhKTtcclxuICAgIH0gZWxzZSBpZiAoZXJyb3IudHlwZS50b1N0cmluZygpLmluZGV4T2YoJ1RydURiUmVxdWlyZVZhbGlkQ2hvaWNlRXhjZXB0aW9uJykgIT09IC0xKSB7XHJcblxyXG4gICAgICBsZXQgZGlhbG9nQ29uZmlnID0gbmV3IFRydUVycm9yRGlhbG9nQ29uZmlnKFxyXG4gICAgICAgICdSZXF1aXJlIFZhbGlkIENob2ljZSBFeGNlcHRpb24nLFxyXG4gICAgICAgIGVycm9yLm1lc3NhZ2UpO1xyXG5cclxuICAgICAgdGhpcy5kaWFsb2cub3BlbihUcnVFcnJvckRpYWxvZywge1xyXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICBtaW5XaWR0aDogXCI0MDBweFwiLFxyXG4gICAgICAgIG1heFdpZHRoOiBcIjYwMHB4XCIsXHJcbiAgICAgICAgZGF0YTogZGlhbG9nQ29uZmlnXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChlcnJvci50eXBlLnRvU3RyaW5nKCkuaW5kZXhPZignRHVwbGljYXRlS2V5RXJyb3InKSAhPT0gLTEpIHtcclxuXHJcbiAgICAgIGxldCBkaWFsb2dDb25maWcgPSBuZXcgVHJ1RXJyb3JEaWFsb2dDb25maWcoXHJcbiAgICAgICAgJ0R1cGxpY2F0ZSBLZXkgRXJyb3InLFxyXG4gICAgICAgIGVycm9yLm1lc3NhZ2VcclxuICAgICAgICAgIC5yZXBsYWNlKCdDYW5ub3QgaW5zZXJ0IGR1cGxpY2F0ZSBrZXkgcm93IGluIG9iamVjdCcsICdDYW5ub3QgaW5zZXJ0IGR1cGxpY2F0ZSB2YWx1ZSBpbiB0YWJsZScpXHJcbiAgICAgICAgICAucmVwbGFjZSgnZGJvLicsICcnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ1VJWF8nLCAnJylcclxuICAgICAgICAgIC5yZXBsYWNlKCdUaGUgc3RhdGVtZW50IGhhcyBiZWVuIHRlcm1pbmF0ZWQuJywgJycpKTtcclxuXHJcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4oVHJ1RXJyb3JEaWFsb2csIHtcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgbWluV2lkdGg6IFwiNDAwcHhcIixcclxuICAgICAgICBtYXhXaWR0aDogXCI2MDBweFwiLFxyXG4gICAgICAgIGRhdGE6IGRpYWxvZ0NvbmZpZ1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKGVycm9yLnR5cGUudG9TdHJpbmcoKS5pbmRleE9mKCdPcHRpbWlzdGljTG9ja1Zpb2xhdGlvbicpICE9PSAtMSkge1xyXG5cclxuICAgICAgbGV0IGRpYWxvZ0NvbmZpZyA9IG5ldyBUcnVFcnJvckRpYWxvZ0NvbmZpZyhcclxuICAgICAgICAnQ29uY3VycmVudCBzYXZlcyBub3QgYWxsb3dlZCcsXHJcbiAgICAgICAgJ1BsZWFzZSByZXZpZXcgYW55IGNoYW5nZXMgYW5kIHNhdmUgYWdhaW4uJyk7XHJcblxyXG4gICAgICB0aGlzLmRpYWxvZy5vcGVuKFRydUVycm9yRGlhbG9nLCB7XHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgIG1pbldpZHRoOiBcIjQwMHB4XCIsXHJcbiAgICAgICAgbWF4V2lkdGg6IFwiNjAwcHhcIixcclxuICAgICAgICBkYXRhOiBkaWFsb2dDb25maWdcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yLnR5cGUudG9TdHJpbmcoKS5sYXN0SW5kZXhPZignVHJ1REIuRWZNc3NxbC5SdW50aW1lLkRhdGFFcnJvcicsIDApID09PSAwKSB7XHJcblxyXG4gICAgICAvL3RoaXMudWlOb3RpZmljYXRpb24uZXJyb3IoXHJcbiAgICAgIC8vICB0aGlzLnRleHRNYW5hZ2VyLmZtdERhdGFFcnJvcihlcnJvci5odHRwUmVzcG9uc2UuZGF0YS5EZXRhaWwuJHR5cGUpLFxyXG4gICAgICAvLyAgW3RoaXMudGV4dE1hbmFnZXIuZm10RXhjZXB0aW9uVG9TaG93KGVycm9yLmh0dHBSZXNwb25zZS5kYXRhLkV4Y2VwdGlvbildKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy92YXIgbWVzc2FnZSA9IHRoaXMudGV4dE1hbmFnZXIuZm10RXJyb3JUb1Nob3coZXJyb3IpO1xyXG4gICAgICAvL3RoaXMudWlOb3RpZmljYXRpb24uc2hvd0Vycm9yRGlhbG9nKG1lc3NhZ2UpO1xyXG4gICAgICAvL3RoaXMubG9nRXJyb3JFdmVudChtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICAvL2lmICh3aW5kb3cuYXBwSW5zaWdodHMpIHdpbmRvdy5hcHBJbnNpZ2h0cy50cmFja0V4Y2VwdGlvbihlcnJvciwgbnVsbCwge1xyXG4gICAgLy8gICdVc2VyJzogZGF0YVNlcnZpY2UuYWN0aXZlVXNlci51c2VybmFtZVxyXG4gICAgLy99KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9nRXJyb3JFdmVudCA9IChtZXNzYWdlOiBzdHJpbmcsIGNvbnRleHQ6IHN0cmluZywgYXJlYTogc3RyaW5nKSA9PiB7XHJcbiAgICBhcmVhID0gYXJlYSB8fCAndW5rbm93bic7XHJcbiAgICBjb25zb2xlLmxvZygnWycgKyBhcmVhICsgJ3wnICsgY29udGV4dCArICddICcgKyBtZXNzYWdlKTtcclxuICAgIHZhciBsb2dFdmVudCA9IHtcclxuICAgICAgZXZlbnRUeXBlOiAnRXJyb3InLFxyXG4gICAgICBldmVudERhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgIGFwcGxpY2F0aW9uTmFtZTogdGhpcy5hcHBOYW1lLFxyXG4gICAgICBhcHBsaWNhdGlvblVybDogdGhpcy5iYXNlVXJsLFxyXG4gICAgICBhcHBsaWNhdGlvbkFyZWE6IGFyZWEsXHJcbiAgICAgIGNvbnRleHQ6IGNvbnRleHQsXHJcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2VcclxuICAgIH07XHJcbiAgICB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9L2FwaS9sb2cvbG9nZXZlbnRgLCBsb2dFdmVudClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgIH0sIChleDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1VuYWJsZSB0byBsb2cgZXJyb3IgdG8gc2VydmVyLiAnICsgZXgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWVycm9yLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL3NlcnZpY2VzL3RydS1lcnJvci1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBSWxHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7OztBQUs3RCxNQUFNLE9BQU8sZUFBZTtJQUtoQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBUkYsT0FBTyxDQUFTO0lBQ2hCLE9BQU8sQ0FBUztJQUV4QixZQUNVLElBQWdCLEVBQ2hCLE1BQWlCLEVBQ2pCLFdBQTJCLEVBQzNCLGNBQWlDLEVBQ2pDLGNBQWlDO1FBSmpDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxhQUFhLEdBQUcsQ0FBQyxPQUFlLEVBQUUsT0FBZSxFQUFFLElBQVksRUFBRSxFQUFFO1FBQ3pFLElBQUksR0FBRyxJQUFJLElBQUksU0FBUyxDQUFDO1FBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsT0FBTyxHQUFHLElBQUksR0FBRyxP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SSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUV6Riw0QkFBNEI7WUFDNUIsd0VBQXdFO1lBQ3hFLDZFQUE2RTtRQUMvRSxDQUFDO2FBQU0sQ0FBQztZQUNOLHVEQUF1RDtZQUN2RCwrQ0FBK0M7WUFDL0MsOEJBQThCO1FBQ2hDLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxXQUFXLEdBQUcsQ0FBQyxLQUF3QixFQUFFLEVBQUU7UUFDekMsSUFBSSxLQUFLLENBQUMsSUFBSTtZQUNaLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQzs7WUFFbEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQTt1R0F2R1UsZUFBZTsyR0FBZixlQUFlLGNBRmQsTUFBTTs7MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tIFwiLi90cnUtdWktbm90aWZpY2F0aW9uXCI7XHJcbmltcG9ydCB7IFRydVRleHRNYW5hZ2VyIH0gZnJvbSBcIi4vdHJ1LXRleHQtbWFuYWdlclwiO1xyXG5pbXBvcnQgeyBUcnVFcnJvckRpYWxvZyB9IGZyb20gXCIuLi9jb21wb25lbnRzL2Vycm9yLWRpYWxvZy90cnUtZXJyb3ItZGlhbG9nXCI7XHJcbmltcG9ydCB7IFRydUVycm9yRGlhbG9nQ29uZmlnIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZXJyb3ItZGlhbG9nL2NsYXNzZXMvdHJ1LWVycm9yLWRpYWxvZy1jb25maWdcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBUcnVBcHBFbnZpcm9ubWVudCB9IGZyb20gXCIuL3RydS1hcHAtZW52aXJvbm1lbnRcIjtcclxuaW1wb3J0IHsgVHJ1U2VydmVyRXJyb3IgfSBmcm9tIFwiLi4vY2xhc3Nlcy90cnUtc2VydmVyLWVycm9yXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1RXJyb3JNYW5hZ2VyIHtcclxuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZztcclxuICBwcml2YXRlIGFwcE5hbWU6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0ZXh0TWFuYWdlcjogVHJ1VGV4dE1hbmFnZXIsXHJcbiAgICBwcml2YXRlIHVpTm90aWZpY2F0aW9uOiBUcnVVaU5vdGlmaWNhdGlvbixcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50KSB7XHJcbiAgICB0aGlzLmJhc2VVcmwgPSBhcHBFbnZpcm9ubWVudC5hcHBVcmk7XHJcbiAgICB0aGlzLmFwcE5hbWUgPSBhcHBFbnZpcm9ubWVudC5hcHBOYW1lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2dFcnJvckV2ZW50ID0gKG1lc3NhZ2U6IHN0cmluZywgY29udGV4dDogc3RyaW5nLCBhcmVhOiBzdHJpbmcpID0+IHtcclxuICAgIGFyZWEgPSBhcmVhIHx8ICd1bmtub3duJztcclxuICAgIGNvbnNvbGUubG9nKCdbJyArIGFyZWEgKyAnfCcgKyBjb250ZXh0ICsgJ10gJyArIG1lc3NhZ2UpO1xyXG4gICAgdmFyIGxvZ0V2ZW50ID0ge1xyXG4gICAgICBldmVudFR5cGU6ICdFcnJvcicsXHJcbiAgICAgIGV2ZW50RGF0ZTogbmV3IERhdGUoKSxcclxuICAgICAgYXBwbGljYXRpb25OYW1lOiB0aGlzLmFwcE5hbWUsXHJcbiAgICAgIGFwcGxpY2F0aW9uVXJsOiB0aGlzLmJhc2VVcmwsXHJcbiAgICAgIGFwcGxpY2F0aW9uQXJlYTogYXJlYSxcclxuICAgICAgY29udGV4dDogY29udGV4dCxcclxuICAgICAgbWVzc2FnZTogbWVzc2FnZVxyXG4gICAgfTtcclxuICAgIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0vYXBpL2xvZy9sb2dldmVudGAsIGxvZ0V2ZW50KVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuXHJcbiAgICAgIH0sIChleDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1VuYWJsZSB0byBsb2cgZXJyb3IgdG8gc2VydmVyLiAnICsgZXgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlQ2xpZW50U2lkZUVycm9yID0gKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlU2VydmVyU2lkZUVycm9yID0gKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgbGV0IHNlcnZlckVycm9yID0gbmV3IFRydVNlcnZlckVycm9yKGVycm9yKTtcclxuICAgIGlmIChzZXJ2ZXJFcnJvci50eXBlID09PSAndHJ1LWRiLWN1c3RvbS1leGNlcHRpb24nKSB7XHJcbiAgICAgIC8vdmFyIHNlcnZpY2UgPSAkaW5qZWN0b3IuZ2V0KGVycm9yLmh0dHBSZXNwb25zZS5kYXRhLnNlcnZpY2VOYW1lKTtcclxuICAgICAgLy92YXIgZXhjZXB0aW9uRGF0YSA9IGVycm9yLmh0dHBSZXNwb25zZS5kYXRhLmRhdGE7XHJcbiAgICAgIC8vc2VydmljZShleGNlcHRpb25EYXRhKTtcclxuICAgIH0gZWxzZSBpZiAoc2VydmVyRXJyb3IudHlwZS5pbmRleE9mKCdUcnVEYlJlcXVpcmVWYWxpZENob2ljZUV4Y2VwdGlvbicpICE9PSAtMSkge1xyXG5cclxuICAgICAgbGV0IGRpYWxvZ0NvbmZpZyA9IG5ldyBUcnVFcnJvckRpYWxvZ0NvbmZpZyhcclxuICAgICAgICAnUmVxdWlyZSBWYWxpZCBDaG9pY2UgRXhjZXB0aW9uJyxcclxuICAgICAgICBlcnJvci5tZXNzYWdlKTtcclxuXHJcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4oVHJ1RXJyb3JEaWFsb2csIHtcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgbWluV2lkdGg6IFwiNDAwcHhcIixcclxuICAgICAgICBtYXhXaWR0aDogXCI2MDBweFwiLFxyXG4gICAgICAgIGRhdGE6IGRpYWxvZ0NvbmZpZ1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2VydmVyRXJyb3IudHlwZS5pbmRleE9mKCdEdXBsaWNhdGVLZXlFcnJvcicpICE9PSAtMSkge1xyXG5cclxuICAgICAgbGV0IGRpYWxvZ0NvbmZpZyA9IG5ldyBUcnVFcnJvckRpYWxvZ0NvbmZpZyhcclxuICAgICAgICAnRHVwbGljYXRlIEtleSBFcnJvcicsXHJcbiAgICAgICAgZXJyb3IubWVzc2FnZVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ0Nhbm5vdCBpbnNlcnQgZHVwbGljYXRlIGtleSByb3cgaW4gb2JqZWN0JywgJ0Nhbm5vdCBpbnNlcnQgZHVwbGljYXRlIHZhbHVlIGluIHRhYmxlJylcclxuICAgICAgICAgIC5yZXBsYWNlKCdkYm8uJywgJycpXHJcbiAgICAgICAgICAucmVwbGFjZSgnVUlYXycsICcnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ1RoZSBzdGF0ZW1lbnQgaGFzIGJlZW4gdGVybWluYXRlZC4nLCAnJykpO1xyXG5cclxuICAgICAgdGhpcy5kaWFsb2cub3BlbihUcnVFcnJvckRpYWxvZywge1xyXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICBtaW5XaWR0aDogXCI0MDBweFwiLFxyXG4gICAgICAgIG1heFdpZHRoOiBcIjYwMHB4XCIsXHJcbiAgICAgICAgZGF0YTogZGlhbG9nQ29uZmlnXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoc2VydmVyRXJyb3IudHlwZS5pbmRleE9mKCdPcHRpbWlzdGljTG9ja1Zpb2xhdGlvbicpICE9PSAtMSkge1xyXG5cclxuICAgICAgbGV0IGRpYWxvZ0NvbmZpZyA9IG5ldyBUcnVFcnJvckRpYWxvZ0NvbmZpZyhcclxuICAgICAgICAnQ29uY3VycmVudCBzYXZlcyBub3QgYWxsb3dlZCcsXHJcbiAgICAgICAgJ1BsZWFzZSByZXZpZXcgYW55IGNoYW5nZXMgYW5kIHNhdmUgYWdhaW4uJyk7XHJcblxyXG4gICAgICB0aGlzLmRpYWxvZy5vcGVuKFRydUVycm9yRGlhbG9nLCB7XHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgIG1pbldpZHRoOiBcIjQwMHB4XCIsXHJcbiAgICAgICAgbWF4V2lkdGg6IFwiNjAwcHhcIixcclxuICAgICAgICBkYXRhOiBkaWFsb2dDb25maWdcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yLnR5cGUudG9TdHJpbmcoKS5sYXN0SW5kZXhPZignVHJ1REIuRWZNc3NxbC5SdW50aW1lLkRhdGFFcnJvcicsIDApID09PSAwKSB7XHJcblxyXG4gICAgICAvL3RoaXMudWlOb3RpZmljYXRpb24uZXJyb3IoXHJcbiAgICAgIC8vICB0aGlzLnRleHRNYW5hZ2VyLmZtdERhdGFFcnJvcihlcnJvci5odHRwUmVzcG9uc2UuZGF0YS5EZXRhaWwuJHR5cGUpLFxyXG4gICAgICAvLyAgW3RoaXMudGV4dE1hbmFnZXIuZm10RXhjZXB0aW9uVG9TaG93KGVycm9yLmh0dHBSZXNwb25zZS5kYXRhLkV4Y2VwdGlvbildKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy92YXIgbWVzc2FnZSA9IHRoaXMudGV4dE1hbmFnZXIuZm10RXJyb3JUb1Nob3coZXJyb3IpO1xyXG4gICAgICAvL3RoaXMudWlOb3RpZmljYXRpb24uc2hvd0Vycm9yRGlhbG9nKG1lc3NhZ2UpO1xyXG4gICAgICAvL3RoaXMubG9nRXJyb3JFdmVudChtZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9yID0gKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgaWYgKGVycm9yLnR5cGUpXHJcbiAgICAgIHRoaXMuaGFuZGxlQ2xpZW50U2lkZUVycm9yKGVycm9yKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5oYW5kbGVTZXJ2ZXJTaWRlRXJyb3IoZXJyb3IpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -9211,6 +9211,24 @@ class TruErrorDialogConfig {
9211
9211
  }
9212
9212
  }
9213
9213
 
9214
+ class TruServerError {
9215
+ id;
9216
+ type;
9217
+ code;
9218
+ message;
9219
+ stackTrace;
9220
+ status;
9221
+ constructor(error) {
9222
+ let parsedError = JSON.parse(error.error);
9223
+ this.id = parsedError.$id;
9224
+ this.type = parsedError.$type;
9225
+ this.code = parsedError.Code;
9226
+ this.message = parsedError.Message;
9227
+ this.stackTrace = parsedError.StackTrace;
9228
+ this.status = error.status;
9229
+ }
9230
+ }
9231
+
9214
9232
  class TruErrorManager {
9215
9233
  http;
9216
9234
  dialog;
@@ -9228,24 +9246,35 @@ class TruErrorManager {
9228
9246
  this.baseUrl = appEnvironment.appUri;
9229
9247
  this.appName = appEnvironment.appName;
9230
9248
  }
9231
- parseErrorMessage(error) {
9232
- if (error.error && error.error.message) {
9233
- return error.error.message;
9234
- }
9235
- else if (error.error && typeof error.error === 'string') {
9236
- return error.error;
9237
- }
9238
- else {
9239
- return `Server returned code ${error.status}, body was: ${error.error}`;
9240
- }
9241
- }
9242
- handleError = (error) => {
9243
- if (error.type.toString() === 'tru-db-custom-exception') {
9249
+ logErrorEvent = (message, context, area) => {
9250
+ area = area || 'unknown';
9251
+ console.log('[' + area + '|' + context + '] ' + message);
9252
+ var logEvent = {
9253
+ eventType: 'Error',
9254
+ eventDate: new Date(),
9255
+ applicationName: this.appName,
9256
+ applicationUrl: this.baseUrl,
9257
+ applicationArea: area,
9258
+ context: context,
9259
+ message: message
9260
+ };
9261
+ this.http
9262
+ .post(`${this.baseUrl}/api/log/logevent`, logEvent)
9263
+ .subscribe(() => {
9264
+ }, (ex) => {
9265
+ console.log('Unable to log error to server. ' + ex);
9266
+ });
9267
+ };
9268
+ handleClientSideError = (error) => {
9269
+ };
9270
+ handleServerSideError = (error) => {
9271
+ let serverError = new TruServerError(error);
9272
+ if (serverError.type === 'tru-db-custom-exception') {
9244
9273
  //var service = $injector.get(error.httpResponse.data.serviceName);
9245
9274
  //var exceptionData = error.httpResponse.data.data;
9246
9275
  //service(exceptionData);
9247
9276
  }
9248
- else if (error.type.toString().indexOf('TruDbRequireValidChoiceException') !== -1) {
9277
+ else if (serverError.type.indexOf('TruDbRequireValidChoiceException') !== -1) {
9249
9278
  let dialogConfig = new TruErrorDialogConfig('Require Valid Choice Exception', error.message);
9250
9279
  this.dialog.open(TruErrorDialog, {
9251
9280
  disableClose: true,
@@ -9254,7 +9283,7 @@ class TruErrorManager {
9254
9283
  data: dialogConfig
9255
9284
  });
9256
9285
  }
9257
- else if (error.type.toString().indexOf('DuplicateKeyError') !== -1) {
9286
+ else if (serverError.type.indexOf('DuplicateKeyError') !== -1) {
9258
9287
  let dialogConfig = new TruErrorDialogConfig('Duplicate Key Error', error.message
9259
9288
  .replace('Cannot insert duplicate key row in object', 'Cannot insert duplicate value in table')
9260
9289
  .replace('dbo.', '')
@@ -9267,7 +9296,7 @@ class TruErrorManager {
9267
9296
  data: dialogConfig
9268
9297
  });
9269
9298
  }
9270
- else if (error.type.toString().indexOf('OptimisticLockViolation') !== -1) {
9299
+ else if (serverError.type.indexOf('OptimisticLockViolation') !== -1) {
9271
9300
  let dialogConfig = new TruErrorDialogConfig('Concurrent saves not allowed', 'Please review any changes and save again.');
9272
9301
  this.dialog.open(TruErrorDialog, {
9273
9302
  disableClose: true,
@@ -9286,28 +9315,12 @@ class TruErrorManager {
9286
9315
  //this.uiNotification.showErrorDialog(message);
9287
9316
  //this.logErrorEvent(message);
9288
9317
  }
9289
- //if (window.appInsights) window.appInsights.trackException(error, null, {
9290
- // 'User': dataService.activeUser.username
9291
- //});
9292
9318
  };
9293
- logErrorEvent = (message, context, area) => {
9294
- area = area || 'unknown';
9295
- console.log('[' + area + '|' + context + '] ' + message);
9296
- var logEvent = {
9297
- eventType: 'Error',
9298
- eventDate: new Date(),
9299
- applicationName: this.appName,
9300
- applicationUrl: this.baseUrl,
9301
- applicationArea: area,
9302
- context: context,
9303
- message: message
9304
- };
9305
- this.http
9306
- .post(`${this.baseUrl}/api/log/logevent`, logEvent)
9307
- .subscribe(() => {
9308
- }, (ex) => {
9309
- console.log('Unable to log error to server. ' + ex);
9310
- });
9319
+ handleError = (error) => {
9320
+ if (error.type)
9321
+ this.handleClientSideError(error);
9322
+ else
9323
+ this.handleServerSideError(error);
9311
9324
  };
9312
9325
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, deps: [{ token: i2.HttpClient }, { token: i1.MatDialog }, { token: TruTextManager }, { token: TruUiNotification }, { token: TruAppEnvironment }], target: i0.ɵɵFactoryTarget.Injectable });
9313
9326
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, providedIn: 'root' });