{"version":3,"sources":["src/app/appconstants.ts","node_modules/@azure/msal-angular/fesm2020/azure-msal-angular.mjs","src/app/services/configuration.service.ts","src/app/services/translation.service.ts","src/app/services/authguard/auth-interceptor.ts","src/app/services/profile.service.ts"],"sourcesContent":["export const AppConstants = {\r\n // Validation Messages\r\n FILE_SIZE_EXCEEDED: 'File size should be under 2MB.',\r\n IMAGE_ASPECT_RATIO_INVALID: 'Image must be (1:1 aspect ratio).',\r\n\r\n // Success Messages\r\n PROFILE_PICTURE_UPDATED: 'Uploaded successfully',\r\n USER_IMAGE_UPDATED: 'Uploaded successfully',\r\n UPDATE_SUCCESS: 'Updated successfully',\r\n UPDATE_FAILED: 'Error occured',\r\n REMOVAL_FAILED: 'Failed to remove user profile',\r\n REACTIVATED: 'Your account has been reactivated',\r\n PROFILE_DISABLED:\r\n 'Profile disabled successfully
Your profile has been disabled successfully! We hope to see you soon!!',\r\n PROFILE_REMOVED:\r\n 'Profile removed successfully
Your profile has been removed successfully! We hope to see you soon!!',\r\n APPROVALS_SUCCESS_MSG: 'Approved successfully',\r\n DECLINE_SUCCESS_MSG: 'Declined successfully',\r\n DISABLE_SUCCESS_MSG: 'Disabled successfully',\r\n ENABLE_SUCCESS_MSG: 'Enabled successfully',\r\n CREATED_SUCCESS_MSG: 'Created successfully',\r\n UPDATED_SUCCESS_MSG: 'Updated successfully',\r\n VALIDATION_ERROR_MSG: 'Validation Failed',\r\n FAILED_MSG: 'Error while creation',\r\n FAILED_UPDATE_MSG: 'Error while updation',\r\n JOB_APPLY_SUCCESS_MSG:\r\n 'Application Submitted Successfully
Your job application has been submitted. You can track its status in your application history.',\r\n JOB_APPLICATION_REMOVAL_SUCCESS_MSG:\r\n 'Job Application removed!
Your job application has been removed successfully.',\r\n\r\n SAVED_JOB_BULKREMOVE_SUCCESS_MSG:\r\n 'Job(s) Removed from Saved List
The selected job(s) has been removed from your saved list',\r\n\r\n SAVED_JOB_REMOVE_SUCCESS_MSG:\r\n 'Job Removed from Saved List
Job has been removed from your saved list',\r\n\r\n JOB_ALERT_SAVED_SUCCESS_MSG: 'Job Alert Saved Successfully
Your job alert has been saved. You can track it in My Job Alerts.',\r\n\r\n // Error Messages\r\n SUBMISSION_ERROR:\r\n 'There was an error submitting the form. Please try again later.',\r\n FORM_INVALID:\r\n 'Please fill out all required fields correctly before submitting.',\r\n FETCH_ERROR: 'Error fetching details',\r\n\r\n JOB_ALERT_SAVED_ERROR_MSG: 'Error Saving Job Alert
Your job alert could not be saved. Please try again.',\r\n JOB_ALERT_TITLE_EXIST_MSG:'Job Alert Already Exists
Please enter a different name for your job alert.',\r\n JOB_ALERT_SAVE_SUCCESS_RESPONSE:'Job Alert Succesfull Created',\r\n JOB_ALERT_SAVE_DUPLICATE_RESPONSE:'Duplicate Job Alert Text',\r\n\r\n //REGEX\r\n ALPHABET_PATTERN: /^(?=[a-zA-Z])(?!.*\\s\\s)[a-zA-Z\\s]+(?,.?\\/\\\\|`~-]+$/,\r\n //URLPATTERN: /^(https?:\\/\\/)?(www\\.)?([a-zA-Z0-9-]+(\\.[a-zA-Z]{2,}|[a-zA-Z]{2,}))(:[0-9]{1,5})?(\\/[^\\s]*)?$/,\r\n WEBSITE_URL:/^(https?:\\/\\/(www\\.)?|www\\.)((localhost)|([a-zA-Z0-9-]+\\.[a-zA-Z]{2,}(\\.[a-zA-Z]{2,})?))(:[0-9]{1,5})?(\\/[^\\s]*)?$/,\r\n MAX_INT : 2147483647,\r\n\r\n JOBSEEKER: 'Job Seeker',\r\n EMPLOYER: 'Employer',\r\n EMPLOYERDATA: 'EmployerData',\r\n LAWASTAFF: 'LAWA Staff',\r\n COMMPARTNER: 'Community Partner',\r\n USER: 'user',\r\n LOGINSTATUS: 'loginStatus',\r\n TRUE: 'true',\r\n FALSE: 'false',\r\n\r\n //Routes\r\n JOBSEEKER_PROFILE_URL: '/profile/candidate/view',\r\n EMPLOYER_PROFILE_URL: '/profile/employer/view',\r\n EMPLOYER_EDIT_PROFILE: '/profile/employer/edit',\r\n JOBSEEKER_EDIT_PROFILE: '/profile/candidate/edit',\r\n JOBSEEKER_DASHBOARD: '/dashboard/jobseeker',\r\n EMPLOYER_DASHBOARD: '/dashboard/employer',\r\n HOME: '/',\r\n\r\n CBO_PROFILE_EDIT: 'cbo/profile/edit',\r\n CBO_PROFILE: 'cbo/profile',\r\n\r\n LAWASTAFF_PROFILE_EDIT: 'staff/profile/edit',\r\n LAWASTAFF_PROFILE: 'staff/profile',\r\n LAWASTAFF_DASHBAORD: 'staff/dashboard',\r\n\r\n //TABLE\r\n DEFAULTPAGESIZE: 10,\r\n DEFAULTPAGINDEX: 0,\r\n\r\n //STATUS\r\n APPROVED: 'Approved',\r\n DECLINED: 'Declined',\r\n PENDING: 'Pending',\r\n\r\n //MAT_DIALOG\r\n MATVIEW: 'view',\r\n MATDISABLE: 'disable',\r\n\r\n //COMPENSATIONTYPES\r\n SALARY: 'Salary',\r\n HOURLY: 'Hourly',\r\n COMMISSION: 'Commission',\r\n PERHOUR:'/hour',\r\n PERYEAR:'/year',\r\n DOLLAR:'$',\r\n\r\n DEFAULT_USER_IMAGE: '/assets/icons/user-profile.svg',\r\n\r\n //JobStatus\r\n JOBSTATUS_PUBLISHED_ID: '36E98A2F-1B83-4A3B-9875-3EA7D460E943',\r\n JOBSTATUS_DRAFT_ID: '6C764811-3240-482C-BD2B-D93591D65B87',\r\n JOBSTAUTS_EXPIRED_ID: 'DAD74B0C-6889-4FB6-9C20-0E9096CD8DAD',\r\n JOBSTATUS_CLOSEJOB_ID: '83fd0694-4c78-4495-8b50-8fa645c72c67',\r\n\r\n //Job Application Status\r\n JOBAPPLICATIONSTATUS_REVIEW: '5D6E4BB5-A70C-4A64-AB9B-0E74D2A23870',\r\n JOBAPPLICATIONSTATUS_INTERVIEW: 'B214CB5C-BCE5-4498-A742-40D45402B3BD',\r\n JOBAPPLICATIONSTATUS_HIRED: 'BA657A95-D23A-4D6C-804B-963BC0DF589D',\r\n JOBAPPLICATIONSTATUS_NOT_HIRED: '9A460471-ED7F-4B6D-A82C-CB2AA1BB8A76',\r\n\r\n JOBSEEKER_ROLE_ID: \"1A640B9D-D6B3-4618-9B27-5FD13C055232\",\r\n EMPLOYER_ROLE_ID: \"7A865A84-516B-4CAD-8E5B-6469BEED09F5\",\r\n COMMUNITYPARTNER_ROLE_ID: \"94B98AA3-4B2E-44A5-8810-22C17AB1EB91\",\r\n LAWASTAFF_ROLE_ID: \"9DE11E35-65E2-455B-B9CD-E7B763E75325\",\r\n\r\n //Industry or Job Category\r\n CATEGORY_GOVERNMENT:'Government',\r\n CATEGORY_CONSTRUCTION:'Construction',\r\n CATEGORY_SERVICES:'Services',\r\n CATEGORY_CONCESSIONS:'Concessions',\r\n CATEGORY_MAINTENANCE:'Maintenance',\r\n CATEGORY_INFORMATIONTECHNOLOGY:'Information Technology',\r\n CATEGORY_AIRLINES:'Airlines',\r\n CATEGORY_OTHERAIRPORTEMPLOYER:'Other Airport Employer',\r\n CATEGORY_ENGINEERING:'Engineering',\r\n CATEGORY_RETAIL:'Retail',\r\n CATEGORY_DELIVERIES:'Deliveries',\r\n CATEGORY_TRANSPORTATION:'Transportation',\r\n CATEGORY_SECURITY:'Security',\r\n CATEGORY_FOODANDBEVERAGE:'Food and Beverage',\r\n\r\n //Reasons for contacting\r\n REASON_I_AM_HAVING_TROUBLE_LOGGIN_IN:\"I am having trouble loggin in\",\r\n REASON_I_NEED_TO_RESET_MY_PASSWORD:\"I need to reset my password\",\r\n REASON_I_HAVE_QUESTIONS_ABOUT_A_JOB_OR_AN_EMPLOYER_ON_THIS_WEBSITE:\"I have questions about a job or an employer on this web site\",\r\n REASON_I_NEED_ASSISTANCE_TO_HELP_ME_GET_OR_KEEP_A_JOB:\"I need assistance to help me get or keep a job\",\r\n REASON_I_NEED_ASSISTANCE_TO_IDENTIFY_AND_RECRUITE_MORE_POTENTIAL_EMPLOYEES:'I need assistance to identify and recruite more potential employees',\r\n REASON_OTHER:'Other',\r\n ORIGINAL_USER : 'OriginalUser',\r\n\r\n //Ein stored in local storage after Ein verified\r\n EIN_LOCAL:\"Ein_Data\"\r\n};\r\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Inject, Optional, Component, NgModule } from '@angular/core';\nimport { WrapperSKU, InteractionStatus, EventMessageUtils, InteractionType, BrowserConfigurationAuthError, UrlString, BrowserUtils, StringUtils, NavigationClient } from '@azure/msal-browser';\nimport { from, ReplaySubject, Subject, BehaviorSubject, of, EMPTY } from 'rxjs';\nimport * as i3 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { map, concatMap, catchError, switchMap, take, filter } from 'rxjs/operators';\nimport * as i4 from '@angular/router';\n\n/* eslint-disable header/header */\nconst name = \"@azure/msal-angular\";\nconst version = \"3.0.23\";\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nconst MSAL_INSTANCE = new InjectionToken(\"MSAL_INSTANCE\");\nconst MSAL_GUARD_CONFIG = new InjectionToken(\"MSAL_GUARD_CONFIG\");\nconst MSAL_INTERCEPTOR_CONFIG = new InjectionToken(\"MSAL_INTERCEPTOR_CONFIG\");\nconst MSAL_BROADCAST_CONFIG = new InjectionToken(\"MSAL_BROADCAST_CONFIG\");\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalService {\n constructor(instance, location) {\n this.instance = instance;\n this.location = location;\n const hash = this.location.path(true).split(\"#\").pop();\n if (hash) {\n this.redirectHash = `#${hash}`;\n }\n this.instance.initializeWrapperLibrary(WrapperSKU.Angular, version);\n }\n initialize() {\n return from(this.instance.initialize());\n }\n acquireTokenPopup(request) {\n return from(this.instance.acquireTokenPopup(request));\n }\n acquireTokenRedirect(request) {\n return from(this.instance.acquireTokenRedirect(request));\n }\n acquireTokenSilent(silentRequest) {\n return from(this.instance.acquireTokenSilent(silentRequest));\n }\n handleRedirectObservable(hash) {\n return from(this.instance.initialize().then(() => this.instance.handleRedirectPromise(hash || this.redirectHash)));\n }\n loginPopup(request) {\n return from(this.instance.loginPopup(request));\n }\n loginRedirect(request) {\n return from(this.instance.loginRedirect(request));\n }\n logout(logoutRequest) {\n return from(this.instance.logout(logoutRequest));\n }\n logoutRedirect(logoutRequest) {\n return from(this.instance.logoutRedirect(logoutRequest));\n }\n logoutPopup(logoutRequest) {\n return from(this.instance.logoutPopup(logoutRequest));\n }\n ssoSilent(request) {\n return from(this.instance.ssoSilent(request));\n }\n /**\n * Gets logger for msal-angular.\n * If no logger set, returns logger instance created with same options as msal-browser\n */\n getLogger() {\n if (!this.logger) {\n this.logger = this.instance.getLogger().clone(name, version);\n }\n return this.logger;\n }\n // Create a logger instance for msal-angular with the same options as msal-browser\n setLogger(logger) {\n this.logger = logger.clone(name, version);\n this.instance.setLogger(logger);\n }\n}\nMsalService.ɵfac = function MsalService_Factory(t) {\n return new (t || MsalService)(i0.ɵɵinject(MSAL_INSTANCE), i0.ɵɵinject(i3.Location));\n};\nMsalService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MsalService,\n factory: MsalService.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MsalService, [{\n type: Injectable\n }], function () {\n return [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MSAL_INSTANCE]\n }]\n }, {\n type: i3.Location\n }];\n }, null);\n})();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalBroadcastService {\n constructor(msalInstance, authService, msalBroadcastConfig) {\n this.msalInstance = msalInstance;\n this.authService = authService;\n this.msalBroadcastConfig = msalBroadcastConfig;\n // Make _msalSubject a ReplaySubject if configured to replay past events\n if (this.msalBroadcastConfig && this.msalBroadcastConfig.eventsToReplay > 0) {\n this.authService.getLogger().verbose(`BroadcastService - eventsToReplay set on BroadcastConfig, replaying the last ${this.msalBroadcastConfig.eventsToReplay} events`);\n this._msalSubject = new ReplaySubject(this.msalBroadcastConfig.eventsToReplay);\n } else {\n // Defaults to _msalSubject being a Subject\n this._msalSubject = new Subject();\n }\n this.msalSubject$ = this._msalSubject.asObservable();\n // InProgress as BehaviorSubject so most recent inProgress state will be available upon subscription\n this._inProgress = new BehaviorSubject(InteractionStatus.Startup);\n this.inProgress$ = this._inProgress.asObservable();\n this.msalInstance.addEventCallback(message => {\n this._msalSubject.next(message);\n const status = EventMessageUtils.getInteractionStatusFromEvent(message, this._inProgress.value);\n if (status !== null) {\n this.authService.getLogger().verbose(`BroadcastService - ${message.eventType} results in setting inProgress from ${this._inProgress.value} to ${status}`);\n this._inProgress.next(status);\n }\n });\n }\n}\nMsalBroadcastService.ɵfac = function MsalBroadcastService_Factory(t) {\n return new (t || MsalBroadcastService)(i0.ɵɵinject(MSAL_INSTANCE), i0.ɵɵinject(MsalService), i0.ɵɵinject(MSAL_BROADCAST_CONFIG, 8));\n};\nMsalBroadcastService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MsalBroadcastService,\n factory: MsalBroadcastService.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MsalBroadcastService, [{\n type: Injectable\n }], function () {\n return [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MSAL_INSTANCE]\n }]\n }, {\n type: MsalService\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MSAL_BROADCAST_CONFIG]\n }]\n }];\n }, null);\n})();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalGuard {\n constructor(msalGuardConfig, msalBroadcastService, authService, location, router) {\n this.msalGuardConfig = msalGuardConfig;\n this.msalBroadcastService = msalBroadcastService;\n this.authService = authService;\n this.location = location;\n this.router = router;\n // Subscribing so events in MsalGuard will set inProgress$ observable\n this.msalBroadcastService.inProgress$.subscribe();\n }\n /**\n * Parses url string to UrlTree\n * @param url\n */\n parseUrl(url) {\n return this.router.parseUrl(url);\n }\n /**\n * Builds the absolute url for the destination page\n * @param path Relative path of requested page\n * @returns Full destination url\n */\n getDestinationUrl(path) {\n this.authService.getLogger().verbose(\"Guard - getting destination url\");\n // Absolute base url for the application (default to origin if base element not present)\n const baseElements = document.getElementsByTagName(\"base\");\n const baseUrl = this.location.normalize(baseElements.length ? baseElements[0].href : window.location.origin);\n // Path of page (including hash, if using hash routing)\n const pathUrl = this.location.prepareExternalUrl(path);\n // Hash location strategy\n if (pathUrl.startsWith(\"#\")) {\n this.authService.getLogger().verbose(\"Guard - destination by hash routing\");\n return `${baseUrl}/${pathUrl}`;\n }\n /*\n * If using path location strategy, pathUrl will include the relative portion of the base path (e.g. /base/page).\n * Since baseUrl also includes /base, can just concatentate baseUrl + path\n */\n return `${baseUrl}${path}`;\n }\n /**\n * Interactively prompt the user to login\n * @param url Path of the requested page\n */\n loginInteractively(state) {\n const authRequest = typeof this.msalGuardConfig.authRequest === \"function\" ? this.msalGuardConfig.authRequest(this.authService, state) : {\n ...this.msalGuardConfig.authRequest\n };\n if (this.msalGuardConfig.interactionType === InteractionType.Popup) {\n this.authService.getLogger().verbose(\"Guard - logging in by popup\");\n return this.authService.loginPopup(authRequest).pipe(map(response => {\n this.authService.getLogger().verbose(\"Guard - login by popup successful, can activate, setting active account\");\n this.authService.instance.setActiveAccount(response.account);\n return true;\n }));\n }\n this.authService.getLogger().verbose(\"Guard - logging in by redirect\");\n const redirectStartPage = this.getDestinationUrl(state.url);\n return this.authService.loginRedirect({\n redirectStartPage,\n ...authRequest\n }).pipe(map(() => false));\n }\n /**\n * Helper which checks for the correct interaction type, prevents page with Guard to be set as redirect, and calls handleRedirectObservable\n * @param state\n */\n activateHelper(state) {\n if (this.msalGuardConfig.interactionType !== InteractionType.Popup && this.msalGuardConfig.interactionType !== InteractionType.Redirect) {\n throw new BrowserConfigurationAuthError(\"invalid_interaction_type\", \"Invalid interaction type provided to MSAL Guard. InteractionType.Popup or InteractionType.Redirect must be provided in the MsalGuardConfiguration\");\n }\n this.authService.getLogger().verbose(\"MSAL Guard activated\");\n /*\n * If a page with MSAL Guard is set as the redirect for acquireTokenSilent,\n * short-circuit to prevent redirecting or popups.\n */\n if (typeof window !== \"undefined\") {\n if (UrlString.hashContainsKnownProperties(window.location.hash) && BrowserUtils.isInIframe() && !this.authService.instance.getConfiguration().system.allowRedirectInIframe) {\n this.authService.getLogger().warning(\"Guard - redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication.\");\n return of(false);\n }\n } else {\n this.authService.getLogger().info(\"Guard - window is undefined, MSAL does not support server-side token acquisition\");\n return of(true);\n }\n /**\n * If a loginFailedRoute is set in the config, set this as the loginFailedRoute\n */\n if (this.msalGuardConfig.loginFailedRoute) {\n this.loginFailedRoute = this.parseUrl(this.msalGuardConfig.loginFailedRoute);\n }\n // Capture current path before it gets changed by handleRedirectObservable\n const currentPath = this.location.path(true);\n return this.authService.initialize().pipe(concatMap(() => {\n return this.authService.handleRedirectObservable();\n }), concatMap(() => {\n if (!this.authService.instance.getAllAccounts().length) {\n if (state) {\n this.authService.getLogger().verbose(\"Guard - no accounts retrieved, log in required to activate\");\n return this.loginInteractively(state);\n }\n this.authService.getLogger().verbose(\"Guard - no accounts retrieved, no state, cannot load\");\n return of(false);\n }\n this.authService.getLogger().verbose(\"Guard - at least 1 account exists, can activate or load\");\n // Prevent navigating the app to /#code= or /code=\n if (state) {\n /*\n * Path routing:\n * state.url: /#code=...\n * state.root.fragment: code=...\n */\n /*\n * Hash routing:\n * state.url: /code\n * state.root.fragment: null\n */\n const urlContainsCode = this.includesCode(state.url);\n const fragmentContainsCode = !!state.root && !!state.root.fragment && this.includesCode(`#${state.root.fragment}`);\n const hashRouting = this.location.prepareExternalUrl(state.url).indexOf(\"#\") === 0;\n // Ensure code parameter is in fragment (and not in query parameter), or that hash hash routing is used\n if (urlContainsCode && (fragmentContainsCode || hashRouting)) {\n this.authService.getLogger().info(\"Guard - Hash contains known code response, stopping navigation.\");\n // Path routing (navigate to current path without hash)\n if (currentPath.indexOf(\"#\") > -1) {\n return of(this.parseUrl(this.location.path()));\n }\n // Hash routing (navigate to root path)\n return of(this.parseUrl(\"\"));\n }\n }\n return of(true);\n }), catchError(error => {\n this.authService.getLogger().error(\"Guard - error while logging in, unable to activate\");\n this.authService.getLogger().errorPii(`Guard - error: ${error.message}`);\n /**\n * If a loginFailedRoute is set, checks to see if state is passed before returning route\n */\n if (this.loginFailedRoute && state) {\n this.authService.getLogger().verbose(\"Guard - loginFailedRoute set, redirecting\");\n return of(this.loginFailedRoute);\n }\n return of(false);\n }));\n }\n includesCode(path) {\n return path.lastIndexOf(\"/code\") > -1 && path.lastIndexOf(\"/code\") === path.length - \"/code\".length ||\n // path.endsWith(\"/code\")\n path.indexOf(\"#code=\") > -1 || path.indexOf(\"&code=\") > -1;\n }\n canActivate(route, state) {\n this.authService.getLogger().verbose(\"Guard - canActivate\");\n return this.activateHelper(state);\n }\n canActivateChild(route, state) {\n this.authService.getLogger().verbose(\"Guard - canActivateChild\");\n return this.activateHelper(state);\n }\n canMatch() {\n this.authService.getLogger().verbose(\"Guard - canLoad\");\n return this.activateHelper();\n }\n}\nMsalGuard.ɵfac = function MsalGuard_Factory(t) {\n return new (t || MsalGuard)(i0.ɵɵinject(MSAL_GUARD_CONFIG), i0.ɵɵinject(MsalBroadcastService), i0.ɵɵinject(MsalService), i0.ɵɵinject(i3.Location), i0.ɵɵinject(i4.Router));\n};\nMsalGuard.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MsalGuard,\n factory: MsalGuard.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MsalGuard, [{\n type: Injectable\n }], function () {\n return [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MSAL_GUARD_CONFIG]\n }]\n }, {\n type: MsalBroadcastService\n }, {\n type: MsalService\n }, {\n type: i3.Location\n }, {\n type: i4.Router\n }];\n }, null);\n})();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalInterceptor {\n constructor(msalInterceptorConfig, authService, location, msalBroadcastService,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n document) {\n this.msalInterceptorConfig = msalInterceptorConfig;\n this.authService = authService;\n this.location = location;\n this.msalBroadcastService = msalBroadcastService;\n this._document = document;\n }\n intercept(req,\n // eslint-disable-line @typescript-eslint/no-explicit-any\n next\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ) {\n if (this.msalInterceptorConfig.interactionType !== InteractionType.Popup && this.msalInterceptorConfig.interactionType !== InteractionType.Redirect) {\n throw new BrowserConfigurationAuthError(\"invalid_interaction_type\", \"Invalid interaction type provided to MSAL Interceptor. InteractionType.Popup, InteractionType.Redirect must be provided in the msalInterceptorConfiguration\");\n }\n this.authService.getLogger().verbose(\"MSAL Interceptor activated\");\n const scopes = this.getScopesForEndpoint(req.url, req.method);\n // If no scopes for endpoint, does not acquire token\n if (!scopes || scopes.length === 0) {\n this.authService.getLogger().verbose(\"Interceptor - no scopes for endpoint\");\n return next.handle(req);\n }\n // Sets account as active account or first account\n let account;\n if (!!this.authService.instance.getActiveAccount()) {\n this.authService.getLogger().verbose(\"Interceptor - active account selected\");\n account = this.authService.instance.getActiveAccount();\n } else {\n this.authService.getLogger().verbose(\"Interceptor - no active account, fallback to first account\");\n account = this.authService.instance.getAllAccounts()[0];\n }\n const authRequest = typeof this.msalInterceptorConfig.authRequest === \"function\" ? this.msalInterceptorConfig.authRequest(this.authService, req, {\n account: account\n }) : {\n ...this.msalInterceptorConfig.authRequest,\n account\n };\n this.authService.getLogger().info(`Interceptor - ${scopes.length} scopes found for endpoint`);\n this.authService.getLogger().infoPii(`Interceptor - [${scopes}] scopes found for ${req.url}`);\n return this.acquireToken(authRequest, scopes, account).pipe(switchMap(result => {\n this.authService.getLogger().verbose(\"Interceptor - setting authorization headers\");\n const headers = req.headers.set(\"Authorization\", `Bearer ${result.accessToken}`);\n const requestClone = req.clone({\n headers\n });\n return next.handle(requestClone);\n }));\n }\n /**\n * Try to acquire token silently. Invoke interaction if acquireTokenSilent rejected with error or resolved with null access token\n * @param authRequest Request\n * @param scopes Array of scopes for the request\n * @param account Account\n * @returns Authentication result\n */\n acquireToken(authRequest, scopes, account) {\n // Note: For MSA accounts, include openid scope when calling acquireTokenSilent to return idToken\n return this.authService.acquireTokenSilent({\n ...authRequest,\n scopes,\n account\n }).pipe(catchError(() => {\n this.authService.getLogger().error(\"Interceptor - acquireTokenSilent rejected with error. Invoking interaction to resolve.\");\n return this.msalBroadcastService.inProgress$.pipe(take(1), switchMap(status => {\n if (status === InteractionStatus.None) {\n return this.acquireTokenInteractively(authRequest, scopes);\n }\n return this.msalBroadcastService.inProgress$.pipe(filter(status => status === InteractionStatus.None), take(1), switchMap(() => this.acquireToken(authRequest, scopes, account)));\n }));\n }), switchMap(result => {\n if (!result.accessToken) {\n this.authService.getLogger().error(\"Interceptor - acquireTokenSilent resolved with null access token. Known issue with B2C tenants, invoking interaction to resolve.\");\n return this.msalBroadcastService.inProgress$.pipe(filter(status => status === InteractionStatus.None), take(1), switchMap(() => this.acquireTokenInteractively(authRequest, scopes)));\n }\n return of(result);\n }));\n }\n /**\n * Invoke interaction for the given set of scopes\n * @param authRequest Request\n * @param scopes Array of scopes for the request\n * @returns Result from the interactive request\n */\n acquireTokenInteractively(authRequest, scopes) {\n if (this.msalInterceptorConfig.interactionType === InteractionType.Popup) {\n this.authService.getLogger().verbose(\"Interceptor - error acquiring token silently, acquiring by popup\");\n return this.authService.acquireTokenPopup({\n ...authRequest,\n scopes\n });\n }\n this.authService.getLogger().verbose(\"Interceptor - error acquiring token silently, acquiring by redirect\");\n const redirectStartPage = window.location.href;\n this.authService.acquireTokenRedirect({\n ...authRequest,\n scopes,\n redirectStartPage\n });\n return EMPTY;\n }\n /**\n * Looks up the scopes for the given endpoint from the protectedResourceMap\n * @param endpoint Url of the request\n * @param httpMethod Http method of the request\n * @returns Array of scopes, or null if not found\n *\n */\n getScopesForEndpoint(endpoint, httpMethod) {\n this.authService.getLogger().verbose(\"Interceptor - getting scopes for endpoint\");\n // Ensures endpoints and protected resources compared are normalized\n const normalizedEndpoint = this.location.normalize(endpoint);\n const protectedResourcesArray = Array.from(this.msalInterceptorConfig.protectedResourceMap.keys());\n const matchingProtectedResources = this.matchResourcesToEndpoint(protectedResourcesArray, normalizedEndpoint);\n if (matchingProtectedResources.length > 0) {\n return this.matchScopesToEndpoint(this.msalInterceptorConfig.protectedResourceMap, matchingProtectedResources, httpMethod);\n }\n return null;\n }\n /**\n * Finds resource endpoints that match request endpoint\n * @param protectedResourcesEndpoints\n * @param endpoint\n * @returns\n */\n matchResourcesToEndpoint(protectedResourcesEndpoints, endpoint) {\n const matchingResources = [];\n protectedResourcesEndpoints.forEach(key => {\n const normalizedKey = this.location.normalize(key);\n // Get url components\n const absoluteKey = this.getAbsoluteUrl(normalizedKey);\n const keyComponents = new URL(absoluteKey);\n const absoluteEndpoint = this.getAbsoluteUrl(endpoint);\n const endpointComponents = new URL(absoluteEndpoint);\n if (this.checkUrlComponents(keyComponents, endpointComponents)) {\n matchingResources.push(key);\n }\n });\n return matchingResources;\n }\n /**\n * Compares URL segments between key and endpoint\n * @param key\n * @param endpoint\n * @returns\n */\n checkUrlComponents(keyComponents, endpointComponents) {\n // URL properties from https://developer.mozilla.org/en-US/docs/Web/API/URL\n const urlProperties = [\"protocol\", \"host\", \"pathname\", \"search\", \"hash\"];\n for (const property of urlProperties) {\n if (keyComponents[property]) {\n const decodedInput = decodeURIComponent(keyComponents[property]);\n if (!StringUtils.matchPattern(decodedInput, endpointComponents[property])) {\n return false;\n }\n }\n }\n return true;\n }\n /**\n * Transforms relative urls to absolute urls\n * @param url\n * @returns\n */\n getAbsoluteUrl(url) {\n const link = this._document.createElement(\"a\");\n link.href = url;\n return link.href;\n }\n /**\n * Finds scopes from first matching endpoint with HTTP method that matches request\n * @param protectedResourceMap Protected resource map\n * @param endpointArray Array of resources that match request endpoint\n * @param httpMethod Http method of the request\n * @returns\n */\n matchScopesToEndpoint(protectedResourceMap, endpointArray, httpMethod) {\n const allMatchedScopes = [];\n // Check each matched endpoint for matching HttpMethod and scopes\n endpointArray.forEach(matchedEndpoint => {\n const scopesForEndpoint = [];\n const methodAndScopesArray = protectedResourceMap.get(matchedEndpoint);\n // Return if resource is unprotected\n if (methodAndScopesArray === null) {\n allMatchedScopes.push(null);\n return;\n }\n methodAndScopesArray.forEach(entry => {\n // Entry is either array of scopes or ProtectedResourceScopes object\n if (typeof entry === \"string\") {\n scopesForEndpoint.push(entry);\n } else {\n // Ensure methods being compared are normalized\n const normalizedRequestMethod = httpMethod.toLowerCase();\n const normalizedResourceMethod = entry.httpMethod.toLowerCase();\n // Method in protectedResourceMap matches request http method\n if (normalizedResourceMethod === normalizedRequestMethod) {\n // Validate if scopes comes null to unprotect the resource in a certain http method\n if (entry.scopes === null) {\n allMatchedScopes.push(null);\n } else {\n entry.scopes.forEach(scope => {\n scopesForEndpoint.push(scope);\n });\n }\n }\n }\n });\n // Only add to all scopes if scopes for endpoint and method is found\n if (scopesForEndpoint.length > 0) {\n allMatchedScopes.push(scopesForEndpoint);\n }\n });\n if (allMatchedScopes.length > 0) {\n if (allMatchedScopes.length > 1) {\n this.authService.getLogger().warning(\"Interceptor - More than 1 matching scopes for endpoint found.\");\n }\n // Returns scopes for first matching endpoint\n return allMatchedScopes[0];\n }\n return null;\n }\n}\nMsalInterceptor.ɵfac = function MsalInterceptor_Factory(t) {\n return new (t || MsalInterceptor)(i0.ɵɵinject(MSAL_INTERCEPTOR_CONFIG), i0.ɵɵinject(MsalService), i0.ɵɵinject(i3.Location), i0.ɵɵinject(MsalBroadcastService), i0.ɵɵinject(DOCUMENT));\n};\nMsalInterceptor.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MsalInterceptor,\n factory: MsalInterceptor.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MsalInterceptor, [{\n type: Injectable\n }], function () {\n return [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MSAL_INTERCEPTOR_CONFIG]\n }]\n }, {\n type: MsalService\n }, {\n type: i3.Location\n }, {\n type: MsalBroadcastService\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }];\n }, null);\n})();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * This is a dedicated redirect component to be added to Angular apps to\n * handle redirects when using @azure/msal-angular.\n * Import this component to use redirects in your app.\n */\nclass MsalRedirectComponent {\n constructor(authService) {\n this.authService = authService;\n }\n ngOnInit() {\n this.authService.getLogger().verbose(\"MsalRedirectComponent activated\");\n this.authService.handleRedirectObservable().subscribe();\n }\n}\nMsalRedirectComponent.ɵfac = function MsalRedirectComponent_Factory(t) {\n return new (t || MsalRedirectComponent)(i0.ɵɵdirectiveInject(MsalService));\n};\nMsalRedirectComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MsalRedirectComponent,\n selectors: [[\"app-redirect\"]],\n decls: 0,\n vars: 0,\n template: function MsalRedirectComponent_Template(rf, ctx) {},\n encapsulation: 2\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MsalRedirectComponent, [{\n type: Component,\n args: [{\n selector: \"app-redirect\",\n template: \"\"\n }]\n }], function () {\n return [{\n type: MsalService\n }];\n }, null);\n})();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalModule {\n static forRoot(msalInstance, guardConfig, interceptorConfig) {\n return {\n ngModule: MsalModule,\n providers: [{\n provide: MSAL_INSTANCE,\n useValue: msalInstance\n }, {\n provide: MSAL_GUARD_CONFIG,\n useValue: guardConfig\n }, {\n provide: MSAL_INTERCEPTOR_CONFIG,\n useValue: interceptorConfig\n }, MsalService]\n };\n }\n}\nMsalModule.ɵfac = function MsalModule_Factory(t) {\n return new (t || MsalModule)();\n};\nMsalModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MsalModule\n});\nMsalModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MsalGuard, MsalBroadcastService],\n imports: [CommonModule]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MsalModule, [{\n type: NgModule,\n args: [{\n declarations: [MsalRedirectComponent],\n imports: [CommonModule],\n providers: [MsalGuard, MsalBroadcastService]\n }]\n }], null, null);\n})();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Custom navigation used for Angular client-side navigation.\n * See performance doc for details:\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular/docs/performance.md\n */\nclass MsalCustomNavigationClient extends NavigationClient {\n constructor(authService, router, location) {\n super();\n this.authService = authService;\n this.router = router;\n this.location = location;\n }\n async navigateInternal(url, options) {\n this.authService.getLogger().trace(\"MsalCustomNavigationClient called\");\n this.authService.getLogger().verbose(\"MsalCustomNavigationClient - navigating\");\n this.authService.getLogger().verbosePii(`MsalCustomNavigationClient - navigating to url: ${url}`);\n // Prevent hash clearing from causing an issue with Client-side navigation after redirect is handled\n if (options.noHistory) {\n return super.navigateInternal(url, options);\n } else {\n // Normalizing newUrl if no query string\n const urlComponents = new UrlString(url).getUrlComponents();\n const newUrl = urlComponents.QueryString ? `${urlComponents.AbsolutePath}?${urlComponents.QueryString}` : this.location.normalize(urlComponents.AbsolutePath);\n await this.router.navigateByUrl(newUrl, {\n replaceUrl: options.noHistory\n });\n }\n return Promise.resolve(options.noHistory);\n }\n}\nMsalCustomNavigationClient.ɵfac = function MsalCustomNavigationClient_Factory(t) {\n return new (t || MsalCustomNavigationClient)(i0.ɵɵinject(MsalService), i0.ɵɵinject(i4.Router), i0.ɵɵinject(i3.Location));\n};\nMsalCustomNavigationClient.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MsalCustomNavigationClient,\n factory: MsalCustomNavigationClient.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MsalCustomNavigationClient, [{\n type: Injectable\n }], function () {\n return [{\n type: MsalService\n }, {\n type: i4.Router\n }, {\n type: i3.Location\n }];\n }, null);\n})();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @packageDocumentation\n * @module @azure/msal-angular\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MSAL_BROADCAST_CONFIG, MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalBroadcastService, MsalCustomNavigationClient, MsalGuard, MsalInterceptor, MsalModule, MsalRedirectComponent, MsalService, version };\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ConfigurationService {\r\n private apimUrl = environment.apimUrl;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n refreshAccessToken(): Observable {\r\n const tokenUrl = `${this.apimUrl}/settings`;\r\n return this.http.post(tokenUrl, {}).pipe(\r\n tap((response) => {\r\n if (response && response.data.accessToken) {\r\n localStorage.setItem('token', response.data.accessToken);\r\n }\r\n })\r\n );\r\n }\r\n\r\n\r\n getJobseekerImg(img: any) {\r\n var config = this.getConfig();\r\n return this.baseUrl(img, config.directory.jobseeker);\r\n }\r\n\r\n getCOBImg(img: any) {\r\n var config = this.getConfig();\r\n return this.baseUrl(img, config.directory.cob);\r\n }\r\n getEmployerImg(img: any) {\r\n var config = this.getConfig();\r\n return this.baseUrl(img, config.directory.employeer);\r\n }\r\n\r\n private getConfig(): any {\r\n return JSON.parse(localStorage.getItem('config') || '');\r\n }\r\n\r\n private baseUrl(img: any, type: any): any {\r\n var config = this.getConfig();\r\n return `${config.baseUrl}/${type}/${img}`;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from '../../environments/environment';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TranslationService {\r\n private subscriptionKey = environment.translationApiKey;\r\n private endpoint = environment.translationEndpoint;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n translate(requestBody: { Text: string }[], targetLanguage: string): Observable {\r\n const url = `${this.endpoint}/translator/text/v3.0/translate?api-version=3.0&to=${targetLanguage}`;\r\n const headers = new HttpHeaders({\r\n 'Ocp-Apim-Subscription-Key': this.subscriptionKey,\r\n 'Ocp-Apim-Subscription-Region': 'westus3',\r\n 'Content-Type': 'application/json',\r\n 'apitype': 'translation'\r\n });\r\n return this.http.post(url, requestBody, { headers });\r\n }\r\n\r\n updateLanguage(code: string) {\r\n if (code !== 'EN') {\r\n const elements = document.body.querySelectorAll('*');\r\n const dropdownArea = document.getElementById('languageDropdown');\r\n\r\n const textNodes: string[] = [];\r\n const dynamicElements: Node[] = [];\r\n\r\n elements.forEach((element) => {\r\n if (element !== dropdownArea && !dropdownArea?.contains(element)) {\r\n element.childNodes.forEach((child) => {\r\n if (child.nodeType === Node.TEXT_NODE) {\r\n const textToTranslate = child.textContent?.trim() || '';\r\n if (textToTranslate) {\r\n const parentElement = child.parentElement;\r\n if (parentElement && parentElement.getAttribute('data-translated') !== code) {\r\n textNodes.push(textToTranslate);\r\n dynamicElements.push(child);\r\n parentElement.setAttribute('data-translated', code);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n if (textNodes.length > 0) {\r\n const maxBatchSize = 25; // Azure API limit\r\n const batches: string[][] = [];\r\n for (let i = 0; i < textNodes.length; i += maxBatchSize) {\r\n batches.push(textNodes.slice(i, i + maxBatchSize));\r\n }\r\n //let batchCallCount = 0;\r\n batches.forEach((batch) => {\r\n const requestBody = batch.map((text) => ({ Text: text }));\r\n\r\n //batchCallCount++; \r\n //console.log(`Calling API for batch #${batchCallCount}:`, requestBody);\r\n\r\n this.translate(requestBody, code).subscribe(\r\n (response: any) => {\r\n if (response && response.length > 0) {\r\n const translationMap = new Map();\r\n response.forEach((res: any, index: number) => {\r\n translationMap.set(batch[index], res.translations[0].text);\r\n });\r\n\r\n dynamicElements.forEach((el, idx) => {\r\n if (translationMap.has(textNodes[idx])) {\r\n el.textContent = translationMap.get(textNodes[idx])!;\r\n }\r\n });\r\n } else {\r\n console.error('Unexpected response format:', response);\r\n }\r\n },\r\n (error) => {\r\n console.error('Translation error:', error);\r\n }\r\n );\r\n });\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport {\r\n HttpInterceptor,\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpContextToken,\r\n HttpResponse,\r\n HttpErrorResponse,\r\n} from '@angular/common/http';\r\nimport { catchError, Observable, Subject, switchMap, take, tap, throwError } from 'rxjs';\r\nimport { MsalInterceptor } from '@azure/msal-angular';\r\nimport { TranslationService } from '../translation.service';\r\nimport { ConfigurationService } from '../configuration.service';\r\n\r\n\r\nexport const BYPASS_MSAL = new HttpContextToken(() => false);\r\n\r\n@Injectable()\r\nexport class AppHttpInterceptor\r\n extends MsalInterceptor\r\n implements HttpInterceptor\r\n{\r\n private isRefreshing = false;\r\n private refreshTokenSubject: Subject = new Subject(); // Queue for waiting API calls\r\n\r\n\r\n override intercept(\r\n request: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n const translationService = inject(TranslationService);\r\n const configService = inject(ConfigurationService);\r\n if (request.context.get(BYPASS_MSAL)) {\r\n const localToken = localStorage.getItem('token');\r\n if (!localToken) {\r\n return this.handleTokenRefresh(request, next, configService);\r\n }\r\n\r\n request = this.addToken(request, localToken);\r\n\r\n return next.handle(request).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n if (error.status === 401) {\r\n return this.handleTokenRefresh(request, next, configService);\r\n }\r\n return throwError(() => error);\r\n }),\r\n tap((event) => {\r\n if (event instanceof HttpResponse) {\r\n const languageCode =\r\n sessionStorage.getItem('languageselected') || 'EN';\r\n setTimeout(() => {\r\n translationService.updateLanguage(languageCode);\r\n }, 500);\r\n }\r\n })\r\n );\r\n }\r\n\r\n return super.intercept(request, next).pipe(\r\n tap((event) => {\r\n if (\r\n event instanceof HttpResponse &&\r\n request.headers.get('apitype') !== 'translation'\r\n ) {\r\n const languageCode =\r\n sessionStorage.getItem('languageselected') || 'EN';\r\n setTimeout(() => {\r\n translationService.updateLanguage(languageCode);\r\n }, 500);\r\n }\r\n })\r\n );\r\n }\r\n \r\n private handleTokenRefresh(request: HttpRequest, next: HttpHandler, configService: ConfigurationService) {\r\n if (!this.isRefreshing) {\r\n this.isRefreshing = true;\r\n this.refreshTokenSubject.next(null); // Block all requests until token is refreshed\r\n\r\n return configService.refreshAccessToken().pipe(\r\n switchMap((data: any) => {\r\n const newToken = data?.data?.accessToken;\r\n if (newToken) {\r\n this.isRefreshing = false;\r\n this.refreshTokenSubject.next(newToken); // Allow waiting requests to proceed\r\n return next.handle(this.addToken(request, newToken));\r\n }\r\n return throwError(() => new Error('Token refresh failed'));\r\n }),\r\n catchError((error) => {\r\n this.isRefreshing = false;\r\n this.refreshTokenSubject.error(error); // Notify waiting requests of failure\r\n return throwError(() => error);\r\n })\r\n );\r\n } else {\r\n // If refresh is in progress, wait for new token\r\n return this.refreshTokenSubject.pipe(\r\n take(1),\r\n switchMap((newToken) => {\r\n if (newToken) {\r\n return next.handle(this.addToken(request, newToken));\r\n }\r\n return throwError(() => new Error('Token refresh failed'));\r\n })\r\n );\r\n }\r\n }\r\n\r\n private addToken(request: HttpRequest, token: string): HttpRequest {\r\n return request.clone({ setHeaders: { Authorization: `Bearer ${token}` } });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Observable, of, ReplaySubject, Subject } from 'rxjs';\r\nimport { environment } from '../../environments/environment';\r\nimport { user } from '../model/user';\r\nimport { employer } from '../model/employer';\r\nimport { AppConstants } from '../appconstants';\r\nimport { BYPASS_MSAL } from './authguard/auth-interceptor';\r\nimport { UserProfileDto } from '../utils/types';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ProfileService {\r\n private apiUrl = environment.apiUrl;\r\n public signUpEvent: Subject = new Subject();\r\n\r\n private profileUpdateSource = new ReplaySubject(1);\r\n profilePicUpdated$ = this.profileUpdateSource.asObservable();\r\n\r\n private userNameSubject = new ReplaySubject(1);\r\n userNameUpdated$ = this.userNameSubject.asObservable();\r\n\r\n\r\n public profileUpdated: Subject = new Subject();\r\n\r\n source = [\r\n { id: 0, name: 'Word of Mouth' },\r\n { id: 1, name: 'Social Media (e.g., Facebook, Instagram, Twitter)' },\r\n { id: 2, name: 'Online Advertising (e.g., Google Ads, Facebook Ads)' },\r\n { id: 3, name: 'Search Engine (e.g., Google, Bing)' },\r\n { id: 4, name: 'Email Newsletter' },\r\n { id: 5, name: 'Website Referral (e.g., Blog, Partner Website)' },\r\n { id: 6, name: 'Traditional Media (e.g., TV, Radio, Print)' },\r\n { id: 7, name: 'Events or Conferences' },\r\n { id: 8, name: 'Direct Mail (e.g., Postcards, Brochures)' },\r\n { id: 9, name: 'Public Relations (e.g., Press Releases, News Articles)' },\r\n { id: 10, name: 'Community Board or Local Bulletin' },\r\n { id: 11, name: 'Partnership or Sponsorship' },\r\n ];\r\n\r\n jobSeekerDetails = {\r\n data: {\r\n FirstName: 'John',\r\n LastName: 'Doe',\r\n Email: 'johndoe@gmail.com',\r\n zipCode: '90045',\r\n Phone: '(630) 155-6841',\r\n ageConfirmation: 'No',\r\n profilePicture: 'https://picsum.photos/200',\r\n PriorityIndustry: 1,\r\n },\r\n };\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n updateProfilePic(profile: any) {\r\n this.profileUpdateSource.next(profile);\r\n }\r\n\r\n updateUserName(userName: any) {\r\n this.userNameSubject.next(userName);\r\n }\r\n\r\n getUserProfileById(id: string): Observable {\r\n return this.http.get(`${this.apiUrl}/user/profile/id/${id}`);\r\n }\r\n\r\n saveUserProfile(formData: any): void {\r\n this.http\r\n .post(`${this.apiUrl}/user`, formData)\r\n .subscribe((response: any) => {\r\n let user: any = localStorage?.getItem(AppConstants.USER);\r\n user = JSON.parse(user ?? '');\r\n user.userId = response.data;\r\n localStorage.setItem(AppConstants.USER, JSON.stringify(user));\r\n });\r\n }\r\n\r\n updateProfile(formData: any): Observable {\r\n return this.http.put(`${this.apiUrl}/user`, formData);\r\n }\r\n\r\n getreferralSource(): Observable<{ data: any[] }> {\r\n return this.http.get(`${this.apiUrl}/user/lovs`);\r\n }\r\n ///////////////////////\r\n // get employer profile details\r\n getEmployerDetails(): Observable {\r\n return this.http.get(\r\n `${this.apiUrl}/employer/A6BDB47A-4F5A-44BC-B7CC-2CC483FE67F6`\r\n );\r\n }\r\n\r\n // Save employer details\r\n saveEmployerDetails(employer: employer): Observable {\r\n return this.http.put(`${this.apiUrl}/employer`, employer);\r\n }\r\n\r\n getemployerLovs(): Observable<{ data: any[] }> {\r\n return this.http.get<{ data: any[] }>(`${this.apiUrl}/employer/lovs`);\r\n }\r\n\r\n getStateLovs(): Observable<{ data: any[] }> {\r\n return this.http.get<{ data: any[] }>(`${this.apiUrl}/user/state/lovs`);\r\n }\r\n //permanentDelete(id: string): Observable {\r\n // return this.http.delete<{ data: any[] }>(`${this.apiUrl}/employer/${id}`);\r\n //}\r\n\r\n permanentDelete(userId: string): Observable {\r\n return this.http.delete(`${this.apiUrl}/user/${userId}`);\r\n }\r\n\r\n deleteAdditionalUser(userId: string) : Observable {\r\n return this.http.delete(`${this.apiUrl}/user/additionaluser/delete/${userId}`);\r\n }\r\n\r\n getUser(userId: string): Observable {\r\n return this.http.get(`${this.apiUrl}/user/${userId}`);\r\n }\r\n\r\n enableDisableUser(userId: string): Observable {\r\n return this.http.patch(`${this.apiUrl}/user/${userId}`, {});\r\n }\r\n\r\n getUserClaims(): any {\r\n let user: any = localStorage?.getItem(AppConstants.USER);\r\n return JSON.parse(user);\r\n }\r\n\r\n saveEmployerProfile(formData: any): Observable {\r\n return this.http.post(\r\n `${this.apiUrl}/employer/Profile/Update`,\r\n formData\r\n );\r\n }\r\n\r\n ///saving additional user\r\n saveProfile(formData: any): Observable {\r\n return this.http.post(\r\n `${this.apiUrl}/user/profile/create/additionaluser`,\r\n JSON.stringify(formData),\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n }\r\n );\r\n }\r\n\r\n //updating additional user\r\n updateUserProfile(formData: any): Observable {\r\n return this.http.put(`${this.apiUrl}/user`, JSON.stringify(formData), {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n }\r\n\r\n getAdditionalEmployerUsers(userId: any): Observable {\r\n return this.http.get(`${this.apiUrl}/user/additionalinfo/${userId}`);\r\n }\r\n\r\n filteredByName(employeeName: string): Observable {\r\n return this.http.get(\r\n `${this.apiUrl}/user/filteredByName?employeeName=${employeeName}`\r\n );\r\n }\r\n\r\n filteredEmployerByName(employerName: string): Observable {\r\n return this.http.get(\r\n `${this.apiUrl}/Employer/filteredByName?employerName=${employerName}`\r\n );\r\n }\r\n\r\n filteredCPByName(cpName: string): Observable {\r\n return this.http.get(\r\n `${this.apiUrl}/cbo/filteredByName?cpName=${cpName}`\r\n );\r\n }\r\n\r\n updateLocalStorage(key: string, updateKey: string, updateValue: any): void {\r\n const jsonString = localStorage.getItem(key);\r\n let jsonObject = jsonString ? JSON.parse(jsonString) : {};\r\n jsonObject[updateKey] = updateValue;\r\n const updatedJsonString = JSON.stringify(jsonObject);\r\n localStorage.setItem(key, updatedJsonString);\r\n }\r\n\r\n // get cbo profile details\r\n getCBODetails(obj: any): Observable {\r\n return this.http.get(`${this.apiUrl}/CBO/${obj.userId}`);\r\n }\r\n\r\n getCBOLovs(): Observable<{ data: any[] }> {\r\n return this.http.get<{ data: any[] }>(`${this.apiUrl}/CBO/lov`);\r\n }\r\n verifyEin(data: any) {\r\n return this.http.get(\r\n `${this.apiUrl}/employer/checkein/${data.einNumber}/${data.companyName}/validate`,\r\n { context: new HttpContext().set(BYPASS_MSAL, true) }\r\n );\r\n }\r\n saveEinLocal(data: any) {\r\n localStorage.setItem(AppConstants.EIN_LOCAL, JSON.stringify(data));\r\n }\r\n getEinData() {\r\n return JSON.parse(localStorage.getItem(AppConstants.EIN_LOCAL) ?? '{}');\r\n }\r\n clearEinData() {\r\n localStorage.removeItem(AppConstants.EIN_LOCAL);\r\n }\r\n}\r\n"],"mappings":"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","names":["document","status"],"x_google_ignoreList":[1]}