{"version":3,"file":"finserve-lib.mjs","sources":["../../../projects/finserve-lib/src/lib/environments/environment.ts","../../../projects/finserve-lib/src/lib/models/fs-lib.config.ts","../../../projects/finserve-lib/src/lib/models/fs-app.constant.ts","../../../projects/finserve-lib/src/lib/models/fs-event-type.enum.ts","../../../projects/finserve-lib/src/lib/services/finserve-lib-utility.service.ts","../../../projects/finserve-lib/src/lib/services/finserve-lib-http-helper.service.ts","../../../projects/finserve-lib/src/lib/services/finserve-lib-message.service.ts","../../../projects/finserve-lib/src/lib/services/finserve-lib-auth.service.ts","../../../projects/finserve-lib/src/lib/services/finserve-lib-date.service.ts","../../../projects/finserve-lib/src/lib/services/finserve-lib.service.ts","../../../projects/finserve-lib/src/lib/services/finserve-lib-route-resolver.service.ts","../../../projects/finserve-lib/src/lib/services/finserve-error-handler.service.ts","../../../projects/finserve-lib/src/lib/finserve.module.ts","../../../projects/finserve-lib/src/public-api.ts","../../../projects/finserve-lib/src/finserve-lib.ts"],"sourcesContent":["import { Environments } from \"./environment.interface\";\r\n\r\nvar commonConfig = {\r\n  production: true,\r\n  myToken: ''\r\n}\r\n\r\nconst environments: Environments = {\r\n  local: {\r\n    envKey: 'local',\r\n    production: false,\r\n    baseUrl: 'http://localhost:8052/',\r\n    apiBaseUrl: 'http://localhost:8052/projects/FinServe/lumenapi',\r\n    fileBaseUrl: 'http://localhost:8052/projects/FinServe/lumenapi',\r\n    hostUI: 'http://localhost:5000',\r\n    loginUI: 'http://localhost:5005',\r\n  },\r\n  microfin: {\r\n    envKey: 'microfin',\r\n    baseUrl: 'https://microfin.beginner2expert.com/',\r\n    apiBaseUrl: 'https://microfin.beginner2expert.com/FS_API/',\r\n    fileBaseUrl: 'https://microfin.beginner2expert.com/FS_API/',\r\n    hostUI: 'https://microfin.beginner2expert.com/FS_UI_SHELL/',\r\n    loginUI: 'https://microfin.beginner2expert.com/FS_UI_ACCOUNT/',\r\n  },\r\n  prod: {\r\n    envKey: 'prod',\r\n    baseUrl: 'https://portal.microfinapp.com/',\r\n    apiBaseUrl: 'https://portal.microfinapp.com/FS_API/',\r\n    fileBaseUrl: 'https://portal.microfinapp.com/FS_API/',\r\n    hostUI: 'https://portal.microfinapp.com/FS_UI_SHELL/',\r\n    loginUI: 'https://portal.microfinapp.com/FS_UI_ACCOUNT/',\r\n  }\r\n}\r\n\r\n/**\r\n* @description Get environment key based on host : **local | train1 | train2 | prod**\r\n*/\r\nconst getEnvKeyByURL = () => {\r\n  var envRegex = new RegExp('');\r\n  var origin = location.origin;\r\n  var href = location.href;\r\n\r\n  envRegex = /localhost|^127/;\r\n  if (envRegex.test(origin) || href.includes('local')) {\r\n    return 'local';\r\n  }\r\n\r\n  envRegex = /beginner2expert|^127/;\r\n  if (envRegex.test(origin) || href.includes('beginner2expert')) {\r\n    return 'microfin';\r\n  }\r\n\r\n  return 'prod';\r\n}\r\n\r\n/**\r\n* @description Get actual environment property based on envKey : **local | train1 | train2 | prod**\r\n*/\r\nconst getEnvironmentConfig = () => {\r\n  const envKey = getEnvKeyByURL();\r\n  let environmentObj = environments[envKey];\r\n  environmentObj = { ...commonConfig, ...environmentObj };\r\n  return environmentObj;\r\n}\r\n\r\nexport const environment = getEnvironmentConfig();","import { InjectionToken } from '@angular/core';\r\n\r\nexport const FS_LIB_CONFIG = new InjectionToken<IFSConfig>('FS_LIB_CONFIG');\r\n\r\nexport interface IFSConfig {\r\n  mfeAppUrl?: string;\r\n  backendBaseUrl?: string;\r\n}\r\n","export const FS_APP_CONSTANT = {\r\n    SESSION_KEY: 'fs_sessionkey',\r\n    USER_NAME: 'fs_username',\r\n    REMEMBER_ME: 'fs_remember',\r\n    URL_SESSION_KEY: 'session_key',\r\n    SESSION_TIMEOUT: 'session_timeout',\r\n    HOST_NAME: location.origin,\r\n    MFE_MESSAGE_KEY: 'fs_mfe_message_key'\r\n}","export enum FSEventType {\r\n    \r\n    UserInfo = 'userInfo',\r\n    \r\n    LoginInfo = 'loginInfo',\r\n\r\n    NotificationInfo = 'notificationInfo',\r\n\r\n    CustomerInfo = 'customerInfo',\r\n\r\n    CollectionParams = 'collectionParams',\r\n    \r\n    ApprovalListRefresh = 'approvalListRefresh'\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { environment } from \"../environments/environment\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FSUtilityService {\r\n\r\n    protected _activePreloader: boolean = false;\r\n    public get activePreloader() {\r\n        return this._activePreloader;\r\n    }\r\n    public set activePreloader(status: boolean) {\r\n        this._activePreloader = status;\r\n    }\r\n\r\n    constructor() { }\r\n\r\n    getQueryParameter(key: string): string {\r\n        const parameters = new URLSearchParams(window.location.search);\r\n        return parameters.get(key) || '';\r\n    }\r\n\r\n    public getValueFromKey(name: string, url = window.location.href): string {\r\n        name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\r\n        var regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\r\n            results = regex.exec(url);\r\n        if (!results) return '';\r\n        if (!results[2]) return \"\";\r\n        return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\r\n    }\r\n\r\n    /**\r\n     * Update query string key and value\r\n     * @param key string\r\n     * @param value string\r\n     */\r\n    public updateQueryStringParam(key: string, value: string) {\r\n        var baseUrl = [\r\n            location.protocol,\r\n            \"//\",\r\n            location.host,\r\n            location.pathname,\r\n        ].join(\"\"),\r\n            urlQueryString = document.location.search,\r\n            newParam = key + \"=\" + value,\r\n            params = \"?\" + newParam;\r\n\r\n        // If the \"search\" string exists, then build params from it\r\n        if (urlQueryString) {\r\n            var updateRegex = new RegExp(\"([?&])\" + key + \"[^&]*\");\r\n            var removeRegex = new RegExp(\"([?&])\" + key + \"=[^&;]+[&;]?\");\r\n\r\n            if (typeof value == \"undefined\" || value == null || value == \"\") {\r\n                // Remove param if value is empty\r\n                params = urlQueryString.replace(removeRegex, \"$1\");\r\n                params = params.replace(/[&;]$/, \"\");\r\n            } else if (urlQueryString.match(updateRegex) !== null) {\r\n                // If param exists already, update it\r\n                params = urlQueryString.replace(updateRegex, \"$1\" + newParam);\r\n            } else {\r\n                // Otherwise, add it to end of query string\r\n                params = urlQueryString + \"&\" + newParam;\r\n            }\r\n        }\r\n\r\n        // no parameter was set so we don't need the question mark\r\n        params = params == \"?\" ? \"\" : params;\r\n\r\n        window.history.replaceState({}, \"\", baseUrl + params);\r\n    }\r\n\r\n    /**\r\n     * **CREATING FILE ABSOLUTE PATH**\r\n     * @param relativePath \r\n     * @returns \r\n     */\r\n    public filePathHandler(relativePath: string) {\r\n        return `${environment.fileBaseUrl}/${relativePath}`\r\n    }\r\n\r\n    /**\r\n     * **CONVERTS SIMPLE ARRAY TO PARENT CHILD ARRAY**\r\n     * @param items array\r\n     * @param key string\r\n     * @returns group by array\r\n     */\r\n    public groupBy(items: Array<any>, key: string) {\r\n        return items.reduce((r, a) => {\r\n            r[a[key]] = [...r[a[key]] || [], a];\r\n            return r;\r\n        }, {});\r\n    };\r\n\r\n    /**\r\n     * **GET RANDOM NUMBER WITHIN GIVEN RANGE**\r\n     * @param min number\r\n     * @param max number\r\n     * @returns random numer\r\n     */\r\n    public getRandomInt(min: number, max: number) {\r\n        min = Math.ceil(min);\r\n        max = Math.floor(max);\r\n        return Math.floor(Math.random() * (max - min + 1)) + min;\r\n    };\r\n\r\n    public mobileAndTabletCheck = function () {\r\n        let check = false;\r\n        (function (a) {\r\n            if (\r\n                /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(\r\n                    a\r\n                ) ||\r\n                /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\r\n                    a.substr(0, 4)\r\n                )\r\n            )\r\n                check = true;\r\n        })(navigator.userAgent || navigator.vendor);\r\n        return check;\r\n    }\r\n\r\n    public removeArrayElement(files: any, element: any) {\r\n        files = Array.from(files);\r\n        let index = files.indexOf(element);\r\n        if (index > -1) {\r\n            files.splice(index, 1);\r\n        }\r\n        return files;\r\n    }\r\n}","import { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nimport { catchError, map, Observable, throwError } from \"rxjs\";\r\nimport { environment } from \"../environments/environment\";\r\nimport { FS_APP_CONSTANT, FS_LIB_CONFIG, IFSConfig, IFSHttpResponse } from \"../models\";\r\nimport { FSUtilityService } from \"./finserve-lib-utility.service\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FSHttpHelpService {\r\n\r\n    private readonly _baseAPIUrl: string = '';\r\n    // private _fsConfig: IFSConfig = {};\r\n\r\n    private readonly _headers: any = {\r\n        headers: {\r\n            'Authorization': ''\r\n        }\r\n    };\r\n\r\n    constructor(\r\n        private _httpClient: HttpClient,\r\n        private _utilityContext: FSUtilityService,\r\n        @Inject(FS_LIB_CONFIG) private _fsConfig: IFSConfig\r\n    ) {\r\n        // Consider consumer config first\r\n        // If not then try with this library\r\n        this._baseAPIUrl = this._fsConfig.backendBaseUrl ? this._fsConfig.backendBaseUrl : environment.apiBaseUrl;\r\n        this._updateHeaders();\r\n    }\r\n\r\n    private readonly responseHandler = (dbResponse: any): IFSHttpResponse => {\r\n        return {\r\n            id: dbResponse.id,\r\n            data: dbResponse.data,\r\n            message: dbResponse.message\r\n        };\r\n    };\r\n\r\n    private readonly errorHandler = (error: HttpErrorResponse): any => {\r\n        if (error.status === 401) {\r\n            // window.alert(`${error.message}, redirecting to login page to restart session`);\r\n            sessionStorage.removeItem(FS_APP_CONSTANT.SESSION_KEY);\r\n            window.location.assign(environment.loginUI);\r\n        }\r\n        return this.responseHandler({\r\n            id: 0,\r\n            data: null,\r\n            message: error.message\r\n        });\r\n    }\r\n\r\n    private _updateHeaders() {\r\n        const token: string = this._utilityContext.getQueryParameter(FS_APP_CONSTANT.URL_SESSION_KEY);\r\n        // Setting token to headers if exists\r\n        if (token) {\r\n            this._headers.headers['Authorization'] = `Bearer ${token}`;\r\n        }\r\n    }\r\n\r\n    public get(url: string, options?: any): Observable<IFSHttpResponse> {\r\n\r\n        // Making absolute url\r\n        url = `${this._baseAPIUrl}/${url}`;\r\n\r\n        this._headers.headers[\"Content-Type\"] = 'application/json';\r\n\r\n        this._updateHeaders();\r\n\r\n        options = options ?? this._headers;\r\n\r\n        return this._httpClient.get(url, options)\r\n            .pipe(\r\n                map((response: any) => this.responseHandler(response))\r\n            ).pipe(catchError((err: HttpErrorResponse) => {\r\n                return throwError(this.errorHandler(err));\r\n            }));\r\n    }\r\n\r\n    public post(relativeUrl: string, data: any, options?: any): Observable<IFSHttpResponse> {\r\n\r\n        // Making absolute url\r\n        relativeUrl = `${this._baseAPIUrl}/${relativeUrl}`;\r\n\r\n        this._headers.headers[\"Content-Type\"] = 'application/json';\r\n\r\n        this._updateHeaders();\r\n\r\n        options = options ?? this._headers;\r\n\r\n        return this._httpClient.post(relativeUrl, data, options)\r\n            .pipe(\r\n                map((response: any) => this.responseHandler(response))\r\n            ).pipe(catchError((err: HttpErrorResponse) => {\r\n                return throwError(this.errorHandler(err));\r\n            }));\r\n    }\r\n\r\n    public postFiles(relativeUrl: string, files: any, options?: any): Observable<IFSHttpResponse> {\r\n\r\n        // Making absolute url\r\n        relativeUrl = `${this._baseAPIUrl}/${relativeUrl}`;\r\n\r\n        if (!files || files.length === 0) {\r\n            throw Error('Please select file to upload');\r\n        };\r\n        var formData = new FormData();\r\n        for (var i = 0; i < files.length; i++) {\r\n            formData.append(files[i].name, files[i]);\r\n\r\n            Object.keys(files[i]).forEach(key => {\r\n                formData.append(`${key}${i}`, files[i][key]);\r\n            })\r\n\r\n            // formData.append(`fileTypeRow${i}`, files[i].fileTypeRowID);\r\n\r\n        };\r\n\r\n        this._updateHeaders();\r\n\r\n        options = options ?? this._headers;\r\n        delete options.headers['Content-Type'];\r\n\r\n        return this._httpClient.post(relativeUrl, formData, options)\r\n            .pipe(map((response: any) => this.responseHandler(response))\r\n            ).pipe(catchError((err: HttpErrorResponse) => {\r\n                return throwError(this.errorHandler(err));\r\n            }));\r\n    }\r\n\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { fromEvent, map, Observable } from \"rxjs\";\r\nimport { FS_APP_CONSTANT, IFSEventDetails } from \"../models\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FSMessageService {\r\n\r\n    protected _event!: CustomEvent;\r\n\r\n    constructor() {}\r\n\r\n    dispatch(details: IFSEventDetails) {\r\n        this._event = new CustomEvent(FS_APP_CONSTANT.MFE_MESSAGE_KEY, {\r\n            bubbles: true,\r\n            detail: {\r\n                eventType: details.eventType,\r\n                metaData: details.metaData\r\n            }\r\n        });\r\n\r\n        window.dispatchEvent(this._event);\r\n    }\r\n\r\n    listen(): Observable<IFSEventDetails> {\r\n        return fromEvent<CustomEvent>(window, FS_APP_CONSTANT.MFE_MESSAGE_KEY)\r\n        .pipe(map(response => {\r\n            return response.detail as IFSEventDetails;\r\n        }));\r\n    }\r\n\r\n}","import { Inject, Injectable } from \"@angular/core\";\r\nimport { catchError, Subject } from \"rxjs\";\r\nimport { delay, map, of } from \"rxjs\";\r\nimport { environment } from \"../environments/environment\";\r\nimport { FSEventType, FS_APP_CONSTANT, FS_LIB_CONFIG, IFSConfig, IFSHttpResponse, IFSLogin, IFSUser } from \"../models\";\r\nimport { FSHttpHelpService } from \"./finserve-lib-http-helper.service\";\r\nimport { FSMessageService } from \"./finserve-lib-message.service\";\r\nimport { FSUtilityService } from \"./finserve-lib-utility.service\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FSAuthService {\r\n\r\n    private _customerDetails: any = {};\r\n    protected _user: IFSUser = {};\r\n    protected _user$: Subject<IFSUser> = new Subject();\r\n    protected _token$: Subject<{ token: string, message: string }> = new Subject();\r\n    // private _fsConfig: IFSConfig = {};\r\n\r\n    public get user(): IFSUser {\r\n        return this._user;\r\n    }\r\n\r\n    public set user(user: IFSUser) {\r\n        this._user = user;\r\n    }\r\n\r\n    public get user$(): Subject<IFSUser> {\r\n        return this._user$;\r\n    }\r\n\r\n    public get token$(): Subject<{ token: string, message: string }> {\r\n        return this._token$;\r\n    }\r\n\r\n    constructor(\r\n        private _httpContext: FSHttpHelpService,\r\n        private _utilityContext: FSUtilityService,\r\n        private _messageContext: FSMessageService,\r\n        @Inject(FS_LIB_CONFIG) private _fsConfig: IFSConfig\r\n    ) { }\r\n\r\n    /**\r\n     * @description Login with provided input\r\n     * @description If success then redirect to the provided MFE url or else redirect to host url\r\n     * @param input IFSLogin\r\n     */\r\n    login(input: IFSLogin) {\r\n        return this._httpContext.post('lesssecure/account/login', input)\r\n            .pipe(map(response => {\r\n                if (response && response.data) {\r\n\r\n\r\n                    if (localStorage.getItem('cust_details')) {\r\n                        this._customerDetails = JSON.parse(localStorage.getItem('cust_details') || \"\");\r\n                    }\r\n\r\n                    this._user.token = response.data;\r\n\r\n                    // const redirectUrl: string = `${this._fsConfig.mfeAppUrl || environment.hostUI}/${this._customerDetails.customerCode}?${FS_APP_CONSTANT.URL_SESSION_KEY}=${this._user.token}`\r\n                    // window.location.assign(redirectUrl);\r\n                }\r\n                this._messageContext.dispatch({ eventType: FSEventType.LoginInfo, metaData: this._user });\r\n                this._token$.next({ token: response.data, message: response.message || '' });\r\n                return response;\r\n            }))\r\n            .pipe(catchError(error => {\r\n                throw new Error(error);\r\n            }))\r\n    }\r\n\r\n    /**\r\n     * @description Load login user basic details\r\n     * @param userCode Can be passed or else from token can be fetched inside server\r\n     * @returns IFSUser\r\n     */\r\n    loadUser(userCode: string = '') {\r\n        const url: string = userCode ? 'secure/staff/basic/details/' + userCode : 'secure/staff/basic/details';\r\n        return this._httpContext.get(url)\r\n            .pipe(map((apiResponse: any) => {\r\n                const user: IFSUser = {\r\n                    token: this._utilityContext.getQueryParameter(FS_APP_CONSTANT.URL_SESSION_KEY),\r\n                    name: apiResponse.data.loginName,\r\n                    userCode: apiResponse.data.staffId,\r\n                    role: apiResponse.data.role,\r\n                    branchRowID: apiResponse.data.branchRowID,\r\n                    staffRowID: apiResponse.data.staffRowID,\r\n                    greetName: apiResponse.data.loginName,\r\n                    customerRowID: apiResponse.data.customerRowID\r\n                }\r\n                // this._messageContext.send(FSEventType.LoginInfo, { data: user });\r\n                this._user = user;\r\n                this._user$.next(user);\r\n                return this._user;\r\n            }))\r\n    }\r\n\r\n    /**\r\n     * @description Remove server session as well as browser session based on session key\r\n     * @description If fake testing is true which means logout will works exactly same as live with dummy data\r\n     * @param endPoint string\r\n     * @returns Observable<IFSHttpResponse>\r\n     */\r\n    logout(fakeTesting: boolean = false) {\r\n        if (fakeTesting)\r\n            return this._fakeLogout();\r\n        else\r\n            return this._httpContext.get('secure/destroy/user/session').pipe(map(response => {\r\n                if (response) {\r\n                    this._destroyBrowserSession();\r\n                    this.redirect2Login();\r\n                }\r\n                return response;\r\n            }));\r\n    }\r\n\r\n    changePassword(password: string, staffID = '') {\r\n        const url = staffID ? 'lesssecure/account/change/password/' + staffID : 'secure/staff/change/password';\r\n        return this._httpContext.post(url, { password: password })\r\n            .pipe(map(response => {\r\n                return response;\r\n            }))\r\n    }\r\n\r\n    validateOTP(otp: string, staffID: string) {\r\n        return this._httpContext.post('lesssecure/account/OTP/check',\r\n            { otp: otp, staffId: staffID }\r\n        ).pipe(map(response => {\r\n            return response;\r\n        }));\r\n    }\r\n\r\n    /**\r\n     * @description If session key present in the query string then set it to local storage\r\n     * @description Otherwise redirect to login page\r\n     */\r\n    observeSession() {\r\n        const token = this._utilityContext.getQueryParameter(FS_APP_CONSTANT.URL_SESSION_KEY);\r\n        if (token)\r\n            sessionStorage.setItem(FS_APP_CONSTANT.SESSION_KEY, token);\r\n        else\r\n            this.redirect2Login();\r\n    }\r\n\r\n    redirect2Login() {\r\n        window.location.assign(environment.loginUI);\r\n    }\r\n\r\n    private _destroyBrowserSession() {\r\n        sessionStorage.removeItem(FS_APP_CONSTANT.SESSION_KEY);\r\n    }\r\n\r\n    private _fakeLogout() {\r\n        const data: IFSHttpResponse = { id: 1, data: '', message: 'Session has been destroyed' };\r\n        return of(data)\r\n            .pipe(delay(500))\r\n            .pipe(map(response => {\r\n                if (response) {\r\n                    this._destroyBrowserSession();\r\n                    this.redirect2Login();\r\n                }\r\n                return response;\r\n            }));\r\n    }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { of } from \"rxjs\";\r\n\r\ndeclare const moment: any;\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FSDateService {\r\n\r\n    constructor() { }\r\n\r\n    public formatDate(date: any, format: string = 'DD-MM-YYYY') {\r\n        return moment(date).add(1).format(format);\r\n    }\r\n\r\n    public todaysFormatedDate() {\r\n        return moment(new Date()).format(\"YYYY-MM-DD\");\r\n    }\r\n\r\n    public getDays() {\r\n        const days = [];\r\n        const dateStart = moment();\r\n        const dateEnd = moment().add(30, 'days');\r\n        while (dateEnd.diff(dateStart, 'days') >= 0) {\r\n            days.push(dateStart.format('D'));\r\n            dateStart.add(1, 'days');\r\n        }\r\n        return of(days);\r\n    };\r\n\r\n    /**\r\n     * date - YYYY-DD\r\n     * @param {*} date \r\n     */\r\n    public getDaysArrayInMonth(date: string = '') {\r\n        const dayCounts = [];\r\n        const daysCountInMonth = date ? moment(date, \"YYYY-MM\").daysInMonth() : moment().daysInMonth();\r\n        for (let i = 1; i <= daysCountInMonth; i++) {\r\n            const day = i.toString().length <= 1 ? `0${i}` : i;\r\n            dayCounts.push({\r\n                day: i,\r\n                fullDate: `${day}-${moment(new Date(date)).format('MM')}-${moment(new Date()).format('YYYY')}`,\r\n                status: ''\r\n            });\r\n        }\r\n        return dayCounts;\r\n    }\r\n\r\n    public nextMonth(num: number, format: string = 'MMMM') {\r\n        return moment().add(num, \"month\").startOf(\"month\").format(format);\r\n    };\r\n\r\n    /**\r\n     * \r\n     * @param format MMMM\r\n     * @returns \r\n     */\r\n    public currentMonth(format: string = 'MMMM') {\r\n        return moment().format(format);\r\n    };\r\n\r\n    /**\r\n     * \r\n     * @param format YYYY\r\n     * @returns \r\n     */\r\n    public currentYear(format: string = 'YYYY') {\r\n        return moment().format(format);\r\n    };\r\n\r\n    public prevMonth(num: number) {\r\n        return moment().subtract(num, \"month\").startOf(\"month\").format('MMMM');\r\n    }\r\n\r\n    /**\r\n   * @description y and m in number only \r\n   * @description 0 => JAN and 11 => DEC\r\n   * @param {number} y \r\n   * @param {number} m \r\n   * @returns number\r\n   */\r\n    public getEndDayOfMonth(y: number, m: number) {\r\n        return new Date(y, m + 1, 0).getDate();\r\n    };\r\n\r\n    public getYearFromMonth(monthNum: number) {\r\n        return moment().add(monthNum, \"month\").startOf(\"month\").format('YYYY');\r\n    };\r\n\r\n    public getLast7Day() {\r\n        return new Date(moment().day(-7));\r\n    }\r\n\r\n    /**\r\n     * Checking past or future date from current date\r\n     * @param date: string 'YYYY-MM-DD\r\n     */\r\n    isPastDate(date: string) {\r\n        return !moment(moment(new Date()).format('YYYY-MM-DD')).isBefore(date);\r\n    }\r\n\r\n    /**\r\n     * Check input date and current date is same or not\r\n     * @param date string 'YYYY-MM-DD\r\n     * @returns \r\n     */\r\n    isCurrentDate(date: string) {\r\n        return moment(moment(new Date()).format('YYYY-MM-DD')).isSame(date);\r\n    }\r\n\r\n    /**\r\n   * Check fromDate date and toDate date is same or not\r\n   * @param fromDate string 'YYYY-MM-DD \r\n   * @param  toDate string 'YYYY-MM-DD \r\n   * @returns \r\n   */\r\n    isSameDate(fromDate: string, toDate: string) {\r\n        return moment(fromDate).isSame(toDate);\r\n    }\r\n\r\n    /**\r\n     * Check input date is in current week or not\r\n     * @param date string 'YYYY-MM-DD\r\n     * @returns \r\n     */\r\n    isCurrentWeek(date: string) {\r\n        const dates: Array<string> = this.getCurrentWeek();\r\n        const dateFound = dates.find(d => d === date);\r\n        return dateFound ? true : false;\r\n    }\r\n\r\n    /**\r\n     * Check dateNeedsTobeCheck is in given range or not\r\n     * @param startDate string\r\n     * @param endDate string\r\n     * @returns boolean\r\n     */\r\n    isInDateRange(startDate: string, endDate: string, dateNeedsTobeCheck: string) {\r\n        const dates = this.getDateListFromRange(startDate, endDate);\r\n    }\r\n\r\n    getDateListFromRange(startDate: string, endDate: string): Array<string> {\r\n        var dates = [];\r\n\r\n        dates.push(startDate);\r\n\r\n        if (startDate === endDate) {\r\n            return dates;\r\n        }\r\n\r\n        var currDate = moment(startDate).startOf('day');\r\n        var lastDate = moment(endDate).startOf('day');\r\n\r\n        while (currDate.add(1, 'days').diff(lastDate) < 0) {\r\n            dates.push(currDate.clone().format('YYYY-MM-DD'));\r\n        }\r\n\r\n        dates.push(endDate);\r\n\r\n        return dates;\r\n    }\r\n\r\n    getCurrentWeek() {\r\n        const currentDate = moment();\r\n\r\n        const weekStart = currentDate.clone().startOf('isoWeek');\r\n        const weekEnd = currentDate.clone().endOf('isoWeek');\r\n\r\n        const days: Array<string> = [];\r\n\r\n        for (let i = 0; i <= 6; i++) {\r\n            days.push(moment(weekStart).add(i, 'days').format('YYYY-MM-DD'));\r\n        }\r\n        console.log(days);\r\n\r\n        return days;\r\n    }\r\n\r\n    /**\r\n     * \r\n     * @param date1 : date\r\n     * @param date2 : date\r\n     * @returns dateDifference : int`\r\n     */\r\n    getDateDiff(date1: any, date2: any) {\r\n        const dateDiff = new Date(date2 - date1).getFullYear() - 1970;\r\n        return dateDiff;\r\n    }\r\n\r\n    addYear(date: any, addingYear: number) {\r\n        return this.formatDate(moment(new Date(date)).add(addingYear, 'years'), 'YYYY-MM-DD');\r\n    }\r\n\r\n\r\n    intervalRef: any = null;\r\n    time: string = \"\";\r\n    timer(totalHourInMS: any) {\r\n\r\n        this._clearInterval(this.intervalRef);\r\n\r\n        let duration = moment.duration(totalHourInMS, 'milliseconds');\r\n        const interval = 1000;\r\n\r\n        this.intervalRef = setInterval(() => {\r\n            duration = moment.duration(duration + interval, 'milliseconds');\r\n            this.time = duration.hours() + \" : \" + duration.minutes() + \" : \" + duration.seconds()\r\n        }, interval);\r\n\r\n\r\n    }\r\n\r\n    private _clearInterval(ref: any) {\r\n        clearInterval(ref);\r\n    }\r\n\r\n\r\n    getDateTimeDiffInMili(startTime: any, endTime: any) {\r\n        const diff = moment.duration(moment(endTime).diff(moment(startTime)))._milliseconds;\r\n        return diff;\r\n    }\r\n\r\n\r\n}","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class FSLibService {\r\n\r\n    constructor() {}\r\n\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from \"@angular/router\";\r\nimport { IFSUser, FSAuthService, environment } from \"../../public-api\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class FSRouteResolverService implements Resolve<IFSUser> {\r\n\r\n    constructor(private _authContext: FSAuthService) {}\r\n\r\n    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): IFSUser | Observable<IFSUser> | Promise<IFSUser> {\r\n        return environment.production ? this._authContext.user$: of({});\r\n    }\r\n\r\n}","import { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Injectable, ErrorHandler, NgZone } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class FSGlobalErrorHandler implements ErrorHandler {\r\n  constructor(\r\n    // private errorDialogService: ErrorDialogService,\r\n    private zone: NgZone\r\n  ) {}\r\n\r\n  handleError(error: any) {\r\n    // Check if it's an error from an HTTP response\r\n    if (!(error instanceof HttpErrorResponse)) {\r\n      error = error.rejection; // get the error object\r\n    }\r\n    // this.zone.run(() =>\r\n    //   this.errorDialogService.openDialog(\r\n    //     error?.message || 'Undefined client error',\r\n    //     error?.status\r\n    //   )\r\n    // );\r\n\r\n    console.error('Error from global error handler', error);\r\n  }\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { ErrorHandler, ModuleWithProviders, NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { FS_LIB_CONFIG, IFSConfig } from \"./models\";\r\nimport { FSAuthService, FSDateService, FSGlobalErrorHandler, FSHttpHelpService, FSLibService, FSMessageService, FSUtilityService } from \"./services\";\r\n\r\n@NgModule({\r\n    declarations: [\r\n    ],\r\n    imports: [HttpClientModule, FormsModule, CommonModule],\r\n    exports: [\r\n        HttpClientModule,\r\n        FormsModule,\r\n        CommonModule,\r\n    ],\r\n    providers: [\r\n        FSAuthService,\r\n        FSDateService,\r\n        FSHttpHelpService,\r\n        FSMessageService,\r\n        FSUtilityService,\r\n        FSLibService,\r\n        // {\r\n        //     provide: ErrorHandler,\r\n        //     useClass: FSGlobalErrorHandler\r\n        // }\r\n    ]\r\n})\r\nexport class FinserveLibModule {\r\n    static forRoot(fsConfig?: IFSConfig): ModuleWithProviders<FinserveLibModule> {\r\n        return {\r\n            ngModule: FinserveLibModule,\r\n            providers: [\r\n                {\r\n                    provide: FS_LIB_CONFIG,\r\n                    useValue: fsConfig\r\n                }\r\n            ]\r\n        }\r\n    }\r\n}","/*\r\n * Public API Surface of finserve-lib\r\n */\r\n\r\nexport * from './lib/environments/environment';\r\n\r\nexport * from './lib/services';\r\n\r\nexport * from './lib/models';\r\n\r\nexport * from './lib/finserve.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FSAuthService"],"mappings":"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"}