{ "version": 3, "sources": ["src/app/worksites/worksite/details/basicinfo/worksite-basicinfo.service.ts"], "sourcesContent": ["import { Injectable, Output, EventEmitter, Directive } from '@angular/core';\r\nimport { Observable, Subscription, of, BehaviorSubject } from 'rxjs';\r\nimport { AppConfig } from '../../../../app.config';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { catchError, pluck } from 'rxjs/operators';\r\nimport { NavigationLink } from '../../models/worksite.model';\r\n\r\n/**\r\n * Worksite object returned by the API\r\n */\r\nexport class WorksiteBasicInfo {\r\n Id: string;\r\n IwmId: number;\r\n Identifier: string;\r\n Name: string;\r\n Description: string;\r\n PlanId: string;\r\n OwnerCompanyId: string;\r\n OwnerCompanyName: string;\r\n Archived: boolean;\r\n UnitsLocked: boolean;\r\n UnitLockStateChangerPerson: string;\r\n UnitLockStateChangerPersonName: string;\r\n UnitLockStateChanged: string;\r\n IncludedInTaxReporting: boolean;\r\n PublishToEndCustomer: boolean;\r\n BudgetedValue?: number;\r\n BusinessDomain: string;\r\n Subtype: string;\r\n WorksiteStatus: string;\r\n Priority: string;\r\n PlannedStarted: string;\r\n ActualStarted: string;\r\n PlannedWorkCompleted: string;\r\n ActualWorkCompleted: string;\r\n WorksiteNumber: string;\r\n LastModifiedTime?: string;\r\n Created?: string;\r\n LastModifierPersonFullName: string;\r\n MassApprovalChanged: string;\r\n MassApprovalChangerPerson: string;\r\n MassApprovalChangerPersonName: string;\r\n MassApprovalDone: boolean;\r\n}\r\n\r\n/**\r\n * Unit lock state\r\n */\r\nexport class UnitLockState {\r\n public Id: string;\r\n public WorksiteId: string;\r\n public CompanyId: string;\r\n public Locked: boolean;\r\n public ChangerPerson: string;\r\n public ChangerPersonName: string;\r\n public Changed: string;\r\n}\r\n\r\n@Directive()\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WorksiteBasicinfoService {\r\n\r\n private urlIwmBackend: string = this.config.backendIwmUri + 'WorksiteApi/';\r\n private urlBasicinfoSearch: string = 'Worksites?$filter=IwmId eq {0}';\r\n private urlBasicinfo: string = 'Worksites({0})';\r\n private urlPlan: string = this.config.backendIwmUri + 'PlanApi/';\r\n private urlPortalBackend: string = this.config.backendPortalUri + 'WebAPI/api/';\r\n\r\n\r\n public basicInfochanged$: BehaviorSubject = new BehaviorSubject(false);\r\n\r\n public streamSubscription: Subscription = new Subscription();\r\n\r\n // Current worksite basic information object as subscribable stream\r\n // public worksiteBasicInformation$: BehaviorSubject = new BehaviorSubject(new WorksiteBasicInfo());\r\n\r\n // Define new worksiteChanged custom event\r\n @Output()\r\n worksiteChanged: EventEmitter = new EventEmitter();\r\n\r\n\r\n constructor(private http: HttpClient, private config: AppConfig) { }\r\n\r\n /**\r\n * Subscribe to get the latest worksite basic information data\r\n * @param observable Observable TBI\r\n */\r\n /* private subscribeToWorksiteBasicInformation(observable: Observable) {\r\n this.streamSubscription.unsubscribe();\r\n this.streamSubscription = observable.subscribe((res) => {\r\n this.worksiteBasicInformation$.next(res)\r\n });\r\n }*/\r\n\r\n\r\n /**\r\n * Get worksite details by GUID\r\n * @param {string} id GUID worksite identifier\r\n * @returns {Observable}\r\n */\r\n public getWorksiteBasicinfo(id: string, idGuard: boolean = false): Observable {\r\n const url = this.urlIwmBackend + this.urlBasicinfo.replace('{0}', id);\r\n const worksite = this.fetchData(url);\r\n // if (!idGuard) { this.subscribeToWorksiteBasicInformation(worksite); }\r\n return worksite;\r\n }\r\n\r\n /**\r\n * Get worksite details by iwmId\r\n * @param {number} iwmId numeric worksite identifier\r\n * @returns {Observable}\r\n */\r\n public getWorksiteBasicInfoById(iwmId: number): Observable {\r\n const url = this.urlIwmBackend + this.urlBasicinfoSearch.replace('{0}', iwmId.toString());\r\n const data: Observable = >this.fetchData(url);\r\n return data;\r\n }\r\n\r\n /**\r\n * Update worksite\r\n * @param {string} worksiteId Id of the worksite\r\n * @param {WorksiteBasicInfo} worksiteBasicInfo WorksiteBasicInfo object\r\n * @returns {Observable}\r\n */\r\n public update(worksiteId: string, worksiteBasicInfo: WorksiteBasicInfo): Observable {\r\n const url = this.urlIwmBackend + this.urlBasicinfo.replace('{0}', worksiteId);\r\n return this.http.patch(url, worksiteBasicInfo);\r\n }\r\n\r\n public getBudgetHandlers(): Observable {\r\n const url = this.config.backendIwmUri + 'Api/Tasks/GetBudgetHandlers';\r\n return this.fetchData(url);\r\n }\r\n\r\n /**\r\n * Update worksite\r\n * @param {string} worksiteId Id of the worksite\r\n * @param {WorksiteBasicInfo} worksiteBasicInfo WorksiteBasicInfo object\r\n * @returns {Observable}\r\n */\r\n public updateWorksiteNumber(worksiteId: string, value: string): Observable {\r\n const url = this.urlIwmBackend + this.urlBasicinfo.replace('{0}', worksiteId) + '/Default.SetWorksiteNumber';\r\n let body = { Value: value };\r\n return this.http.post(url, body);\r\n }\r\n\r\n /**\r\n * Archive worksite (and catch possible error)\r\n * @param {string} worksiteId WorksiteId\r\n */\r\n public archiveWorksite(worksiteId: string): Observable {\r\n const url = this.urlIwmBackend + this.urlBasicinfo.replace('{0}', worksiteId) + '/Default.Archive';\r\n const resp = this.http.post(url, {})\r\n .pipe(catchError(e => of(e)))\r\n return resp;\r\n }\r\n\r\n /**\r\n * Batch archive tasks\r\n * @param {Array} tasks array of taskIds\r\n */\r\n public batchArchiveWorksites(worksites: Array): Observable> {\r\n const url = this.urlIwmBackend + 'Worksites/Default.BatchArchive';\r\n return this.http.post>(url, { Worksites: worksites })\r\n .pipe(pluck('value') as any);\r\n }\r\n\r\n /**\r\n * Restore worksite (and catch possible error)\r\n * @param {string} worksiteId WorksiteId\r\n */\r\n public restoreWorksite(worksiteId: string): Observable {\r\n const url = this.urlIwmBackend + this.urlBasicinfo.replace('{0}', worksiteId) + '/Default.Restore';\r\n const resp = this.http.post(url, {})\r\n .pipe(catchError(e => of(e)));\r\n return resp;\r\n }\r\n\r\n /**\r\n * Batch restore tasks from archive\r\n * @param {Array} tasks array of taskIds\r\n */\r\n public batchRestoreWorksites(worksites: Array): Observable> {\r\n const url = this.urlIwmBackend + 'Worksites/Default.BatchRestore';\r\n return this.http.post>(url, { Worksites: worksites })\r\n .pipe(pluck('value') as any);\r\n }\r\n\r\n public handlePlanWorksiteRelation(worksiteId: string, planId: string): Observable {\r\n let url = this.urlIwmBackend + this.urlBasicinfo.replace('{0}', worksiteId) + '/Default.HandlePlanWorksiteRelation';\r\n let body = { planId: planId };\r\n return this.http.post(url, body);\r\n }\r\n\r\n\r\n /**\r\n * Updates budget unit lock state.\r\n *\r\n * @param {string} worksiteId worksiteId\r\n * @param {boolean} taskBasicInfo Flag indicating if budget units should be locked or not\r\n * @returns {Observable}\r\n */\r\n public updateBudgetUnitLock(worksiteId: string, locked: boolean): Observable {\r\n const url = this.urlIwmBackend + this.urlBasicinfo.replace('{0}', worksiteId) + '/Default.SetUnitLockState';\r\n\r\n return this.http.post(url, {\r\n Locked: locked\r\n });\r\n }\r\n public updateTasksBudgetUnitLock(worksiteId: string, locked: boolean): Observable {\r\n const url = this.urlIwmBackend + this.urlBasicinfo.replace('{0}', worksiteId) + '/ApproveWorksiteAndTasksBudgets';\r\n return this.http.post(url, {\r\n Locked: locked\r\n });\r\n }\r\n\r\n /**\r\n * Adds worksite to tax reporting\r\n * @param {string} worksiteId WorksiteId\r\n */\r\n public addToReporting(worksiteId: string): Observable {\r\n const url = this.urlIwmBackend + this.urlBasicinfo.replace('{0}', worksiteId) + '/Default.IncludeInTaxReporting';\r\n const resp = this.http.post(url, {})\r\n .pipe(catchError(e => of(e)))\r\n return resp;\r\n }\r\n\r\n /**\r\n * Removes worksite from tax reporting\r\n * @param {string} worksiteId WorksiteId\r\n */\r\n public removeFromReporting(worksiteId: string): Observable {\r\n const url = this.urlIwmBackend + this.urlBasicinfo.replace('{0}', worksiteId) + '/Default.RemoveFromTaxReporting';\r\n const resp = this.http.post(url, {})\r\n .pipe(catchError(e => of(e)))\r\n return resp;\r\n }\r\n\r\n /**\r\n * Publish worksite to end customer\r\n * @param {string} worksiteId TaskId\r\n */\r\n public publishToEndCustomer(worksiteId: string): Observable {\r\n const url = this.urlIwmBackend + this.urlBasicinfo.replace('{0}', worksiteId) + '/Default.PublishWorksiteToEndCustomer';\r\n const resp = this.http.post(url, {})\r\n .pipe(catchError(e => of(e)))\r\n return resp;\r\n }\r\n\r\n /**\r\n * Unpublish worksite from end customer\r\n * @param {string} worksiteId TaskId\r\n */\r\n public unpublishWorksiteFromEndCustomer(worksiteId: string): Observable {\r\n const url = this.urlIwmBackend + this.urlBasicinfo.replace('{0}', worksiteId) + '/Default.UnpublishWorksiteFromEndCustomer';\r\n const resp = this.http.post(url, {})\r\n .pipe(catchError(e => of(e)))\r\n return resp;\r\n }\r\n\r\n\r\n public queryWorksites(query: string): Observable {\r\n this.config.backendIwmUri + 'Api/'\r\n const url = `${this.config.backendIwmUri}WorksiteApi/Worksites?` + query;\r\n return this.http\r\n .get(url);\r\n }\r\n\r\n\r\n /**\r\n * Get navigation link name for Plan\r\n * @param id\r\n * @returns\r\n */\r\n public GetNavigationLink(id: string): Observable {\r\n const url = `${this.urlPlan}/Plans(${id})?$select=IwmId,Identifier,Name`;\r\n return this.http.get(url)\r\n }\r\n\r\n\r\n /**\r\n * Fetch data from oData endpoints\r\n * @param {string} url Resource url\r\n * @returns {Observable}\r\n */\r\n private fetchData(url: string): Observable {\r\n return this.http.get(url);\r\n }\r\n\r\n}\r\n"], "mappings": "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", "names": ["init_core", "init_esm", "init_operators", "WorksiteBasicInfo", "WorksiteBasicinfoService", "constructor", "http", "config", "urlIwmBackend", "backendIwmUri", "urlBasicinfoSearch", "urlBasicinfo", "urlPlan", "urlPortalBackend", "backendPortalUri", "basicInfochanged$", "BehaviorSubject", "streamSubscription", "Subscription", "worksiteChanged", "EventEmitter", "getWorksiteBasicinfo", "id", "idGuard", "url", "replace", "fetchData", "getWorksiteBasicInfoById", "iwmId", "toString", "update", "worksiteId", "worksiteBasicInfo", "patch", "getBudgetHandlers", "updateWorksiteNumber", "value", "body", "Value", "post", "archiveWorksite", "pipe", "catchError", "e", "of", "batchArchiveWorksites", "worksites", "Worksites", "pluck", "restoreWorksite", "batchRestoreWorksites", "handlePlanWorksiteRelation", "planId", "updateBudgetUnitLock", "locked", "Locked", "updateTasksBudgetUnitLock", "addToReporting", "removeFromReporting", "publishToEndCustomer", "unpublishWorksiteFromEndCustomer", "queryWorksites", "query", "get", "GetNavigationLink", "\u0275\u0275directiveInject", "HttpClient", "AppConfig", "outputs", "factory", "\u0275fac", "providedIn"] }