@bnsights/bbsf-utilities 1.2.1 → 1.2.2
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/README.md
CHANGED
|
@@ -126,6 +126,14 @@ See [XMLBUILDER2_FIX.md](./XMLBUILDER2_FIX.md) for technical details.
|
|
|
126
126
|
|
|
127
127
|
# Change Log
|
|
128
128
|
|
|
129
|
+
## 1.2.2 / 25-12-202h5
|
|
130
|
+
|
|
131
|
+
=====================
|
|
132
|
+
|
|
133
|
+
- Upgrade to angular 19
|
|
134
|
+
- Enhance Auth service
|
|
135
|
+
- Enhance Preload service
|
|
136
|
+
|
|
129
137
|
## 1.0.72 / 27/10/2025
|
|
130
138
|
|
|
131
139
|
=====================
|
|
@@ -1022,7 +1022,7 @@ class FileLoaderService {
|
|
|
1022
1022
|
}
|
|
1023
1023
|
};
|
|
1024
1024
|
script.onerror = () => reject('Failed to load environment.js');
|
|
1025
|
-
document.head.
|
|
1025
|
+
document.head.insertBefore(script, document.head.firstChild);
|
|
1026
1026
|
});
|
|
1027
1027
|
}
|
|
1028
1028
|
async preloadTranslations() {
|
|
@@ -1089,13 +1089,10 @@ class AuthService {
|
|
|
1089
1089
|
if (!this.jwtHelper.isTokenExpired(token))
|
|
1090
1090
|
this.handleAccessTokenWithoutLanguage(token);
|
|
1091
1091
|
else
|
|
1092
|
-
this.
|
|
1092
|
+
this.clearLocalAuthState({ keepRedirectUrl: true });
|
|
1093
1093
|
}
|
|
1094
1094
|
else {
|
|
1095
|
-
|
|
1096
|
-
AuthService.timers = [];
|
|
1097
|
-
AuthService.user = null;
|
|
1098
|
-
this._user = null;
|
|
1095
|
+
this.clearLocalAuthState({ keepRedirectUrl: true });
|
|
1099
1096
|
}
|
|
1100
1097
|
return AuthService.user;
|
|
1101
1098
|
}
|
|
@@ -1108,16 +1105,33 @@ class AuthService {
|
|
|
1108
1105
|
getCurrentUser() {
|
|
1109
1106
|
return AuthService.user;
|
|
1110
1107
|
}
|
|
1108
|
+
/**
|
|
1109
|
+
* The only supported way to read the current user's profile.
|
|
1110
|
+
* Ensures the in-memory user is hydrated from cookie (or cleared) before returning profile.
|
|
1111
|
+
*/
|
|
1112
|
+
getCurrentUserProfile() {
|
|
1113
|
+
// Force hydration/cleanup based on cookie state
|
|
1114
|
+
this.getUserManager();
|
|
1115
|
+
return AuthService.user?.profile ?? null;
|
|
1116
|
+
}
|
|
1111
1117
|
isAuthenticated() {
|
|
1112
1118
|
AuthService.user = this.user;
|
|
1113
1119
|
return AuthService.user != null && !this.jwtHelper.isTokenExpired(AuthService.user.access_token);
|
|
1114
1120
|
}
|
|
1115
1121
|
isUserInRole(allowedPermission) {
|
|
1116
|
-
|
|
1122
|
+
const profile = this.getCurrentUserProfile();
|
|
1123
|
+
if (!profile) {
|
|
1124
|
+
return false;
|
|
1125
|
+
}
|
|
1126
|
+
let selectedPermissionSetID = Number.parseInt(profile['selectedpermissionsetid']);
|
|
1117
1127
|
return allowedPermission.includes(selectedPermissionSetID);
|
|
1118
1128
|
}
|
|
1119
1129
|
isUserPermissionSetsInRoles(allowedPermission) {
|
|
1120
|
-
const
|
|
1130
|
+
const profile = this.getCurrentUserProfile();
|
|
1131
|
+
if (!profile) {
|
|
1132
|
+
return false;
|
|
1133
|
+
}
|
|
1134
|
+
const permissionSetSIDString = profile['permissionSetSID'];
|
|
1121
1135
|
if (!permissionSetSIDString) {
|
|
1122
1136
|
return false;
|
|
1123
1137
|
}
|
|
@@ -1135,7 +1149,8 @@ class AuthService {
|
|
|
1135
1149
|
: '';
|
|
1136
1150
|
}
|
|
1137
1151
|
name() {
|
|
1138
|
-
|
|
1152
|
+
const profile = this.getCurrentUserProfile();
|
|
1153
|
+
return profile?.given_name ?? '';
|
|
1139
1154
|
}
|
|
1140
1155
|
setUrl(url) {
|
|
1141
1156
|
localStorage.setItem('redirectUrl', url);
|
|
@@ -1143,28 +1158,39 @@ class AuthService {
|
|
|
1143
1158
|
getUrl() {
|
|
1144
1159
|
return localStorage.getItem('redirectUrl') ?? "/";
|
|
1145
1160
|
}
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1161
|
+
/**
|
|
1162
|
+
* Local-only cleanup primitive (no HTTP, no redirects).
|
|
1163
|
+
* Safe to call before/after auth transitions to prevent stale-user windows.
|
|
1164
|
+
*/
|
|
1165
|
+
clearLocalAuthState(options) {
|
|
1166
|
+
// Clear timers
|
|
1149
1167
|
AuthService.timers.map(t => clearInterval(t));
|
|
1150
1168
|
AuthService.timers = [];
|
|
1169
|
+
// Clear memory
|
|
1151
1170
|
AuthService.user = null;
|
|
1152
1171
|
this._user = null;
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
this.router.navigate(['/Admin/account/login']);
|
|
1160
|
-
});
|
|
1172
|
+
AuthService.UserClaims = null;
|
|
1173
|
+
// Delete cookie
|
|
1174
|
+
this.cookieService.delete(this.TOKEN_KEY, '/');
|
|
1175
|
+
// Clear redirectUrl unless explicitly told not to
|
|
1176
|
+
if (options?.keepRedirectUrl !== true) {
|
|
1177
|
+
localStorage.removeItem('redirectUrl');
|
|
1161
1178
|
}
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1179
|
+
this.isAuthenticatedSubject.next(false);
|
|
1180
|
+
}
|
|
1181
|
+
signOut() {
|
|
1182
|
+
const wasAuthenticated = this.isAuthenticated();
|
|
1183
|
+
// If authenticated, kick off server logout BEFORE wiping local auth context (cookie/header/session)
|
|
1184
|
+
if (wasAuthenticated) {
|
|
1185
|
+
this.logout().subscribe({ next: () => { }, error: () => { } });
|
|
1167
1186
|
}
|
|
1187
|
+
// Always clear local state immediately (no stale-user window)
|
|
1188
|
+
this.clearLocalAuthState({ keepRedirectUrl: false });
|
|
1189
|
+
// Redirect (Forms vs UAEPass)
|
|
1190
|
+
if (this.environmentService.getBBSFAuthenticationMode() == AuthenticationModes.UAEPass)
|
|
1191
|
+
this.logoutFromUAEPass();
|
|
1192
|
+
else
|
|
1193
|
+
this.router.navigate(['/Admin/account/login']);
|
|
1168
1194
|
}
|
|
1169
1195
|
logout() {
|
|
1170
1196
|
const httpOptions = {
|
|
@@ -1185,9 +1211,9 @@ class AuthService {
|
|
|
1185
1211
|
return this.http.get(this.environmentService.getBaseUrl() + ApiUrl + 'ClearCurrentUserSession', httpOptions);
|
|
1186
1212
|
}
|
|
1187
1213
|
async handleAccessToken(response) {
|
|
1188
|
-
|
|
1214
|
+
// Always start from a clean local state to prevent stale-user windows
|
|
1215
|
+
this.clearLocalAuthState({ keepRedirectUrl: true });
|
|
1189
1216
|
const token = response;
|
|
1190
|
-
AuthService.user = null;
|
|
1191
1217
|
AuthService.user = new User();
|
|
1192
1218
|
AuthService.user.token_type = "Bearer";
|
|
1193
1219
|
AuthService.user.access_token = token;
|
|
@@ -1202,9 +1228,9 @@ class AuthService {
|
|
|
1202
1228
|
await this.updateLanguage();
|
|
1203
1229
|
}
|
|
1204
1230
|
handleAccessTokenWithoutLanguage(response) {
|
|
1205
|
-
|
|
1231
|
+
// Always start from a clean local state to prevent stale-user windows
|
|
1232
|
+
this.clearLocalAuthState({ keepRedirectUrl: true });
|
|
1206
1233
|
const token = response;
|
|
1207
|
-
AuthService.user = null;
|
|
1208
1234
|
AuthService.user = new User();
|
|
1209
1235
|
AuthService.user.token_type = "Bearer";
|
|
1210
1236
|
AuthService.user.access_token = token;
|
|
@@ -1218,8 +1244,12 @@ class AuthService {
|
|
|
1218
1244
|
AuthService.timers.push(this.checkRefreshToken());
|
|
1219
1245
|
}
|
|
1220
1246
|
async updateLanguage() {
|
|
1221
|
-
|
|
1222
|
-
|
|
1247
|
+
const profile = this.getCurrentUserProfile();
|
|
1248
|
+
if (!profile) {
|
|
1249
|
+
return;
|
|
1250
|
+
}
|
|
1251
|
+
if (!localStorage.getItem('language') || localStorage.getItem('language') == profile.locale)
|
|
1252
|
+
localStorage.setItem('language', profile.locale);
|
|
1223
1253
|
if (this.translateService.currentLang != localStorage.getItem('language')) {
|
|
1224
1254
|
this.translateService.resetLang(this.translateService.currentLang);
|
|
1225
1255
|
await this.translateService.reloadLang(localStorage.getItem('language')).subscribe();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bnsights-bbsf-utilities.mjs","sources":["../../../projects/bbsf-utilities/src/lib/shared/models/UserModel.ts","../../../projects/bbsf-utilities/src/lib/shared/enums/authentication-modes-enums.ts","../../../projects/bbsf-utilities/src/lib/shared/services/appearance-configuration.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/configuration.service.ts","../../../projects/bbsf-utilities/src/lib/shared/models/area-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/error-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/request-options-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/speech-language.ts","../../../projects/bbsf-utilities/src/lib/shared/services/control-validation.service.ts","../../../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/master-layout.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/request-handler.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/styles-bundle.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translate.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translation-resolver.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/utility.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/language.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/speech-recognition.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/preload.service.ts","../../../projects/bbsf-utilities/src/lib/shared/authentication/auth.service.ts","../../../projects/bbsf-utilities/src/lib/bbsf-utilities.module.ts","../../../projects/bbsf-utilities/src/public-api.ts","../../../projects/bbsf-utilities/src/bnsights-bbsf-utilities.ts"],"sourcesContent":["export class User {\r\n\r\n token_type: string;\r\n access_token: string;\r\n profile: any;\r\n expires_at: any\r\n}\r\n","export enum AuthenticationModes {\r\n Forms = 'Forms',\r\n UAEPass = \"UAEPass\",\r\n WindowsAD = \"WindowsAD\",\r\n AzureAD = \"AzureAD\",\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ConfigurationService } from \".\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppearanceConfigurationService {\r\n\r\n constructor(private configService: ConfigurationService) {\r\n }\r\n\r\n getLayoutTheme() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Theme');\r\n }\r\n\r\n getFooterText() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FooterText');\r\n }\r\n\r\n getPageTitle() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_PageTitle');\r\n }\r\n\r\n getFavIcon() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FavIcon');\r\n }\r\n\r\n getCustomStyles() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_CustomStyles');\r\n }\r\n\r\n getLogo() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Logo');\r\n }\r\n \r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable, Injector, OnInit } from \"@angular/core\";\r\nimport { AuthService } from \"../authentication\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigurationService {\r\n\r\n static JsonData: any[] = [];\r\n private currentUserProfile: any;\r\n private _authService: AuthService;\r\n\r\n constructor(private httpClient: HttpClient, private injector: Injector) {\r\n this.httpClient.get(\"./assets/config/configurations.json\")\r\n .subscribe(data => {\r\n ConfigurationService.JsonData = data as any[];\r\n });\r\n }\r\n\r\n private get authService(): AuthService {\r\n if (!this._authService) {\r\n this._authService = this.injector.get(AuthService);\r\n }\r\n return this._authService;\r\n }\r\n\r\n getConfigurationValue(key: string) {\r\n this.currentUserProfile = this.authService.getCurrentUser()?.profile;\r\n var selectedKey = ConfigurationService.JsonData[key];\r\n if (selectedKey && typeof selectedKey === 'object') {\r\n if (selectedKey.OrganizationConfigurations) {\r\n if (this.currentUserProfile && this.currentUserProfile.organizationGUID_ID) {\r\n let organizationValue = Array(selectedKey.OrganizationConfigurations).find(o => o.OrganizationID_GUID == this.currentUserProfile.organizationGUID_ID);\r\n return organizationValue;\r\n }\r\n } else {\r\n return selectedKey.Value;\r\n }\r\n } else {\r\n return selectedKey;\r\n }\r\n }\r\n\r\n}","export class AreaModel {\r\n permissionSetID: number\r\n areaUrl: string;\r\n}\r\n","export class ErrorModel {\r\n field: string;\r\n controlName: string;\r\n message: string;\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 disableErrorHandler: boolean = false;\r\n customSuccessMessage: string;\r\n customErrorMessage: string;\r\n responseType: any = \"\"\r\n formGroup: FormGroup = null\r\n castResponsetoClass: boolean = true;\r\n}\r\n","export class LanguageDTO {\r\n name: string;\r\n prefix: string;\r\n dialect: string;\r\n englishName: string;\r\n arabicName: string;\r\n nativeName: string;\r\n detected: string;\r\n searching: string;\r\n elevating: string;\r\n translating: string;\r\n generatingAnswersForYou: string;\r\n isRTL: boolean;\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { ErrorModel, RequestOptionsModel } from '../models';\r\nimport { UtilityService } from '.';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ControlValidationService {\r\n\r\n private requestOptions: RequestOptionsModel = new RequestOptionsModel();\r\n\r\n constructor(private utilityService: UtilityService) {\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 if (this.isCreatedBefor == true) {\r\n this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');\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 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 let ul = document.createElement(\"ul\");\r\n elementToAppend.appendChild(ul);\r\n\r\n for (const iterator of errorMessage) {\r\n let li = document.createElement(\"li\");\r\n li.innerHTML = iterator;\r\n ul.appendChild(li);\r\n }\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 this.isCreatedBefor = true;\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 // 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 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\r\n if (err.error.validation_errors) {\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(`${message}`);\r\n }\r\n else if (controlName && !this.hasControlName(form, controlName)) {\r\n errorsArray.push(`${fieldName}: ${message}`);\r\n }\r\n else {\r\n this.setFieldError(form, controlName, fieldName, message);\r\n this.showGlobalError(null, formId);\r\n }\r\n });\r\n\r\n if (errorsArray.length > 0)\r\n this.showGlobalError(errorsArray, formId)\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\r\n if (controlName)\r\n control = this.getControlFormNameByFieldName(form, controlName);\r\n else\r\n control = this.getControlFormNameByFieldName(form, fieldName.split('.')[0]);\r\n\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 default:\r\n control.setErrors(errors);\r\n }\r\n }\r\n else {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`)\r\n }\r\n }\r\n\r\n private getControlFormNameByFieldName(form: FormGroup, fieldName: string) {\r\n const formControls = form.controls;\r\n let controlName = Object.keys(formControls).find(c => c.toLocaleLowerCase() === fieldName.toLocaleLowerCase());\r\n let control = form.get(controlName);\r\n return control;\r\n }\r\n\r\n}\r\n","// 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({}, (window as any).Environment);\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';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n\r\n static areaList: AreaModel[] = [];\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 return environment[\"BBSF_BaseURL\"];\r\n }\r\n\r\n getApiUrl() {\r\n return environment[\"BBSF_ApiUrl\"];\r\n }\r\n\r\n getProductionMode() {\r\n return environment[\"BBSF_IsProduction\"] as boolean;\r\n }\r\n\r\n getDefaultLanguage() {\r\n return environment[\"BBSF_DefaultLanguage\"] as string;\r\n }\r\n\r\n getIdentityServerUrl() {\r\n return environment[\"BBSF_IdentityServerUrl\"];\r\n }\r\n\r\n getIsIdentityServerExternal() {\r\n return environment[\"BBSF_IsExternalIdentityServer\"] as string;\r\n }\r\n\r\n getIsIdentityServerClientId() {\r\n return environment[\"BBSF_IdentityServer_Client_Id\"] as string;\r\n }\r\n\r\n getIsIdentityServerClientSecret() {\r\n return environment[\"BBSF_IdentityServer_Client_Secret\"] as string;\r\n }\r\n\r\n getBBSFAuthenticationMode() {\r\n let Mode = environment[\"BBSF_AuthenticationMode\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassBaseUrl() {\r\n let Mode = environment[\"UAEPass_BaseUrl\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassClientID() {\r\n let Mode = environment[\"UAEPass_ClientID\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassRedirectUrl() {\r\n let Mode = environment[\"UAEPass_RedirectUrl\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassAuthorizationEndPoint() {\r\n let Mode = environment[\"UAEPass_AuthorizationEndPoint\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassRedirectLogoutUrl() {\r\n let Mode = environment[\"UAEPass_RedirectLogoutUrl\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassLogoutEndPoint() {\r\n let Mode = environment[\"UAEPass_LogoutEndPoint\"] as string;\r\n return Mode;\r\n }\r\n\r\n\r\n getIsEnableWindowsAuthentication() {\r\n let Mode = environment[\"BBSF_Enable_WindowsAuthentication\"] as string;\r\n return Mode.toLocaleLowerCase() == 'true';\r\n }\r\n\r\n getAllowMultiTenancy() {\r\n let mode = environment[\"BBSF_AllowMultiTenancy\"] as string;\r\n return mode.toLocaleLowerCase() == 'true';\r\n }\r\n\r\n getCookieName() {\r\n let cookieName = environment[\"BBSF_CookieName\"];\r\n return cookieName;\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 { EnvironmentService, RequestHandlerService, StylesBundleService } from '.';\r\nimport { AuthService } from '../authentication';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MasterLayoutService {\r\n\r\n apiUrl = '/api/Home/';\r\n\r\n constructor(private router: Router, private http: RequestHandlerService, private authService: AuthService,\r\n private stylesBundleService: StylesBundleService, private translate: TranslateService,\r\n private environmentService: EnvironmentService) { }\r\n\r\n switchLang(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n if (this.authService.isAuthenticated()) {\r\n this.changeLanguage(lang).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject = Value as any;\r\n this.authService.handleAccessToken(UserInfoObject.token);\r\n this.stylesBundleService.loadThemes(\r\n lang,\r\n bundleEnglishName,\r\n bundleArabicName\r\n );\r\n localStorage.setItem('language', lang);\r\n this.translate.use(lang);\r\n });\r\n });\r\n }\r\n else\r\n this.router.navigate(['/Admin/account/login']);\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', 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 logError(error: string) {\r\n let params = new HttpParams();\r\n params = params.append('error', error);\r\n return this.http.post(this.apiUrl + 'LogError', null, null, params);\r\n }\r\n\r\n private updateUserInfo() {\r\n return this.http.get(this.apiUrl + 'UpdateUserInfo', null, null);\r\n\r\n }\r\n\r\n switchRole(permissionSetID: string) {\r\n this.updateRole(permissionSetID).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject = Value as any;\r\n this.authService.handleAccessToken(UserInfoObject.token);\r\n });\r\n });\r\n }\r\n\r\n private updateRole(permissionSetID: string) {\r\n let params = new HttpParams();\r\n params = params.append('UserId', AuthService.user.profile.id);\r\n params = params.append('RoleID', permissionSetID);\r\n return this.http.post(this.apiUrl + 'SwitchRole', null, null, params);\r\n }\r\n\r\n}\r\n","import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { Injectable, OnDestroy, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { plainToClass } from 'class-transformer';\r\nimport { Observable, Subject, throwError } from 'rxjs';\r\nimport { map, takeUntil, tap } from 'rxjs/operators';\r\nimport { BBSFTranslateService, EnvironmentService, UtilityService } from \".\";\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { RequestOptionsModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RequestHandlerService implements OnDestroy {\r\n\r\n private currentLanguage = \"\";\r\n public onDestroy$: Subject<void> = new Subject<void>();\r\n\r\n private router = inject(Router);\r\n constructor(\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 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 // Function to check if the internet connection is available\r\n private isOnline(): boolean {\r\n return navigator.onLine || !this.environmentService.getProductionMode();\r\n }\r\n\r\n // ...\r\n get<T>(Url: string, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: errorCode });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\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 (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\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 if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.post<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\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 (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.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 (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\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 (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.put<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n patch<T>(Url: string, model?: any, responseType?: new () => T, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\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 (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n\r\n return this.http.patch<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n download<T>(Url: string, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.get<T>(this.environmentService.getApiUrl() + Url, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n\r\n Upload<T>(Url: string, model?: any, requestOptions?: RequestOptionsModel): Observable<any> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeadersUpdated();\r\n return this.http.post(this.environmentService.getApiUrl() + Url, model, { headers: headers, reportProgress: true, observe: 'events' }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\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 private handleError(err: HttpErrorResponse) {\r\n var isEnglish = this.utilityService.getCurrentLanguage() == \"en\";\r\n if (err.error instanceof ErrorEvent) {\r\n this.utilityService.notifyErrorMessage();\r\n }\r\n else {\r\n if (err.status == 400)\r\n throwError(err);//error 400 is thrown to be catch by the Form component to handle Fluent validation errors\r\n else if (err.status == 401)\r\n this.router.navigate([\"/Admin/account/login\"]);\r\n else if (err.status == 403)\r\n this.utilityService.notifyErrorMessage(isEnglish ? \"Sorry, You're not authorized to access this action\" : \"عذرا ليس لديك الصلاحيه لهذا الطلب\");\r\n else if (err.status == 510)\r\n this.utilityService.notifyErrorMessage(isEnglish ? \"Can not delete this item as it is related to others\" : \"لا يمكن حذف هذا العنصر لأنه مرتبط بعناصر أخرى\");\r\n else if (err.status == 515)\r\n this.utilityService.notifyErrorMessage((err.error ? err.error.Message : err.message));\r\n else if (err.status == 504)\r\n this.utilityService.notifyErrorMessage((err.error ? err.error.Message : err.message));\r\n else {\r\n console.log(`error message is: ${err.error ? err.error.Message : err.message}`);\r\n this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue(\"ErrorMassage\"));\r\n }\r\n }\r\n this.utilityService.stopBlockUI();\r\n }\r\n\r\n getHeaders() {\r\n return new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n 'Client-Local-Time-Zone': Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n 'Accept-Language': localStorage.getItem('language'),\r\n 'ignore-cookies': 'true'\r\n });\r\n }\r\n getHeadersUpdated() {\r\n return new HttpHeaders({\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n 'Client-Local-Time-Zone': Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n 'Accept-Language': localStorage.getItem('language'),\r\n 'ignore-cookies': 'true',\r\n 'Video-Upload': 'true',\r\n 'Image-Upload': 'true',\r\n });\r\n\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BBSFTranslateService } from '.';\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(\"b-lang\", \"ar\"); //use b-lang instead of lang to fix firefox number inputs in Arabic locale\r\n document.querySelector('html').setAttribute(\"dir\", \"rtl\");\r\n } else {\r\n this.loadStyleBundle(bundleEnglishName.toString());\r\n document.querySelector('html').setAttribute(\"b-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 private loadStyleBundle(styleName: string): void {\r\n const head = this.document.getElementsByTagName('head')[0];\r\n let themeLink = this.document.getElementById('client-theme') as HTMLLinkElement;\r\n let shouldRemoveOld = false;\r\n\r\n if (themeLink) {\r\n // ✅ Check if current CSS already loaded (by exact filename)\r\n const currentFileName = this.getFileName(themeLink.href);\r\n const requestedFileName = this.getFileName(styleName);\r\n\r\n if (currentFileName === requestedFileName) {\r\n return; // Same CSS already loaded\r\n } else {\r\n shouldRemoveOld = true; // Mark for removal after new CSS is added\r\n }\r\n }\r\n\r\n // ✅ Add new CSS first (prevents FOUC)\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 // ✅ Remove old CSS after new one is added (smooth transition)\r\n if (shouldRemoveOld && themeLink) {\r\n themeLink.remove();\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Extract filename from full path\r\n * @param path Full path or just filename\r\n * @returns The filename only\r\n */\r\n private getFileName(path: string): string {\r\n // Extract just the filename from full path\r\n const parts = path.split('/');\r\n return parts[parts.length - 1];\r\n }\r\n}\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 { inject } from \"@angular/core\";\r\nimport { ResolveFn } from \"@angular/router\";\r\nimport { BBSFTranslateService } from \".\";\r\n\r\nexport const TranslationResolverService: ResolveFn<any> = () => {\r\n let translateService = inject(BBSFTranslateService);\r\n return translateService.getTranslation(translateService.currentLang);\r\n};","import { Injectable, Injector } from '@angular/core';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BBSFTranslateService, EnvironmentService } from '.';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilityService {\r\n\r\n isCreatedBefore = false;\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n constructor(private translator: BBSFTranslateService, private environmentService: EnvironmentService, private injector: Injector) {\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 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\r\n isCurrentLanguageEnglish() {\r\n return this.getCurrentLanguage() == \"en\"\r\n }\r\n\r\n isCurrentLanguageArabic() {\r\n return this.getCurrentLanguage() == \"ar\"\r\n }\r\n\r\n notifySuccessMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n let MessageTemplate = this.getResourceValue(\"SuccessMessage\");\r\n let titleTemplate: string;\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n let toaster = this.injector.get(ToastrService);\r\n showHeader ? toaster.success(MessageTemplate, titleTemplate) : toaster.success(MessageTemplate);\r\n }\r\n\r\n notifyErrorMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\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 = this.injector.get(ToastrService);\r\n showHeader ? toaster.error(MessageTemplate, titleTemplate) : toaster.error(MessageTemplate);\r\n }\r\n\r\n notifyWarningMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\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 = this.injector.get(ToastrService);\r\n showHeader ? toaster.warning(MessageTemplate, titleTemplate) : toaster.warning(MessageTemplate);\r\n }\r\n\r\n startBlockUI() {\r\n this.blockUI.start();\r\n }\r\n\r\n stopBlockUI() {\r\n this.blockUI.stop();\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { RequestHandlerService } from \"./request-handler.service\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { tap, shareReplay, take } from \"rxjs/operators\";\r\nimport { LanguageDTO } from \"../models\";\r\n\r\n/**\r\n * Language service with internal caching\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LanguageService {\r\n apiUrl = '/api/Language/';\r\n private _languages: LanguageDTO[] = [];\r\n \r\n private isLoading = false;\r\n private isLoaded = false;\r\n private loadRequest$: Observable<LanguageDTO[]> | null = null;\r\n\r\n constructor(private http: RequestHandlerService) {\r\n }\r\n\r\n /** Pure getter - no side effects */\r\n get languages(): LanguageDTO[] {\r\n return this._languages;\r\n }\r\n\r\n \r\n /** Internal method - loads languages from API (race-condition safe) */\r\n private loadLanguages(): void {\r\n if (this.isLoaded || this.isLoading) return; // Sync guard prevents race condition\r\n \r\n this.isLoading = true; // Set immediately to block concurrent calls\r\n\r\n this.loadRequest$ = this.http.get<LanguageDTO[]>(this.apiUrl + 'GetAll', null, null).pipe(\r\n tap((languages: LanguageDTO[]) => {\r\n this._languages = languages;\r\n this.isLoaded = true;\r\n this.isLoading = false;\r\n }),\r\n shareReplay(1)\r\n );\r\n\r\n // take(1) ensures auto-unsubscribe after completion\r\n this.loadRequest$.pipe(take(1)).subscribe({\r\n error: (err) => {\r\n this.isLoading = false;\r\n this.loadRequest$ = null;\r\n }\r\n });\r\n }\r\n\r\n /** Get languages as Observable - triggers load if not loaded */\r\n getLanguages(): Observable<LanguageDTO[]> {\r\n if (this.isLoaded) {\r\n return of(this._languages);\r\n }\r\n\r\n if (!this.isLoading) {\r\n this.loadLanguages();\r\n }\r\n\r\n return this.loadRequest$ ?? of(this._languages);\r\n }\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { UtilityService } from './utility.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SpeechRecognitionService {\r\n recognition: any;\r\n isListening = false;\r\n isSupported = false;\r\n language: string = 'en-US';\r\n\r\n constructor(private zone: NgZone,private utilityService:UtilityService) {\r\n const SpeechRecognition = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\r\n\r\n if (SpeechRecognition) {\r\n this.recognition = new SpeechRecognition();\r\n this.recognition.continuous = true;\r\n this.recognition.interimResults = false;\r\n this.recognition.maxAlternatives = 1;\r\n this.isSupported = true;\r\n }\r\n }\r\n\r\n startListening(language: string = this.language): Observable<string> {\r\n if (!this.isSupported) {\r\n return throwError(() => new Error('Web Speech API is not supported in this browser.'));\r\n }\r\n\r\n return new Observable(observer => {\r\n this.isListening = true;\r\n this.recognition.lang = language;\r\n this.recognition.start();\r\n\r\n this.recognition.onresult = (event: any) => {\r\n this.zone.run(() => {\r\n const transcript = event.results[event.results.length - 1][0].transcript;\r\n observer.next(transcript);\r\n });\r\n };\r\n\r\n this.recognition.onspeechend = () => {\r\n this.stopListening();\r\n };\r\n\r\n this.recognition.onerror = (event: any) => {\r\n this.zone.run(() => {\r\n if (event.error === 'not-allowed') {\r\n this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue(\"MicAccessDenied\"));\r\n observer.error('Microphone access denied by the user.');\r\n } else {\r\n observer.error(event.error);\r\n }\r\n });\r\n };\r\n\r\n this.recognition.onend = () => {\r\n this.zone.run(() => {\r\n if (this.isListening) {\r\n this.recognition.start(); // Automatically restart\r\n } else {\r\n observer.complete();\r\n }\r\n });\r\n };\r\n });\r\n }\r\n\r\n stopListening() {\r\n if (this.isSupported) {\r\n this.isListening = false;\r\n this.recognition.stop();\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { BBSFTranslateService } from './translate.service';\r\nimport { environment } from '../config/environment';\r\n\r\ndeclare const window: any;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FileLoaderService {\r\n private availableLanguages = ['en', 'ar']; // Add more languages as needed\r\n // environment:any;\r\n constructor(private translate: BBSFTranslateService, private http: HttpClient) {\r\n this.translate.addLangs(this.availableLanguages);\r\n }\r\n\r\n loadEnvironment(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n const script = document.createElement('script');\r\n script.src = '/assets/config/environment.js';\r\n script.onload = () => {\r\n if (window.Environment) {\r\n Object.assign(environment, window.Environment);\r\n resolve();\r\n } else {\r\n reject('Environment variables not found.');\r\n }\r\n };\r\n script.onerror = () => reject('Failed to load environment.js');\r\n document.head.appendChild(script);\r\n });\r\n }\r\n\r\n async preloadTranslations(): Promise<void> {\r\n try {\r\n const requests = this.availableLanguages.map(async (lang) => {\r\n const translations = await lastValueFrom(this.http.get(`/assets/i18n/${lang}.json`));\r\n this.translate.setTranslation(lang, translations, true);\r\n });\r\n\r\n await Promise.all(requests);\r\n this.translate.use('en'); // Set default language manually\r\n } catch (error) {\r\n console.error('Error preloading translations:', error);\r\n }\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, Injector } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { BBSFTranslateService, EnvironmentService } from '../services';\r\nimport { User } from '../models/UserModel';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { UtilityService } from '../services/utility.service';\r\nimport { AuthenticationModes } from '../enums/authentication-modes-enums';\r\nimport { setTimeout } from 'timers';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n public redirectUrl: string = '';\r\n static user: User | null = null;\r\n _user: User | null;\r\n private get user(): User | null {\r\n if (!this._user) {\r\n this._user = this.getUserManager();\r\n }\r\n return this._user;\r\n }\r\n static UserClaims: any = null;\r\n private jwtHelper: JwtHelperService = new JwtHelperService();\r\n private isAuthenticatedSubject = new BehaviorSubject<boolean>(this.hasToken());\r\n isAuthenticate$ = this.isAuthenticatedSubject.asObservable();\r\n //refresh\r\n static timers = [];\r\n static seconds = 0;\r\n\r\n constructor(private injector: Injector, private http: HttpClient, private environmentService: EnvironmentService, private translateService: BBSFTranslateService, private router: Router, private cookieService: CookieService, private utilityService: UtilityService) {\r\n \r\n }\r\n\r\n private _TOKEN_KEY: string\r\n get TOKEN_KEY() {\r\n if (!this._TOKEN_KEY) {\r\n this._TOKEN_KEY = this.environmentService.getCookieName();\r\n }\r\n return this._TOKEN_KEY;\r\n }\r\n\r\n private hasToken(): boolean {\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n return token && !this.jwtHelper.isTokenExpired(token);\r\n }\r\n\r\n getUserManager() {\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n if (token) {\r\n if (!this.jwtHelper.isTokenExpired(token))\r\n this.handleAccessTokenWithoutLanguage(token);\r\n else\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n }\r\n else {\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n AuthService.user = null;\r\n this._user = null;\r\n }\r\n return AuthService.user;\r\n }\r\n\r\n getUser() {\r\n this._user = AuthService.user;\r\n }\r\n storUser(User: any) {\r\n AuthService.user = this._user = this.user;\r\n }\r\n\r\n getCurrentUser() {\r\n return AuthService.user;\r\n }\r\n\r\n isAuthenticated(): boolean {\r\n AuthService.user = this.user;\r\n return AuthService.user != null && !this.jwtHelper.isTokenExpired(AuthService.user.access_token);\r\n }\r\n isUserInRole(allowedPermission) {\r\n let selectedPermissionSetID = Number.parseInt(AuthService.user.profile['selectedpermissionsetid']);\r\n return allowedPermission.includes(selectedPermissionSetID);\r\n }\r\n\r\n isUserPermissionSetsInRoles(allowedPermission: number[]): boolean {\r\n const permissionSetSIDString = AuthService.user.profile['permissionSetSID'];\r\n if (!permissionSetSIDString) {\r\n return false;\r\n }\r\n\r\n // Split comma-separated string and convert to numbers\r\n const userPermissionSets = permissionSetSIDString\r\n .split(',')\r\n .map(id => Number.parseInt(id.trim()))\r\n .filter(id => !isNaN(id)); // Filter out invalid numbers\r\n\r\n // Check if any user permission set is in the allowed permissions\r\n return userPermissionSets.some(permissionSetID => allowedPermission.includes(permissionSetID));\r\n }\r\n\r\n authorizationHeaderValue(): string {\r\n return AuthService.user\r\n ? `${AuthService.user.token_type} ${AuthService.user.access_token}`\r\n : '';\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 getUrl() {\r\n return localStorage.getItem('redirectUrl') ?? \"/\";\r\n }\r\n\r\n signOut() {\r\n let isAuthenticated = this.isAuthenticated();\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n AuthService.user = null;\r\n this._user = null;\r\n localStorage.removeItem(\"redirectUrl\");\r\n if (isAuthenticated) {\r\n this.logout().subscribe(res => {\r\n if (this.environmentService.getBBSFAuthenticationMode() == AuthenticationModes.UAEPass)\r\n this.logoutFromUAEPass();\r\n else\r\n this.router.navigate(['/Admin/account/login']);\r\n });\r\n }\r\n else {\r\n if (this.environmentService.getBBSFAuthenticationMode() == AuthenticationModes.UAEPass)\r\n this.logoutFromUAEPass();\r\n else\r\n this.router.navigate(['/Admin/account/login']);\r\n }\r\n }\r\n\r\n logout() {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n let ApiUrl = '/Account/';\r\n return this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'Logout', httpOptions);\r\n }\r\n\r\n\r\n clearUserSessionClaims() {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n let ApiUrl = '/api/Home/';\r\n return this.http.get(this.environmentService.getBaseUrl() + ApiUrl + 'ClearCurrentUserSession', httpOptions);\r\n }\r\n\r\n async handleAccessToken(response: any): Promise<void> {\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n const token = response;\r\n AuthService.user = null;\r\n AuthService.user = new User();\r\n AuthService.user.token_type = \"Bearer\";\r\n AuthService.user.access_token = token;\r\n AuthService.user.profile = this.jwtHelper.decodeToken(token);\r\n AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);\r\n this._user = AuthService.user;\r\n localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.cookieService.set(this.TOKEN_KEY, token, AuthService.user.expires_at, \"/\", null, true, 'Lax');\r\n this.isAuthenticatedSubject.next(true);\r\n this.setTokenSeconds();\r\n AuthService.timers.push(this.checkRefreshToken());\r\n await this.updateLanguage();\r\n }\r\n\r\n handleAccessTokenWithoutLanguage(response: any) {\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n const token = response;\r\n AuthService.user = null;\r\n AuthService.user = new User();\r\n AuthService.user.token_type = \"Bearer\";\r\n AuthService.user.access_token = token;\r\n AuthService.user.profile = this.jwtHelper.decodeToken(token);\r\n AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);\r\n this.setTokenSeconds();\r\n this._user = AuthService.user;\r\n localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.cookieService.set(this.TOKEN_KEY, token, AuthService.user.expires_at, \"/\", null, true, 'Lax');\r\n this.isAuthenticatedSubject.next(true);\r\n AuthService.timers.push(this.checkRefreshToken());\r\n }\r\n async updateLanguage() {\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 this.translateService.resetLang(this.translateService.currentLang);\r\n await this.translateService.reloadLang(localStorage.getItem('language')).subscribe();\r\n }\r\n }\r\n\r\n checkRefreshToken() {\r\n let date = new Date() as any;\r\n return setInterval(() => {\r\n if (Math.floor(AuthService.seconds) < 120 && this.isAuthenticated()) {\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n if (token) {\r\n this.refresh();\r\n }\r\n }\r\n AuthService.seconds--;\r\n }, 1000);\r\n }\r\n setTokenSeconds() {\r\n let date = new Date() as any;\r\n AuthService.seconds = (AuthService.user.expires_at - date) / 1000;\r\n }\r\n refresh() {\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authorizationHeaderValue(),\r\n }),\r\n };\r\n let ApiUrl = '/api/Home/';\r\n this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'RefreshAccessToken', httpOptions).subscribe((res: any) => {\r\n this.handleAccessTokenWithoutLanguage(res.val);\r\n });\r\n }\r\n\r\n loginWithUAEPass() {\r\n const authEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassAuthorizationEndPoint()}`;\r\n const queryParams = {\r\n response_type: 'code',\r\n client_id: `${this.environmentService.getUAEPassClientID()}`,\r\n redirect_uri: `${this.environmentService.getBaseUrl()}${this.environmentService.getUAEPassRedirectUrl()}`,\r\n scope: 'urn:uae:digitalid:profile:general urn:uae:digitalid:profile:general:profileType urn:uae:digitalid:profile:general:unifiedId',\r\n state: this.translateService.currentLang,\r\n acr_values: 'urn:safelayer:tws:policies:authentication:level:low',\r\n ui_locales: this.translateService.currentLang,\r\n };\r\n const queryParamsString = Object.entries(queryParams)\r\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\r\n .join('&');\r\n const loginUrl = `${authEndpoint}?${queryParamsString}`;\r\n window.location.href = loginUrl;\r\n return;\r\n }\r\n\r\n logoutFromUAEPass() {\r\n const logoutEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassLogoutEndPoint()}`;\r\n const queryParams = {\r\n redirect_uri: `${this.environmentService.getBaseUrl()}`,\r\n };\r\n const queryParamsString = Object.entries(queryParams)\r\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\r\n .join('&');\r\n\r\n const logoutUrl = `${logoutEndpoint}?${queryParamsString}`;\r\n window.location.href = logoutUrl;\r\n return;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { 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 { provideToastr } from 'ngx-toastr';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport {\r\n UtilityService, EnvironmentService, RequestHandlerService, StylesBundleService, BBSFTranslateService,\r\n ControlValidationService, MasterLayoutService, ConfigurationService, AuthService, LanguageService,\r\n SpeechRecognitionService\r\n} from './shared';\r\n\r\n/**\r\n * BBSFUtilitiesModule\r\n * \r\n * This module provides full backward compatibility by including ALL services and modules\r\n * from the original version. Simply import this module to get all functionality.\r\n * \r\n * For new applications, consider using modular imports via secondary entry points:\r\n * - @bnsights/bbsf-utilities/auth - Authentication services\r\n * - @bnsights/bbsf-utilities/http - HTTP request handling\r\n * - @bnsights/bbsf-utilities/translate - Translation services\r\n * - @bnsights/bbsf-utilities/ui - UI services (BlockUI, Toastr, etc.)\r\n * \r\n * @example\r\n * // Backward compatible usage (imports everything):\r\n * import { BBSFUtilitiesModule } from '@bnsights/bbsf-utilities';\r\n * \r\n * @NgModule({\r\n * imports: [BBSFUtilitiesModule]\r\n * })\r\n * export class AppModule { }\r\n */\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n BlockUIModule.forRoot(),\r\n ],\r\n exports: [\r\n // Re-export modules for backward compatibility\r\n CommonModule,\r\n RouterModule,\r\n BlockUIModule,\r\n ],\r\n providers: [\r\n // All services for backward compatibility\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 ConfigurationService,\r\n CookieService,\r\n LanguageService,\r\n SpeechRecognitionService,\r\n provideToastr()\r\n ]\r\n})\r\nexport class BBSFUtilitiesModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of @bnsights/bbsf-utilities\r\n * \r\n * This is the CORE entry point with minimal dependencies.\r\n * \r\n * For feature-specific services, use secondary entry points:\r\n * - @bnsights/bbsf-utilities/auth - Authentication services\r\n * - @bnsights/bbsf-utilities/word - Word document generation\r\n * - @bnsights/bbsf-utilities/translate - Translation services\r\n * - @bnsights/bbsf-utilities/ui - UI services (BlockUI, Toastr, etc.)\r\n * - @bnsights/bbsf-utilities/http - HTTP request handling\r\n */\r\n\r\n//Module (Note: for backward compatibility - contains ALL providers)\r\nexport * from './lib/bbsf-utilities.module';\r\n\r\n//#region Core Services (minimal dependencies)\r\n\r\nexport * from './lib/shared/services/environment.service';\r\nexport * from './lib/shared/services/styles-bundle.service';\r\nexport * from './lib/shared/services/appearance-configuration.service';\r\nexport * from './lib/shared/services/configuration.service';\r\n\r\n//#endregion\r\n\r\n//#region config\r\nexport * from './lib/shared/config/environment';\r\n//#endregion\r\n\r\n//#region models \r\nexport * from './lib/shared/models/area-model';\r\nexport * from './lib/shared/models/error-model';\r\nexport * from './lib/shared/models/UserModel';\r\n//#endregion\r\n\r\n//#region export enums\r\nexport * from './lib/shared/enums/authentication-modes-enums';\r\n//#endregion\r\n\r\n/* \r\n * DEPRECATED EXPORTS (for backward compatibility)\r\n * Please migrate to secondary entry points for these:\r\n */\r\n\r\n// Use @bnsights/bbsf-utilities/ui instead\r\nexport * from './lib/shared/services/utility.service';\r\nexport * from './lib/shared/services/control-validation.service';\r\nexport * from './lib/shared/services/speech-recognition.service';\r\n\r\n// Use @bnsights/bbsf-utilities/translate instead\r\nexport * from './lib/shared/services/translate.service';\r\nexport * from './lib/shared/services/translation-resolver.service';\r\nexport { TranslationResolverService } from './lib/shared/services/translation-resolver.service';\r\nexport * from './lib/shared/services/language.service';\r\n\r\n// Use @bnsights/bbsf-utilities/http instead\r\nexport * from './lib/shared/services/request-handler.service';\r\nexport * from './lib/shared/services/master-layout.service';\r\nexport * from './lib/shared/services/preload.service';\r\nexport * from './lib/shared/models/request-options-model';\r\n\r\n// Word document generation moved to @bnsights/bbsf-utilities-doc\r\n// Install: npm install @bnsights/bbsf-utilities-doc\r\n\r\n// Use @bnsights/bbsf-utilities/auth instead\r\nexport * from './lib/shared/authentication/auth.service';\r\n\r\n// Re-export speech-language model\r\nexport * from './lib/shared/models/speech-language';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ConfigurationService","i1.UtilityService","i1","i2.RequestHandlerService","i3.AuthService","i2.StylesBundleService","i2.EnvironmentService","i2.AuthService","i3.EnvironmentService","i3.UtilityService","i3.BBSFTranslateService","i1.BBSFTranslateService","i1.EnvironmentService","i1.RequestHandlerService","i2","i2.BBSFTranslateService","i3","i4","i5.UtilityService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bnsights-bbsf-utilities.mjs","sources":["../../../projects/bbsf-utilities/src/lib/shared/models/UserModel.ts","../../../projects/bbsf-utilities/src/lib/shared/enums/authentication-modes-enums.ts","../../../projects/bbsf-utilities/src/lib/shared/services/appearance-configuration.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/configuration.service.ts","../../../projects/bbsf-utilities/src/lib/shared/models/area-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/error-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/request-options-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/speech-language.ts","../../../projects/bbsf-utilities/src/lib/shared/services/control-validation.service.ts","../../../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/master-layout.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/request-handler.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/styles-bundle.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translate.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translation-resolver.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/utility.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/language.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/speech-recognition.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/preload.service.ts","../../../projects/bbsf-utilities/src/lib/shared/authentication/auth.service.ts","../../../projects/bbsf-utilities/src/lib/bbsf-utilities.module.ts","../../../projects/bbsf-utilities/src/public-api.ts","../../../projects/bbsf-utilities/src/bnsights-bbsf-utilities.ts"],"sourcesContent":["export class User {\r\n\r\n token_type: string;\r\n access_token: string;\r\n profile: any;\r\n expires_at: any\r\n}\r\n","export enum AuthenticationModes {\r\n Forms = 'Forms',\r\n UAEPass = \"UAEPass\",\r\n WindowsAD = \"WindowsAD\",\r\n AzureAD = \"AzureAD\",\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ConfigurationService } from \".\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppearanceConfigurationService {\r\n\r\n constructor(private configService: ConfigurationService) {\r\n }\r\n\r\n getLayoutTheme() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Theme');\r\n }\r\n\r\n getFooterText() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FooterText');\r\n }\r\n\r\n getPageTitle() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_PageTitle');\r\n }\r\n\r\n getFavIcon() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FavIcon');\r\n }\r\n\r\n getCustomStyles() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_CustomStyles');\r\n }\r\n\r\n getLogo() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Logo');\r\n }\r\n \r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable, Injector, OnInit } from \"@angular/core\";\r\nimport { AuthService } from \"../authentication\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigurationService {\r\n\r\n static JsonData: any[] = [];\r\n private currentUserProfile: any;\r\n private _authService: AuthService;\r\n\r\n constructor(private httpClient: HttpClient, private injector: Injector) {\r\n this.httpClient.get(\"./assets/config/configurations.json\")\r\n .subscribe(data => {\r\n ConfigurationService.JsonData = data as any[];\r\n });\r\n }\r\n\r\n private get authService(): AuthService {\r\n if (!this._authService) {\r\n this._authService = this.injector.get(AuthService);\r\n }\r\n return this._authService;\r\n }\r\n\r\n getConfigurationValue(key: string) {\r\n this.currentUserProfile = this.authService.getCurrentUser()?.profile;\r\n var selectedKey = ConfigurationService.JsonData[key];\r\n if (selectedKey && typeof selectedKey === 'object') {\r\n if (selectedKey.OrganizationConfigurations) {\r\n if (this.currentUserProfile && this.currentUserProfile.organizationGUID_ID) {\r\n let organizationValue = Array(selectedKey.OrganizationConfigurations).find(o => o.OrganizationID_GUID == this.currentUserProfile.organizationGUID_ID);\r\n return organizationValue;\r\n }\r\n } else {\r\n return selectedKey.Value;\r\n }\r\n } else {\r\n return selectedKey;\r\n }\r\n }\r\n\r\n}","export class AreaModel {\r\n permissionSetID: number\r\n areaUrl: string;\r\n}\r\n","export class ErrorModel {\r\n field: string;\r\n controlName: string;\r\n message: string;\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 disableErrorHandler: boolean = false;\r\n customSuccessMessage: string;\r\n customErrorMessage: string;\r\n responseType: any = \"\"\r\n formGroup: FormGroup = null\r\n castResponsetoClass: boolean = true;\r\n}\r\n","export class LanguageDTO {\r\n name: string;\r\n prefix: string;\r\n dialect: string;\r\n englishName: string;\r\n arabicName: string;\r\n nativeName: string;\r\n detected: string;\r\n searching: string;\r\n elevating: string;\r\n translating: string;\r\n generatingAnswersForYou: string;\r\n isRTL: boolean;\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { ErrorModel, RequestOptionsModel } from '../models';\r\nimport { UtilityService } from '.';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ControlValidationService {\r\n\r\n private requestOptions: RequestOptionsModel = new RequestOptionsModel();\r\n\r\n constructor(private utilityService: UtilityService) {\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 if (this.isCreatedBefor == true) {\r\n this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');\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 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 let ul = document.createElement(\"ul\");\r\n elementToAppend.appendChild(ul);\r\n\r\n for (const iterator of errorMessage) {\r\n let li = document.createElement(\"li\");\r\n li.innerHTML = iterator;\r\n ul.appendChild(li);\r\n }\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 this.isCreatedBefor = true;\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 // 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 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\r\n if (err.error.validation_errors) {\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(`${message}`);\r\n }\r\n else if (controlName && !this.hasControlName(form, controlName)) {\r\n errorsArray.push(`${fieldName}: ${message}`);\r\n }\r\n else {\r\n this.setFieldError(form, controlName, fieldName, message);\r\n this.showGlobalError(null, formId);\r\n }\r\n });\r\n\r\n if (errorsArray.length > 0)\r\n this.showGlobalError(errorsArray, formId)\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\r\n if (controlName)\r\n control = this.getControlFormNameByFieldName(form, controlName);\r\n else\r\n control = this.getControlFormNameByFieldName(form, fieldName.split('.')[0]);\r\n\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 default:\r\n control.setErrors(errors);\r\n }\r\n }\r\n else {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`)\r\n }\r\n }\r\n\r\n private getControlFormNameByFieldName(form: FormGroup, fieldName: string) {\r\n const formControls = form.controls;\r\n let controlName = Object.keys(formControls).find(c => c.toLocaleLowerCase() === fieldName.toLocaleLowerCase());\r\n let control = form.get(controlName);\r\n return control;\r\n }\r\n\r\n}\r\n","// 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({}, (window as any).Environment);\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';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n\r\n static areaList: AreaModel[] = [];\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 return environment[\"BBSF_BaseURL\"];\r\n }\r\n\r\n getApiUrl() {\r\n return environment[\"BBSF_ApiUrl\"];\r\n }\r\n\r\n getProductionMode() {\r\n return environment[\"BBSF_IsProduction\"] as boolean;\r\n }\r\n\r\n getDefaultLanguage() {\r\n return environment[\"BBSF_DefaultLanguage\"] as string;\r\n }\r\n\r\n getIdentityServerUrl() {\r\n return environment[\"BBSF_IdentityServerUrl\"];\r\n }\r\n\r\n getIsIdentityServerExternal() {\r\n return environment[\"BBSF_IsExternalIdentityServer\"] as string;\r\n }\r\n\r\n getIsIdentityServerClientId() {\r\n return environment[\"BBSF_IdentityServer_Client_Id\"] as string;\r\n }\r\n\r\n getIsIdentityServerClientSecret() {\r\n return environment[\"BBSF_IdentityServer_Client_Secret\"] as string;\r\n }\r\n\r\n getBBSFAuthenticationMode() {\r\n let Mode = environment[\"BBSF_AuthenticationMode\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassBaseUrl() {\r\n let Mode = environment[\"UAEPass_BaseUrl\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassClientID() {\r\n let Mode = environment[\"UAEPass_ClientID\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassRedirectUrl() {\r\n let Mode = environment[\"UAEPass_RedirectUrl\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassAuthorizationEndPoint() {\r\n let Mode = environment[\"UAEPass_AuthorizationEndPoint\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassRedirectLogoutUrl() {\r\n let Mode = environment[\"UAEPass_RedirectLogoutUrl\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassLogoutEndPoint() {\r\n let Mode = environment[\"UAEPass_LogoutEndPoint\"] as string;\r\n return Mode;\r\n }\r\n\r\n\r\n getIsEnableWindowsAuthentication() {\r\n let Mode = environment[\"BBSF_Enable_WindowsAuthentication\"] as string;\r\n return Mode.toLocaleLowerCase() == 'true';\r\n }\r\n\r\n getAllowMultiTenancy() {\r\n let mode = environment[\"BBSF_AllowMultiTenancy\"] as string;\r\n return mode.toLocaleLowerCase() == 'true';\r\n }\r\n\r\n getCookieName() {\r\n let cookieName = environment[\"BBSF_CookieName\"];\r\n return cookieName;\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 { EnvironmentService, RequestHandlerService, StylesBundleService } from '.';\r\nimport { AuthService } from '../authentication';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MasterLayoutService {\r\n\r\n apiUrl = '/api/Home/';\r\n\r\n constructor(private router: Router, private http: RequestHandlerService, private authService: AuthService,\r\n private stylesBundleService: StylesBundleService, private translate: TranslateService,\r\n private environmentService: EnvironmentService) { }\r\n\r\n switchLang(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n if (this.authService.isAuthenticated()) {\r\n this.changeLanguage(lang).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject = Value as any;\r\n this.authService.handleAccessToken(UserInfoObject.token);\r\n this.stylesBundleService.loadThemes(\r\n lang,\r\n bundleEnglishName,\r\n bundleArabicName\r\n );\r\n localStorage.setItem('language', lang);\r\n this.translate.use(lang);\r\n });\r\n });\r\n }\r\n else\r\n this.router.navigate(['/Admin/account/login']);\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', 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 logError(error: string) {\r\n let params = new HttpParams();\r\n params = params.append('error', error);\r\n return this.http.post(this.apiUrl + 'LogError', null, null, params);\r\n }\r\n\r\n private updateUserInfo() {\r\n return this.http.get(this.apiUrl + 'UpdateUserInfo', null, null);\r\n\r\n }\r\n\r\n switchRole(permissionSetID: string) {\r\n this.updateRole(permissionSetID).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject = Value as any;\r\n this.authService.handleAccessToken(UserInfoObject.token);\r\n });\r\n });\r\n }\r\n\r\n private updateRole(permissionSetID: string) {\r\n let params = new HttpParams();\r\n params = params.append('UserId', AuthService.user.profile.id);\r\n params = params.append('RoleID', permissionSetID);\r\n return this.http.post(this.apiUrl + 'SwitchRole', null, null, params);\r\n }\r\n\r\n}\r\n","import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { Injectable, OnDestroy, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { plainToClass } from 'class-transformer';\r\nimport { Observable, Subject, throwError } from 'rxjs';\r\nimport { map, takeUntil, tap } from 'rxjs/operators';\r\nimport { BBSFTranslateService, EnvironmentService, UtilityService } from \".\";\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { RequestOptionsModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RequestHandlerService implements OnDestroy {\r\n\r\n private currentLanguage = \"\";\r\n public onDestroy$: Subject<void> = new Subject<void>();\r\n\r\n private router = inject(Router);\r\n constructor(\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 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 // Function to check if the internet connection is available\r\n private isOnline(): boolean {\r\n return navigator.onLine || !this.environmentService.getProductionMode();\r\n }\r\n\r\n // ...\r\n get<T>(Url: string, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: errorCode });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\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 (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\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 if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.post<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\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 (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.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 (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\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 (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.put<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n patch<T>(Url: string, model?: any, responseType?: new () => T, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\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 (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n\r\n return this.http.patch<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n download<T>(Url: string, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.get<T>(this.environmentService.getApiUrl() + Url, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n\r\n Upload<T>(Url: string, model?: any, requestOptions?: RequestOptionsModel): Observable<any> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeadersUpdated();\r\n return this.http.post(this.environmentService.getApiUrl() + Url, model, { headers: headers, reportProgress: true, observe: 'events' }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\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 private handleError(err: HttpErrorResponse) {\r\n var isEnglish = this.utilityService.getCurrentLanguage() == \"en\";\r\n if (err.error instanceof ErrorEvent) {\r\n this.utilityService.notifyErrorMessage();\r\n }\r\n else {\r\n if (err.status == 400)\r\n throwError(err);//error 400 is thrown to be catch by the Form component to handle Fluent validation errors\r\n else if (err.status == 401)\r\n this.router.navigate([\"/Admin/account/login\"]);\r\n else if (err.status == 403)\r\n this.utilityService.notifyErrorMessage(isEnglish ? \"Sorry, You're not authorized to access this action\" : \"عذرا ليس لديك الصلاحيه لهذا الطلب\");\r\n else if (err.status == 510)\r\n this.utilityService.notifyErrorMessage(isEnglish ? \"Can not delete this item as it is related to others\" : \"لا يمكن حذف هذا العنصر لأنه مرتبط بعناصر أخرى\");\r\n else if (err.status == 515)\r\n this.utilityService.notifyErrorMessage((err.error ? err.error.Message : err.message));\r\n else if (err.status == 504)\r\n this.utilityService.notifyErrorMessage((err.error ? err.error.Message : err.message));\r\n else {\r\n console.log(`error message is: ${err.error ? err.error.Message : err.message}`);\r\n this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue(\"ErrorMassage\"));\r\n }\r\n }\r\n this.utilityService.stopBlockUI();\r\n }\r\n\r\n getHeaders() {\r\n return new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n 'Client-Local-Time-Zone': Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n 'Accept-Language': localStorage.getItem('language'),\r\n 'ignore-cookies': 'true'\r\n });\r\n }\r\n getHeadersUpdated() {\r\n return new HttpHeaders({\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n 'Client-Local-Time-Zone': Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n 'Accept-Language': localStorage.getItem('language'),\r\n 'ignore-cookies': 'true',\r\n 'Video-Upload': 'true',\r\n 'Image-Upload': 'true',\r\n });\r\n\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BBSFTranslateService } from '.';\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(\"b-lang\", \"ar\"); //use b-lang instead of lang to fix firefox number inputs in Arabic locale\r\n document.querySelector('html').setAttribute(\"dir\", \"rtl\");\r\n } else {\r\n this.loadStyleBundle(bundleEnglishName.toString());\r\n document.querySelector('html').setAttribute(\"b-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 private loadStyleBundle(styleName: string): void {\r\n const head = this.document.getElementsByTagName('head')[0];\r\n let themeLink = this.document.getElementById('client-theme') as HTMLLinkElement;\r\n let shouldRemoveOld = false;\r\n\r\n if (themeLink) {\r\n // ✅ Check if current CSS already loaded (by exact filename)\r\n const currentFileName = this.getFileName(themeLink.href);\r\n const requestedFileName = this.getFileName(styleName);\r\n\r\n if (currentFileName === requestedFileName) {\r\n return; // Same CSS already loaded\r\n } else {\r\n shouldRemoveOld = true; // Mark for removal after new CSS is added\r\n }\r\n }\r\n\r\n // ✅ Add new CSS first (prevents FOUC)\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 // ✅ Remove old CSS after new one is added (smooth transition)\r\n if (shouldRemoveOld && themeLink) {\r\n themeLink.remove();\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Extract filename from full path\r\n * @param path Full path or just filename\r\n * @returns The filename only\r\n */\r\n private getFileName(path: string): string {\r\n // Extract just the filename from full path\r\n const parts = path.split('/');\r\n return parts[parts.length - 1];\r\n }\r\n}\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 { inject } from \"@angular/core\";\r\nimport { ResolveFn } from \"@angular/router\";\r\nimport { BBSFTranslateService } from \".\";\r\n\r\nexport const TranslationResolverService: ResolveFn<any> = () => {\r\n let translateService = inject(BBSFTranslateService);\r\n return translateService.getTranslation(translateService.currentLang);\r\n};","import { Injectable, Injector } from '@angular/core';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BBSFTranslateService, EnvironmentService } from '.';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilityService {\r\n\r\n isCreatedBefore = false;\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n constructor(private translator: BBSFTranslateService, private environmentService: EnvironmentService, private injector: Injector) {\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 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\r\n isCurrentLanguageEnglish() {\r\n return this.getCurrentLanguage() == \"en\"\r\n }\r\n\r\n isCurrentLanguageArabic() {\r\n return this.getCurrentLanguage() == \"ar\"\r\n }\r\n\r\n notifySuccessMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n let MessageTemplate = this.getResourceValue(\"SuccessMessage\");\r\n let titleTemplate: string;\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n let toaster = this.injector.get(ToastrService);\r\n showHeader ? toaster.success(MessageTemplate, titleTemplate) : toaster.success(MessageTemplate);\r\n }\r\n\r\n notifyErrorMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\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 = this.injector.get(ToastrService);\r\n showHeader ? toaster.error(MessageTemplate, titleTemplate) : toaster.error(MessageTemplate);\r\n }\r\n\r\n notifyWarningMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\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 = this.injector.get(ToastrService);\r\n showHeader ? toaster.warning(MessageTemplate, titleTemplate) : toaster.warning(MessageTemplate);\r\n }\r\n\r\n startBlockUI() {\r\n this.blockUI.start();\r\n }\r\n\r\n stopBlockUI() {\r\n this.blockUI.stop();\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { RequestHandlerService } from \"./request-handler.service\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { tap, shareReplay, take } from \"rxjs/operators\";\r\nimport { LanguageDTO } from \"../models\";\r\n\r\n/**\r\n * Language service with internal caching\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LanguageService {\r\n apiUrl = '/api/Language/';\r\n private _languages: LanguageDTO[] = [];\r\n \r\n private isLoading = false;\r\n private isLoaded = false;\r\n private loadRequest$: Observable<LanguageDTO[]> | null = null;\r\n\r\n constructor(private http: RequestHandlerService) {\r\n }\r\n\r\n /** Pure getter - no side effects */\r\n get languages(): LanguageDTO[] {\r\n return this._languages;\r\n }\r\n\r\n \r\n /** Internal method - loads languages from API (race-condition safe) */\r\n private loadLanguages(): void {\r\n if (this.isLoaded || this.isLoading) return; // Sync guard prevents race condition\r\n \r\n this.isLoading = true; // Set immediately to block concurrent calls\r\n\r\n this.loadRequest$ = this.http.get<LanguageDTO[]>(this.apiUrl + 'GetAll', null, null).pipe(\r\n tap((languages: LanguageDTO[]) => {\r\n this._languages = languages;\r\n this.isLoaded = true;\r\n this.isLoading = false;\r\n }),\r\n shareReplay(1)\r\n );\r\n\r\n // take(1) ensures auto-unsubscribe after completion\r\n this.loadRequest$.pipe(take(1)).subscribe({\r\n error: (err) => {\r\n this.isLoading = false;\r\n this.loadRequest$ = null;\r\n }\r\n });\r\n }\r\n\r\n /** Get languages as Observable - triggers load if not loaded */\r\n getLanguages(): Observable<LanguageDTO[]> {\r\n if (this.isLoaded) {\r\n return of(this._languages);\r\n }\r\n\r\n if (!this.isLoading) {\r\n this.loadLanguages();\r\n }\r\n\r\n return this.loadRequest$ ?? of(this._languages);\r\n }\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { UtilityService } from './utility.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SpeechRecognitionService {\r\n recognition: any;\r\n isListening = false;\r\n isSupported = false;\r\n language: string = 'en-US';\r\n\r\n constructor(private zone: NgZone,private utilityService:UtilityService) {\r\n const SpeechRecognition = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\r\n\r\n if (SpeechRecognition) {\r\n this.recognition = new SpeechRecognition();\r\n this.recognition.continuous = true;\r\n this.recognition.interimResults = false;\r\n this.recognition.maxAlternatives = 1;\r\n this.isSupported = true;\r\n }\r\n }\r\n\r\n startListening(language: string = this.language): Observable<string> {\r\n if (!this.isSupported) {\r\n return throwError(() => new Error('Web Speech API is not supported in this browser.'));\r\n }\r\n\r\n return new Observable(observer => {\r\n this.isListening = true;\r\n this.recognition.lang = language;\r\n this.recognition.start();\r\n\r\n this.recognition.onresult = (event: any) => {\r\n this.zone.run(() => {\r\n const transcript = event.results[event.results.length - 1][0].transcript;\r\n observer.next(transcript);\r\n });\r\n };\r\n\r\n this.recognition.onspeechend = () => {\r\n this.stopListening();\r\n };\r\n\r\n this.recognition.onerror = (event: any) => {\r\n this.zone.run(() => {\r\n if (event.error === 'not-allowed') {\r\n this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue(\"MicAccessDenied\"));\r\n observer.error('Microphone access denied by the user.');\r\n } else {\r\n observer.error(event.error);\r\n }\r\n });\r\n };\r\n\r\n this.recognition.onend = () => {\r\n this.zone.run(() => {\r\n if (this.isListening) {\r\n this.recognition.start(); // Automatically restart\r\n } else {\r\n observer.complete();\r\n }\r\n });\r\n };\r\n });\r\n }\r\n\r\n stopListening() {\r\n if (this.isSupported) {\r\n this.isListening = false;\r\n this.recognition.stop();\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { BBSFTranslateService } from './translate.service';\r\nimport { environment } from '../config/environment';\r\n\r\ndeclare const window: any;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FileLoaderService {\r\n private availableLanguages = ['en', 'ar']; // Add more languages as needed\r\n // environment:any;\r\n constructor(private translate: BBSFTranslateService, private http: HttpClient) {\r\n this.translate.addLangs(this.availableLanguages);\r\n }\r\n\r\n loadEnvironment(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n const script = document.createElement('script');\r\n script.src = '/assets/config/environment.js';\r\n script.onload = () => {\r\n if (window.Environment) {\r\n Object.assign(environment, window.Environment);\r\n resolve();\r\n } else {\r\n reject('Environment variables not found.');\r\n }\r\n };\r\n script.onerror = () => reject('Failed to load environment.js');\r\n document.head.insertBefore(script, document.head.firstChild);\r\n });\r\n }\r\n\r\n async preloadTranslations(): Promise<void> {\r\n try {\r\n const requests = this.availableLanguages.map(async (lang) => {\r\n const translations = await lastValueFrom(this.http.get(`/assets/i18n/${lang}.json`));\r\n this.translate.setTranslation(lang, translations, true);\r\n });\r\n\r\n await Promise.all(requests);\r\n this.translate.use('en'); // Set default language manually\r\n } catch (error) {\r\n console.error('Error preloading translations:', error);\r\n }\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, Injector } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { BBSFTranslateService, EnvironmentService } from '../services';\r\nimport { User } from '../models/UserModel';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { UtilityService } from '../services/utility.service';\r\nimport { AuthenticationModes } from '../enums/authentication-modes-enums';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n public redirectUrl: string = '';\r\n static user: User | null = null;\r\n _user: User | null;\r\n private get user(): User | null {\r\n if (!this._user) {\r\n this._user = this.getUserManager();\r\n }\r\n return this._user;\r\n }\r\n static UserClaims: any = null;\r\n private jwtHelper: JwtHelperService = new JwtHelperService();\r\n private isAuthenticatedSubject = new BehaviorSubject<boolean>(this.hasToken());\r\n isAuthenticate$ = this.isAuthenticatedSubject.asObservable();\r\n //refresh\r\n static timers = [];\r\n static seconds = 0;\r\n\r\n constructor(private injector: Injector, private http: HttpClient, private environmentService: EnvironmentService, private translateService: BBSFTranslateService, private router: Router, private cookieService: CookieService, private utilityService: UtilityService) {\r\n \r\n }\r\n\r\n private _TOKEN_KEY: string\r\n get TOKEN_KEY() {\r\n if (!this._TOKEN_KEY) {\r\n this._TOKEN_KEY = this.environmentService.getCookieName();\r\n }\r\n return this._TOKEN_KEY;\r\n }\r\n\r\n private hasToken(): boolean {\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n return token && !this.jwtHelper.isTokenExpired(token);\r\n }\r\n\r\n getUserManager() {\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n if (token) {\r\n if (!this.jwtHelper.isTokenExpired(token))\r\n this.handleAccessTokenWithoutLanguage(token);\r\n else\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n }\r\n else {\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n }\r\n return AuthService.user;\r\n }\r\n\r\n getUser() {\r\n this._user = AuthService.user;\r\n }\r\n storUser(User: any) {\r\n AuthService.user = this._user = this.user;\r\n }\r\n\r\n getCurrentUser() {\r\n return AuthService.user;\r\n }\r\n\r\n /**\r\n * The only supported way to read the current user's profile.\r\n * Ensures the in-memory user is hydrated from cookie (or cleared) before returning profile.\r\n */\r\n public getCurrentUserProfile(): any | null {\r\n // Force hydration/cleanup based on cookie state\r\n this.getUserManager();\r\n\r\n return AuthService.user?.profile ?? null;\r\n }\r\n\r\n isAuthenticated(): boolean {\r\n AuthService.user = this.user;\r\n return AuthService.user != null && !this.jwtHelper.isTokenExpired(AuthService.user.access_token);\r\n }\r\n isUserInRole(allowedPermission) {\r\n const profile = this.getCurrentUserProfile();\r\n if (!profile) {\r\n return false;\r\n }\r\n\r\n let selectedPermissionSetID = Number.parseInt(profile['selectedpermissionsetid']);\r\n return allowedPermission.includes(selectedPermissionSetID);\r\n }\r\n\r\n isUserPermissionSetsInRoles(allowedPermission: number[]): boolean {\r\n const profile = this.getCurrentUserProfile();\r\n if (!profile) {\r\n return false;\r\n }\r\n\r\n const permissionSetSIDString = profile['permissionSetSID'];\r\n if (!permissionSetSIDString) {\r\n return false;\r\n }\r\n\r\n // Split comma-separated string and convert to numbers\r\n const userPermissionSets = permissionSetSIDString\r\n .split(',')\r\n .map(id => Number.parseInt(id.trim()))\r\n .filter(id => !isNaN(id)); // Filter out invalid numbers\r\n\r\n // Check if any user permission set is in the allowed permissions\r\n return userPermissionSets.some(permissionSetID => allowedPermission.includes(permissionSetID));\r\n }\r\n\r\n authorizationHeaderValue(): string {\r\n return AuthService.user\r\n ? `${AuthService.user.token_type} ${AuthService.user.access_token}`\r\n : '';\r\n }\r\n\r\n name(): string {\r\n const profile = this.getCurrentUserProfile();\r\n return profile?.given_name ?? '';\r\n }\r\n setUrl(url) {\r\n localStorage.setItem('redirectUrl', url);\r\n }\r\n getUrl() {\r\n return localStorage.getItem('redirectUrl') ?? \"/\";\r\n }\r\n\r\n /**\r\n * Local-only cleanup primitive (no HTTP, no redirects).\r\n * Safe to call before/after auth transitions to prevent stale-user windows.\r\n */\r\n clearLocalAuthState(options?: { keepRedirectUrl?: boolean }) {\r\n // Clear timers\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n\r\n // Clear memory\r\n AuthService.user = null;\r\n this._user = null;\r\n AuthService.UserClaims = null;\r\n\r\n // Delete cookie\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n\r\n // Clear redirectUrl unless explicitly told not to\r\n if (options?.keepRedirectUrl !== true) {\r\n localStorage.removeItem('redirectUrl');\r\n }\r\n\r\n this.isAuthenticatedSubject.next(false);\r\n }\r\n\r\n signOut() {\r\n const wasAuthenticated = this.isAuthenticated();\r\n\r\n // If authenticated, kick off server logout BEFORE wiping local auth context (cookie/header/session)\r\n if (wasAuthenticated) {\r\n this.logout().subscribe({ next: () => { }, error: () => { } });\r\n }\r\n\r\n // Always clear local state immediately (no stale-user window)\r\n this.clearLocalAuthState({ keepRedirectUrl: false });\r\n\r\n // Redirect (Forms vs UAEPass)\r\n if (this.environmentService.getBBSFAuthenticationMode() == AuthenticationModes.UAEPass)\r\n this.logoutFromUAEPass();\r\n else\r\n this.router.navigate(['/Admin/account/login']);\r\n }\r\n\r\n logout() {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n let ApiUrl = '/Account/';\r\n return this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'Logout', httpOptions);\r\n }\r\n\r\n\r\n clearUserSessionClaims() {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n let ApiUrl = '/api/Home/';\r\n return this.http.get(this.environmentService.getBaseUrl() + ApiUrl + 'ClearCurrentUserSession', httpOptions);\r\n }\r\n\r\n async handleAccessToken(response: any): Promise<void> {\r\n // Always start from a clean local state to prevent stale-user windows\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n const token = response;\r\n AuthService.user = new User();\r\n AuthService.user.token_type = \"Bearer\";\r\n AuthService.user.access_token = token;\r\n AuthService.user.profile = this.jwtHelper.decodeToken(token);\r\n AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);\r\n this._user = AuthService.user;\r\n localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.cookieService.set(this.TOKEN_KEY, token, AuthService.user.expires_at, \"/\", null, true, 'Lax');\r\n this.isAuthenticatedSubject.next(true);\r\n this.setTokenSeconds();\r\n AuthService.timers.push(this.checkRefreshToken());\r\n await this.updateLanguage();\r\n }\r\n\r\n handleAccessTokenWithoutLanguage(response: any) {\r\n // Always start from a clean local state to prevent stale-user windows\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n const token = response;\r\n AuthService.user = new User();\r\n AuthService.user.token_type = \"Bearer\";\r\n AuthService.user.access_token = token;\r\n AuthService.user.profile = this.jwtHelper.decodeToken(token);\r\n AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);\r\n this.setTokenSeconds();\r\n this._user = AuthService.user;\r\n localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.cookieService.set(this.TOKEN_KEY, token, AuthService.user.expires_at, \"/\", null, true, 'Lax');\r\n this.isAuthenticatedSubject.next(true);\r\n AuthService.timers.push(this.checkRefreshToken());\r\n }\r\n async updateLanguage() {\r\n const profile = this.getCurrentUserProfile();\r\n if (!profile) {\r\n return;\r\n }\r\n\r\n if (!localStorage.getItem('language') || localStorage.getItem('language') == profile.locale)\r\n localStorage.setItem('language', profile.locale);\r\n\r\n if (this.translateService.currentLang != localStorage.getItem('language')) {\r\n this.translateService.resetLang(this.translateService.currentLang);\r\n await this.translateService.reloadLang(localStorage.getItem('language')).subscribe();\r\n }\r\n }\r\n\r\n checkRefreshToken() {\r\n let date = new Date() as any;\r\n return setInterval(() => {\r\n if (Math.floor(AuthService.seconds) < 120 && this.isAuthenticated()) {\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n if (token) {\r\n this.refresh();\r\n }\r\n }\r\n AuthService.seconds--;\r\n }, 1000);\r\n }\r\n setTokenSeconds() {\r\n let date = new Date() as any;\r\n AuthService.seconds = (AuthService.user.expires_at - date) / 1000;\r\n }\r\n refresh() {\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authorizationHeaderValue(),\r\n }),\r\n };\r\n let ApiUrl = '/api/Home/';\r\n this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'RefreshAccessToken', httpOptions).subscribe((res: any) => {\r\n this.handleAccessTokenWithoutLanguage(res.val);\r\n });\r\n }\r\n\r\n loginWithUAEPass() {\r\n const authEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassAuthorizationEndPoint()}`;\r\n const queryParams = {\r\n response_type: 'code',\r\n client_id: `${this.environmentService.getUAEPassClientID()}`,\r\n redirect_uri: `${this.environmentService.getBaseUrl()}${this.environmentService.getUAEPassRedirectUrl()}`,\r\n scope: 'urn:uae:digitalid:profile:general urn:uae:digitalid:profile:general:profileType urn:uae:digitalid:profile:general:unifiedId',\r\n state: this.translateService.currentLang,\r\n acr_values: 'urn:safelayer:tws:policies:authentication:level:low',\r\n ui_locales: this.translateService.currentLang,\r\n };\r\n const queryParamsString = Object.entries(queryParams)\r\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\r\n .join('&');\r\n const loginUrl = `${authEndpoint}?${queryParamsString}`;\r\n window.location.href = loginUrl;\r\n return;\r\n }\r\n\r\n logoutFromUAEPass() {\r\n const logoutEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassLogoutEndPoint()}`;\r\n const queryParams = {\r\n redirect_uri: `${this.environmentService.getBaseUrl()}`,\r\n };\r\n const queryParamsString = Object.entries(queryParams)\r\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\r\n .join('&');\r\n\r\n const logoutUrl = `${logoutEndpoint}?${queryParamsString}`;\r\n window.location.href = logoutUrl;\r\n return;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { 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 { provideToastr } from 'ngx-toastr';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport {\r\n UtilityService, EnvironmentService, RequestHandlerService, StylesBundleService, BBSFTranslateService,\r\n ControlValidationService, MasterLayoutService, ConfigurationService, AuthService, LanguageService,\r\n SpeechRecognitionService\r\n} from './shared';\r\n\r\n/**\r\n * BBSFUtilitiesModule\r\n * \r\n * This module provides full backward compatibility by including ALL services and modules\r\n * from the original version. Simply import this module to get all functionality.\r\n * \r\n * For new applications, consider using modular imports via secondary entry points:\r\n * - @bnsights/bbsf-utilities/auth - Authentication services\r\n * - @bnsights/bbsf-utilities/http - HTTP request handling\r\n * - @bnsights/bbsf-utilities/translate - Translation services\r\n * - @bnsights/bbsf-utilities/ui - UI services (BlockUI, Toastr, etc.)\r\n * \r\n * @example\r\n * // Backward compatible usage (imports everything):\r\n * import { BBSFUtilitiesModule } from '@bnsights/bbsf-utilities';\r\n * \r\n * @NgModule({\r\n * imports: [BBSFUtilitiesModule]\r\n * })\r\n * export class AppModule { }\r\n */\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n BlockUIModule.forRoot(),\r\n ],\r\n exports: [\r\n // Re-export modules for backward compatibility\r\n CommonModule,\r\n RouterModule,\r\n BlockUIModule,\r\n ],\r\n providers: [\r\n // All services for backward compatibility\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 ConfigurationService,\r\n CookieService,\r\n LanguageService,\r\n SpeechRecognitionService,\r\n provideToastr()\r\n ]\r\n})\r\nexport class BBSFUtilitiesModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of @bnsights/bbsf-utilities\r\n * \r\n * This is the CORE entry point with minimal dependencies.\r\n * \r\n * For feature-specific services, use secondary entry points:\r\n * - @bnsights/bbsf-utilities/auth - Authentication services\r\n * - @bnsights/bbsf-utilities/word - Word document generation\r\n * - @bnsights/bbsf-utilities/translate - Translation services\r\n * - @bnsights/bbsf-utilities/ui - UI services (BlockUI, Toastr, etc.)\r\n * - @bnsights/bbsf-utilities/http - HTTP request handling\r\n */\r\n\r\n//Module (Note: for backward compatibility - contains ALL providers)\r\nexport * from './lib/bbsf-utilities.module';\r\n\r\n//#region Core Services (minimal dependencies)\r\n\r\nexport * from './lib/shared/services/environment.service';\r\nexport * from './lib/shared/services/styles-bundle.service';\r\nexport * from './lib/shared/services/appearance-configuration.service';\r\nexport * from './lib/shared/services/configuration.service';\r\n\r\n//#endregion\r\n\r\n//#region config\r\nexport * from './lib/shared/config/environment';\r\n//#endregion\r\n\r\n//#region models \r\nexport * from './lib/shared/models/area-model';\r\nexport * from './lib/shared/models/error-model';\r\nexport * from './lib/shared/models/UserModel';\r\n//#endregion\r\n\r\n//#region export enums\r\nexport * from './lib/shared/enums/authentication-modes-enums';\r\n//#endregion\r\n\r\n/* \r\n * DEPRECATED EXPORTS (for backward compatibility)\r\n * Please migrate to secondary entry points for these:\r\n */\r\n\r\n// Use @bnsights/bbsf-utilities/ui instead\r\nexport * from './lib/shared/services/utility.service';\r\nexport * from './lib/shared/services/control-validation.service';\r\nexport * from './lib/shared/services/speech-recognition.service';\r\n\r\n// Use @bnsights/bbsf-utilities/translate instead\r\nexport * from './lib/shared/services/translate.service';\r\nexport * from './lib/shared/services/translation-resolver.service';\r\nexport { TranslationResolverService } from './lib/shared/services/translation-resolver.service';\r\nexport * from './lib/shared/services/language.service';\r\n\r\n// Use @bnsights/bbsf-utilities/http instead\r\nexport * from './lib/shared/services/request-handler.service';\r\nexport * from './lib/shared/services/master-layout.service';\r\nexport * from './lib/shared/services/preload.service';\r\nexport * from './lib/shared/models/request-options-model';\r\n\r\n// Word document generation moved to @bnsights/bbsf-utilities-doc\r\n// Install: npm install @bnsights/bbsf-utilities-doc\r\n\r\n// Use @bnsights/bbsf-utilities/auth instead\r\nexport * from './lib/shared/authentication/auth.service';\r\n\r\n// Re-export speech-language model\r\nexport * from './lib/shared/models/speech-language';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ConfigurationService","i1.UtilityService","i1","i2.RequestHandlerService","i3.AuthService","i2.StylesBundleService","i2.EnvironmentService","i2.AuthService","i3.EnvironmentService","i3.UtilityService","i3.BBSFTranslateService","i1.BBSFTranslateService","i1.EnvironmentService","i1.RequestHandlerService","i2","i2.BBSFTranslateService","i3","i4","i5.UtilityService"],"mappings":"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"}
|
|
@@ -32,6 +32,11 @@ export declare class AuthService {
|
|
|
32
32
|
getUser(): void;
|
|
33
33
|
storUser(User: any): void;
|
|
34
34
|
getCurrentUser(): User;
|
|
35
|
+
/**
|
|
36
|
+
* The only supported way to read the current user's profile.
|
|
37
|
+
* Ensures the in-memory user is hydrated from cookie (or cleared) before returning profile.
|
|
38
|
+
*/
|
|
39
|
+
getCurrentUserProfile(): any | null;
|
|
35
40
|
isAuthenticated(): boolean;
|
|
36
41
|
isUserInRole(allowedPermission: any): any;
|
|
37
42
|
isUserPermissionSetsInRoles(allowedPermission: number[]): boolean;
|
|
@@ -39,6 +44,13 @@ export declare class AuthService {
|
|
|
39
44
|
name(): string;
|
|
40
45
|
setUrl(url: any): void;
|
|
41
46
|
getUrl(): string;
|
|
47
|
+
/**
|
|
48
|
+
* Local-only cleanup primitive (no HTTP, no redirects).
|
|
49
|
+
* Safe to call before/after auth transitions to prevent stale-user windows.
|
|
50
|
+
*/
|
|
51
|
+
clearLocalAuthState(options?: {
|
|
52
|
+
keepRedirectUrl?: boolean;
|
|
53
|
+
}): void;
|
|
42
54
|
signOut(): void;
|
|
43
55
|
logout(): import("rxjs").Observable<Object>;
|
|
44
56
|
clearUserSessionClaims(): import("rxjs").Observable<Object>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bnsights/bbsf-utilities",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/animations": "^19.2.14",
|
|
6
6
|
"@angular/cdk": "^19.2.19",
|
|
@@ -43,13 +43,13 @@
|
|
|
43
43
|
"types": "./http/index.d.ts",
|
|
44
44
|
"default": "./fesm2022/bnsights-bbsf-utilities-http.mjs"
|
|
45
45
|
},
|
|
46
|
-
"./translate": {
|
|
47
|
-
"types": "./translate/index.d.ts",
|
|
48
|
-
"default": "./fesm2022/bnsights-bbsf-utilities-translate.mjs"
|
|
49
|
-
},
|
|
50
46
|
"./ui": {
|
|
51
47
|
"types": "./ui/index.d.ts",
|
|
52
48
|
"default": "./fesm2022/bnsights-bbsf-utilities-ui.mjs"
|
|
49
|
+
},
|
|
50
|
+
"./translate": {
|
|
51
|
+
"types": "./translate/index.d.ts",
|
|
52
|
+
"default": "./fesm2022/bnsights-bbsf-utilities-translate.mjs"
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
55
|
"sideEffects": false
|