@bnsights/bbsf-utilities 1.0.4 → 1.0.8
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/bnsights-bbsf-utilities-1.0.8.tgz +0 -0
- package/bnsights-bbsf-utilities.metadata.json +1 -1
- package/bundles/bnsights-bbsf-utilities.umd.js +58 -36
- package/bundles/bnsights-bbsf-utilities.umd.js.map +1 -1
- package/esm2015/lib/shared/authentication/auth.service.js +16 -9
- package/esm2015/lib/shared/models/AreaModel.js +3 -0
- package/esm2015/lib/shared/models/ErrorModel.js +1 -1
- package/esm2015/lib/shared/services/controlvalidation.service.js +10 -10
- package/esm2015/lib/shared/services/environment.service.js +2 -1
- package/esm2015/lib/shared/services/masterlayout.service.js +3 -3
- package/esm2015/lib/shared/services/requesthandler.service.js +17 -8
- package/esm2015/lib/shared/services/stylesbundle.service.js +7 -1
- package/esm2015/lib/shared/services/utility.service.js +3 -3
- package/fesm2015/bnsights-bbsf-utilities.js +51 -30
- package/fesm2015/bnsights-bbsf-utilities.js.map +1 -1
- package/lib/shared/authentication/auth.service.d.ts +3 -1
- package/lib/shared/models/AreaModel.d.ts +4 -0
- package/lib/shared/models/ErrorModel.d.ts +1 -1
- package/lib/shared/services/environment.service.d.ts +2 -0
- package/lib/shared/services/requesthandler.service.d.ts +5 -6
- package/lib/shared/services/stylesbundle.service.d.ts +1 -0
- package/lib/shared/services/utility.service.d.ts +2 -2
- package/package.json +7 -5
- package/bnsights-bbsf-utilities-1.0.4.tgz +0 -0
|
@@ -2,7 +2,7 @@ import * as i1$2 from '@angular/common';
|
|
|
2
2
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { Injectable, Inject, NgModule, Injector } from '@angular/core';
|
|
5
|
-
import * as
|
|
5
|
+
import * as i4 from '@angular/router';
|
|
6
6
|
import { Router, RouterModule } from '@angular/router';
|
|
7
7
|
import * as i1 from '@ngx-translate/core';
|
|
8
8
|
import { TranslateService } from '@ngx-translate/core';
|
|
@@ -13,9 +13,9 @@ import { __awaiter, __decorate } from 'tslib';
|
|
|
13
13
|
import * as i1$1 from '@angular/common/http';
|
|
14
14
|
import { HttpHeaders, HttpClient, HttpParams } from '@angular/common/http';
|
|
15
15
|
import { UserManager, WebStorageStateStore } from 'oidc-client';
|
|
16
|
-
import { BehaviorSubject, Subject } from 'rxjs';
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
16
|
+
import { BehaviorSubject, Subject, Observable } from 'rxjs';
|
|
17
|
+
import { takeUntil, tap, map } from 'rxjs/operators';
|
|
18
|
+
import { plainToClass } from 'class-transformer';
|
|
19
19
|
|
|
20
20
|
// This file can be replaced during build by using the `fileReplacements` array.
|
|
21
21
|
// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.
|
|
@@ -54,6 +54,7 @@ class EnvironmentService {
|
|
|
54
54
|
return Url;
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
+
EnvironmentService.AreaList = [];
|
|
57
58
|
EnvironmentService.ɵprov = i0.ɵɵdefineInjectable({ factory: function EnvironmentService_Factory() { return new EnvironmentService(); }, token: EnvironmentService, providedIn: "root" });
|
|
58
59
|
EnvironmentService.decorators = [
|
|
59
60
|
{ type: Injectable, args: [{
|
|
@@ -71,10 +72,11 @@ BBSFTranslateService.decorators = [
|
|
|
71
72
|
];
|
|
72
73
|
|
|
73
74
|
class AuthService {
|
|
74
|
-
constructor(http, environmentService, translateService) {
|
|
75
|
+
constructor(http, environmentService, translateService, router) {
|
|
75
76
|
this.http = http;
|
|
76
77
|
this.environmentService = environmentService;
|
|
77
78
|
this.translateService = translateService;
|
|
79
|
+
this.router = router;
|
|
78
80
|
// Observable navItem source
|
|
79
81
|
this._authNavStatusSource = new BehaviorSubject(false);
|
|
80
82
|
// Observable navItem stream
|
|
@@ -133,10 +135,11 @@ class AuthService {
|
|
|
133
135
|
return __awaiter(this, void 0, void 0, function* () {
|
|
134
136
|
this.user = yield this.manager.signinRedirectCallback();
|
|
135
137
|
AuthService.user = this.user;
|
|
136
|
-
localStorage.
|
|
137
|
-
|
|
138
|
+
if (!localStorage.getItem("language") || localStorage.getItem("language") == this.user.profile.locale)
|
|
139
|
+
localStorage.setItem("language", this.user.profile.locale);
|
|
140
|
+
if (this.translateService.currentLang != localStorage.getItem("language")) {
|
|
138
141
|
this.translateService.resetLang(this.translateService.currentLang);
|
|
139
|
-
yield this.translateService.reloadLang(
|
|
142
|
+
yield this.translateService.reloadLang(localStorage.getItem("language")).subscribe((res) => {
|
|
140
143
|
console.log(res);
|
|
141
144
|
});
|
|
142
145
|
}
|
|
@@ -172,7 +175,7 @@ class AuthService {
|
|
|
172
175
|
});
|
|
173
176
|
}
|
|
174
177
|
isUserInRole(allowedPermission) {
|
|
175
|
-
let selectedPermissionSetID = this.user.profile["
|
|
178
|
+
let selectedPermissionSetID = Number.parseInt(this.user.profile["selectedpermissionsetid"]);
|
|
176
179
|
return allowedPermission.includes(selectedPermissionSetID);
|
|
177
180
|
}
|
|
178
181
|
authorizationHeaderValue() {
|
|
@@ -198,13 +201,15 @@ class AuthService {
|
|
|
198
201
|
}
|
|
199
202
|
signout() {
|
|
200
203
|
return __awaiter(this, void 0, void 0, function* () {
|
|
201
|
-
|
|
204
|
+
if (yield !this.isAuthenticated())
|
|
205
|
+
this.router.navigate(['/Admin/account/login']),
|
|
206
|
+
localStorage.clear();
|
|
202
207
|
yield this.manager.signoutRedirect();
|
|
203
208
|
});
|
|
204
209
|
}
|
|
205
210
|
}
|
|
206
211
|
AuthService.user = null;
|
|
207
|
-
AuthService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthService_Factory() { return new AuthService(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(EnvironmentService), i0.ɵɵinject(BBSFTranslateService)); }, token: AuthService, providedIn: "root" });
|
|
212
|
+
AuthService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthService_Factory() { return new AuthService(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(EnvironmentService), i0.ɵɵinject(BBSFTranslateService), i0.ɵɵinject(i4.Router)); }, token: AuthService, providedIn: "root" });
|
|
208
213
|
AuthService.decorators = [
|
|
209
214
|
{ type: Injectable, args: [{
|
|
210
215
|
providedIn: 'root'
|
|
@@ -213,7 +218,8 @@ AuthService.decorators = [
|
|
|
213
218
|
AuthService.ctorParameters = () => [
|
|
214
219
|
{ type: HttpClient },
|
|
215
220
|
{ type: EnvironmentService },
|
|
216
|
-
{ type: BBSFTranslateService }
|
|
221
|
+
{ type: BBSFTranslateService },
|
|
222
|
+
{ type: Router }
|
|
217
223
|
];
|
|
218
224
|
|
|
219
225
|
class UtilityService {
|
|
@@ -237,10 +243,10 @@ class UtilityService {
|
|
|
237
243
|
return currentLanguage;
|
|
238
244
|
}
|
|
239
245
|
isCurrentLanguageEnglish() {
|
|
240
|
-
this.getCurrentLanguage() == "en";
|
|
246
|
+
return this.getCurrentLanguage() == "en";
|
|
241
247
|
}
|
|
242
248
|
isCurrentLanguageArabic() {
|
|
243
|
-
this.getCurrentLanguage() == "ar";
|
|
249
|
+
return this.getCurrentLanguage() == "ar";
|
|
244
250
|
}
|
|
245
251
|
notifySuccessMessage(Message, title, time) {
|
|
246
252
|
let MessageTemplate = this.getResourceValue("SuccessMessage");
|
|
@@ -335,7 +341,7 @@ class RequestHandlerService {
|
|
|
335
341
|
}, 1000);
|
|
336
342
|
}).pipe(takeUntil(this.onDestroy$));
|
|
337
343
|
}
|
|
338
|
-
get(Url, params, requestOptions) {
|
|
344
|
+
get(Url, params, responseType, requestOptions) {
|
|
339
345
|
if (requestOptions)
|
|
340
346
|
this.requestOptions = requestOptions;
|
|
341
347
|
let headers = new HttpHeaders({
|
|
@@ -347,12 +353,15 @@ class RequestHandlerService {
|
|
|
347
353
|
headers = headers.set('ignore-cookies', 'true');
|
|
348
354
|
if (!this.requestOptions.disableBlockUI)
|
|
349
355
|
this.utilityService.startBlockUI();
|
|
356
|
+
let object;
|
|
350
357
|
return this.http.get(this.environmentService.getApiUrl() + Url, { headers: headers, params: params }).pipe(takeUntil(this.onDestroy$), tap((result) => {
|
|
351
358
|
if (!this.requestOptions.disableBlockUI)
|
|
352
359
|
this.utilityService.stopBlockUI();
|
|
360
|
+
}), map((data) => {
|
|
361
|
+
return plainToClass(responseType, data, { excludeExtraneousValues: true });
|
|
353
362
|
}));
|
|
354
363
|
}
|
|
355
|
-
post(Url, model, params, requestOptions) {
|
|
364
|
+
post(Url, model, responseType, params, requestOptions) {
|
|
356
365
|
if (requestOptions)
|
|
357
366
|
this.requestOptions = requestOptions;
|
|
358
367
|
let headers = new HttpHeaders({
|
|
@@ -367,9 +376,11 @@ class RequestHandlerService {
|
|
|
367
376
|
return this.http.post(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(takeUntil(this.onDestroy$), tap((result) => {
|
|
368
377
|
if (!this.requestOptions.disableBlockUI)
|
|
369
378
|
this.utilityService.stopBlockUI();
|
|
379
|
+
}), map((data) => {
|
|
380
|
+
return plainToClass(responseType, data, { excludeExtraneousValues: true });
|
|
370
381
|
}));
|
|
371
382
|
}
|
|
372
|
-
delete(Url, deletedId,
|
|
383
|
+
delete(Url, deletedId, requestOptions, responseType, params) {
|
|
373
384
|
if (requestOptions)
|
|
374
385
|
this.requestOptions = requestOptions;
|
|
375
386
|
let headers = new HttpHeaders({
|
|
@@ -384,9 +395,11 @@ class RequestHandlerService {
|
|
|
384
395
|
return this.http.delete(this.environmentService.getApiUrl() + Url + `/${deletedId}`, { headers: headers, params: params }).pipe(takeUntil(this.onDestroy$), tap((result) => {
|
|
385
396
|
if (!this.requestOptions.disableBlockUI)
|
|
386
397
|
this.utilityService.stopBlockUI();
|
|
398
|
+
}), map((data) => {
|
|
399
|
+
return plainToClass(responseType, data, { excludeExtraneousValues: true });
|
|
387
400
|
}));
|
|
388
401
|
}
|
|
389
|
-
put(Url, model, params, requestOptions) {
|
|
402
|
+
put(Url, model, params, responseType, requestOptions) {
|
|
390
403
|
if (requestOptions)
|
|
391
404
|
this.requestOptions = requestOptions;
|
|
392
405
|
let headers = new HttpHeaders({
|
|
@@ -401,6 +414,8 @@ class RequestHandlerService {
|
|
|
401
414
|
return this.http.put(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(takeUntil(this.onDestroy$), tap((result) => {
|
|
402
415
|
if (!this.requestOptions.disableBlockUI)
|
|
403
416
|
this.utilityService.stopBlockUI();
|
|
417
|
+
}), map((data) => {
|
|
418
|
+
return plainToClass(responseType, data, { excludeExtraneousValues: true });
|
|
404
419
|
}));
|
|
405
420
|
}
|
|
406
421
|
destroyHandler() {
|
|
@@ -439,6 +454,12 @@ class StylesBundleService {
|
|
|
439
454
|
document.querySelector('html').setAttribute("dir", "ltr");
|
|
440
455
|
}
|
|
441
456
|
}
|
|
457
|
+
loadThemesColor(theme, bundleDarkName, bundleLightName) {
|
|
458
|
+
if (theme == "Light")
|
|
459
|
+
this.loadStyleBundle(bundleLightName.toString());
|
|
460
|
+
else
|
|
461
|
+
this.loadStyleBundle(bundleDarkName.toString());
|
|
462
|
+
}
|
|
442
463
|
loadStyleBundle(styleName) {
|
|
443
464
|
const head = this.document.getElementsByTagName('head')[0];
|
|
444
465
|
let themeLink = this.document.getElementById('client-theme');
|
|
@@ -473,12 +494,12 @@ class ControlValidationService {
|
|
|
473
494
|
this.isCreatedBefor = false;
|
|
474
495
|
}
|
|
475
496
|
showGlobalError(errorMessage, formId, deleteOld) {
|
|
476
|
-
let globalErorrElement = document.getElementsByClassName('alert alert-danger
|
|
497
|
+
let globalErorrElement = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger');
|
|
477
498
|
if (globalErorrElement.length > 0) {
|
|
478
|
-
this.removeElementsByClass('alert alert-danger
|
|
499
|
+
this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');
|
|
479
500
|
}
|
|
480
501
|
if (this.isCreatedBefor == true) {
|
|
481
|
-
this.removeElementsByClass('alert alert-danger
|
|
502
|
+
this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');
|
|
482
503
|
}
|
|
483
504
|
// tslint:disable-next-line: prefer-const
|
|
484
505
|
if (!formId)
|
|
@@ -493,8 +514,8 @@ class ControlValidationService {
|
|
|
493
514
|
message = errorMessage ? errorMessage : "لديك بعص الأخطاء . من فضلك قم بالمراجعه ";
|
|
494
515
|
else
|
|
495
516
|
message = errorMessage ? errorMessage : "You have some validation errors. Please check below";
|
|
496
|
-
elementToAppend.innerHTML = "<ul><li>" + message + "</li></ul>";
|
|
497
|
-
elementToAppend.className += 'alert alert-danger
|
|
517
|
+
elementToAppend.innerHTML = "<ul class='list-unstyled m-0 py-3 d-flex align-items-center fs-6'><li><i class='fa fa-times-circle text-danger me-3 fs-2'></i>" + message + "</li></ul>";
|
|
518
|
+
elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';
|
|
498
519
|
elementToAppend.id += 'errorId';
|
|
499
520
|
// tslint:disable-next-line: prefer-for-of
|
|
500
521
|
const elementToAppen = elementToAppend.cloneNode(true);
|
|
@@ -507,7 +528,7 @@ class ControlValidationService {
|
|
|
507
528
|
elementToAppend.innerHTML = "<li>" + iterator + "</li>";
|
|
508
529
|
}
|
|
509
530
|
elementToAppend.innerHTML = "</ul>";
|
|
510
|
-
elementToAppend.className += 'alert alert-danger
|
|
531
|
+
elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';
|
|
511
532
|
elementToAppend.id += 'errorId';
|
|
512
533
|
// tslint:disable-next-line: prefer-for-of
|
|
513
534
|
const elementToAppen = elementToAppend.cloneNode(true);
|
|
@@ -517,7 +538,7 @@ class ControlValidationService {
|
|
|
517
538
|
this.isCreatedBefor = true;
|
|
518
539
|
}
|
|
519
540
|
RemoveGlobalError() {
|
|
520
|
-
const removedList = document.getElementsByClassName('alert alert-danger
|
|
541
|
+
const removedList = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger');
|
|
521
542
|
// tslint:disable-next-line: prefer-for-of
|
|
522
543
|
for (let index = 0; index < removedList.length; index++) {
|
|
523
544
|
const element = removedList[index];
|
|
@@ -564,12 +585,12 @@ class ControlValidationService {
|
|
|
564
585
|
this.requestOptions = requestOptions;
|
|
565
586
|
err.error.validation_errors.forEach((element) => {
|
|
566
587
|
let fieldName = element.field;
|
|
567
|
-
let controlName = element.
|
|
588
|
+
let controlName = element.controlName;
|
|
568
589
|
let message = element.message;
|
|
569
590
|
if (form == null) {
|
|
570
591
|
this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${fieldName}: ${message}`);
|
|
571
592
|
}
|
|
572
|
-
else if (!this.hasControlName(form, controlName)) {
|
|
593
|
+
else if (controlName && !this.hasControlName(form, controlName)) {
|
|
573
594
|
errorsArray.push(`${fieldName}: ${message}`);
|
|
574
595
|
// this.showGlobalError(`${fieldName}: ${message}`,formId )
|
|
575
596
|
}
|
|
@@ -634,7 +655,7 @@ class MasterLayoutService {
|
|
|
634
655
|
this.authService = authService;
|
|
635
656
|
this.stylesBundleService = stylesBundleService;
|
|
636
657
|
this.translate = translate;
|
|
637
|
-
this.ApiUrl = "/api/
|
|
658
|
+
this.ApiUrl = "/api/Home/";
|
|
638
659
|
}
|
|
639
660
|
switchLang(lang, bundleEnglishName, bundleArabicName) {
|
|
640
661
|
this.changeLanguage(lang).subscribe((result) => {
|
|
@@ -659,13 +680,13 @@ class MasterLayoutService {
|
|
|
659
680
|
let params = new HttpParams();
|
|
660
681
|
params = params.append("UserId", this.authService.user.profile.id);
|
|
661
682
|
params = params.append("LanguageKey", key);
|
|
662
|
-
return this.http.post(this.ApiUrl + '
|
|
683
|
+
return this.http.post(this.ApiUrl + 'UpdateLanguage', null, null, params);
|
|
663
684
|
}
|
|
664
685
|
updateUserInfo() {
|
|
665
686
|
return this.http.get('/connect/userinfo');
|
|
666
687
|
}
|
|
667
688
|
}
|
|
668
|
-
MasterLayoutService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MasterLayoutService_Factory() { return new MasterLayoutService(i0.ɵɵinject(
|
|
689
|
+
MasterLayoutService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MasterLayoutService_Factory() { return new MasterLayoutService(i0.ɵɵinject(i4.Router), i0.ɵɵinject(RequestHandlerService), i0.ɵɵinject(AuthService), i0.ɵɵinject(StylesBundleService), i0.ɵɵinject(i1.TranslateService)); }, token: MasterLayoutService, providedIn: "root" });
|
|
669
690
|
MasterLayoutService.decorators = [
|
|
670
691
|
{ type: Injectable, args: [{
|
|
671
692
|
providedIn: 'root'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bnsights-bbsf-utilities.js","sources":["../../../projects/bbsf-utilities/src/lib/shared/config/environment.ts","../../../projects/bbsf-utilities/src/lib/shared/services/environment.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translate.service.ts","../../../projects/bbsf-utilities/src/lib/shared/authentication/auth.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/utility.service.ts","../../../projects/bbsf-utilities/src/lib/shared/models/RequestOptionsModel.ts","../../../projects/bbsf-utilities/src/lib/shared/services/requesthandler.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/stylesbundle.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/controlvalidation.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/masterlayout.service.ts","../../../projects/bbsf-utilities/src/lib/bbsf-utilities.module.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translationresolver.service.ts","../../../projects/bbsf-utilities/src/public-api.ts","../../../projects/bbsf-utilities/src/bnsights-bbsf-utilities.ts"],"sourcesContent":["// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = Object.assign({\r\n},\r\n(window as any).Envirnment);\r\n\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../config/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n\r\n getEnvironmentObject() {\r\n return environment;\r\n }\r\n\r\n getBaseUrl() {\r\n let Url = environment[\"BBSF_BaseUrl\"]\r\n return Url;\r\n }\r\n getApiUrl() {\r\n let Url = environment[\"BBSF_ApiUrl\"]\r\n return Url;\r\n }\r\n\r\n\r\n getProductionMode() {\r\n let Mode = environment[\"BBSF_IsProduction\"] as boolean\r\n return Mode;\r\n }\r\n\r\n getDefaultLanguage() {\r\n let Mode = environment[\"BBSF_DefaultLanguage\"] as string\r\n return Mode;\r\n }\r\n getIdentityServerUrl() {\r\n let Url = environment[\"BBSF_IdentityServerUrl\"]\r\n return Url;\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BBSFTranslateService extends TranslateService {\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { UserManager, UserManagerSettings, User, WebStorageStateStore } from 'oidc-client';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { BBSFTranslateService } from '../services/translate.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class AuthService {\r\n\r\n // Observable navItem source\r\n private _authNavStatusSource = new BehaviorSubject<boolean>(false);\r\n // Observable navItem stream\r\n authNavStatus$ = this._authNavStatusSource.asObservable();\r\n // Observable navItem source\r\n private _userSource: Subject<User> = new Subject<User>();\r\n UserStatus$ = this._userSource.asObservable();\r\n private manager = new UserManager(\r\n {\r\n authority: this.environmentService.getIdentityServerUrl(),\r\n client_id: 'angular_spa',\r\n redirect_uri: this.environmentService.getIdentityServerUrl() +'/Admin/authentication/auth-callback',\r\n post_logout_redirect_uri: this.environmentService.getBaseUrl(),\r\n response_type: \"id_token token\",\r\n scope: \"openid profile email IdentityServerApi\",\r\n filterProtocolClaims: true,\r\n loadUserInfo: true,\r\n automaticSilentRenew: true,\r\n silent_redirect_uri: this.environmentService.getIdentityServerUrl() + '/assets/silent-callback.html',\r\n userStore: new WebStorageStateStore({ store: window.localStorage })\r\n }\r\n );\r\n public redirectUrl: string = \"\"\r\n static user: User | null = null;\r\n user: User | null;\r\n\r\n constructor(private http: HttpClient, private environmentService: EnvironmentService,private translateService:BBSFTranslateService) {\r\n this.manager.getUser().then(async user => {\r\n this.manager.storeUser(user);\r\n AuthService.user = user;\r\n this.user = user;\r\n this._authNavStatusSource.next(await this.isAuthenticated());\r\n });\r\n this.manager.events.addAccessTokenExpired(_ => {\r\n this._authNavStatusSource.next(false);\r\n })\r\n }\r\n\r\n login() {\r\n return this.manager.signinRedirect();\r\n }\r\n\r\n getUser() {\r\n this.manager.getUser().then(async user => {\r\n ;\r\n AuthService.user = user;\r\n this.user = user\r\n this._authNavStatusSource.next(await this.isAuthenticated());\r\n });\r\n }\r\n storUser(User: any) {\r\n this.manager.storeUser(User);\r\n }\r\n\r\n revokeAccessToken() {\r\n this.manager.revokeAccessToken();\r\n }\r\n\r\n signinSilent() {\r\n\r\n let x = this.manager.signinSilentCallback()\r\n x.then(s => {\r\n //console.log(s)\r\n })\r\n }\r\n\r\n async completeAuthentication() {\r\n this.user = await this.manager.signinRedirectCallback();\r\n AuthService.user = this.user\r\n localStorage.setItem(\"language\",this.user.profile.locale)\r\n if(this.translateService.currentLang!=this.user.profile.locale)\r\n {\r\n this.translateService.resetLang(this.translateService.currentLang)\r\n await this.translateService.reloadLang(this.user.profile.locale).subscribe((res)=>{\r\n console.log(res)\r\n })\r\n }\r\n this._userSource.next(AuthService.user)\r\n this._authNavStatusSource.next(await this.isAuthenticated());\r\n }\r\n\r\n \r\n\r\n\r\n async refreshToken(token) {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': token\r\n })\r\n };\r\n \r\n this.manager.revokeAccessToken()\r\n return await this.http.post<any>(`${this.environmentService.getIdentityServerUrl()}/users/refresh-token`, httpOptions, { withCredentials: true }).subscribe((user) => {\r\n this._userSource.next(user)\r\n AuthService.user = user\r\n this.user = user;\r\n })\r\n }\r\n\r\n getCurrentUser() {\r\n return this.manager.getUser()\r\n }\r\n\r\n async isAuthenticated(): Promise<boolean> {\r\n let user = await this.manager.getUser().then(user => {\r\n return user;\r\n })\r\n return this.user != null && !this.user.expired ;\r\n\r\n }\r\n isUserInRole(allowedPermission: number[]) {\r\n let selectedPermissionSetID = this.user.profile[\"selectedPermissionSetID\"] as number\r\n return allowedPermission.includes(selectedPermissionSetID);\r\n }\r\n\r\n authorizationHeaderValue(): string {\r\n return AuthService.user? `${AuthService.user.token_type} ${AuthService.user.access_token}`:\"\";\r\n }\r\n\r\n name(): string {\r\n return AuthService.user != null ? AuthService.user.profile.given_name : '';\r\n }\r\n setUrl(url) {\r\n localStorage.setItem(\"redirectUrl\", url)\r\n\r\n }\r\n getUrl() {\r\n return localStorage.getItem(\"redirectUrl\");\r\n }\r\n async signinSilentCallback() {\r\n let user = await this.manager.signinSilentCallback()\r\n //await this.manager.storeUser(user);\r\n AuthService.user = user;\r\n console.log(\"Token from signinSilentCallback :\"+AuthService.user)\r\n this.user = user;\r\n }\r\n async signout() {\r\n localStorage.clear();\r\n await this.manager.signoutRedirect();\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n","import { Injectable, Optional, Host, SkipSelf, Component } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { BBSFTranslateService } from './translate.service';\r\nimport { AppInjector } from '../../bbsf-utilities.module';\r\nimport { EnvironmentService } from './environment.service';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilityService {\r\n\r\n isCreatedBefore = false;\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n constructor(private translator: BBSFTranslateService, private authService: AuthService , private environmentService: EnvironmentService,) {\r\n\r\n }\r\n\r\n\r\n getResourceValue(Key: string): string {\r\n let ResourceValue =this.translator.instant(Key)\r\n return ResourceValue;\r\n\r\n }\r\n\r\n getCurrentLanguage() {\r\n let currentLanguage = this.environmentService.getDefaultLanguage();\r\n let lang = localStorage.getItem('language');\r\n if ( lang) \r\n currentLanguage=lang;\r\n else \r\n localStorage.setItem('language', currentLanguage);\r\n return currentLanguage;\r\n }\r\n isCurrentLanguageEnglish() {\r\n this.getCurrentLanguage() == \"en\"\r\n }\r\n isCurrentLanguageArabic() {\r\n this.getCurrentLanguage() == \"ar\"\r\n }\r\n\r\n notifySuccessMessage(Message?: string, title?: string, time?: number) {\r\n\r\n let MessageTemplate = this.getResourceValue(\"SuccessMessage\");\r\n let titleTemplate = this.getResourceValue(\"Success\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n let toaster = AppInjector.get(ToastrService);\r\n toaster.success(MessageTemplate, titleTemplate);\r\n }\r\n\r\n notifyErrorMessage(Message?: string, title?: string, time?: number) {\r\n\r\n let MessageTemplate = this.getResourceValue(\"ErrorMessage\");\r\n let titleTemplate = this.getResourceValue(\"Error\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n const toaster = AppInjector.get(ToastrService);\r\n toaster.error(MessageTemplate, titleTemplate);\r\n }\r\n\r\n notifyWarningMessage(Message?: string, title?: string, time?: number) {\r\n\r\n let MessageTemplate = this.getResourceValue(\"WarningMessage\");\r\n let titleTemplate = this.getResourceValue(\"Warning\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n const toaster = AppInjector.get(ToastrService);\r\n toaster.warning(MessageTemplate, titleTemplate);\r\n }\r\n\r\n startBlockUI() {\r\n this.blockUI.start();\r\n }\r\n stopBlockUI() {\r\n this.blockUI.stop();\r\n }\r\n}\r\n","import { FormGroup } from \"@angular/forms\";\r\n\r\nexport class RequestOptionsModel {\r\n disableSuccessNotification: boolean=false;\r\n disableBlockUI: boolean=false;\r\n customSuccessMessage: string;\r\n customErrorMessage: string;\r\n responseType:any=\"\"\r\n formGroup:FormGroup=null\r\n}\r\n","import { Injectable, OnDestroy, Pipe } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { RequestOptionsModel } from '../models/RequestOptionsModel';\r\nimport { Observable } from 'rxjs/internal/Observable';\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { Subject } from 'rxjs';\r\nimport { UtilityService } from './utility.service';\r\nimport { takeUntil, tap } from 'rxjs/operators';\r\nimport { ControlValidationService } from './controlvalidation.service';\r\nimport { BBSFTranslateService } from './translate.service';\r\n\r\n@Injectable()\r\nexport class RequestHandlerService implements OnDestroy {\r\n private requestOptions: RequestOptionsModel = new RequestOptionsModel();\r\n private currentLanguage = \"\";\r\n public onDestroy$: Subject<void> = new Subject<void>();\r\n constructor\r\n (\r\n private http: HttpClient,\r\n private authService: AuthService,\r\n private environmentService: EnvironmentService,\r\n private utilityService: UtilityService,\r\n private bbsfTranslateService: BBSFTranslateService\r\n ) {\r\n //using localStorage to avoid call getCurrentLanguage() because it is not all to use async in constructor\r\n\r\n this.bbsfTranslateService.onLangChange.subscribe((event) => {\r\n if (this.currentLanguage != event.lang) {\r\n this.currentLanguage = event.lang;\r\n }\r\n })\r\n }\r\n\r\n public getLuckyNumber(): Observable<number> {\r\n \r\n return Observable.create((subject: Subject<number>) => {\r\n setInterval(() => {\r\n const number = Math.floor(Math.random() * 10);\r\n console.log(number)\r\n subject.next(number);\r\n }, 1000);\r\n }).pipe(\r\n takeUntil(this.onDestroy$));\r\n }\r\n\r\n\r\n get<T>(Url: string, params?: HttpParams, requestOptions?: RequestOptionsModel):Observable<T>{\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n let headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n });\r\n this.currentLanguage = localStorage.getItem('language');\r\n headers = headers.set('Accept-Language', this.currentLanguage.toString());\r\n headers = headers.set('ignore-cookies', 'true');\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n \r\n return this.http.get<T>(this.environmentService.getApiUrl() + Url, { headers: headers, params: params }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n })\r\n );\r\n }\r\n\r\n post<T>(Url: string, model?: any, params?: HttpParams, requestOptions?: RequestOptionsModel):Observable<T> {\r\n \r\n \r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n let headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n\r\n });\r\n this.currentLanguage = localStorage.getItem('language');\r\n headers = headers.set('Accept-Language', this.currentLanguage.toString());\r\n headers = headers.set('ignore-cookies', 'true');\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.post<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n })\r\n );\r\n }\r\n\r\n\r\n \r\n delete<T>(Url: string,deletedId:string,params?: HttpParams, requestOptions?: RequestOptionsModel):Observable<T>{\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n let headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n });\r\n this.currentLanguage = localStorage.getItem('language');\r\n headers = headers.set('Accept-Language', this.currentLanguage.toString());\r\n headers = headers.set('ignore-cookies', 'true');\r\n\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.delete<T>(this.environmentService.getApiUrl() + Url+`/${deletedId}`, { headers: headers, params: params }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n })\r\n );\r\n }\r\n\r\n\r\n put<T>(Url: string, model?: any, params?: HttpParams, requestOptions?: RequestOptionsModel):Observable<T> {\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n let headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n\r\n });\r\n this.currentLanguage = localStorage.getItem('language');\r\n headers = headers.set('Accept-Language', this.currentLanguage.toString());\r\n headers = headers.set('ignore-cookies', 'true');\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.put<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n })\r\n );\r\n }\r\n \r\n public destroyHandler(): void {\r\n this.onDestroy$.next();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n console.log(\"clearInterval\")\r\n this.destroyHandler()\r\n }\r\n}\r\n\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { BBSFTranslateService } from './translate.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StylesBundleService {\r\n\r\n constructor(@Inject(DOCUMENT) private document: Document,private translateService: BBSFTranslateService){}\r\n\r\n loadThemes(lang: string,bundleEnglishName:string,bundleArabicName:string) {\r\n if (lang == \"ar\") {\r\n this.loadStyleBundle(bundleArabicName.toString())\r\n document.querySelector('html').setAttribute(\"lang\", \"ar\");\r\n document.querySelector('html').setAttribute(\"dir\", \"rtl\");\r\n } else {\r\n this.loadStyleBundle(bundleEnglishName.toString())\r\n document.querySelector('html').setAttribute(\"lang\", \"en\");\r\n document.querySelector('html').setAttribute(\"dir\", \"ltr\");\r\n }\r\n \r\n }\r\n\r\n loadStyleBundle(styleName: string) {\r\n const head = this.document.getElementsByTagName('head')[0];\r\n\r\n let themeLink = this.document.getElementById('client-theme') as HTMLLinkElement;\r\n\r\n if (themeLink && themeLink.href.includes(styleName)) {\r\n return;\r\n }\r\n else if (themeLink && !themeLink.href.includes(styleName)) {\r\n themeLink.remove();\r\n }\r\n const style = this.document.createElement('link');\r\n style.id = 'client-theme';\r\n style.rel = 'stylesheet';\r\n style.href = `${styleName}`;\r\n head.appendChild(style);\r\n }\r\n\r\n}\r\n\r\n","import { Injectable, Optional, Host, SkipSelf, Component } from '@angular/core';\r\nimport { IndividualConfig, ToastrService } from 'ngx-toastr';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { AbstractControl, ControlContainer, ControlValueAccessor, NG_VALUE_ACCESSOR, FormControl, FormsModule, FormGroup } from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ErrorModel } from '../models/ErrorModel';\r\nimport { UtilityService } from './utility.service';\r\nimport { RequestOptionsModel } from '../models/RequestOptionsModel';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ControlValidationService {\r\n private requestOptions: RequestOptionsModel = new RequestOptionsModel();\r\n\r\n constructor\r\n (\r\n private utilityService: UtilityService\r\n ) {\r\n\r\n }\r\n\r\n isCreatedBefor = false;\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n showGlobalError(errorMessage?: string|string[], formId?: string,deleteOld?:boolean) {\r\n let globalErorrElement = document.getElementsByClassName('alert alert-danger alert-InvalidValidation')\r\n if (globalErorrElement.length > 0 ) {\r\n this.removeElementsByClass('alert alert-danger alert-InvalidValidation');\r\n }\r\n\r\n\r\n if (this.isCreatedBefor == true) {\r\n this.removeElementsByClass('alert alert-danger alert-InvalidValidation');\r\n }\r\n\r\n // tslint:disable-next-line: prefer-const\r\n if (!formId)\r\n formId = \"currentForm\"\r\n var object = document.getElementById(formId);\r\n const tagName = 'div';\r\n // tslint:disable-next-line: prefer-const\r\n var elementToAppend = document.createElement(tagName); // Your tag name here\r\n let message:string|string[] = \"\";\r\n \r\n\r\n if(!errorMessage||(typeof errorMessage==\"string\"))\r\n {\r\n if (localStorage.getItem('language') == \"ar\")\r\n message = errorMessage ? errorMessage : \"لديك بعص الأخطاء . من فضلك قم بالمراجعه \";\r\n else\r\n message = errorMessage ? errorMessage : \"You have some validation errors. Please check below\"\r\n elementToAppend.innerHTML = \"<ul><li>\" + message + \"</li></ul>\";\r\n elementToAppend.className += 'alert alert-danger alert-InvalidValidation';\r\n elementToAppend.id += 'errorId';\r\n // tslint:disable-next-line: prefer-for-of\r\n const elementToAppen = elementToAppend.cloneNode(true);\r\n // let targetElement = object.getElementsByClassName(\"b-control\")[0];\r\n object.insertBefore(elementToAppen, object.firstChild);\r\n }\r\n else\r\n {\r\n elementToAppend.innerHTML = \"<ul>\";\r\n\r\n for (const iterator of errorMessage) {\r\n \r\n elementToAppend.innerHTML = \"<li>\" + iterator + \"</li>\";\r\n }\r\n\r\n elementToAppend.innerHTML = \"</ul>\";\r\n elementToAppend.className += 'alert alert-danger alert-InvalidValidation';\r\n elementToAppend.id += 'errorId';\r\n // tslint:disable-next-line: prefer-for-of\r\n const elementToAppen = elementToAppend.cloneNode(true);\r\n // let targetElement = object.getElementsByClassName(\"b-control\")[0];\r\n object.insertBefore(elementToAppen, object.firstChild);\r\n }\r\n \r\n this.isCreatedBefor = true;\r\n\r\n }\r\n\r\n RemoveGlobalError() {\r\n const removedList = document.getElementsByClassName('alert alert-danger alert-InvalidValidation');\r\n // tslint:disable-next-line: prefer-for-of\r\n for (let index = 0; index < removedList.length; index++) {\r\n const element = removedList[index];\r\n element.remove();\r\n }\r\n this.isCreatedBefor = false;\r\n }\r\n\r\n showInputErro(errors: any) {\r\n\r\n // show error on top of form \r\n this.showGlobalError();\r\n // remove old error from server\r\n this.removeElementsByClass('errortemplet');\r\n // Looping in error Object\r\n for (const key in errors) {\r\n if (errors.hasOwnProperty(key)) {\r\n for (const iterator of errors[key]) {\r\n const input = document.querySelectorAll('[ng-reflect-name=' + key + ']')[0];\r\n if ((input.attributes['ng-reflect-name'].value as string) === key) {\r\n this.removeElementsByClass('erroclass-' + key);\r\n const tagName = 'p'\r\n const elementToAppend = document.createElement(tagName); // Your tag name here\r\n elementToAppend.innerHTML = iterator;\r\n elementToAppend.style.color = 'red'\r\n elementToAppend.className += 'errortemplet erroclass-' + key;\r\n const elementToappen = elementToAppend.cloneNode(true);\r\n input.parentNode.insertBefore(elementToappen, input.lastChild);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeElementsByClass(className) {\r\n const elements = document.getElementsByClassName(className);\r\n while (elements.length > 0) {\r\n elements[0].parentNode.removeChild(elements[0]);\r\n }\r\n }\r\n\r\n\r\n renderServerErrors(form: FormGroup, err: HttpErrorResponse, requestOptions: RequestOptionsModel,formId?:string) {\r\n if (err.error == null) {\r\n return;\r\n }\r\n let errorsArray:string[] =[];\r\n \r\n this.requestOptions = requestOptions;\r\n err.error.validation_errors.forEach((element: ErrorModel) => {\r\n let fieldName = element.field;\r\n let controlName = element.control_name;\r\n let message = element.message;\r\n if (form == null) {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${fieldName}: ${message}`)\r\n }\r\n else if (!this.hasControlName(form, controlName)) {\r\n errorsArray.push(`${fieldName}: ${message}`)\r\n // this.showGlobalError(`${fieldName}: ${message}`,formId )\r\n }\r\n else {\r\n this.setFieldError(form, controlName, fieldName, message);\r\n }\r\n });\r\n if(errorsArray.length>0)\r\n this.showGlobalError(errorsArray,formId )\r\n\r\n\r\n }\r\n\r\n private hasControlName(form: FormGroup, controlName: string): boolean {\r\n let control = form.get(controlName);\r\n return control != null;\r\n }\r\n\r\n private setFieldError(form: FormGroup, controlName: string, fieldName: string, message: string) {\r\n let control =null\r\n if(controlName)\r\n control = form.get(controlName);\r\n else\r\n control = form.get(fieldName.split('.')[0]);\r\n let errors = {\"errorMassage\": message};\r\n let fieldNameArray = fieldName.split('.');\r\n if (fieldNameArray.length >= 1) {\r\n switch (fieldNameArray[fieldNameArray.length - 1].toLocaleLowerCase()) {\r\n case \"english\":\r\n let englishControl = control.get(\"English\")\r\n englishControl.setErrors(errors);\r\n break;\r\n case \"arabic\":\r\n let arabicControl = control.get(\"Arabic\")\r\n arabicControl.setErrors(errors);\r\n break;\r\n\r\n default:\r\n control.setErrors(errors);\r\n }\r\n\r\n }\r\n else if(fieldNameArray.length == 1)\r\n { \r\n control.setErrors(errors);\r\n }\r\n else {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${fieldName}: ${message}`)\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n}\r\n","import { HttpParams } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { AuthService } from \"../authentication/auth.service\";\r\nimport { RequestHandlerService } from \"./requesthandler.service\";\r\nimport { StylesBundleService } from \"./stylesbundle.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MasterLayoutService {\r\n ApiUrl=\"/api/admin/Users/\"\r\n constructor(private router: Router, private http: RequestHandlerService, private authService: AuthService,private stylesBundleService:StylesBundleService ,private translate:TranslateService) {\r\n }\r\n switchLang(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n this.changeLanguage(lang).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject =Value ;\r\n this.authService.getUser();\r\n this.authService.user.profile = Object.assign( this.authService.user.profile, UserInfoObject);\r\n this.authService.storUser(this.authService.user);\r\n this.stylesBundleService.loadThemes(lang,bundleEnglishName,bundleArabicName);\r\n localStorage.setItem('language', lang);\r\n this.translate.use(lang);\r\n });\r\n });\r\n }\r\n reloadComponent() {\r\n let currentUrl = this.router.url;\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n this.router.onSameUrlNavigation = 'reload';\r\n this.router.navigate([currentUrl]);\r\n }\r\n\r\n private changeLanguage(key: string) {\r\n\r\n let params = new HttpParams();\r\n params = params.append(\"UserId\", this.authService.user.profile.id);\r\n params = params.append(\"LanguageKey\", key);\r\n return this.http.post(this.ApiUrl + 'updateLaguage', null, params)\r\n }\r\n\r\n private updateUserInfo() {\r\n return this.http.get('/connect/userinfo')\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injector, NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BlockUIModule } from 'ng-block-ui';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { HttpModule } from '@angular/http';\r\nimport { UtilityService } from './shared/services/utility.service';\r\nimport { EnvironmentService } from './shared/services/environment.service';\r\nimport { AuthService } from './shared/authentication/auth.service';\r\nimport { RequestHandlerService } from './shared/services/requesthandler.service';\r\nimport { StylesBundleService } from './shared/services/stylesbundle.service';\r\nimport { BBSFTranslateService } from './shared/services/translate.service';\r\nimport { ControlValidationService } from './shared/services/controlvalidation.service';\r\nimport { MasterLayoutService } from './shared/services/masterlayout.service';\r\n\r\nexport let AppInjector: Injector;\r\n\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n BlockUIModule.forRoot(),\r\n HttpModule,\r\n RouterModule,\r\n ToastrModule.forRoot(),\r\n\r\n ],\r\n exports: [\r\n \r\n ],\r\n providers:[\r\n UtilityService,\r\n EnvironmentService,\r\n AuthService,\r\n RequestHandlerService,\r\n StylesBundleService,\r\n TranslateService,\r\n BBSFTranslateService,\r\n ControlValidationService,\r\n MasterLayoutService\r\n ]\r\n})\r\nexport class BBSFUtilitiesModule { \r\n\r\n constructor(private injector: Injector) {\r\n AppInjector = this.injector;\r\n\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Resolve } from \"@angular/router\";\r\nimport { Observable } from \"rxjs\";\r\nimport { BBSFTranslateService } from \"./translate.service\";\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TranslationResolverService implements Resolve<any> {\r\n constructor(private translateService: BBSFTranslateService) {}\r\n\r\n resolve(): Observable<any> {\r\n return this.translateService.getTranslation(\r\n this.translateService.currentLang\r\n );\r\n }\r\n}\r\n","/*\r\n * Public API Surface of @bnsights/bbsf-utilities\r\n */\r\n\r\nexport * from './lib/bbsf-utilities.module';\r\n\r\nexport * from './lib/shared/services/utility.service';\r\nexport * from './lib/shared/services/environment.service';\r\nexport * from './lib/shared/services/requesthandler.service'\r\nexport * from './lib/shared/services/stylesbundle.service'\r\nexport * from './lib/shared/services/translate.service'\r\nexport * from './lib/shared/services/controlvalidation.service'\r\nexport * from './lib/shared/services/masterlayout.service'\r\nexport * from './lib/shared/services/translationresolver.service'\r\n\r\n\r\nexport * from './lib/shared/config/environment';\r\n\r\n\r\nexport * from './lib/shared/authentication/auth.service';\r\n\r\n\r\nexport * from './lib/shared/models/RequestOptionsModel';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bnsights-bbsf-utilities.js","sources":["../../../projects/bbsf-utilities/src/lib/shared/config/environment.ts","../../../projects/bbsf-utilities/src/lib/shared/services/environment.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translate.service.ts","../../../projects/bbsf-utilities/src/lib/shared/authentication/auth.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/utility.service.ts","../../../projects/bbsf-utilities/src/lib/shared/models/RequestOptionsModel.ts","../../../projects/bbsf-utilities/src/lib/shared/services/requesthandler.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/stylesbundle.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/controlvalidation.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/masterlayout.service.ts","../../../projects/bbsf-utilities/src/lib/bbsf-utilities.module.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translationresolver.service.ts","../../../projects/bbsf-utilities/src/public-api.ts","../../../projects/bbsf-utilities/src/bnsights-bbsf-utilities.ts"],"sourcesContent":["// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = Object.assign({\r\n},\r\n(window as any).Envirnment);\r\n\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../config/environment';\r\nimport { AreaModel } from '../models/AreaModel';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n\r\n \r\n static AreaList: AreaModel[] = []\r\n \r\n getEnvironmentObject() {\r\n return environment;\r\n }\r\n\r\n getBaseUrl() {\r\n let Url = environment[\"BBSF_BaseUrl\"]\r\n return Url;\r\n }\r\n getApiUrl() {\r\n let Url = environment[\"BBSF_ApiUrl\"]\r\n return Url;\r\n }\r\n\r\n\r\n getProductionMode() {\r\n let Mode = environment[\"BBSF_IsProduction\"] as boolean\r\n return Mode;\r\n }\r\n\r\n getDefaultLanguage() {\r\n let Mode = environment[\"BBSF_DefaultLanguage\"] as string\r\n return Mode;\r\n }\r\n getIdentityServerUrl() {\r\n let Url = environment[\"BBSF_IdentityServerUrl\"]\r\n return Url;\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BBSFTranslateService extends TranslateService {\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { UserManager, UserManagerSettings, User, WebStorageStateStore } from 'oidc-client';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { BBSFTranslateService } from '../services/translate.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class AuthService {\r\n\r\n // Observable navItem source\r\n private _authNavStatusSource = new BehaviorSubject<boolean>(false);\r\n // Observable navItem stream\r\n authNavStatus$ = this._authNavStatusSource.asObservable();\r\n // Observable navItem source\r\n private _userSource: Subject<User> = new Subject<User>();\r\n UserStatus$ = this._userSource.asObservable();\r\n private manager = new UserManager(\r\n {\r\n authority: this.environmentService.getIdentityServerUrl(),\r\n client_id: 'angular_spa',\r\n redirect_uri: this.environmentService.getIdentityServerUrl() +'/Admin/authentication/auth-callback',\r\n post_logout_redirect_uri: this.environmentService.getBaseUrl(),\r\n response_type: \"id_token token\",\r\n scope: \"openid profile email IdentityServerApi\",\r\n filterProtocolClaims: true,\r\n loadUserInfo: true,\r\n automaticSilentRenew: true,\r\n silent_redirect_uri: this.environmentService.getIdentityServerUrl() + '/assets/silent-callback.html',\r\n userStore: new WebStorageStateStore({ store: window.localStorage })\r\n }\r\n );\r\n public redirectUrl: string = \"\"\r\n static user: User | null = null;\r\n user: User | null;\r\n\r\n constructor(private http: HttpClient, private environmentService: EnvironmentService,private translateService:BBSFTranslateService,private router: Router) {\r\n this.manager.getUser().then(async user => {\r\n this.manager.storeUser(user);\r\n AuthService.user = user;\r\n this.user = user;\r\n this._authNavStatusSource.next(await this.isAuthenticated());\r\n });\r\n this.manager.events.addAccessTokenExpired(_ => {\r\n this._authNavStatusSource.next(false);\r\n })\r\n }\r\n\r\n login() {\r\n return this.manager.signinRedirect();\r\n }\r\n\r\n getUser() {\r\n this.manager.getUser().then(async user => {\r\n ;\r\n AuthService.user = user;\r\n this.user = user\r\n this._authNavStatusSource.next(await this.isAuthenticated());\r\n });\r\n }\r\n storUser(User: any) {\r\n this.manager.storeUser(User);\r\n }\r\n\r\n revokeAccessToken() {\r\n this.manager.revokeAccessToken();\r\n }\r\n\r\n signinSilent() {\r\n\r\n let x = this.manager.signinSilentCallback()\r\n x.then(s => {\r\n //console.log(s)\r\n })\r\n }\r\n\r\n async completeAuthentication() {\r\n this.user = await this.manager.signinRedirectCallback();\r\n AuthService.user = this.user\r\n if(!localStorage.getItem(\"language\")||localStorage.getItem(\"language\")==this.user.profile.locale)\r\n localStorage.setItem(\"language\",this.user.profile.locale)\r\n \r\n if(this.translateService.currentLang!=localStorage.getItem(\"language\"))\r\n {\r\n this.translateService.resetLang(this.translateService.currentLang)\r\n await this.translateService.reloadLang(localStorage.getItem(\"language\")).subscribe((res)=>{\r\n console.log(res)\r\n })\r\n }\r\n this._userSource.next(AuthService.user)\r\n this._authNavStatusSource.next(await this.isAuthenticated());\r\n }\r\n\r\n \r\n\r\n\r\n async refreshToken(token) {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': token\r\n })\r\n };\r\n \r\n this.manager.revokeAccessToken()\r\n return await this.http.post<any>(`${this.environmentService.getIdentityServerUrl()}/users/refresh-token`, httpOptions, { withCredentials: true }).subscribe((user) => {\r\n this._userSource.next(user)\r\n AuthService.user = user\r\n this.user = user;\r\n })\r\n }\r\n\r\n getCurrentUser() {\r\n return this.manager.getUser()\r\n }\r\n\r\n async isAuthenticated(): Promise<boolean> {\r\n let user = await this.manager.getUser().then(user => {\r\n return user;\r\n })\r\n return this.user != null && !this.user.expired ;\r\n\r\n }\r\n isUserInRole(allowedPermission: number[]) {\r\n let selectedPermissionSetID:number = Number.parseInt( this.user.profile[\"selectedpermissionsetid\"])\r\n return allowedPermission.includes(selectedPermissionSetID);\r\n }\r\n\r\n authorizationHeaderValue(): string {\r\n return AuthService.user? `${AuthService.user.token_type} ${AuthService.user.access_token}`:\"\";\r\n }\r\n\r\n name(): string {\r\n return AuthService.user != null ? AuthService.user.profile.given_name : '';\r\n }\r\n setUrl(url) {\r\n localStorage.setItem(\"redirectUrl\", url)\r\n\r\n }\r\n getUrl() {\r\n return localStorage.getItem(\"redirectUrl\");\r\n }\r\n async signinSilentCallback() {\r\n let user = await this.manager.signinSilentCallback()\r\n //await this.manager.storeUser(user);\r\n AuthService.user = user;\r\n console.log(\"Token from signinSilentCallback :\"+AuthService.user)\r\n this.user = user;\r\n }\r\n async signout() {\r\n if(await !this.isAuthenticated())\r\n this.router.navigate(['/Admin/account/login']),\r\n localStorage.clear();\r\n await this.manager.signoutRedirect();\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n","import { Injectable, Optional, Host, SkipSelf, Component } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { BBSFTranslateService } from './translate.service';\r\nimport { AppInjector } from '../../bbsf-utilities.module';\r\nimport { EnvironmentService } from './environment.service';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilityService {\r\n\r\n isCreatedBefore = false;\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n constructor(private translator: BBSFTranslateService, private authService: AuthService , private environmentService: EnvironmentService,) {\r\n\r\n }\r\n\r\n\r\n getResourceValue(Key: string): string {\r\n let ResourceValue =this.translator.instant(Key)\r\n return ResourceValue;\r\n\r\n }\r\n\r\n getCurrentLanguage() {\r\n let currentLanguage = this.environmentService.getDefaultLanguage();\r\n let lang = localStorage.getItem('language');\r\n if ( lang) \r\n currentLanguage=lang;\r\n else \r\n localStorage.setItem('language', currentLanguage);\r\n return currentLanguage;\r\n }\r\n isCurrentLanguageEnglish() {\r\n return this.getCurrentLanguage() == \"en\"\r\n }\r\n isCurrentLanguageArabic() {\r\n return this.getCurrentLanguage() == \"ar\"\r\n }\r\n\r\n notifySuccessMessage(Message?: string, title?: string, time?: number) {\r\n\r\n let MessageTemplate = this.getResourceValue(\"SuccessMessage\");\r\n let titleTemplate = this.getResourceValue(\"Success\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n let toaster = AppInjector.get(ToastrService);\r\n toaster.success(MessageTemplate, titleTemplate);\r\n }\r\n\r\n notifyErrorMessage(Message?: string, title?: string, time?: number) {\r\n\r\n let MessageTemplate = this.getResourceValue(\"ErrorMessage\");\r\n let titleTemplate = this.getResourceValue(\"Error\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n const toaster = AppInjector.get(ToastrService);\r\n toaster.error(MessageTemplate, titleTemplate);\r\n }\r\n\r\n notifyWarningMessage(Message?: string, title?: string, time?: number) {\r\n\r\n let MessageTemplate = this.getResourceValue(\"WarningMessage\");\r\n let titleTemplate = this.getResourceValue(\"Warning\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n const toaster = AppInjector.get(ToastrService);\r\n toaster.warning(MessageTemplate, titleTemplate);\r\n }\r\n\r\n startBlockUI() {\r\n this.blockUI.start();\r\n }\r\n stopBlockUI() {\r\n this.blockUI.stop();\r\n }\r\n}\r\n","import { FormGroup } from \"@angular/forms\";\r\n\r\nexport class RequestOptionsModel {\r\n disableSuccessNotification: boolean=false;\r\n disableBlockUI: boolean=false;\r\n customSuccessMessage: string;\r\n customErrorMessage: string;\r\n responseType:any=\"\"\r\n formGroup:FormGroup=null\r\n}\r\n","import { Injectable, OnDestroy, Pipe } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { RequestOptionsModel } from '../models/RequestOptionsModel';\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { UtilityService } from './utility.service';\r\nimport { map, takeUntil, tap } from 'rxjs/operators';\r\nimport { BBSFTranslateService } from './translate.service';\r\nimport { plainToClass } from 'class-transformer';\r\n\r\n\r\n@Injectable()\r\nexport class RequestHandlerService implements OnDestroy {\r\n private requestOptions: RequestOptionsModel = new RequestOptionsModel();\r\n private currentLanguage = \"\";\r\n public onDestroy$: Subject<void> = new Subject<void>();\r\n constructor\r\n (\r\n private http: HttpClient,\r\n private authService: AuthService,\r\n private environmentService: EnvironmentService,\r\n private utilityService: UtilityService,\r\n private bbsfTranslateService: BBSFTranslateService\r\n ) {\r\n //using localStorage to avoid call getCurrentLanguage() because it is not all to use async in constructor\r\n\r\n this.bbsfTranslateService.onLangChange.subscribe((event) => {\r\n if (this.currentLanguage != event.lang) {\r\n this.currentLanguage = event.lang;\r\n }\r\n })\r\n }\r\n\r\n public getLuckyNumber(): Observable<number> {\r\n \r\n return Observable.create((subject: Subject<number>) => {\r\n setInterval(() => {\r\n const number = Math.floor(Math.random() * 10);\r\n console.log(number)\r\n subject.next(number);\r\n }, 1000);\r\n }).pipe(\r\n takeUntil(this.onDestroy$));\r\n }\r\n\r\n\r\n get<T>(Url: string, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel ):Observable<T>{\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n let headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n });\r\n this.currentLanguage = localStorage.getItem('language');\r\n headers = headers.set('Accept-Language', this.currentLanguage.toString());\r\n headers = headers.set('ignore-cookies', 'true');\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n let object:T;\r\n return this.http.get<T>(this.environmentService.getApiUrl() + Url, { headers: headers, params: params }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }),map((data: T) => {\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true })\r\n }) \r\n ) as Observable<T>;\r\n }\r\n\r\n post<T>(Url: string, model?: any, responseType?: new () => T, params?: HttpParams, requestOptions?: RequestOptionsModel):Observable<T> {\r\n \r\n \r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n let headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n\r\n });\r\n this.currentLanguage = localStorage.getItem('language');\r\n headers = headers.set('Accept-Language', this.currentLanguage.toString());\r\n headers = headers.set('ignore-cookies', 'true');\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.post<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }),map((data: T) => {\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true })\r\n }) \r\n );\r\n }\r\n\r\n\r\n \r\n delete<T>(Url: string,deletedId:string, requestOptions?: RequestOptionsModel, responseType?: new () => T,params?: HttpParams):Observable<T>{\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n let headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n });\r\n this.currentLanguage = localStorage.getItem('language');\r\n headers = headers.set('Accept-Language', this.currentLanguage.toString());\r\n headers = headers.set('ignore-cookies', 'true');\r\n\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.delete<T>(this.environmentService.getApiUrl() + Url+`/${deletedId}`, { headers: headers, params: params }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }),map((data: T) => {\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true })\r\n }) \r\n );\r\n }\r\n\r\n\r\n put<T>(Url: string, model?: any, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel):Observable<T> {\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n let headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n\r\n });\r\n this.currentLanguage = localStorage.getItem('language');\r\n headers = headers.set('Accept-Language', this.currentLanguage.toString());\r\n headers = headers.set('ignore-cookies', 'true');\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.put<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }),map((data: T) => {\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true })\r\n }) \r\n );\r\n }\r\n \r\n public destroyHandler(): void {\r\n this.onDestroy$.next();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n console.log(\"clearInterval\")\r\n this.destroyHandler()\r\n }\r\n}\r\n\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { BBSFTranslateService } from './translate.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StylesBundleService {\r\n\r\n constructor(@Inject(DOCUMENT) private document: Document,private translateService: BBSFTranslateService){}\r\n\r\n loadThemes(lang: string,bundleEnglishName:string,bundleArabicName:string) {\r\n if (lang == \"ar\") {\r\n this.loadStyleBundle(bundleArabicName.toString())\r\n document.querySelector('html').setAttribute(\"lang\", \"ar\");\r\n document.querySelector('html').setAttribute(\"dir\", \"rtl\");\r\n } else {\r\n this.loadStyleBundle(bundleEnglishName.toString())\r\n document.querySelector('html').setAttribute(\"lang\", \"en\");\r\n document.querySelector('html').setAttribute(\"dir\", \"ltr\");\r\n }\r\n \r\n }\r\n\r\n loadThemesColor(theme: string,bundleDarkName:string,bundleLightName:string) {\r\n if (theme == \"Light\") \r\n this.loadStyleBundle(bundleLightName.toString());\r\n else\r\n this.loadStyleBundle(bundleDarkName.toString())\r\n }\r\n\r\n loadStyleBundle(styleName: string) {\r\n const head = this.document.getElementsByTagName('head')[0];\r\n\r\n let themeLink = this.document.getElementById('client-theme') as HTMLLinkElement;\r\n\r\n if (themeLink && themeLink.href.includes(styleName)) {\r\n return;\r\n }\r\n else if (themeLink && !themeLink.href.includes(styleName)) {\r\n themeLink.remove();\r\n }\r\n const style = this.document.createElement('link');\r\n style.id = 'client-theme';\r\n style.rel = 'stylesheet';\r\n style.href = `${styleName}`;\r\n head.appendChild(style);\r\n }\r\n\r\n}\r\n\r\n","import { Injectable, Optional, Host, SkipSelf, Component } from '@angular/core';\r\nimport { IndividualConfig, ToastrService } from 'ngx-toastr';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { AbstractControl, ControlContainer, ControlValueAccessor, NG_VALUE_ACCESSOR, FormControl, FormsModule, FormGroup } from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ErrorModel } from '../models/ErrorModel';\r\nimport { UtilityService } from './utility.service';\r\nimport { RequestOptionsModel } from '../models/RequestOptionsModel';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ControlValidationService {\r\n private requestOptions: RequestOptionsModel = new RequestOptionsModel();\r\n\r\n constructor\r\n (\r\n private utilityService: UtilityService\r\n ) {\r\n\r\n }\r\n\r\n isCreatedBefor = false;\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n showGlobalError(errorMessage?: string | string[], formId?: string, deleteOld?: boolean) {\r\n let globalErorrElement = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger')\r\n if (globalErorrElement.length > 0) {\r\n this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');\r\n }\r\n\r\n\r\n if (this.isCreatedBefor == true) {\r\n this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');\r\n }\r\n\r\n // tslint:disable-next-line: prefer-const\r\n if (!formId)\r\n formId = \"currentForm\"\r\n var object = document.getElementById(formId);\r\n const tagName = 'div';\r\n // tslint:disable-next-line: prefer-const\r\n var elementToAppend = document.createElement(tagName); // Your tag name here\r\n let message: string | string[] = \"\";\r\n\r\n\r\n if (!errorMessage || (typeof errorMessage == \"string\")) {\r\n if (localStorage.getItem('language') == \"ar\")\r\n message = errorMessage ? errorMessage : \"لديك بعص الأخطاء . من فضلك قم بالمراجعه \";\r\n else\r\n message = errorMessage ? errorMessage : \"You have some validation errors. Please check below\"\r\n elementToAppend.innerHTML = \"<ul class='list-unstyled m-0 py-3 d-flex align-items-center fs-6'><li><i class='fa fa-times-circle text-danger me-3 fs-2'></i>\" + message + \"</li></ul>\";\r\n elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';\r\n elementToAppend.id += 'errorId';\r\n // tslint:disable-next-line: prefer-for-of\r\n const elementToAppen = elementToAppend.cloneNode(true);\r\n // let targetElement = object.getElementsByClassName(\"b-control\")[0];\r\n object.insertBefore(elementToAppen, object.firstChild);\r\n }\r\n else {\r\n elementToAppend.innerHTML = \"<ul>\";\r\n\r\n for (const iterator of errorMessage) {\r\n\r\n elementToAppend.innerHTML = \"<li>\" + iterator + \"</li>\";\r\n }\r\n\r\n elementToAppend.innerHTML = \"</ul>\";\r\n elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';\r\n elementToAppend.id += 'errorId';\r\n // tslint:disable-next-line: prefer-for-of\r\n const elementToAppen = elementToAppend.cloneNode(true);\r\n // let targetElement = object.getElementsByClassName(\"b-control\")[0];\r\n object.insertBefore(elementToAppen, object.firstChild);\r\n }\r\n\r\n this.isCreatedBefor = true;\r\n\r\n }\r\n\r\n RemoveGlobalError() {\r\n const removedList = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger');\r\n // tslint:disable-next-line: prefer-for-of\r\n for (let index = 0; index < removedList.length; index++) {\r\n const element = removedList[index];\r\n element.remove();\r\n }\r\n this.isCreatedBefor = false;\r\n }\r\n\r\n showInputErro(errors: any) {\r\n\r\n // show error on top of form \r\n this.showGlobalError();\r\n // remove old error from server\r\n this.removeElementsByClass('errortemplet');\r\n // Looping in error Object\r\n for (const key in errors) {\r\n if (errors.hasOwnProperty(key)) {\r\n for (const iterator of errors[key]) {\r\n const input = document.querySelectorAll('[ng-reflect-name=' + key + ']')[0];\r\n if ((input.attributes['ng-reflect-name'].value as string) === key) {\r\n this.removeElementsByClass('erroclass-' + key);\r\n const tagName = 'p'\r\n const elementToAppend = document.createElement(tagName); // Your tag name here\r\n elementToAppend.innerHTML = iterator;\r\n elementToAppend.style.color = 'red'\r\n elementToAppend.className += 'errortemplet erroclass-' + key;\r\n const elementToappen = elementToAppend.cloneNode(true);\r\n input.parentNode.insertBefore(elementToappen, input.lastChild);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeElementsByClass(className) {\r\n const elements = document.getElementsByClassName(className);\r\n while (elements.length > 0) {\r\n elements[0].parentNode.removeChild(elements[0]);\r\n }\r\n }\r\n\r\n\r\n renderServerErrors(form: FormGroup, err: HttpErrorResponse, requestOptions: RequestOptionsModel, formId?: string) {\r\n if (err.error == null) {\r\n return;\r\n }\r\n let errorsArray: string[] = [];\r\n\r\n this.requestOptions = requestOptions;\r\n err.error.validation_errors.forEach((element: ErrorModel) => {\r\n let fieldName = element.field;\r\n let controlName = element.controlName;\r\n let message = element.message;\r\n if (form == null) {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${fieldName}: ${message}`);\r\n }\r\n else if (controlName && !this.hasControlName(form, controlName)) {\r\n errorsArray.push(`${fieldName}: ${message}`);\r\n // this.showGlobalError(`${fieldName}: ${message}`,formId )\r\n }\r\n else {\r\n this.setFieldError(form, controlName, fieldName, message);\r\n }\r\n });\r\n if (errorsArray.length > 0)\r\n this.showGlobalError(errorsArray, formId)\r\n\r\n\r\n }\r\n\r\n private hasControlName(form: FormGroup, controlName: string): boolean {\r\n let control = form.get(controlName);\r\n return control != null;\r\n }\r\n\r\n private setFieldError(form: FormGroup, controlName: string, fieldName: string, message: string) {\r\n let control = null\r\n if (controlName)\r\n control = form.get(controlName);\r\n else\r\n control = form.get(fieldName.split('.')[0]);\r\n let errors = { \"errorMassage\": message };\r\n let fieldNameArray = fieldName.split('.');\r\n if (fieldNameArray.length >= 1) {\r\n switch (fieldNameArray[fieldNameArray.length - 1].toLocaleLowerCase()) {\r\n case \"english\":\r\n let englishControl = control.get(\"English\")\r\n englishControl.setErrors(errors);\r\n break;\r\n case \"arabic\":\r\n let arabicControl = control.get(\"Arabic\")\r\n arabicControl.setErrors(errors);\r\n break;\r\n\r\n default:\r\n control.setErrors(errors);\r\n }\r\n\r\n }\r\n else if (fieldNameArray.length == 1) {\r\n control.setErrors(errors);\r\n }\r\n else {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${fieldName}: ${message}`)\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n}\r\n","import { HttpParams } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { AuthService } from \"../authentication/auth.service\";\r\nimport { RequestHandlerService } from \"./requesthandler.service\";\r\nimport { StylesBundleService } from \"./stylesbundle.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MasterLayoutService {\r\n ApiUrl=\"/api/Home/\"\r\n constructor(private router: Router, private http: RequestHandlerService, private authService: AuthService,private stylesBundleService:StylesBundleService ,private translate:TranslateService) {\r\n }\r\n switchLang(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n this.changeLanguage(lang).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject =Value ;\r\n this.authService.getUser();\r\n this.authService.user.profile = Object.assign( this.authService.user.profile, UserInfoObject);\r\n this.authService.storUser(this.authService.user);\r\n this.stylesBundleService.loadThemes(lang,bundleEnglishName,bundleArabicName);\r\n localStorage.setItem('language', lang);\r\n this.translate.use(lang);\r\n });\r\n });\r\n }\r\n \r\n reloadComponent() {\r\n let currentUrl = this.router.url;\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n this.router.onSameUrlNavigation = 'reload';\r\n this.router.navigate([currentUrl]);\r\n }\r\n\r\n private changeLanguage(key: string) {\r\n let params = new HttpParams();\r\n params = params.append(\"UserId\", this.authService.user.profile.id);\r\n params = params.append(\"LanguageKey\", key);\r\n return this.http.post(this.ApiUrl + 'UpdateLanguage', null,null, params)\r\n }\r\n\r\n private updateUserInfo() {\r\n return this.http.get('/connect/userinfo')\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injector, NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BlockUIModule } from 'ng-block-ui';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { HttpModule } from '@angular/http';\r\nimport { UtilityService } from './shared/services/utility.service';\r\nimport { EnvironmentService } from './shared/services/environment.service';\r\nimport { AuthService } from './shared/authentication/auth.service';\r\nimport { RequestHandlerService } from './shared/services/requesthandler.service';\r\nimport { StylesBundleService } from './shared/services/stylesbundle.service';\r\nimport { BBSFTranslateService } from './shared/services/translate.service';\r\nimport { ControlValidationService } from './shared/services/controlvalidation.service';\r\nimport { MasterLayoutService } from './shared/services/masterlayout.service';\r\n\r\nexport let AppInjector: Injector;\r\n\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n BlockUIModule.forRoot(),\r\n HttpModule,\r\n RouterModule,\r\n ToastrModule.forRoot(),\r\n\r\n ],\r\n exports: [\r\n \r\n ],\r\n providers:[\r\n UtilityService,\r\n EnvironmentService,\r\n AuthService,\r\n RequestHandlerService,\r\n StylesBundleService,\r\n TranslateService,\r\n BBSFTranslateService,\r\n ControlValidationService,\r\n MasterLayoutService\r\n ]\r\n})\r\nexport class BBSFUtilitiesModule { \r\n\r\n constructor(private injector: Injector) {\r\n AppInjector = this.injector;\r\n\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Resolve } from \"@angular/router\";\r\nimport { Observable } from \"rxjs\";\r\nimport { BBSFTranslateService } from \"./translate.service\";\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TranslationResolverService implements Resolve<any> {\r\n constructor(private translateService: BBSFTranslateService) {}\r\n\r\n resolve(): Observable<any> {\r\n return this.translateService.getTranslation(\r\n this.translateService.currentLang\r\n );\r\n }\r\n}\r\n","/*\r\n * Public API Surface of @bnsights/bbsf-utilities\r\n */\r\n\r\nexport * from './lib/bbsf-utilities.module';\r\n\r\nexport * from './lib/shared/services/utility.service';\r\nexport * from './lib/shared/services/environment.service';\r\nexport * from './lib/shared/services/requesthandler.service'\r\nexport * from './lib/shared/services/stylesbundle.service'\r\nexport * from './lib/shared/services/translate.service'\r\nexport * from './lib/shared/services/controlvalidation.service'\r\nexport * from './lib/shared/services/masterlayout.service'\r\nexport * from './lib/shared/services/translationresolver.service'\r\n\r\n\r\nexport * from './lib/shared/config/environment';\r\n\r\n\r\nexport * from './lib/shared/authentication/auth.service';\r\n\r\n\r\nexport * from './lib/shared/models/RequestOptionsModel';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,12 @@ import { HttpClient } from '@angular/common/http';
|
|
|
2
2
|
import { User } from 'oidc-client';
|
|
3
3
|
import { EnvironmentService } from '../services/environment.service';
|
|
4
4
|
import { BBSFTranslateService } from '../services/translate.service';
|
|
5
|
+
import { Router } from '@angular/router';
|
|
5
6
|
export declare class AuthService {
|
|
6
7
|
private http;
|
|
7
8
|
private environmentService;
|
|
8
9
|
private translateService;
|
|
10
|
+
private router;
|
|
9
11
|
private _authNavStatusSource;
|
|
10
12
|
authNavStatus$: import("rxjs").Observable<boolean>;
|
|
11
13
|
private _userSource;
|
|
@@ -14,7 +16,7 @@ export declare class AuthService {
|
|
|
14
16
|
redirectUrl: string;
|
|
15
17
|
static user: User | null;
|
|
16
18
|
user: User | null;
|
|
17
|
-
constructor(http: HttpClient, environmentService: EnvironmentService, translateService: BBSFTranslateService);
|
|
19
|
+
constructor(http: HttpClient, environmentService: EnvironmentService, translateService: BBSFTranslateService, router: Router);
|
|
18
20
|
login(): Promise<void>;
|
|
19
21
|
getUser(): void;
|
|
20
22
|
storUser(User: any): void;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { OnDestroy } from '@angular/core';
|
|
2
2
|
import { HttpClient, HttpParams } from "@angular/common/http";
|
|
3
3
|
import { RequestOptionsModel } from '../models/RequestOptionsModel';
|
|
4
|
-
import { Observable } from 'rxjs/internal/Observable';
|
|
5
4
|
import { AuthService } from '../authentication/auth.service';
|
|
6
5
|
import { EnvironmentService } from './environment.service';
|
|
7
|
-
import { Subject } from 'rxjs';
|
|
6
|
+
import { Observable, Subject } from 'rxjs';
|
|
8
7
|
import { UtilityService } from './utility.service';
|
|
9
8
|
import { BBSFTranslateService } from './translate.service';
|
|
10
9
|
export declare class RequestHandlerService implements OnDestroy {
|
|
@@ -18,10 +17,10 @@ export declare class RequestHandlerService implements OnDestroy {
|
|
|
18
17
|
onDestroy$: Subject<void>;
|
|
19
18
|
constructor(http: HttpClient, authService: AuthService, environmentService: EnvironmentService, utilityService: UtilityService, bbsfTranslateService: BBSFTranslateService);
|
|
20
19
|
getLuckyNumber(): Observable<number>;
|
|
21
|
-
get<T>(Url: string, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T>;
|
|
22
|
-
post<T>(Url: string, model?: any, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T>;
|
|
23
|
-
delete<T>(Url: string, deletedId: string,
|
|
24
|
-
put<T>(Url: string, model?: any, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T>;
|
|
20
|
+
get<T>(Url: string, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T>;
|
|
21
|
+
post<T>(Url: string, model?: any, responseType?: new () => T, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T>;
|
|
22
|
+
delete<T>(Url: string, deletedId: string, requestOptions?: RequestOptionsModel, responseType?: new () => T, params?: HttpParams): Observable<T>;
|
|
23
|
+
put<T>(Url: string, model?: any, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T>;
|
|
25
24
|
destroyHandler(): void;
|
|
26
25
|
ngOnDestroy(): void;
|
|
27
26
|
}
|
|
@@ -4,5 +4,6 @@ export declare class StylesBundleService {
|
|
|
4
4
|
private translateService;
|
|
5
5
|
constructor(document: Document, translateService: BBSFTranslateService);
|
|
6
6
|
loadThemes(lang: string, bundleEnglishName: string, bundleArabicName: string): void;
|
|
7
|
+
loadThemesColor(theme: string, bundleDarkName: string, bundleLightName: string): void;
|
|
7
8
|
loadStyleBundle(styleName: string): void;
|
|
8
9
|
}
|