{"version":3,"file":"app-fb5330b7.110c874f23e8e1cb.bundle.js","mappings":"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","sources":["webpack://client-app/./src/app/services/project-log-data-service.ts","webpack://client-app/./src/app/services/project-token-service.ts","webpack://client-app/./src/app/services/qto-export-service.ts"],"sourcesContent":["import { FacilityManager, Location, Member, ProjectDto, ProjectInvitation } from \"app/models/project-dto\";\r\nimport { AppContextService } from \"./app-context-service\";\r\nimport { autoinject } from \"aurelia-framework\";\r\nimport { ApiClient } from \"./api-client\";\r\nimport { HttpResponseMessage } from \"aurelia-http-client\";\r\nimport { RequestMethod } from \"./RequestMethod\";\r\n\r\n@autoinject\r\nexport class ProjectLogDataService {\r\n\t\r\n private orgToProjectMap: Map | undefined;\r\n public projectLogList: ProjectLogInfoDto[] = []\r\n\r\n constructor(private appContext: AppContextService, private apiClient: ApiClient) { }\r\n \r\n createOrgToProjectMap(): void {\r\n let map: Map = new Map();\r\n this.appContext.projects.forEach((project: ProjectDto) => {\r\n let listOfProjects: ProjectDto[] | undefined = map.get(project.ownerCompanyId);\r\n if (listOfProjects != undefined) {\r\n listOfProjects.push(project);\r\n } else {\r\n map.set(project.ownerCompanyId, [project]);\r\n }\r\n });\r\n this.orgToProjectMap = map;\r\n }\r\n\r\n async fetchProjectInfo(): Promise {\r\n if (this.orgToProjectMap) {\r\n this.projectLogList = [] //Resetting list.\r\n let orgIdList = Array.from(this.orgToProjectMap?.keys());\r\n for (let orgId of orgIdList) {\r\n await this.fetchProjectInfoByOrg(orgId);\r\n }\r\n return this.createFullProjectDataList();\r\n }\r\n return this.appContext.projects; //If orgToProjectMap is empty we just return the original list.\r\n\r\n }\r\n\r\n private createFullProjectDataList(): FullProjectInfo[] {\r\n return this.appContext.projects.map(p1 => {\r\n let matchingIdProject = this.projectLogList.find(p2 => p2.id == p1.id);\r\n return new FullProjectInfo(p1, matchingIdProject)\r\n }); \r\n }\r\n\r\n private async fetchProjectInfoByOrg(orgId: string): Promise {\r\n let projectIds = this.orgToProjectMap?.get(orgId)?.map(project => project.id);\r\n\t\tconsole.log('fetchProjectInfoByOrg, org:', orgId, 'projectIDs:', projectIds);\r\n if (projectIds == undefined || projectIds.length == 0) { \r\n\t\t\tconsole.log('fetchProjectInfoByOrg - no projectIds', projectIds);\r\n\t\t\treturn; \r\n\t\t}\r\n\r\n\t\t// This one is supposed to have org-scope - \r\n\t\t// AuthValues.Claims.ScopeAccess.Org\r\n\t\t// In particular, it is the org-scope, which eventually results in SetSystemPermissionsByOrgId,\r\n\t\t// which is what provides us access to org-scope data-sources.\r\n\t\tlet orgApiClient:RequestMethod = this.apiClient.orgById(orgId);\r\n\r\n\t\tlet result: HttpResponseMessage = \r\n\t\tawait orgApiClient.postJson(\"Project/GetLogFromOrgProjects\", projectIds)\r\n\t\t.handleErrorWithErrorService( \r\n\t\t\tasync () => {console.warn(`An issue occured fetching data from org [${orgId}]`)}\r\n\t )\r\n\t\t.responseNoLoadingIcon();\r\n\r\n\t\tif (result.statusCode == 200) {\r\n\t\t\tthis.projectLogList.push(...result.content);\r\n\t\t}\r\n }\r\n\r\n public async fetchProjectInfoByProjectId(projectDto: ProjectDto): Promise {\r\n let result: HttpResponseMessage = \r\n\t\t await this.apiClient.orgById(projectDto.ownerCompanyId).postJson(\"Project/GetLogByProjectId\", projectDto.id)\r\n\t\t .handleErrorWithErrorService( async () => {console.warn(`An issue occured fetching data from from project with id [${projectDto.id}]`)}).responseNoLoadingIcon();\r\n if (result.statusCode == 200) {\r\n return new FullProjectInfo(projectDto,result.content);\r\n }\r\n return undefined;\r\n }\r\n}\r\n\r\nexport interface ProjectLogInfoDto {\r\n id?: string,\r\n instancesInTotal?: number,\r\n instancesInSync?: number,\r\n typesInTotal?: number,\r\n typesInSync?: number,\r\n syncDate?: string,\r\n with3d?: boolean,\r\n revitVersion?: number,\r\n}\r\n\r\nexport class FullProjectInfo implements ProjectLogInfoDto, ProjectDto {\r\n id: string;\r\n name: string;\r\n region: string;\r\n number?: string | undefined;\r\n typeId?: string | undefined;\r\n classificationId: string;\r\n whitelistId: string;\r\n grossArea?: string | undefined;\r\n imageFileId?: string | undefined;\r\n ownerCompanyId: string;\r\n ownerCompanyName: string;\r\n location?: Location | undefined;\r\n facilityManager?: FacilityManager | undefined;\r\n members: Member[];\r\n projectInvitations: ProjectInvitation[];\r\n selected: boolean;\r\n created_UTC: Date;\r\n instancesInTotal?: number | undefined;\r\n instancesInSync?: number | undefined;\r\n typesInTotal?: number | undefined;\r\n typesInSync?: number | undefined;\r\n syncDate?: string | undefined;\r\n with3d?: boolean | undefined;\r\n revitVersion?: number | undefined;\r\n constructor(p1: ProjectDto, p2?: ProjectLogInfoDto) {\r\n this.id = p1.id,\r\n this.instancesInTotal = p2?.instancesInTotal,\r\n this.instancesInSync = p2?.instancesInSync,\r\n this.typesInTotal = p2?.typesInTotal,\r\n this.typesInSync = p2?.typesInSync,\r\n this.syncDate = p2?.syncDate,\r\n this.with3d = p2?.with3d,\r\n this.revitVersion = p2?.revitVersion,\r\n this.name = p1.name,\r\n this.region = p1.region,\r\n this.number = p1.number,\r\n this.typeId = p1.typeId,\r\n this.classificationId = p1.classificationId,\r\n this.whitelistId = p1.whitelistId,\r\n this.grossArea = p1.grossArea,\r\n this.imageFileId = p1.imageFileId,\r\n this.ownerCompanyId = p1.ownerCompanyId,\r\n this.ownerCompanyName = p1.ownerCompanyName,\r\n this.location = p1.location,\r\n this.facilityManager = p1.facilityManager,\r\n this.members = p1.members,\r\n this.projectInvitations = p1.projectInvitations,\r\n this.selected = p1.selected,\r\n this.created_UTC = p1.created_UTC\r\n }\r\n\r\n}\r\n","import { ProjectRole } from \"app/models/project-role\";\r\nimport { ApiClient } from \"./api-client\";\r\nimport { autoinject } from 'aurelia-framework';\r\nimport jwt_decode from \"jwt-decode\";\r\nimport { OrgRole } from \"app/models/org-role\";\r\nimport { ProjectTokenInfo } from \"app/models/project-token-info\";\r\nimport {ErrorService} from \"./error-service\";\r\n\r\n@autoinject\r\nexport class ProjectTokenService {\r\n constructor() {}\r\n\r\n public doesTokenMatchLog(projectId: string, token: string): void {\r\n\t\tlet decoded:any = jwt_decode(token);\r\n\t\tconsole.log('doesTokenMatchLog, decoded:', decoded);\r\n if (decoded.ProjectId == projectId) {\r\n console.log(\"doesTokenMatchLog, token does match with selected projectId\", projectId, token); // TMI, we don't need info for 'happy path'.\r\n } else {\r\n console.warn(\"doesTokenMatchLog, token does NOT match with selected projectId\");\r\n }\r\n\t}\r\n\r\n\tasync anyFreshPrjToken(projectId: string | undefined, apiClient: ApiClient):Promise {\r\n\t\t// (needed, IF the projectId we want, is NOT what the cached-token holds.)\r\n\t\tconst updateIfNeeded = await this.updatePrjTokenIfNeeded(projectId, apiClient);\r\n\t\treturn updateIfNeeded ? this.getPrjTokenInfo() : null;\r\n\t}\r\n\r\n public async updatePrjTokenIfNeeded(projectId: string | undefined, apiClient: ApiClient): Promise { // UB: .. many\r\n if (projectId == undefined) {\r\n console.log(\"pts, updatePrjTokenIfNeeded, removing prj_access_token, no project-set\");\r\n sessionStorage.removeItem('prj_access_token');\r\n return true;\r\n }\r\n\r\n let token: string | null = sessionStorage.getItem('prj_access_token');\r\n if (token != null) { \r\n let decoded:any = jwt_decode(token);\r\n if (decoded.ProjectId == projectId) {\r\n\t\t\t\tconsole.warn(\"updatePrjTokenIfNeeded: project-id already match with prj-token\",projectId); // TMI, we don't need info for \r\n\t\t\t\treturn false;\r\n\t\t\t} else {\r\n\t\t\t\tconsole.warn(`updatePrjTokenIfNeeded: prj-token ${decoded.ProjectId} did not match intended prj:${projectId}, so we make a new one.`); \r\n\t\t\t}\r\n } else {\r\n console.warn(\"(no cached token was found)\"); \r\n }\r\n return await this.createNewProjectToken(projectId, apiClient);//updatePrjTokenIfNeeded\r\n }\r\n \r\n public async createNewProjectToken(projectId: string, apiClient: ApiClient): Promise { // UB2: updatePrjTokenIfNeeded and createAndUpdatePrjToken.\r\n let justUseDefaultApiUrl = \"\";\r\n\t\tlet result = await apiClient.custom(justUseDefaultApiUrl).get(`/Authentication/RefreshTokenWithProject/${projectId}`) // in createNewProjectToken\r\n\t\t\t.handleErrorWithErrorService(async(service) => console.log(\"createNewProjectToken: Error when getting token\")).response();\r\n\t\t\r\n\t\tif (result.statusCode === 401) {\t// Cannot create token for project that the users is not a member of\r\n\t\t\tconsole.log(\"createNewProjectToken: Error when getting token: 401 Unauthorized\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t\r\n\t\tsessionStorage.setItem('prj_access_token', result.content);\r\n console.log(\"createNewProjectToken: updated prj-token \" , projectId, result.content);\r\n return result.statusCode == 200;\r\n }\r\n\r\n public getPrjTokenInfo(): ProjectTokenInfo {\r\n let token: string | null = sessionStorage.getItem('prj_access_token');\r\n if (token == null) { return {prjRole: ProjectRole.Unknown,prjId: \"00000000-0000-0000-0000-000000000000\", orgRole: OrgRole.Unknown, orgId: \"00000000-0000-0000-0000-000000000000\"} }\r\n let decoded:any = jwt_decode(token);\r\n let projectRoleString: string | undefined = decoded.ProjectRole;\r\n let orgRoleString: string | undefined = decoded.OrgRole;\r\n let projectRole: ProjectRole | undefined = ProjectRole[projectRoleString];\r\n let orgRole: OrgRole | undefined = OrgRole[orgRoleString];\r\n return {\r\n prjRole: projectRole != undefined ? projectRole : ProjectRole.Unknown, \r\n prjId: decoded.ProjectId ? decoded.ProjectId : \"00000000-0000-0000-0000-000000000000\",\r\n orgRole: orgRole != undefined ? orgRole : OrgRole.Unknown,\r\n orgId: decoded.OrgId ? decoded.OrgId : \"00000000-0000-0000-0000-000000000000\"\r\n };\r\n }\r\n}\r\n","import { SourceMediator } from \"app/project/quantity-takeoff/source-mediator\";\r\nimport { I18N } from \"aurelia-i18n\";\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { AppContextService } from \"./app-context-service\";\r\nimport { ApiClient } from \"./api-client\";\r\nimport { EventAggregator } from \"aurelia-event-aggregator\";\r\n\r\n\r\n@autoinject\r\nexport class QtoExportService {\r\n constructor(private api: ApiClient, public sMediator: SourceMediator, \r\n private i18n: I18N, private appContext: AppContextService,\r\n private events: EventAggregator) {}\r\n\r\n async exportToExcel(): Promise {\r\n\t\t// (Dumps OUR pivot directly to Excel.)\r\n this.events.publish('is-loading', true);\r\n\t\tconsole.log('directToExcel');\r\n let quantityFilterName = \"\";\r\n if (this.sMediator.selectedQF) {\r\n try {\r\n quantityFilterName = this.sMediator.selectedQF.name; \r\n await this.api.project(this.appContext.projectId).get(`QuantityFilter/RenderOwnPivotXL/${this.sMediator.selectedQF.id}`)\r\n .handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_Generic'))\r\n .downloadFile(`${quantityFilterName}.xlsx`);\r\n } catch (e) {\r\n console.log(\"Download Error \" , e);\r\n } finally {\r\n this.events.publish('is-loading', false);\r\n }\r\n }\r\n\t}\r\n\r\n async exportToExcelPivot(): Promise {\r\n\t\t// (Uses Excel's own Pivot.)\r\n this.events.publish('is-loading', true);\r\n\t\tif (this.sMediator.selectedQF) {\r\n let quantityFilterName = this.sMediator.selectedQF.name; \r\n try {\r\n await this.api.project(this.appContext.projectId).get(`QuantityFilter/RenderQuantityPivot/${this.sMediator.selectedQF.id}`)\r\n .handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_Generic'))\r\n .downloadFile(`${quantityFilterName}.xlsx`);\r\n } catch (e) {\r\n console.log(\"Download Error \" , e);\r\n } finally {\r\n this.events.publish('is-loading', false);\r\n }\r\n }\r\n\t}\r\n}"],"names":["ProjectLogDataService","constructor","appContext","apiClient","projectLogList","createOrgToProjectMap","map","Map","this","projects","forEach","project","listOfProjects","get","ownerCompanyId","undefined","push","set","orgToProjectMap","fetchProjectInfo","orgIdList","Array","from","keys","orgId","fetchProjectInfoByOrg","createFullProjectDataList","p1","matchingIdProject","find","p2","id","FullProjectInfo","projectIds","console","log","length","orgApiClient","orgById","result","postJson","handleErrorWithErrorService","async","warn","responseNoLoadingIcon","statusCode","content","fetchProjectInfoByProjectId","projectDto","autoinject","instancesInTotal","instancesInSync","typesInTotal","typesInSync","syncDate","with3d","revitVersion","name","region","number","typeId","classificationId","whitelistId","grossArea","imageFileId","ownerCompanyName","location","facilityManager","members","projectInvitations","selected","created_UTC","ProjectTokenService","doesTokenMatchLog","projectId","token","decoded","ProjectId","anyFreshPrjToken","updatePrjTokenIfNeeded","getPrjTokenInfo","sessionStorage","removeItem","getItem","createNewProjectToken","custom","service","response","setItem","prjRole","Unknown","prjId","orgRole","projectRoleString","ProjectRole","orgRoleString","OrgRole","projectRole","OrgId","QtoExportService","api","sMediator","i18n","events","exportToExcel","publish","quantityFilterName","selectedQF","handleError","tr","downloadFile","e","exportToExcelPivot","I18N","EventAggregator"],"sourceRoot":""}