{"version":3,"sources":["./node_modules/moment/locale sync ^\\.\\/.*$","./src/$_lazy_route_resource lazy namespace object","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/components/admin/admin-nav.component.ts","./src/app/components/admin/admin-nav.component.html","./src/app/components/admin/apt-caws.component.ts","./src/app/components/admin/apt-caws.component.html","./src/app/components/admin/business-lines.component.ts","./src/app/components/admin/business-lines.component.html","./src/app/components/admin/clients.component.ts","./src/app/components/admin/clients.component.html","./src/app/components/admin/impersonate.component.ts","./src/app/components/admin/impersonate.component.html","./src/app/components/admin/industries.component.ts","./src/app/components/admin/industries.component.html","./src/app/components/admin/inspection-team-roles.component.ts","./src/app/components/admin/inspection-team-roles.component.html","./src/app/components/admin/offices.component.ts","./src/app/components/admin/offices.component.html","./src/app/components/admin/projects.component.ts","./src/app/components/admin/projects.component.html","./src/app/components/admin/security-roles.component.ts","./src/app/components/admin/security-roles.component.html","./src/app/components/admin/specialty-reviewer-types.component.ts","./src/app/components/admin/specialty-reviewer-types.component.html","./src/app/components/admin/standard-question-options.component.ts","./src/app/components/admin/standard-question-options.component.html","./src/app/components/admin/tags.component.ts","./src/app/components/admin/tags.component.html","./src/app/components/engagement-management/data-grids/engagements.component.ts","./src/app/components/engagement-management/data-grids/engagements.component.html","./src/app/components/engagement-management/forms/engagement-editor.component.ts","./src/app/components/engagement-management/forms/engagement-editor.component.html","./src/app/components/engagement-management/tree-viewers/engagement-tree-node-viewer.component.ts","./src/app/components/engagement-management/tree-viewers/engagement-tree-node-viewer.component.html","./src/app/components/engagement-management/tree-viewers/tree-node-viewer.component.ts","./src/app/components/engagement-management/tree-viewers/tree-node-viewer.component.html","./src/app/components/error/not-active.component.ts","./src/app/components/error/not-active.component.html","./src/app/components/home/data-grids/home.component.ts","./src/app/components/home/data-grids/home.component.html","./src/app/components/home/forms/inspection-tree-node-viewer.component.ts","./src/app/components/home/forms/inspection-tree-node-viewer.component.html","./src/app/components/home/forms/inspection.component.ts","./src/app/components/home/forms/inspection.component.html","./src/app/components/home/home-pager.component.ts","./src/app/components/home/home-pager.component.html","./src/app/components/nav-menu/nav-menu.component.ts","./src/app/components/nav-menu/nav-menu.component.html","./src/app/components/profile-management/data-grids/inspection-profiles.component.ts","./src/app/components/profile-management/data-grids/inspection-profiles.component.html","./src/app/components/profile-management/data-grids/profile-questions.component.ts","./src/app/components/profile-management/data-grids/profile-questions.component.html","./src/app/components/profile-management/data-grids/profile-sections.component.ts","./src/app/components/profile-management/data-grids/profile-sections.component.html","./src/app/components/profile-management/forms/inspection-dragdrop/inspection-dragdrop.component.ts","./src/app/components/profile-management/forms/inspection-dragdrop/inspection-dragdrop.component.html","./src/app/components/profile-management/forms/inspection-profile-editor.component.ts","./src/app/components/profile-management/forms/inspection-profile-editor.component.html","./src/app/components/profile-management/forms/question-editor.component.ts","./src/app/components/profile-management/forms/question-editor.component.html","./src/app/components/profile-management/forms/tree-node-editor.component.ts","./src/app/components/profile-management/forms/tree-node-editor.component.html","./src/app/components/profile-management/profile-nav.component.ts","./src/app/components/reports/export-questions-and-responses.component.ts","./src/app/components/reports/export-questions-and-responses.component.html","./src/app/components/reports/reports-nav.component.ts","./src/app/components/reports/reports-nav.component.html","./src/app/components/session-timeout/session-timeout.component.ts","./src/app/components/session-timeout/session-timeout.component.html","./src/app/components/shared/access-denied/access-denied.component.ts","./src/app/components/shared/access-denied/access-denied.component.html","./src/app/components/shared/confirmation-dialog/confirmation-dialog.component.ts","./src/app/components/shared/confirmation-dialog/confirmation-dialog.component.html","./src/app/components/shared/confirmation-dialog/confirmation-dialog.constants.ts","./src/app/components/shared/employee-search/employee-search.component.ts","./src/app/components/shared/employee-search/employee-search.component.html","./src/app/components/shared/grid-pager.component.ts","./src/app/components/shared/grid-pager.component.html","./src/app/components/shared/section-list-viewer.component.ts","./src/app/components/shared/section-list-viewer.component.html","./src/app/components/signout/signout-component.ts","./src/app/components/signout/signout.component.html","./src/app/components/team-inspections/data-grids/team-inspections.component.ts","./src/app/components/team-inspections/data-grids/team-inspections.component.html","./src/app/components/team-inspections/forms/engagement-tree-node-viewer.component.ts","./src/app/components/team-inspections/forms/engagement-tree-node-viewer.component.html","./src/app/components/team-inspections/forms/inspection.component.ts","./src/app/components/team-inspections/forms/inspection.component.html","./src/app/guards/app-guard/app.guard.ts","./src/app/guards/auth/require-authenticated-user.guard.ts","./src/app/guards/auth/role-guard.ts","./src/app/guards/breeze-setup/breeze-setup.guard.ts","./src/app/guards/generic-can-deactivate/generic-can-deactivate.guard.ts","./src/app/services/application-insights/application-insights.service.ts","./src/app/services/breeze-validators/breeze-validators.service.ts","./src/app/services/breeze-validators/default-breeze-validators.ts","./src/app/services/bridge/bridge.service.ts","./src/app/services/config.ts","./src/app/services/dialog-helper.ts","./src/app/services/entity-manager-provider/entity-manager-provider.service.ts","./src/app/services/file-service/file-service.service.ts","./src/app/services/filtered-questions/filtered-questions.service.ts","./src/app/services/global-error-handler.ts","./src/app/services/is-busy/is-busy.service.ts","./src/app/services/model-builder/model-builder.service.ts","./src/app/services/repository.ts","./src/app/services/server-side-config-data/server-side-config-data.service.ts","./src/app/services/shared-data/shared-data.service.ts","./src/app/services/strings.ts","./src/app/services/unit-of-work/unit-of-work.service.ts","./src/app/services/utilities.ts","./src/environments/environment.prod.ts","./src/environments/environment.ts","./src/hmr.ts","./src/main.ts","./src/model/modelEnums.ts","./src/model/role.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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","file":"main-es2015.js","sourcesContent":["var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { Role } from '../model/role';\r\nimport { AptCawsAdminComponent } from './components/admin/apt-caws.component';\r\nimport { BusinessLinesAdminComponent } from './components/admin/business-lines.component';\r\nimport { ClientsAdminComponent } from './components/admin/clients.component';\r\nimport { ImpersonateAdminComponent } from './components/admin/impersonate.component';\r\nimport { IndustriesAdminComponent } from './components/admin/industries.component';\r\nimport { InspectionTeamRolesAdminComponent } from './components/admin/inspection-team-roles.component';\r\nimport { OfficesAdminComponent } from './components/admin/offices.component';\r\nimport { ProjectsAdminComponent } from './components/admin/projects.component';\r\nimport { StandardQuestionOptionsAdminComponent } from './components/admin/standard-question-options.component';\r\nimport { TagsAdminComponent } from './components/admin/tags.component';\r\nimport { EngagementsComponent } from './components/engagement-management/data-grids/engagements.component';\r\nimport { EngagementAdminComponent } from './components/engagement-management/forms/engagement-editor.component';\r\nimport { NoLoginFoundComponent } from './components/error/not-active.component';\r\nimport { MyInspectionsComponent } from './components/home/data-grids/home.component';\r\nimport { MyInspectionComponent } from './components/home/forms/inspection.component';\r\nimport { InspectionProfilesComponent } from './components/profile-management/data-grids/inspection-profiles.component';\r\nimport { ProfileQuestionsComponent } from './components/profile-management/data-grids/profile-questions.component';\r\nimport { ProfileSectionsComponent } from './components/profile-management/data-grids/profile-sections.component';\r\nimport { InspectionProfileAdminComponent } from './components/profile-management/forms/inspection-profile-editor.component';\r\nimport { ProfileQuestionAdminComponent } from './components/profile-management/forms/question-editor.component';\r\nimport { AccessDeniedComponent } from './components/shared/access-denied/access-denied.component';\r\nimport { SignoutComponent } from './components/signout/signout-component';\r\nimport { TeamInspectionsComponent } from './components/team-inspections/data-grids/team-inspections.component';\r\nimport { TeamCaptainInspectionComponent } from './components/team-inspections/forms/inspection.component';\r\nimport { ExportQuestionsAndResponsesComponent } from './components/reports/export-questions-and-responses.component';\r\nimport { AppGuard } from './guards/app-guard/app.guard';\r\nimport { RoleGuard } from './guards/auth/role-guard';\r\nimport { GenericCanDeactivateGuard } from './guards/generic-can-deactivate/generic-can-deactivate.guard';\r\nimport { SecurityRolesAdminComponent } from './components/admin/security-roles.component';\r\nimport { SpecialtyReviewerTypesAdminComponent } from './components/admin/specialty-reviewer-types.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n canActivate: [AppGuard],\r\n children: [\r\n {\r\n path: 'engagement-management',\r\n canActivate: [RoleGuard],\r\n data: { order: 3, name: 'Inspection Code Setup', requiresQcAdmin: true, roles: [Role.nationalQcAdmin, Role.admin] },\r\n children: [\r\n {\r\n path: '',\r\n pathMatch: 'full',\r\n redirectTo: 'engagements'\r\n },\r\n {\r\n path: 'engagements',\r\n component: EngagementsComponent\r\n },\r\n {\r\n path: 'edit',\r\n component: EngagementAdminComponent,\r\n canDeactivate: [GenericCanDeactivateGuard]\r\n }\r\n ]\r\n },\r\n {\r\n path: 'profile-management',\r\n canActivate: [RoleGuard],\r\n data: { order: 4, name: 'Engagement Review Questionnaires', requiresAdmin: true, roles: [Role.admin] },\r\n children: [\r\n {\r\n path: '',\r\n pathMatch: 'full',\r\n redirectTo: 'inspection-profiles'\r\n },\r\n {\r\n path: 'inspection-profiles',\r\n component: InspectionProfilesComponent\r\n },\r\n {\r\n path: 'inspection-profile',\r\n component: InspectionProfileAdminComponent,\r\n canDeactivate: [GenericCanDeactivateGuard]\r\n },\r\n {\r\n path: 'profile-sections',\r\n component: ProfileSectionsComponent\r\n },\r\n {\r\n path: 'profile-questions',\r\n component: ProfileQuestionsComponent\r\n },\r\n {\r\n path: 'profile-question',\r\n component: ProfileQuestionAdminComponent,\r\n canDeactivate: [GenericCanDeactivateGuard]\r\n }\r\n ]\r\n },\r\n {\r\n path: 'admin',\r\n canActivate: [RoleGuard],\r\n data: { order: 5, name: 'Admin', requiresAdmin: true, roles: [Role.admin] },\r\n children: [\r\n {\r\n path: '',\r\n pathMatch: 'full',\r\n redirectTo: 'business-lines'\r\n },\r\n {\r\n path: 'apt-caws',\r\n component: AptCawsAdminComponent\r\n },\r\n {\r\n path: 'business-lines',\r\n component: BusinessLinesAdminComponent\r\n },\r\n {\r\n path: 'clients',\r\n component: ClientsAdminComponent\r\n },\r\n {\r\n path: 'industries',\r\n component: IndustriesAdminComponent\r\n },\r\n {\r\n path: 'offices',\r\n component: OfficesAdminComponent\r\n },\r\n {\r\n path: 'projects',\r\n component: ProjectsAdminComponent\r\n },\r\n {\r\n path: 'standard-question-options',\r\n component: StandardQuestionOptionsAdminComponent\r\n },\r\n {\r\n path: 'inspection-team-roles',\r\n component: InspectionTeamRolesAdminComponent\r\n },\r\n {\r\n path: 'tags',\r\n component: TagsAdminComponent\r\n },\r\n {\r\n path: 'impersonate',\r\n component: ImpersonateAdminComponent\r\n },\r\n {\r\n path: 'security-roles',\r\n component: SecurityRolesAdminComponent\r\n },\r\n {\r\n path: 'specialty-reviewer-types',\r\n component: SpecialtyReviewerTypesAdminComponent\r\n }\r\n ]\r\n },\r\n {\r\n path: 'reports',\r\n canActivate: [RoleGuard],\r\n data: { order: 5, name: 'Reports', requiresAdmin: true, roles: [Role.admin] },\r\n children: [\r\n {\r\n path: '',\r\n pathMatch: 'full',\r\n redirectTo: 'export-questions-and-responses'\r\n },\r\n {\r\n path: 'export-questions-and-responses',\r\n component: ExportQuestionsAndResponsesComponent\r\n }\r\n ]\r\n },\r\n {\r\n path: 'my-assignments',\r\n canActivate: [RoleGuard],\r\n data: { order: 1, name: 'My Assignments', requiresAdmin: false, requiresQcAdmin: false, roles: [Role.basic, Role.nationalQcAdmin, Role.admin] },\r\n children: [\r\n {\r\n path: '',\r\n pathMatch: 'full',\r\n component: MyInspectionsComponent\r\n },\r\n {\r\n path: 'inspection',\r\n component: MyInspectionComponent,\r\n canDeactivate: [GenericCanDeactivateGuard]\r\n }\r\n ]\r\n },\r\n { path: '', redirectTo: 'my-assignments', pathMatch: 'full' }\r\n ]\r\n },\r\n { path: 'access-denied', component: AccessDeniedComponent },\r\n { path: 'signout', component: SignoutComponent },\r\n { path: 'no-login-found', component: NoLoginFoundComponent },\r\n { path: '**', redirectTo: 'my-assignments', pathMatch: 'full' },\r\n]\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MsalBroadcastService, MsalGuardConfiguration, MsalService, MSAL_GUARD_CONFIG } from '@azure/msal-angular';\r\nimport { AccountInfo, InteractionStatus, RedirectRequest } from '@azure/msal-browser';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators'\r\nimport Utilities from './services/utilities';\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.less']\r\n})\r\nexport class AppComponent implements OnInit {\r\n title = 'app';\r\n currentYear = new Date().getFullYear();\r\n\r\n private readonly _destroying$ = new Subject();\r\n\r\n constructor(@Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration,\r\n private msalBroadcastService: MsalBroadcastService) { }\r\n\r\n ngOnInit(): void {\r\n this.msalBroadcastService.inProgress$\r\n .pipe(\r\n filter((status: InteractionStatus) => status === InteractionStatus.None),\r\n takeUntil(this._destroying$)\r\n )\r\n .subscribe((result) => {\r\n Utilities.hideLoadingScreen();\r\n });\r\n }\r\n\r\n ngOnDestory(): void {\r\n this._destroying$.next(null);\r\n this._destroying$.complete();\r\n }\r\n}\r\n","
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n © Copyright BDO USA, P.C., a Virginia Professional Service Corporation {{ currentYear }}. All Rights Reserved.\r\n
\r\n
\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { NgModule, APP_INITIALIZER, ErrorHandler } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { NgIdleModule } from '@ng-idle/core';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { ClipboardModule } from 'ngx-clipboard';\r\n\r\nimport { AccessDeniedComponent } from './components/shared/access-denied/access-denied.component';\r\nimport { AppComponent } from './app.component';\r\nimport { ConfirmationDialogComponent } from './components/shared/confirmation-dialog/confirmation-dialog.component';\r\nimport { NavMenuComponent } from './components/nav-menu/nav-menu.component';\r\nimport { SessionTimeoutComponent } from './components/session-timeout/session-timeout.component';\r\nimport { SignoutComponent } from './components/signout/signout-component';\r\n\r\nimport { UnitOfWorkService } from './services/unit-of-work/unit-of-work.service';\r\n\r\nimport { BreezeBridgeHttpClientModule } from 'breeze-bridge2-angular';\r\nimport { ModalModule } from 'ngx-bootstrap';\r\nimport { ToastrModule } from 'ngx-toastr';\r\n\r\nimport { RequireAuthenticatedUserGuard } from './guards/auth/require-authenticated-user.guard';\r\n\r\nimport { ApplicationInsightsService } from './services/application-insights/application-insights.service';\r\nimport { BridgeService } from './services/bridge/bridge.service';\r\nimport { EntityManagerProviderService } from './services/entity-manager-provider/entity-manager-provider.service';\r\nimport { IsBusyService } from './services/is-busy/is-busy.service';\r\nimport { ServerSideConfigDataService } from './services/server-side-config-data/server-side-config-data.service';\r\nimport { GlobalErrorHandler } from './services/global-error-handler';\r\n\r\nimport { NoLoginFoundComponent } from './components/error/not-active.component';\r\nimport { MyInspectionsComponent } from './components/home/data-grids/home.component';\r\nimport { MyInspectionComponent } from './components/home/forms/inspection.component';\r\nimport { InspectionViewerTreeNode } from './components/home/forms/inspection-tree-node-viewer.component';\r\n\r\n\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\nimport { TeamInspectionsComponent } from './components/team-inspections/data-grids/team-inspections.component';\r\nimport { TeamCaptainInspectionComponent } from './components/team-inspections/forms/inspection.component';\r\nimport { EngagementViewerTreeNode } from './components/team-inspections/forms/engagement-tree-node-viewer.component';\r\n\r\nimport { EngagementsComponent } from './components/engagement-management/data-grids/engagements.component';\r\nimport { EngagementAdminComponent } from './components/engagement-management/forms/engagement-editor.component';\r\nimport { EngagementSectionViewTreeNode } from './components/engagement-management/tree-viewers/engagement-tree-node-viewer.component';\r\nimport { ProfileSectionViewTreeNode } from './components/engagement-management/tree-viewers/tree-node-viewer.component';\r\n\r\nimport { InspectionProfilesComponent } from './components/profile-management/data-grids/inspection-profiles.component';\r\nimport { InspectionProfileAdminComponent } from './components/profile-management/forms/inspection-profile-editor.component';\r\n\r\nimport { ProfileSectionsComponent } from './components/profile-management/data-grids/profile-sections.component';\r\n\r\nimport { ProfileQuestionsComponent } from './components/profile-management/data-grids/profile-questions.component';\r\nimport { ProfileQuestionAdminComponent } from './components/profile-management/forms/question-editor.component';\r\n\r\nimport { AptCawsAdminComponent } from './components/admin/apt-caws.component';\r\nimport { BusinessLinesAdminComponent } from './components/admin/business-lines.component';\r\nimport { ClientsAdminComponent } from './components/admin/clients.component';\r\nimport { IndustriesAdminComponent } from './components/admin/industries.component';\r\nimport { InspectionTeamRolesAdminComponent } from './components/admin/inspection-team-roles.component';\r\nimport { OfficesAdminComponent } from './components/admin/offices.component';\r\nimport { ProjectsAdminComponent } from './components/admin/projects.component';\r\nimport { StandardQuestionOptionsAdminComponent } from './components/admin/standard-question-options.component';\r\nimport { TagsAdminComponent } from './components/admin/tags.component';\r\nimport { ImpersonateAdminComponent } from './components/admin/impersonate.component';\r\nimport { SecurityRolesAdminComponent } from './components/admin/security-roles.component';\r\nimport { SpecialtyReviewerTypesAdminComponent } from './components/admin/specialty-reviewer-types.component';\r\nimport { AdminNavMenu } from './components/admin/admin-nav.component';\r\n\r\nimport { ExportQuestionsAndResponsesComponent } from './components/reports/export-questions-and-responses.component';\r\nimport { ReportsNavMenu } from './components/reports/reports-nav.component';\r\n\r\nimport { ProfileSectionTreeNode } from './components/profile-management/forms/tree-node-editor.component';\r\nimport { ProfileNavMenu } from './components/profile-management/profile-nav.component';\r\n\r\nimport { SectionListItem } from './components/shared/section-list-viewer.component';\r\nimport { GridPager } from './components/shared/grid-pager.component';\r\nimport { HomeGridPager } from './components/home/home-pager.component';\r\nimport { DialogHelper } from './services/dialog-helper';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { InspectionDragdropComponent } from './components/profile-management/forms/inspection-dragdrop/inspection-dragdrop.component';\r\nimport Config from './services/config';\r\nimport { EmployeeSearchComponent } from './components/shared/employee-search/employee-search.component';\r\n\r\nimport { IPublicClientApplication, PublicClientApplication, InteractionType, BrowserCacheLocation } from '@azure/msal-browser';\r\nimport { MsalGuard, MsalInterceptor, MsalBroadcastService, MsalInterceptorConfiguration, MsalModule, MsalService, MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalGuardConfiguration, MsalRedirectComponent } from '@azure/msal-angular';\r\nimport { AppRoutingModule } from './app-routing.module';\r\n\r\n\r\n\r\nexport function init(): () => Promise {\r\n return (): Promise => {\r\n return new Promise((resolve, reject) => {\r\n Config.init();\r\n resolve(null);\r\n });\r\n };\r\n}\r\n\r\nconst isIE = window.navigator.userAgent.indexOf('MSIE ') > -1 || window.navigator.userAgent.indexOf('Trident/') > -1;\r\n\r\nconst environment = {\r\n production: false,\r\n clientId: '72969031-1fef-4778-a15f-9c3689cb1c05',\r\n authority: 'https://login.microsoftonline.com/6e57fc1a-413e-4050-91da-7d2dc8543e3c/',\r\n redirectUrl: `https://${document.location.host}/`,\r\n logoutRedirectUri: `https://${document.location.host}/signout`\r\n}\r\n\r\nexport function MSALInstanceFactory(): IPublicClientApplication {\r\n return new PublicClientApplication({\r\n auth: {\r\n clientId: environment.clientId,\r\n authority: environment.authority,\r\n redirectUri: environment.redirectUrl,\r\n postLogoutRedirectUri: environment.logoutRedirectUri\r\n },\r\n cache: {\r\n cacheLocation: BrowserCacheLocation.LocalStorage,\r\n storeAuthStateInCookie: isIE, // set to true for IE 11\r\n }\r\n });\r\n}\r\n\r\nexport function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration {\r\n const protectedResourceMap = new Map>();\r\n protectedResourceMap.set('https://graph.microsoft.com/v1.0/me', ['user.read']);\r\n protectedResourceMap.set(`https://${document.location.host}/`, [`${environment.clientId}/user_impersonation`])\r\n\r\n return {\r\n interactionType: InteractionType.Redirect,\r\n protectedResourceMap\r\n };\r\n}\r\n\r\nexport function MSALGuardConfigFactory(): MsalGuardConfiguration {\r\n return { interactionType: InteractionType.Redirect };\r\n}\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n NavMenuComponent,\r\n MyInspectionsComponent,\r\n MyInspectionComponent,\r\n InspectionViewerTreeNode,\r\n SectionListItem,\r\n SessionTimeoutComponent,\r\n SignoutComponent,\r\n AccessDeniedComponent,\r\n NoLoginFoundComponent,\r\n TeamInspectionsComponent,\r\n TeamCaptainInspectionComponent,\r\n EngagementViewerTreeNode,\r\n EngagementsComponent,\r\n EngagementAdminComponent,\r\n EngagementSectionViewTreeNode,\r\n InspectionProfilesComponent,\r\n InspectionProfileAdminComponent,\r\n ProfileSectionsComponent,\r\n ProfileQuestionsComponent,\r\n ProfileQuestionAdminComponent,\r\n AptCawsAdminComponent,\r\n BusinessLinesAdminComponent,\r\n ClientsAdminComponent,\r\n IndustriesAdminComponent,\r\n InspectionTeamRolesAdminComponent,\r\n OfficesAdminComponent,\r\n ProjectsAdminComponent,\r\n StandardQuestionOptionsAdminComponent,\r\n SpecialtyReviewerTypesAdminComponent,\r\n TagsAdminComponent,\r\n ImpersonateAdminComponent,\r\n SecurityRolesAdminComponent,\r\n ProfileSectionTreeNode,\r\n ProfileSectionViewTreeNode,\r\n ProfileNavMenu,\r\n AdminNavMenu,\r\n GridPager,\r\n HomeGridPager,\r\n InspectionDragdropComponent,\r\n ConfirmationDialogComponent,\r\n EmployeeSearchComponent,\r\n ExportQuestionsAndResponsesComponent,\r\n ReportsNavMenu\r\n\r\n ],\r\n imports: [\r\n BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),\r\n HttpClientModule,\r\n FormsModule,\r\n AppRoutingModule,\r\n BreezeBridgeHttpClientModule,\r\n BrowserAnimationsModule,\r\n MatDialogModule,\r\n ModalModule.forRoot(),\r\n MatButtonModule,\r\n NgbModule,\r\n NgSelectModule,\r\n DragDropModule,\r\n ClipboardModule,\r\n NgIdleModule.forRoot(),\r\n ToastrModule.forRoot({\r\n timeOut: Config.toastrTimeoutMs,\r\n positionClass: 'toast-bottom-right',\r\n preventDuplicates: true,\r\n countDuplicates: true\r\n }),\r\n MsalModule\r\n ],\r\n entryComponents: [\r\n SessionTimeoutComponent,\r\n ConfirmationDialogComponent\r\n ],\r\n providers: [\r\n ApplicationInsightsService,\r\n BridgeService,\r\n EntityManagerProviderService,\r\n IsBusyService,\r\n ServerSideConfigDataService,\r\n UnitOfWorkService,\r\n GlobalErrorHandler,\r\n RequireAuthenticatedUserGuard,\r\n {\r\n provide: ErrorHandler,\r\n useClass: GlobalErrorHandler\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: init,\r\n multi: true\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: MsalInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: MSAL_INSTANCE,\r\n useFactory: MSALInstanceFactory\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALGuardConfigFactory\r\n },\r\n {\r\n provide: MSAL_INTERCEPTOR_CONFIG,\r\n useFactory: MSALInterceptorConfigFactory\r\n },\r\n DialogHelper,\r\n MsalService,\r\n MsalGuard,\r\n MsalBroadcastService\r\n ],\r\n bootstrap: [AppComponent, MsalRedirectComponent]\r\n})\r\nexport class AppModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { SharedDataService } from '../../services/shared-data/shared-data.service';\r\n\r\ndeclare var window: any;\r\n@Component({\r\n selector: 'admin-nav-menu',\r\n inputs: ['currentTab'],\r\n templateUrl: './admin-nav.component.html'\r\n})\r\nexport class AdminNavMenu implements OnInit {\r\n @Input() currentTab: string;\r\n\r\n navItems = [\r\n { id: 'apt-caws', title: 'APT CAW' },\r\n { id: 'business-lines', title: 'Business Lines' },\r\n { id: 'clients', title: 'Clients' },\r\n { id: 'industries', title: 'Industries' },\r\n { id: 'inspection-team-roles', title: 'Engagement Team Roles' },\r\n { id: 'offices', title: 'Offices' },\r\n { id: 'projects', title: 'Projects' },\r\n { id: 'standard-question-options', title: 'Standard Question Options' },\r\n { id: 'tags', title: 'Tags' },\r\n { id: 'security-roles', title: 'Security Roles' },\r\n { id: 'specialty-reviewer-types', title: 'Specialty Reviewer Types' }\r\n ];\r\n\r\n constructor(\r\n private sharedData: SharedDataService\r\n ) { }\r\n\r\n ngOnInit() {\r\n const env = window.location.host;\r\n //if ((!env.includes('inspections') || !env.includes('prod')) && this.sharedData.me.value.isNationalQcAdmin) {\r\n // this.navItems.push({ id: 'impersonate', title: 'Impersonate' });\r\n //}\r\n\r\n }\r\n}\r\n","\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../services/unit-of-work/unit-of-work.service';\r\nimport { ApplicationInsightsService } from '../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../services/dialog-helper';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { IsBusyService } from '../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../model/model';\r\nimport { GlobalErrorHandler } from '../../services/global-error-handler';\r\n\r\nconst defaultLimit: number = 100;\r\n\r\n@Component({\r\n selector: 'app-apt-caws',\r\n templateUrl: './apt-caws.component.html',\r\n})\r\nexport class AptCawsAdminComponent implements OnInit {\r\n\r\n aptCaws: model.AptCaw[] = [];\r\n page: number = 1;\r\n limit: number = defaultLimit;\r\n rowCount: number = 0;\r\n pageCount: number = 1;\r\n pageLimitOptions = [15, 25, 50, 100];\r\n\r\n idFilter: string = null;\r\n nameFilter: string = null;\r\n clientFilter: string = null;\r\n\r\n get activeAptCaws() {\r\n return this.aptCaws.filter(m => !m.entityAspect.entityState.isDeleted() && !m.entityAspect.entityState.isDetached()).sort((a, b) => { return a.name.localeCompare(b.name); });\r\n }\r\n\r\n\r\n constructor(\r\n\t\tprivate uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n\t\tprivate activeRoute: ActivatedRoute,\r\n\t\tpublic isBusy: IsBusyService,\r\n\t\tpublic dialogHelper: DialogHelper\r\n\t) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.activeRoute.params.subscribe(routeParams => {\r\n this.page = routeParams.page && !Number.isNaN(routeParams.page) ? parseInt(routeParams.page) : 1;\r\n this.limit = routeParams.limit && !Number.isNaN(routeParams.limit) ? parseInt(routeParams.limit) : defaultLimit;\r\n\r\n this.updateDataGrid();\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n clearFilters() {\r\n this.idFilter = null;\r\n this.nameFilter = null;\r\n this.clientFilter = null;\r\n\r\n this.updateDataGrid();\r\n }\r\n\r\n updateDataGrid() {\r\n this.isBusy.set('admin:loadData', true, 'Loading data');\r\n Promise.all([\r\n this.getAptCawsCount(),\r\n this.getAptCaws()\r\n ])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:loadData', false);\r\n });\r\n }\r\n\r\n getAptCaws() {\r\n return this.uow.getAptCaws(this.idFilter, this.nameFilter, null, this.clientFilter, this.page, this.limit)\r\n .then(result => {\r\n this.aptCaws = result;\r\n });\r\n }\r\n\r\n getAptCawsCount() {\r\n return this.uow.getAptCawsCount(this.idFilter, this.nameFilter, null, this.clientFilter)\r\n .then(result => {\r\n this.rowCount = result[0];\r\n this.pageCount = Math.ceil(this.rowCount / this.limit);\r\n if (this.pageCount < 1) {\r\n this.pageCount = 1;\r\n }\r\n });\r\n }\r\n}\r\n","
\r\n

Admin

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n APT CAWs\r\n

\r\n {{rowCount}} {{(rowCount == 1 ? 'record' : 'records')}} found\r\n

\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
IdNameClient
\r\n \r\n
\r\n \r\n \r\n No data to display…\r\n \r\n
{{aptCaws.id}}{{aptCaws.name}}{{aptCaws.client ? aptCaws.client.name : '---'}}
\r\n\r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../services/unit-of-work/unit-of-work.service';\r\nimport { ApplicationInsightsService } from '../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../services/dialog-helper';\r\nimport { IsBusyService } from '../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../model/model';\r\nimport { GlobalErrorHandler } from '../../services/global-error-handler';\r\n\r\nconst tabKey: string = 'admin:active-tab';\r\n\r\n@Component({\r\n selector: 'app-business-lines',\r\n templateUrl: './business-lines.component.html',\r\n})\r\nexport class BusinessLinesAdminComponent implements OnInit {\r\n businessLines: model.BusinessLine[] = [];\r\n\r\n newBusinessLineName: string = null;\r\n\r\n get activeBusinessLines() {\r\n return this.businessLines.filter(m => !m.entityAspect.entityState.isDeleted() && !m.entityAspect.entityState.isDetached()).sort((a, b) => { return a.name.localeCompare(b.name); });\r\n }\r\n\r\n constructor(\r\n\t\tprivate uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n\t\tpublic isBusy: IsBusyService,\r\n\t\tpublic dialogHelper: DialogHelper\r\n\t) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.isBusy.set('admin:loadData', true, 'Loading data');\r\n Promise.all([\r\n this.getBusinessLines()\r\n ])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:loadData', false);\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n \r\n getBusinessLines() {\r\n return this.uow.getBusinessLines(true)\r\n .then(result => {\r\n this.businessLines = result;\r\n });\r\n }\r\n \r\n\r\n saveBusinessLineChanges(businessLine: model.BusinessLine, message: string) {\r\n this.isBusy.set('admin:saveBusinessLine', true, message);\r\n this.uow.businessLines.saveChanges([businessLine])\r\n .then(() => {\r\n this.newBusinessLineName = null;\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:saveBusinessLine', false);\r\n });\r\n }\r\n\r\n createBusinessLine() {\r\n if (this.newBusinessLineName) {\r\n const newBusinessLine = this.uow.businessLines.createEntity();\r\n newBusinessLine.name = this.newBusinessLineName.trim();\r\n this.businessLines.push(newBusinessLine);\r\n\r\n this.saveBusinessLineChanges(newBusinessLine, 'Saving business line');\r\n }\r\n }\r\n\r\n updateBusinessLine(businessLine: model.BusinessLine) {\r\n this.saveBusinessLineChanges(businessLine, 'Updating business line');\r\n }\r\n\r\n destroyBusinessLine(businessLine: model.BusinessLine) {\r\n if (businessLine) {\r\n if (confirm('Are you sure you want to remove \"' + businessLine.name + '\"?')) {\r\n this.uow.businessLines.cancelChanges(businessLine);\r\n businessLine.entityAspect.setDeleted();\r\n\r\n this.saveBusinessLineChanges(businessLine, 'Removing business line \"' + businessLine.name + '\"');\r\n }\r\n }\r\n }\r\n}\r\n","
\r\n

Admin

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n Business Lines\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
IdName
\r\n \r\n \r\n No data to display…\r\n \r\n
\r\n \r\n \r\n \r\n {{businessLine.id}}\r\n \r\n Name is required.\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../services/unit-of-work/unit-of-work.service';\r\nimport { ApplicationInsightsService } from '../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../services/dialog-helper';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { IsBusyService } from '../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../model/model';\r\nimport { GlobalErrorHandler } from '../../services/global-error-handler';\r\n\r\nconst defaultLimit: number = 100;\r\n\r\n@Component({\r\n selector: 'app-clients',\r\n templateUrl: './clients.component.html',\r\n})\r\nexport class ClientsAdminComponent implements OnInit {\r\n\r\n clients: model.Client[] = [];\r\n page: number = 1;\r\n limit: number = defaultLimit;\r\n rowCount: number = 0;\r\n pageCount: number = 1;\r\n pageLimitOptions = [15, 25, 50, 100];\r\n\r\n idFilter: string = null;\r\n nameFilter: string = null;\r\n\r\n get activeClients() {\r\n return this.clients.filter(m => !m.entityAspect.entityState.isDeleted() && !m.entityAspect.entityState.isDetached()).sort((a, b) => { return a.name.localeCompare(b.name); });\r\n }\r\n\r\n\r\n constructor(\r\n\t\tprivate uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n\t\tprivate activeRoute: ActivatedRoute,\r\n\t\tpublic isBusy: IsBusyService,\r\n\t\tpublic dialogHelper: DialogHelper\r\n\t) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.activeRoute.params.subscribe(routeParams => {\r\n this.page = routeParams.page && !Number.isNaN(routeParams.page) ? parseInt(routeParams.page) : 1;\r\n this.limit = routeParams.limit && !Number.isNaN(routeParams.limit) ? parseInt(routeParams.limit) : defaultLimit;\r\n\r\n this.updateDataGrid();\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n clearFilters() {\r\n this.idFilter = null;\r\n this.nameFilter = null;\r\n\r\n this.updateDataGrid();\r\n }\r\n\r\n updateDataGrid() {\r\n this.isBusy.set('admin:loadData', true, 'Loading data');\r\n Promise.all([\r\n this.getClientsCount(),\r\n this.getClients()\r\n ])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:loadData', false);\r\n });\r\n }\r\n\r\n getClients() {\r\n return this.uow.getClients(this.idFilter, this.nameFilter, this.page, this.limit)\r\n .then(result => {\r\n this.clients = result;\r\n });\r\n }\r\n\r\n getClientsCount() {\r\n return this.uow.getClientsCount(this.idFilter, this.nameFilter)\r\n .then(result => {\r\n this.rowCount = result[0];\r\n this.pageCount = Math.ceil(this.rowCount / this.limit);\r\n if (this.pageCount < 1) {\r\n this.pageCount = 1;\r\n }\r\n });\r\n }\r\n}\r\n","
\r\n

Admin

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n Clients\r\n

\r\n {{rowCount}} {{(rowCount == 1 ? 'record' : 'records')}} found\r\n

\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
IdName
\r\n \r\n
\r\n \r\n \r\n No data to display…\r\n \r\n
{{client.id}}{{client.name}}
\r\n\r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ApplicationInsightsService } from '../../services/application-insights/application-insights.service';\r\nimport { GlobalErrorHandler } from '../../services/global-error-handler';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\ndeclare var window: any;\r\n@Component({\r\n selector: 'app-impersonate',\r\n templateUrl: './impersonate.component.html',\r\n styles: [`\r\n table {\r\n max-width: 30rem;\r\n }\r\n .table td {\r\n vertical-align: middle;\r\n }\r\n input {\r\n font-size: small;\r\n }\r\n `]\r\n})\r\nexport class ImpersonateAdminComponent implements OnInit {\r\n basic: string = '';\r\n admin: string = '';\r\n\r\n constructor(\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n private toastr: ToastrService\r\n\t) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.basic = 'https://' + window.location.host + '/?e2e&impersonate=hjackman@bdo.com&code=n@11!mpPwd';\r\n this.admin = 'https://' + window.location.host + '/?e2e&impersonate=bwillis@bdo.com&code=n@11!mpPwd';\r\n }\r\n\r\n log($event, role) {\r\n if ($event.isSuccess) {\r\n this.toastr.success(`Copied ${role} URL to clipboard`, '', { timeOut: 2000 });\r\n }\r\n }\r\n}\r\n","
\r\n

Admin

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n Impersonate\r\n \r\n To impersonate a role, please copy the URL and paste it in a new tab or window.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Type of RoleURL
\r\n \r\n Basic\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n Admin\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../services/unit-of-work/unit-of-work.service';\r\nimport { ApplicationInsightsService } from '../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../services/dialog-helper';\r\nimport { IsBusyService } from '../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../model/model';\r\nimport { GlobalErrorHandler } from '../../services/global-error-handler';\r\n\r\n@Component({\r\n selector: 'app-industries',\r\n templateUrl: './industries.component.html',\r\n})\r\nexport class IndustriesAdminComponent implements OnInit {\r\n\r\n industries: model.Industry[] = [];\r\n \r\n newIndustryName: string = null;\r\n\r\n\r\n get activeIndustries() {\r\n return this.industries.filter(m => !m.entityAspect.entityState.isDeleted() && !m.entityAspect.entityState.isDetached()).sort((a, b) => { return a.name.localeCompare(b.name); });\r\n }\r\n\r\n\r\n constructor(\r\n\t\tprivate uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n\t\tpublic isBusy: IsBusyService,\r\n\t\tpublic dialogHelper: DialogHelper\r\n\t) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.isBusy.set('admin:loadData', true, 'Loading data');\r\n Promise.all([\r\n this.getIndustries()\r\n ])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:loadData', false);\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n getIndustries() {\r\n return this.uow.getIndustries(true)\r\n .then(result => {\r\n this.industries = result;\r\n });\r\n }\r\n\r\n\r\n saveIndustryChanges(industry: model.Industry, message: string) {\r\n this.isBusy.set('admin:saveIndustry', true, message);\r\n this.uow.industries.saveChanges([industry])\r\n .then(() => {\r\n this.newIndustryName = null;\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:saveIndustry', false);\r\n });\r\n }\r\n\r\n createIndustry() {\r\n if (this.newIndustryName) {\r\n const newIndustry = this.uow.industries.createEntity();\r\n newIndustry.name = this.newIndustryName.trim();\r\n this.industries.push(newIndustry);\r\n\r\n this.saveIndustryChanges(newIndustry, 'Saving industry');\r\n }\r\n }\r\n\r\n updateIndustry(industry: model.Industry) {\r\n this.saveIndustryChanges(industry, 'Updating industry');\r\n }\r\n\r\n destroyIndustry(industry: model.Industry) {\r\n if (industry) {\r\n if (confirm('Are you sure you want to remove \"' + industry.name + '\"?')) {\r\n this.uow.industries.cancelChanges(industry);\r\n industry.entityAspect.setDeleted();\r\n\r\n this.saveIndustryChanges(industry, 'Removing industry \"' + industry.name + '\"');\r\n }\r\n }\r\n }\r\n}\r\n","
\r\n

Admin

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n Industries\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
IdName
\r\n \r\n \r\n No data to display…\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n {{industry.id}}\r\n \r\n Name is required.\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../services/unit-of-work/unit-of-work.service';\r\nimport { ApplicationInsightsService } from '../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../services/dialog-helper';\r\nimport { IsBusyService } from '../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../model/model';\r\nimport { GlobalErrorHandler } from '../../services/global-error-handler';\r\n\r\n@Component({\r\n selector: 'app-inspection-team-roles',\r\n templateUrl: './inspection-team-roles.component.html',\r\n})\r\nexport class InspectionTeamRolesAdminComponent implements OnInit {\r\n inspectionTeamRoles: model.InspectionTeamRole[] = [];\r\n \r\n newRoleName: string = null;\r\n \r\n get activeInspectionTeamRoles() {\r\n return this.inspectionTeamRoles.filter(m => !m.entityAspect.entityState.isDeleted() && !m.entityAspect.entityState.isDetached()).sort((a, b) => { return a.name.localeCompare(b.name); });\r\n }\r\n\r\n\r\n constructor(\r\n\t\tprivate uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n\t\tpublic isBusy: IsBusyService,\r\n\t\tpublic dialogHelper: DialogHelper\r\n\t) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.isBusy.set('admin:loadData', true, 'Loading data');\r\n Promise.all([\r\n this.getInspectionTeamRoles()\r\n ])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:loadData', false);\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n \r\n\r\n getInspectionTeamRoles() {\r\n return this.uow.getInspectionTeamRoles(true)\r\n .then(result => {\r\n this.inspectionTeamRoles = result;\r\n });\r\n }\r\n \r\n\r\n saveInspectionTeamRoleChanges(role: model.InspectionTeamRole, message: string) {\r\n this.isBusy.set('admin:saveRole', true, message);\r\n this.uow.inspectionTeamRoles.saveChanges([role])\r\n .then(() => {\r\n this.newRoleName = null;\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:saveRole', false);\r\n });\r\n }\r\n\r\n createRole() {\r\n if (this.newRoleName) {\r\n let newRole = this.uow.inspectionTeamRoles.createEntity();\r\n newRole.name = this.newRoleName.trim();\r\n this.inspectionTeamRoles.push(newRole);\r\n\r\n this.saveInspectionTeamRoleChanges(newRole, 'Saving role');\r\n }\r\n }\r\n\r\n updateRole(role: model.InspectionTeamRole) {\r\n this.saveInspectionTeamRoleChanges(role, 'Updating role \"' + role.name + '\"');\r\n }\r\n\r\n destroyRole(role: model.InspectionTeamRole) {\r\n if (role) {\r\n if (confirm('Are you sure you want to remove \"' + role.name + '\"?')) {\r\n this.uow.inspectionTeamRoles.cancelChanges(role);\r\n role.entityAspect.setDeleted();\r\n\r\n this.saveInspectionTeamRoleChanges(role, 'Removing role \"' + role.name + '\"');\r\n }\r\n }\r\n }\r\n}\r\n","
\r\n

Admin

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n Inspection Team Roles\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
IdName
\r\n \r\n \r\n No data to display…\r\n \r\n
\r\n \r\n \r\n \r\n {{role.id}}\r\n \r\n Name is required.\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../services/unit-of-work/unit-of-work.service';\r\nimport { ApplicationInsightsService } from '../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../services/dialog-helper';\r\nimport { IsBusyService } from '../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../model/model';\r\nimport { GlobalErrorHandler } from '../../services/global-error-handler';\r\n\r\n@Component({\r\n selector: 'app-offices',\r\n templateUrl: './offices.component.html',\r\n})\r\nexport class OfficesAdminComponent implements OnInit {\r\n\r\n offices: model.Office[] = [];\r\n\r\n get activeOffices() {\r\n return this.offices.filter(m => !m.entityAspect.entityState.isDeleted() && !m.entityAspect.entityState.isDetached()).sort((a, b) => { return a.name.localeCompare(b.name); });\r\n }\r\n\r\n\r\n constructor(\r\n\t\tprivate uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n\t\tpublic isBusy: IsBusyService,\r\n\t\tpublic dialogHelper: DialogHelper\r\n\t) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.isBusy.set('admin:loadData', true, 'Loading data');\r\n Promise.all([\r\n this.getOffices()\r\n ])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:loadData', false);\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n \r\n\r\n getOffices() {\r\n return this.uow.getOffices()\r\n .then(result => {\r\n this.offices = result;\r\n });\r\n }\r\n}\r\n","
\r\n

Admin

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n Offices\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
IdRegionName
\r\n \r\n \r\n No data to display…\r\n \r\n
{{office.id}}{{office.regionCode}}{{office.name}}
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../services/unit-of-work/unit-of-work.service';\r\nimport { ApplicationInsightsService } from '../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../services/dialog-helper';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { IsBusyService } from '../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../model/model';\r\nimport { GlobalErrorHandler } from '../../services/global-error-handler';\r\n\r\nconst defaultLimit: number = 100;\r\n\r\n@Component({\r\n selector: 'app-projects',\r\n templateUrl: './projects.component.html',\r\n})\r\nexport class ProjectsAdminComponent implements OnInit {\r\n\r\n projects: model.Project[] = [];\r\n page: number = 1;\r\n limit: number = defaultLimit;\r\n rowCount: number = 0;\r\n pageCount: number = 1;\r\n pageLimitOptions = [15, 25, 50, 100];\r\n\r\n idFilter: string = null;\r\n nameFilter: string = null;\r\n clientFilter: string = null;\r\n\r\n get activeProjects() {\r\n return this.projects.filter(m => !m.entityAspect.entityState.isDeleted() && !m.entityAspect.entityState.isDetached()).sort((a, b) => { return a.name.localeCompare(b.name); });\r\n }\r\n\r\n\r\n constructor(\r\n\t\tprivate uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n\t\tprivate activeRoute: ActivatedRoute,\r\n\t\tpublic isBusy: IsBusyService,\r\n\t\tpublic dialogHelper: DialogHelper\r\n\t) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.activeRoute.params.subscribe(routeParams => {\r\n this.page = routeParams.page && !Number.isNaN(routeParams.page) ? parseInt(routeParams.page) : 1;\r\n this.limit = routeParams.limit && !Number.isNaN(routeParams.limit) ? parseInt(routeParams.limit) : defaultLimit;\r\n\r\n this.updateDataGrid();\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n clearFilters() {\r\n this.idFilter = null;\r\n this.nameFilter = null;\r\n this.clientFilter = null;\r\n\r\n this.updateDataGrid();\r\n }\r\n\r\n updateDataGrid(){\r\n this.isBusy.set('admin:loadData', true, 'Loading data');\r\n Promise.all([\r\n this.getProjectsCount(),\r\n this.getProjects()\r\n ])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:loadData', false);\r\n });\r\n }\r\n\r\n getProjects() {\r\n return this.uow.getProjects(this.idFilter, this.nameFilter, null, this.clientFilter, this.page, this.limit)\r\n .then(result => {\r\n this.projects = result;\r\n });\r\n }\r\n\r\n getProjectsCount() {\r\n return this.uow.getProjectsCount(this.idFilter, this.nameFilter, null, this.clientFilter)\r\n .then(result => {\r\n this.rowCount = result[0];\r\n this.pageCount = Math.ceil(this.rowCount / this.limit);\r\n if (this.pageCount < 1) {\r\n this.pageCount = 1;\r\n }\r\n });\r\n }\r\n}\r\n","
\r\n

Admin

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n Projects\r\n

\r\n {{rowCount}} {{(rowCount == 1 ? 'record' : 'records')}} found\r\n

\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
IdNameClient
\r\n \r\n
\r\n \r\n \r\n No data to display…\r\n \r\n
{{project.id}}{{project.name}}{{project.client ? project.client.name : '---'}}
\r\n\r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { UnitOfWorkService } from '../../services/unit-of-work/unit-of-work.service';\r\nimport { ApplicationInsightsService } from '../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../services/dialog-helper';\r\nimport { IsBusyService } from '../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../model/model';\r\nimport { GlobalErrorHandler } from '../../services/global-error-handler';\r\nimport { SharedDataService } from '../../services/shared-data/shared-data.service';\r\n\r\n@Component({\r\n selector: 'app-security-roles',\r\n templateUrl: './security-roles.component.html',\r\n})\r\nexport class SecurityRolesAdminComponent implements OnInit {\r\n\r\n employees: model.Employee[] = [];\r\n employeeSearchResults: model.Employee[] = [];\r\n\r\n selectedEmployeeId: string = '';\r\n\r\n showCaptains: boolean = false;\r\n showAdmins: boolean = false;\r\n\r\n constructor(\r\n private uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n public isBusy: IsBusyService,\r\n public dialogHelper: DialogHelper,\r\n private sharedData: SharedDataService,\r\n private router: Router\r\n ) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.handleSecurity();\r\n }\r\n\r\n searchAllEmployees() {\r\n return this.uow.getEmployees(null, null, this.showAdmins, this.showCaptains)\r\n .then(result => {\r\n this.employeeSearchResults = result.filter(m => m.isActive);\r\n });\r\n }\r\n\r\n searchSpecificEmployee(searchTerm: string) {\r\n return this.uow.getEmployees(searchTerm)\r\n .then(result => {\r\n this.employees = result.filter(m => m.isActive);\r\n });\r\n }\r\n\r\n employeeChanged() {\r\n this.employeeSearchResults = this.employees.filter(x => x.id === this.selectedEmployeeId);\r\n }\r\n\r\n save() {\r\n this.isBusy.set('admin:saveSecurityRole', true, \"Saving Changes\");\r\n this.uow.employees.saveChanges()\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:saveSecurityRole', false);\r\n this.handleSecurity();\r\n });\r\n }\r\n\r\n handleSecurity() {\r\n if (!this.sharedData.me.value.isAdmin) {\r\n this.router.navigate(['']);\r\n }\r\n }\r\n}\r\n","
\r\n

Admin

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n Security Roles\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
IdNameUserCaptainAdmin
\r\n \r\n \r\n No results…\r\n \r\n
\r\n {{employee.id}}\r\n \r\n {{employee.fullName}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../services/unit-of-work/unit-of-work.service';\r\nimport { ApplicationInsightsService } from '../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../services/dialog-helper';\r\nimport { IsBusyService } from '../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../model/model';\r\nimport { GlobalErrorHandler } from '../../services/global-error-handler';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-specialty-reviewer-types',\r\n templateUrl: './specialty-reviewer-types.component.html',\r\n})\r\nexport class SpecialtyReviewerTypesAdminComponent implements OnInit {\r\n\r\n reviewerTypes: model.SpecialtyReviewerType[] = [];\r\n newReviewerTypeName: string = null;\r\n newDescription: string = null;\r\n\r\n constructor(\r\n private uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n public isBusy: IsBusyService,\r\n public dialogHelper: DialogHelper,\r\n private toastr: ToastrService\r\n ) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.isBusy.set('admin:loadData', true, 'Loading data');\r\n Promise.all([\r\n this.getSpecialtyReviewerTypes()\r\n ])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:loadData', false);\r\n });\r\n }\r\n\r\n getSpecialtyReviewerTypes() {\r\n return this.uow.getSpecialtyReviewerTypes(true)\r\n .then(result => {\r\n this.reviewerTypes = result;\r\n });\r\n }\r\n\r\n createReviewerType() {\r\n if (this.newReviewerTypeName) {\r\n const newReviewerType = this.uow.specialtyReviewerTypes.createEntity();\r\n\r\n newReviewerType.name = this.newReviewerTypeName.trim();\r\n newReviewerType.description = this.newDescription.trim();\r\n\r\n this.reviewerTypes.push(newReviewerType);\r\n\r\n this.saveReviewerTypeChanges(newReviewerType, 'Saving Specialty Reviewer Type');\r\n }\r\n }\r\n\r\n updateReviewerType(reviewerType: model.SpecialtyReviewerType) {\r\n this.saveReviewerTypeChanges(reviewerType, 'Updating Specialty Reviewer Type \"' + reviewerType.name + '\"');\r\n }\r\n\r\n saveReviewerTypeChanges(reviewerType: model.SpecialtyReviewerType, message: string) {\r\n this.isBusy.set('admin:saveSpecialtyReviewerType', true, message);\r\n this.uow.specialtyReviewerTypes.saveChanges([reviewerType])\r\n .then(() => {\r\n this.newReviewerTypeName = null;\r\n this.newDescription = null;\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:saveSpecialtyReviewerType', false);\r\n });\r\n }\r\n\r\n destroyReviewerType(reviewerType: model.SpecialtyReviewerType) {\r\n if (reviewerType) {\r\n\r\n this.isReviewerTypeAssigned(reviewerType)\r\n .then(result => {\r\n if (result[0]) {\r\n this.toastr.error('You can\\'t delete assigned Specialty Reviewer Types.');\r\n return;\r\n }\r\n\r\n if (confirm('Are you sure you want to remove \"' + reviewerType.name + '\"?')) {\r\n let index = this.reviewerTypes.indexOf(reviewerType);\r\n this.reviewerTypes.splice(index, 1);\r\n\r\n this.uow.specialtyReviewerTypes.cancelChanges(reviewerType);\r\n reviewerType.entityAspect.setDeleted();\r\n\r\n this.saveReviewerTypeChanges(reviewerType, 'Removing Specialty Reviewer Type \"' + reviewerType.name + '\"');\r\n\r\n\r\n }\r\n });\r\n\r\n \r\n }\r\n }\r\n\r\n isReviewerTypeAssigned(reviewerType: model.SpecialtyReviewerType) {\r\n return this.uow.isReviewerTypeAssigned(reviewerType.id);\r\n }\r\n}\r\n","
\r\n

Admin

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n Specialty Reviewer Types\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
IdName
\r\n \r\n \r\n No data to display…\r\n \r\n
\r\n \r\n \r\n \r\n {{type.id}}\r\n \r\n Name is required.\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../services/unit-of-work/unit-of-work.service';\r\nimport { ApplicationInsightsService } from '../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../services/dialog-helper';\r\nimport { IsBusyService } from '../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../model/model';\r\nimport { GlobalErrorHandler } from '../../services/global-error-handler';\r\n\r\n@Component({\r\n selector: 'app-standard-question-options',\r\n templateUrl: './standard-question-options.component.html',\r\n})\r\nexport class StandardQuestionOptionsAdminComponent implements OnInit {\r\n\r\n standardQuestionOptions: model.StandardQuestionOption[] = [];\r\n\r\n newOptionName: string = null;\r\n newOptionValue: string = null;\r\n\r\n answerSetOptions = [];\r\n\r\n noAnswerNeededName: string = 'No answer needed';\r\n\r\n get activeStandardOptions() {\r\n return this.standardQuestionOptions.filter(m => !m.entityAspect.entityState.isDeleted() && !m.entityAspect.entityState.isDetached()).sort((a, b) => { return a.name.localeCompare(b.value); });\r\n }\r\n\r\n constructor(\r\n\t\tprivate uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n\t\tpublic isBusy: IsBusyService,\r\n\t\tpublic dialogHelper: DialogHelper\r\n\t) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.isBusy.set('admin:loadData', true, 'Loading data');\r\n Promise.all([\r\n this.getStandardQuestionOptions()\r\n ])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:loadData', false);\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n getStandardQuestionOptions() {\r\n return this.uow.getStandardQuestionOptions()\r\n .then(result => {\r\n this.standardQuestionOptions = result.sort((a, b) => (a.id < b.id || a.name === this.noAnswerNeededName ? -1 : 1));\r\n\r\n this.standardQuestionOptions.forEach(o => {\r\n\r\n this.answerSetOptions[o.id] = [\r\n { Key: 'A', Value: o.answerSetOptions.filter(x => x.answerSetCode == 'A').length > 0 },\r\n { Key: 'B', Value: o.answerSetOptions.filter(x => x.answerSetCode == 'B').length > 0 },\r\n { Key: 'C', Value: o.answerSetOptions.filter(x => x.answerSetCode == 'C').length > 0 },\r\n { Key: 'D', Value: o.answerSetOptions.filter(x => x.answerSetCode == 'D').length > 0 },\r\n { Key: 'E', Value: o.answerSetOptions.filter(x => x.answerSetCode == 'E').length > 0 },\r\n { Key: 'F', Value: o.answerSetOptions.filter(x => x.answerSetCode == 'F').length > 0 }\r\n ];\r\n });\r\n });\r\n }\r\n\r\n updateAnswerSetOptions(questionOption: model.StandardQuestionOption) {\r\n\r\n this.answerSetOptions[questionOption.id].forEach(a => {\r\n\r\n let aso = questionOption.answerSetOptions.find(x => x.answerSetCode == a.Key);\r\n\r\n if (a.Value && !aso) {\r\n let createdAnswerSetOption = this.uow.answerSetOptions.createEntity();\r\n\r\n createdAnswerSetOption.answerSetCode = a.Key;\r\n createdAnswerSetOption.standardQuestionOptionId = questionOption.id;\r\n\r\n questionOption.answerSetOptions.push(createdAnswerSetOption);\r\n this.uow.answerSetOptions.saveChanges();\r\n } else if (!a.Value && !!aso) {\r\n \r\n let index = questionOption.answerSetOptions.indexOf(aso);\r\n questionOption.answerSetOptions.splice(index, 1);\r\n\r\n aso.entityAspect.setDeleted();\r\n this.uow.answerSetOptions.saveChanges([aso]);\r\n }\r\n });\r\n }\r\n\r\n\r\n saveQuestionOptionChanges(questionOption: model.StandardQuestionOption, message: string) {\r\n this.isBusy.set('admin:saveQuestionOption', true, message);\r\n this.uow.standardQuestionOptions.saveChanges([questionOption])\r\n .then(() => {\r\n this.newOptionName = null;\r\n this.newOptionValue = null;\r\n\r\n this.updateAnswerSetOptions(questionOption);\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:saveQuestionOption', false);\r\n });\r\n }\r\n\r\n\r\n createQuestionOption() {\r\n if (this.newOptionName.trim() != '' && this.newOptionValue.trim() != '') {\r\n let newQuestionOption = this.uow.standardQuestionOptions.createEntity();\r\n newQuestionOption.name = this.newOptionName.trim();\r\n newQuestionOption.value = this.newOptionValue.trim();\r\n\r\n this.standardQuestionOptions.push(newQuestionOption);\r\n\r\n this.saveQuestionOptionChanges(newQuestionOption, 'Saving standard question option');\r\n }\r\n }\r\n\r\n updateQuestionOption(questionOption: model.StandardQuestionOption) {\r\n this.saveQuestionOptionChanges(questionOption, 'Updating standard question option');\r\n }\r\n\r\n destroyQuestionOption(questionOption: model.StandardQuestionOption) {\r\n if (questionOption) {\r\n if (confirm('Are you sure you want to remove \"' + questionOption.value + '\"?')) {\r\n this.uow.standardQuestionOptions.cancelChanges(questionOption);\r\n questionOption.entityAspect.setDeleted();\r\n\r\n this.saveQuestionOptionChanges(questionOption, 'Removing standard question option \"' + questionOption.value + '\"');\r\n }\r\n }\r\n }\r\n}\r\n","
\r\n

Admin

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n Standard Question Options\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Associated Answer Set
IdNameDescriptionABCDEF
\r\n \r\n \r\n No data to display…\r\n \r\n
\r\n \r\n \r\n \r\n {{option.id}}\r\n \r\n Name is required.\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../services/unit-of-work/unit-of-work.service';\r\nimport { ApplicationInsightsService } from '../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../services/dialog-helper';\r\nimport { IsBusyService } from '../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../model/model';\r\nimport { GlobalErrorHandler } from '../../services/global-error-handler';\r\n\r\n@Component({\r\n selector: 'app-tags',\r\n templateUrl: './tags.component.html',\r\n})\r\nexport class TagsAdminComponent implements OnInit {\r\n\r\n tags: model.Tag[] = [];\r\n\r\n newTagName: string = null;\r\n\r\n get activeTags() {\r\n return this.tags.filter(m => !m.entityAspect.entityState.isDeleted() && !m.entityAspect.entityState.isDetached()).sort((a, b) => { return a.name.localeCompare(b.name); });\r\n }\r\n\r\n constructor(\r\n\t\tprivate uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n\t\tpublic isBusy: IsBusyService,\r\n\t\tpublic dialogHelper: DialogHelper\r\n\t) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.isBusy.set('admin:loadData', true, 'Loading data');\r\n Promise.all([\r\n this.getTags()\r\n ])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:loadData', false);\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n getTags() {\r\n return this.uow.getTags()\r\n .then(result => {\r\n this.tags = result;\r\n });\r\n }\r\n\r\n\r\n saveTagChanges(tag: model.Tag, message: string) {\r\n this.isBusy.set('admin:saveTag', true, message);\r\n this.uow.tags.saveChanges([tag])\r\n .then(() => {\r\n this.newTagName = null;\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:saveTag', false);\r\n });\r\n }\r\n\r\n createTag() {\r\n if (this.newTagName) {\r\n const newTag = this.uow.tags.createEntity();\r\n newTag.name = this.newTagName.trim();\r\n this.tags.push(newTag);\r\n\r\n this.saveTagChanges(newTag, 'Saving tag');\r\n }\r\n }\r\n\r\n updateTag(tag: model.Tag) {\r\n this.saveTagChanges(tag, 'Updating tag \"' + tag.name + '\"');\r\n }\r\n\r\n destroyTag(tag: model.Tag) {\r\n if (tag) {\r\n if (confirm('Are you sure you want to remove \"' + tag.name + '\"?')) {\r\n this.uow.tags.cancelChanges(tag);\r\n tag.entityAspect.setDeleted();\r\n\r\n this.saveTagChanges(tag, 'Removing tag \"' + tag.name + '\"');\r\n }\r\n }\r\n }\r\n}\r\n","
\r\n

Admin

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n Tags\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
IdName
\r\n \r\n \r\n No data to display…\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n {{tag.id}}\r\n \r\n Name is required.\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../../services/unit-of-work/unit-of-work.service';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ApplicationInsightsService } from '../../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../../services/dialog-helper';\r\nimport { NgbModal, ModalDismissReasons } from '@ng-bootstrap/ng-bootstrap';\r\nimport { IsBusyService } from '../../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../../model/model';\r\nimport * as modelDto from '../../../../model/modelDto';\r\nimport * as modelEnum from '../../../../model/modelEnums';\r\nimport { GlobalErrorHandler } from '../../../services/global-error-handler';\r\n\r\nconst loadingKey: string = 'engagements:loadData';\r\nconst saveKey: string = 'engagements:saveInspectionProfile';\r\nconst defaultLimit: number = 15;\r\n\r\n@Component({\r\n selector: 'app-engagement-admin',\r\n templateUrl: './engagements.component.html',\r\n})\r\nexport class EngagementsComponent implements OnInit {\r\n @ViewChild('confirmDeleteModal', { static: true }) confirmDeleteModal: TemplateRef; // Note: TemplateRef\r\n @ViewChild('confirmCleanupStepOneModal', { static: true }) confirmCleanupStepOneModal: TemplateRef; // Note: TemplateRef\r\n @ViewChild('confirmCleanupStepTwoModal', { static: true }) confirmCleanupStepTwoModal: TemplateRef; // Note: TemplateRef\r\n\r\n isLoading: boolean = false;\r\n isLockedForCleanup: boolean = false;\r\n\r\n //engagements: model.Engagement[] = [];\r\n engagementDtos: modelDto.AllEngagementsSummaryDto[] = [];\r\n page: number = 1;\r\n limit: number = defaultLimit;\r\n pageCount: number = 1;\r\n pageLimitOptions = [15, 25, 50, 100];\r\n\r\n filters: modelDto.GridFilter[] = [];\r\n codeFilter: string = null;\r\n nameFilter: string = null;\r\n officeFilter: string = null;\r\n regionFilter: string = null;\r\n yearFilter: string = null;\r\n weekFilter: string = null;\r\n businessLineFilter: string = null;\r\n industryFilter: string = null;\r\n inspectorFilter: string = null;\r\n inspectionYears: number[] = [];\r\n inspectionYear: number = new Date().getFullYear();\r\n\r\n engagementStatusesLabel: string = 'Filter by...';\r\n engagementStatuses: modelEnum.EngagementStatus[] = [];\r\n\r\n confirmMessage: string = null;\r\n\r\n constructor(private uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n private activeRoute: ActivatedRoute,\r\n public router: Router,\r\n\t\tpublic isBusy: IsBusyService,\r\n public dialogHelper: DialogHelper,\r\n private modalService: NgbModal) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.activeRoute.queryParams.subscribe(routeParams => {\r\n this.page = routeParams.page && !Number.isNaN(routeParams.page) ? parseInt(routeParams.page) : 1;\r\n this.limit = routeParams.limit && !Number.isNaN(routeParams.limit) ? parseInt(routeParams.limit) : defaultLimit;\r\n this.getInspectionYears();\r\n this.updateFilters('year', this.inspectionYear);\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n const proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n get activeEngagementsDto() {\r\n return this.engagementDtos\r\n .sort((a, b) => { return a.engagement.client.name.localeCompare(b.engagement.client.name); });\r\n }\r\n\r\n get statuses() {\r\n return this.uow.engagementStatuses;\r\n }\r\n\r\n getInspectionYears() {\r\n return this.uow.getInspectionYears()\r\n .then(result => {\r\n this.inspectionYears = result;\r\n });\r\n }\r\n\r\n public yearDropdownChange(event) {\r\n if (event.target.value == 0) {\r\n this.removeFilter('year');\r\n this.updateDataGrid();\r\n return;\r\n }\r\n this.updateFilters('year', event.target.value); \r\n }\r\n\r\n\r\n removeFilter(key: string) {\r\n const i = this.filters.findIndex(m => m.key == key);\r\n if (i >= 0) {\r\n this.filters.splice(i, 1);\r\n }\r\n }\r\n\r\n updateStatusFilters(e: any) {\r\n if (e == false) {\r\n if (this.statuses.some(m => m.isSelected)) {\r\n this.engagementStatusesLabel = this.statuses.filter(m => m.isSelected).map(m => m.title).join(', ');\r\n this.updateFilters('status', this.statuses.filter(m => m.isSelected).map(m => m.status).join(','));\r\n }\r\n else {\r\n this.engagementStatusesLabel = 'Filter by...';\r\n this.updateFilters('status', null);\r\n }\r\n }\r\n }\r\n\r\n clearStatusFilters() {\r\n this.statuses.filter(m => m.isSelected = false);\r\n }\r\n\r\n updateFilters(key: string, value: any) {\r\n if (this.filters.some(m => m.key == key)) {\r\n const filter = this.filters.find(m => m.key == key);\r\n filter.value = value;\r\n }\r\n else {\r\n this.filters.push({ key: key, value: value } as modelDto.GridFilter)\r\n }\r\n\r\n this.updateDataGrid();\r\n }\r\n\r\n clearFilters() {\r\n this.filters = [];\r\n this.codeFilter = null;\r\n this.nameFilter = null;\r\n this.officeFilter = null;\r\n this.regionFilter = null;\r\n this.yearFilter = null;\r\n this.weekFilter = null;\r\n this.engagementStatusesLabel = null;\r\n this.businessLineFilter = null;\r\n this.industryFilter = null;\r\n this.inspectorFilter = null;\r\n this.inspectionYear = 0;\r\n\r\n this.updateDataGrid();\r\n }\r\n\r\n updateDataGrid() {\r\n this.isBusy.set(loadingKey, true, 'Loading data');\r\n Promise\r\n .all([\r\n this.getPageCount(this.limit),\r\n this.getEngagements(this.page, this.limit)])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(loadingKey, false);\r\n });\r\n }\r\n\r\n getStatusName(status: modelEnum.EngagementStatus) {\r\n return this.uow.getEngagementStatusName(status);\r\n }\r\n\r\n getRatingName(rating: modelEnum.EngagementRating) {\r\n return this.uow.getEngagementRatingName(rating);\r\n }\r\n\r\n getEngagements(page: number = 1, limit: number = defaultLimit) {\r\n return this.uow.getAllEngagementsSummary(page, limit, JSON.stringify(this.filters))\r\n .then(result => {\r\n this.engagementDtos = result;\r\n });\r\n }\r\n\r\n getPageCount(limit: number = defaultLimit) {\r\n return this.uow.getEngagementsPageCount(limit, JSON.stringify(this.filters))\r\n .then(result => {\r\n this.pageCount = result[0];\r\n });\r\n }\r\n\r\n canRemoveEngagement(engagement: model.Engagement): boolean {\r\n let canRemove = true;\r\n\r\n if (engagement) {\r\n canRemove = engagement.status != modelEnum.EngagementStatus.archived;\r\n }\r\n\r\n return canRemove;\r\n }\r\n\r\n saveEngagementChanges(engagement: model.Engagement, message: string) {\r\n this.isBusy.set(saveKey, true, message);\r\n this.uow.engagements.saveChanges([engagement])\r\n .then(() => {\r\n this.updateDataGrid();\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(saveKey, false);\r\n });\r\n }\r\n\r\n destroyEngagement(engagement: model.Engagement) {\r\n if (engagement) {\r\n this.showConfirmDeleteModal(engagement);\r\n }\r\n }\r\n\r\n showConfirmDeleteModal(engagement: model.Engagement) {\r\n this.confirmMessage = 'Are you sure you want to remove \"' + engagement.code + ' ' + engagement.client.name + '\"?';\r\n\r\n this.modalService.open(this.confirmDeleteModal, { ariaLabelledBy: 'modal-basic-title' })\r\n .result\r\n .then((result) => {\r\n if (result == 'confirm') {\r\n if (engagement.status > modelEnum.EngagementStatus.draft) {\r\n this.confirmMessage = 'You are about to delete an active inspection. By confirming below, you acknowledge that there ' +\r\n 'is no longer a need for the assigned inspection team to complete this inspection ' +\r\n '(e.g. the inspection was created as a test, or the inspection was setup erroneously and ' +\r\n 'a new inspection has been created in its place).';\r\n\r\n this.modalService.open(this.confirmDeleteModal, { ariaLabelledBy: 'modal-basic-title' })\r\n .result\r\n .then((result) => {\r\n if (result == 'confirm') {\r\n const i = this.engagementDtos.findIndex(e => e.engagement.id == engagement.id);\r\n this.engagementDtos.splice(i, 1);\r\n engagement.entityAspect.setDeleted();\r\n\r\n this.saveEngagementChanges(engagement, 'Removing engagement \"' + engagement.code + '\"');\r\n }\r\n });\r\n }\r\n else {\r\n const i = this.engagementDtos.findIndex(e => e.engagement.id == engagement.id);\r\n this.engagementDtos.splice(i, 1);\r\n engagement.entityAspect.setDeleted();\r\n\r\n this.saveEngagementChanges(engagement, 'Removing engagement \"' + engagement.code + '\"');\r\n }\r\n }\r\n }, (reason) => {\r\n const closeResult = `Dismissed ${this.getDismissReason(reason)}`;\r\n\r\n console.log('Reason: ' + closeResult);\r\n });\r\n }\r\n\r\n\r\n runCleanup() {\r\n this.modalService.open(this.confirmCleanupStepOneModal, { ariaLabelledBy: 'modal-basic-title' })\r\n .result\r\n .then((result) => {\r\n if (result == 'confirm') {\r\n\r\n this.modalService.open(this.confirmCleanupStepTwoModal, { ariaLabelledBy: 'modal-basic-title' })\r\n .result\r\n .then((result) => {\r\n if (result == 'confirm') {\r\n this.isLockedForCleanup = true;\r\n this.engagementDtos = [];\r\n\r\n this.uow.cleanupEngagements()\r\n .then(() => {\r\n this.uow.clear();\r\n this.updateDataGrid();\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isLockedForCleanup = false;\r\n });\r\n }\r\n });\r\n }\r\n }, (reason) => {\r\n const closeResult = `Dismissed ${this.getDismissReason(reason)}`;\r\n\r\n console.log('Reason: ' + closeResult);\r\n });\r\n }\r\n\r\n\r\n private getDismissReason(reason: any): string {\r\n if (reason == ModalDismissReasons.ESC) {\r\n return 'by pressing ESC';\r\n } else if (reason == ModalDismissReasons.BACKDROP_CLICK) {\r\n return 'by clicking on a backdrop';\r\n } else {\r\n return `with: ${reason}`;\r\n }\r\n }\r\n\r\n calculatePercentComplete(engagementDto: modelDto.AllEngagementsSummaryDto): number {\r\n if (engagementDto.totalSections > 0) {\r\n return engagementDto.completedSections / engagementDto.totalSections;\r\n }\r\n return 0.0;\r\n }\r\n}\r\n","
\r\n

Inspection Code Setup

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Create\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeNameTeam CaptainOfficeRegionYearStatus
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n No data to display…\r\n \r\n \r\n Please wait while we load your inspections…\r\n \r\n \r\n \r\n Please wait while we process your inspections — table will reload when process is complete.\r\n \r\n
\r\n
\r\n \r\n \r\n Edit\r\n \r\n \r\n
\r\n
{{engagementDto.engagement.code}}{{engagementDto.engagement.client.name}}{{engagementDto.engagement.leadInspector()}}{{engagementDto.engagement.officeId}} - {{engagementDto.engagement.office.name}}{{engagementDto.engagement.regionCode}}{{engagementDto.engagement.inspectionYear}}{{getStatusName(engagementDto.engagement.status)}}
\r\n
\r\n\r\n \r\n\r\n\r\n
\r\n
\r\n \r\n Please Confirm\r\n
\r\n \r\n
\r\n
\r\n

{{ confirmMessage }}

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n Please Confirm\r\n
\r\n \r\n
\r\n
\r\n

\r\n Use this tool to correct any inspections which may appear to be out of sync with\r\n their source engagement review questionnaires.\r\n

\r\n
Warning:
\r\n

\r\n Using this option will potentially remove sections from active inspections, if they are deemed to be\r\n duplicates or deleted from the source questionnaire.\r\n

\r\n

Continue? You will be asked to confirm once more before cleanup proceeds.

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n Confirm Inspection Cleanup\r\n
\r\n \r\n
\r\n
\r\n

\r\n Proceed with inspection cleanup?\r\n

\r\n

\r\n Use the Confirm option below to continue, or use the Cancel option\r\n to abort this action.\r\n

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, OnInit, Injector } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../../services/unit-of-work/unit-of-work.service';\r\nimport Utilities from '../../../services/utilities';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ApplicationInsightsService } from '../../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../../services/dialog-helper';\r\nimport { NgbDateAdapter, NgbDateNativeAdapter } from '@ng-bootstrap/ng-bootstrap';\r\nimport { IsBusyService } from '../../../services/is-busy/is-busy.service';\r\nimport * as moment from 'moment';\r\nimport * as model from '../../../../model/model';\r\nimport * as modelEnum from '../../../../model/modelEnums';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmationDialogComponent } from '../../shared/confirmation-dialog/confirmation-dialog.component';\r\nimport { GlobalErrorHandler } from '../../../services/global-error-handler';\r\nimport { SharedDataService } from '../../../services/shared-data/shared-data.service';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { Profile } from '../../../../typings';\r\n\r\nconst LOADING_KEY: string = 'engagement-editor:loadData';\r\nconst SAVING_KEY: string = 'engagement-editor:saveChangesStageOne';\r\nconst CLONING_KEY: string = 'engagement-editor:saveChangesStageTwo';\r\n\r\nconst MIN_SEARCH_LENGTH: number = 3;\r\nconst BUFFER_SIZE: number = 50;\r\nconst NUMBER_OF_ITEMS_FROM_END_BEFORE_FETCHING_MORE: number = 10;\r\nconst SEARCH_TIMEOUT: number = 300;\r\n\r\n@Component({\r\n selector: 'app-engagement-editor',\r\n templateUrl: './engagement-editor.component.html',\r\n providers: [{ provide: NgbDateAdapter, useClass: NgbDateNativeAdapter }]\r\n})\r\nexport class EngagementAdminComponent implements OnInit {\r\n\r\n clientsLoading: boolean = false;\r\n clientIdLoading: boolean = false;\r\n clientName: string = null;\r\n clientsCount: number = 0;\r\n clientsPage: number = 0;\r\n clientSearchTimer = null;\r\n clients: model.Client[] = [];\r\n clientIds: model.Client[] = [];\r\n\r\n projectsLoading: boolean = false;\r\n projectName: string = null;\r\n projectsCount: number = 0;\r\n projectsPage: number = 0;\r\n projectSearchTimer = null;\r\n projects: model.Project[] = [];\r\n availableProjects: model.Project[] = [];\r\n\r\n aptCawsLoading: boolean = false;\r\n aptCawName: string = null;\r\n aptCawsCount: number = 0;\r\n aptCawsPage: number = 0;\r\n aptCawSearchTimer = null;\r\n aptCaws: model.AptCaw[] = [];\r\n availableAptCaws: model.AptCaw[] = [];\r\n\r\n engagementStatuses: { status: modelEnum.EngagementStatus, title: string }[] = [];\r\n\r\n industries: model.Industry[] = [];\r\n availableIndustries: model.Industry[] = [];\r\n\r\n businessLines: model.BusinessLine[] = [];\r\n offices: model.Office[] = [];\r\n regions: string[] = [];\r\n tags: model.Tag[] = [];\r\n availableTags: model.Tag[] = [];\r\n inspectionProfiles: model.InspectionProfile[] = [];\r\n employees: model.Employee[] = [];\r\n availableInspectionEmployees: model.Employee[] = [];\r\n availableEngagementEmployees: model.Employee[] = [];\r\n oldInspectionEmployeeId: string = null;\r\n teamMemberRoles: model.InspectionTeamRole[] = [];\r\n specialtyReviewerTypes: model.SpecialtyReviewerType[] = [];\r\n selectedEngagementSections: model.EngagementSection[] = [];\r\n highLevelEngagementSections: model.EngagementSection[] = [];\r\n highLevelProfileSections: model.ProfileSection[] = [];\r\n selectedProfileSections: model.ProfileSection[] = [];\r\n\r\n\r\n id: string = null;\r\n engagement: model.Engagement = {} as model.Engagement;\r\n isLoading: boolean = true;\r\n cloneProfileNow: boolean = false;\r\n disableBusinessLine: boolean = false;\r\n\r\n showQuestionViewer: boolean = false;\r\n previewEngagement: boolean = false;\r\n isPublishing = false; \r\n\r\n selectedProject: model.Project = null;\r\n selectedAptCaw: model.AptCaw = null;\r\n selectedIndustry: model.Industry = null;\r\n selectedTag: model.Tag = null;\r\n selectedInspectionTeamId: string = null;\r\n selectedEngagementTeamId: string = null;\r\n\r\n inspectionTeamMemberProfileSections: model.InspectionTeamMemberProfileSection[] = [];\r\n inspectionTeamMemberEngagementSections: model.InspectionTeamMemberEngagementSection[] = [];\r\n\r\n constructor(\r\n private activeRoute: ActivatedRoute,\r\n private uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n public router: Router,\r\n public isBusy: IsBusyService,\r\n public dialogHelper: DialogHelper,\r\n private injector: Injector,\r\n private dialog: MatDialog,\r\n private sharedData: SharedDataService,\r\n private msalService: MsalService\r\n ) {\r\n appInsights.logPageView();\r\n this.dialog = this.injector.get(MatDialog);\r\n this.engagementStatuses = this.uow.engagementStatuses;\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.activeRoute.queryParams.subscribe(routeParams => {\r\n this.isLoading = true;\r\n this.isBusy.set(LOADING_KEY, true, 'Loading engagement data');\r\n Promise\r\n .all([\r\n this.getInspectionProfiles(),\r\n this.getBusinessLines(),\r\n this.getOffices(),\r\n this.getTags(),\r\n this.getIndustries(),\r\n this.getInspectionTeamRoles(),\r\n this.getSpecialtyReviewerTypes(),\r\n ])\r\n .then(() => {\r\n this.isBusy.set(LOADING_KEY, false);\r\n this.getEngagement(routeParams.id);\r\n this.getAvailableIndustries();\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isLoading = false;\r\n });\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n const proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n get rootProfileSections() {\r\n return this.engagement && this.engagement.inspectionProfile && this.engagement.inspectionProfile.profileSections ? this.engagement.inspectionProfile.profileSections.filter(m => !m.parentSectionId).sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n get rootEngagementSections() {\r\n return this.engagement && this.engagement.engagementSections ? this.engagement.engagementSections.filter(m => !m.parentSectionId).sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n\r\n get assignedInspectionTeamMembers() {\r\n return this.engagement && this.engagement.inspectionTeamMembers ? this.engagement.inspectionTeamMembers.filter(m => !m.isDeleted) : [];\r\n }\r\n\r\n get assignedEngagementTeamMembers() {\r\n return this.engagement && this.engagement.engagementTeamMembers ? this.engagement.engagementTeamMembers.filter(m => !m.isDeleted) : [];\r\n }\r\n\r\n get availableOffices() {\r\n return this.engagement && this.engagement.regionCode ? this.offices.filter(m => m.isActive && m.regionCode != 'NATL') : this.offices;\r\n }\r\n\r\n getHighLevelInspectionTeamMemberEngagementSections(inspectionTeamMemberId) {\r\n return this.inspectionTeamMemberEngagementSections\r\n .filter(es => es.inspectionTeamMemberId == inspectionTeamMemberId && (!es.engagementSection.parentSectionId || (es.engagementSection.parentSection && !es.engagementSection.parentSection.parentSectionId)))\r\n .sort((a, b) => { return a.engagementSection.name.localeCompare(b.engagementSection.name); });\r\n }\r\n\r\n getInspectionTeamMemberProfileSections(inspectionTeamMemberId) {\r\n return this.inspectionTeamMemberProfileSections\r\n .filter(es => es.inspectionTeamMemberId == inspectionTeamMemberId)\r\n .sort((a, b) => { return a.profileSection.name.localeCompare(b.profileSection.name); });\r\n }\r\n\r\n availableSpecialtyReviewerTypes(reviewerTypeId) {\r\n return this.specialtyReviewerTypes.filter(type => (reviewerTypeId == type.id || (!this.assignedInspectionTeamMembers.some(tm => tm.specialtyReviewerTypeId == type.id))));\r\n }\r\n\r\n get hasChanges() {\r\n const a = this.uow.engagements.hasChanges.value;\r\n const b = this.uow.engagementAptCaws.hasChanges.value;\r\n const c = this.uow.engagementIndustries.hasChanges.value;\r\n const d = this.uow.engagementProjects.hasChanges.value;\r\n const f = this.uow.engagementTeamMembers.hasChanges.value;\r\n\r\n return a || b || c || d || f;\r\n }\r\n\r\n undoChanges() {\r\n if (this.hasChanges) {\r\n this.uow.rollback();\r\n }\r\n }\r\n\r\n setAvailableProjects() {\r\n if (this.engagement && this.engagement.client && this.engagement.engagementProjects && this.projects) {\r\n this.availableProjects = this.projects.filter(p => !this.engagement.engagementProjects.find(ep => ep.projectId == p.id));\r\n } else {\r\n this.availableProjects = this.projects;\r\n }\r\n }\r\n\r\n setAvailableAptCaws() {\r\n if (this.engagement && this.engagement.client && this.engagement.engagementAptCaws && this.aptCaws) {\r\n this.availableAptCaws = this.aptCaws.filter(a => !this.engagement.engagementAptCaws.find(ea => ea.aptCawId == a.id));\r\n } else {\r\n this.availableAptCaws = this.aptCaws;\r\n }\r\n }\r\n\r\n getAvailableIndustries() {\r\n if (this.engagement && this.engagement.engagementIndustries) {\r\n this.availableIndustries = this.industries.filter(i => !this.engagement.engagementIndustries.find(ei => ei.industryId == i.id));\r\n } else {\r\n this.availableIndustries = this.industries;\r\n }\r\n }\r\n\r\n getBusinessLines() {\r\n return this.uow.getBusinessLines()\r\n .then(result => {\r\n this.businessLines = result;\r\n });\r\n }\r\n\r\n getIndustries() {\r\n return this.uow.getActiveIndustries()\r\n .then(result => {\r\n this.industries = result;\r\n });\r\n }\r\n\r\n getInspectionTeamRoles() {\r\n return this.uow.getInspectionTeamRoles()\r\n .then(result => {\r\n this.teamMemberRoles = result;\r\n });\r\n }\r\n\r\n getOffices() {\r\n return this.uow.getOffices()\r\n .then(result => {\r\n this.offices = result;\r\n this.getRegions();\r\n });\r\n }\r\n\r\n getRegions() {\r\n this.regions = this.offices.map(o => o.regionCode)\r\n .filter(Utilities.onlyUnique)\r\n .sort(Utilities.sortByValue);\r\n }\r\n\r\n getTags() {\r\n return this.uow.getActiveTags()\r\n .then(result => {\r\n this.tags = result;\r\n });\r\n }\r\n\r\n getSpecialtyReviewerTypes() {\r\n return this.uow.getSpecialtyReviewerTypes()\r\n .then(result => {\r\n this.specialtyReviewerTypes = result;\r\n });\r\n }\r\n\r\n searchEmployees(searchTerm: string) {\r\n return this.uow.getEmployees(searchTerm)\r\n .then(result => {\r\n this.employees = result.filter(m => m.isActive)\r\n if (this.engagement && this.engagement.inspectionTeamMembers) {\r\n this.availableInspectionEmployees = this.employees.filter(m => !m.isDeleted && m.id !== this.engagement.inspectionLeadId && !this.engagement.inspectionTeamMembers.some(n => n.employeeId == m.id));\r\n }\r\n else {\r\n this.availableInspectionEmployees = this.employees.filter(m => !m.isDeleted && m.id !== this.engagement.inspectionLeadId);\r\n }\r\n\r\n if (this.engagement && this.engagement.engagementTeamMembers) {\r\n this.availableEngagementEmployees = this.employees.filter(m => !m.isDeleted && !this.engagement.engagementTeamMembers.some(n => n.employeeId == m.id));\r\n }\r\n else {\r\n this.availableEngagementEmployees = this.employees.filter(m => !m.isDeleted);\r\n }\r\n });\r\n }\r\n\r\n employeeSearch(e) {\r\n e.term = e.term.toLocaleLowerCase();\r\n\r\n return e.item.name.toLocaleLowerCase().indexOf(e.term) > -1 || e.item.id.toLocaleLowerCase() == e.term;\r\n }\r\n\r\n updateClientFields() {\r\n if (this.engagement) {\r\n if (this.engagement.clientId) {\r\n if (this.engagement.engagementProjects) {\r\n this.engagement.engagementProjects.forEach(p => p.entityAspect.setDeleted());\r\n }\r\n\r\n if (this.engagement.engagementAptCaws) {\r\n this.engagement.engagementAptCaws.forEach(a => a.entityAspect.setDeleted());\r\n }\r\n }\r\n\r\n this.getProjects();\r\n this.getAptCaws();\r\n }\r\n }\r\n\r\n getClients() {\r\n return this.uow.getClientsCount(this.engagement.clientId).then(count => {\r\n this.clientsCount = count[0];\r\n\r\n return this.uow.getClients(this.engagement.clientId, null, this.clientsPage, BUFFER_SIZE)\r\n .then(result => {\r\n this.clients = result;\r\n });\r\n });\r\n }\r\n\r\n onClientsScrollToEnd() {\r\n this.fetchMoreClients();\r\n }\r\n\r\n onClientsScroll({ end }) {\r\n if (this.clientsLoading || this.clientsCount <= this.clients.length) {\r\n return;\r\n }\r\n\r\n if (end + NUMBER_OF_ITEMS_FROM_END_BEFORE_FETCHING_MORE >= this.clients.length) {\r\n this.fetchMoreClients();\r\n }\r\n }\r\n\r\n onClientsSearch(e) {\r\n //if (!e.items || e.items.length == 0) {\r\n this.clientName = e.term;\r\n this.searchClients();\r\n //}\r\n }\r\n\r\n searchClients(): void {\r\n if (this.clientSearchTimer) clearTimeout(this.clientSearchTimer);\r\n\r\n this.clientSearchTimer = setTimeout(() => {\r\n if (this.clientName && this.clientName.length >= MIN_SEARCH_LENGTH) {\r\n this.clientsPage = 0;\r\n\r\n this.clientsLoading = true;\r\n\r\n return this.uow.getClientsCount(null, this.clientName).then(count => {\r\n this.clientsCount = count[0];\r\n\r\n return this.uow.getClients(null, this.clientName, this.clientsPage, BUFFER_SIZE)\r\n .then(result => {\r\n this.clientsLoading = false;\r\n this.clients = result;\r\n });\r\n });\r\n \r\n }\r\n }, SEARCH_TIMEOUT);\r\n }\r\n\r\n private fetchMoreClients() {\r\n this.clientsPage++;\r\n\r\n this.clientsLoading = true;\r\n\r\n return this.uow.getClients(null, this.clientName, this.clientsPage, BUFFER_SIZE)\r\n .then(result => {\r\n this.clientsLoading = false;\r\n this.clients = this.clients.concat(result);\r\n });\r\n }\r\n\r\n\r\n getProjects() {\r\n return this.uow.getProjectsCount(null, null, this.engagement.clientId, null).then(count => {\r\n this.projectsCount = count[0];\r\n\r\n return this.uow.getProjects(null, null, this.engagement.clientId, null, this.projectsPage, BUFFER_SIZE)\r\n .then(result => {\r\n this.projects = result;\r\n this.setAvailableProjects();\r\n });\r\n });\r\n }\r\n\r\n onProjectsScrollToEnd() {\r\n this.fetchMoreProjects();\r\n }\r\n\r\n onProjectsScroll({ end }) {\r\n if (this.projectsLoading || this.projectsCount <= this.projects.length || this.projectsCount <= 50) {\r\n return;\r\n }\r\n\r\n if (end + NUMBER_OF_ITEMS_FROM_END_BEFORE_FETCHING_MORE >= this.projects.length) {\r\n this.fetchMoreProjects();\r\n }\r\n }\r\n\r\n onProjectsSearch(e) {\r\n //if (!e.items || e.items.length == 0) {\r\n this.projectName = e.term;\r\n this.searchProjects();\r\n //}\r\n }\r\n\r\n searchProjects(): void {\r\n clearTimeout(this.projectSearchTimer);\r\n\r\n this.projectSearchTimer = setTimeout(() => {\r\n if (this.projectName) {\r\n this.projectsPage = 0;\r\n\r\n this.projectsLoading = true;\r\n\r\n return this.uow.getProjectsCount(null, this.projectName, null).then(count => {\r\n this.projectsCount = count[0];\r\n\r\n return this.uow.getProjects(null, this.projectName, this.engagement.clientId, null, this.projectsPage, BUFFER_SIZE)\r\n .then(result => {\r\n this.projectsLoading = false;\r\n this.projects = result;\r\n this.setAvailableProjects();\r\n });\r\n });\r\n }\r\n }, SEARCH_TIMEOUT);\r\n }\r\n\r\n //projectsSearch(term: string, item: model.Client) {\r\n // term = term.toLocaleLowerCase();\r\n\r\n // return item.name.toLocaleLowerCase().indexOf(term) > -1 || item.id.toLocaleLowerCase() == term;\r\n //}\r\n\r\n private fetchMoreProjects() {\r\n this.projectsPage++;\r\n\r\n this.projectsLoading = true;\r\n\r\n return this.uow.getProjects(null, this.projectName, this.engagement.clientId, null, this.projectsPage, BUFFER_SIZE)\r\n .then(result => {\r\n this.projectsLoading = false;\r\n this.projects = this.projects.concat(result);\r\n this.setAvailableProjects();\r\n });\r\n }\r\n\r\n\r\n getAptCaws() {\r\n this.aptCawsLoading = true;\r\n\r\n return this.uow.getAptCawsCount(null, null, this.engagement.clientId, null).then(count => {\r\n this.aptCawsCount = count[0];\r\n\r\n return this.uow.getAptCaws(null, null, this.engagement.clientId, null, this.aptCawsPage, BUFFER_SIZE)\r\n .then(result => {\r\n this.aptCaws = result;\r\n this.setAvailableAptCaws();\r\n this.aptCawsLoading = false;\r\n });\r\n });\r\n }\r\n\r\n onAptCawsScrollToEnd() {\r\n this.fetchMoreAptCaws();\r\n }\r\n\r\n onAptCawsScroll(event) {\r\n if (this.aptCawsLoading || this.aptCawsCount <= this.aptCaws.length || this.aptCawsCount <= 50) {\r\n return;\r\n }\r\n\r\n if (event.end + NUMBER_OF_ITEMS_FROM_END_BEFORE_FETCHING_MORE >= this.aptCaws.length) {\r\n this.fetchMoreAptCaws();\r\n }\r\n }\r\n\r\n onAptCawsSearch(e) {\r\n //if (!e.items || e.items.length == 0) {\r\n this.aptCawName = e.term;\r\n this.searchAptCaws();\r\n //}\r\n }\r\n\r\n searchAptCaws(): void {\r\n clearTimeout(this.aptCawSearchTimer);\r\n\r\n this.aptCawSearchTimer = setTimeout(() => {\r\n if (this.aptCawName) {\r\n this.aptCawsPage = 0;\r\n\r\n this.aptCawsLoading = true;\r\n\r\n return this.uow.getAptCawsCount(null, this.aptCawName, this.engagement.clientId).then(count => {\r\n this.aptCawsCount = count[0];\r\n\r\n return this.uow.getAptCaws(null, this.aptCawName, this.engagement.clientId, null, this.aptCawsPage, BUFFER_SIZE)\r\n .then(result => {\r\n this.aptCawsLoading = false;\r\n this.aptCaws = result;\r\n this.setAvailableAptCaws();\r\n });\r\n });\r\n }\r\n }, SEARCH_TIMEOUT);\r\n }\r\n\r\n private fetchMoreAptCaws() {\r\n this.aptCawsPage++;\r\n\r\n this.aptCawsLoading = true;\r\n\r\n return this.uow.getAptCaws(null, null, this.engagement.clientId, null, this.aptCawsPage, BUFFER_SIZE)\r\n .then(result => {\r\n this.aptCawsLoading = false;\r\n this.aptCaws = this.aptCaws.concat(result);\r\n this.setAvailableAptCaws();\r\n });\r\n }\r\n\r\n\r\n getInspectionProfiles() {\r\n return this.uow.getInspectionProfilesForEngagement()\r\n .then(result => {\r\n this.inspectionProfiles = result;\r\n });\r\n }\r\n\r\n getInspectionProfileById(previewEngagement: boolean = true) {\r\n if (this.engagement.inspectionProfileId) {\r\n this.isBusy.set(LOADING_KEY, true);\r\n return this.uow.getInspectionProfileForEngagementById(this.engagement.inspectionProfileId)\r\n .then(result => {\r\n if (result) {\r\n let ip = this.inspectionProfiles.find(i => i.id == result[0].id);\r\n ip = result[0];\r\n this.previewEngagement = previewEngagement;\r\n this.engagement.inspectionProfile = ip;\r\n\r\n this.setHighLevelProfileSections();\r\n }\r\n })\r\n .finally(() => {\r\n this.isBusy.set(LOADING_KEY, false);\r\n });\r\n }\r\n }\r\n\r\n getEngagement(id: string) {\r\n this.id = id;\r\n this.cloneProfileNow = false;\r\n\r\n this.isBusy.set(LOADING_KEY, true, 'Loading engagement');\r\n if (id == 'new') {\r\n this.engagement = this.uow.engagements.createEntity();\r\n this.engagement.inspectionYear = new Date().getFullYear();\r\n this.engagement.businessLineId = null;\r\n this.engagement.inspectionProfileId = null;\r\n this.engagement.inspectionLeadId = null;\r\n this.engagement.officeId = null;\r\n this.engagement.regionCode = null;\r\n this.engagement.clientId = null;\r\n this.engagement.taxReviewerId = null;\r\n this.engagement.isReviewerId = null;\r\n this.engagement.marketCap = null;\r\n this.engagement.totalEngagementHours = null;\r\n this.engagement.status = modelEnum.EngagementStatus.draft;\r\n this.engagement.rating = modelEnum.EngagementRating.pending;\r\n const def = this.businessLines.find(m => m.name == 'Assurance');\r\n if (def) {\r\n this.engagement.businessLineId = def.id;\r\n this.disableBusinessLine = true;\r\n }\r\n return this.getClients()\r\n .finally(() => {\r\n this.isBusy.set(LOADING_KEY, false);\r\n });\r\n } else {\r\n return this.uow.getEngagementById(parseInt(id))\r\n .then(result => {\r\n if (result && result.length > 0) {\r\n this.engagement = result[0];\r\n this.oldInspectionEmployeeId = this.engagement.inspectionLeadId;\r\n\r\n const def = this.businessLines.find(m => m.name == 'Assurance');\r\n if (def) {\r\n this.engagement.businessLineId = def.id;\r\n this.disableBusinessLine = true;\r\n }\r\n\r\n this.setHighLevelEngagementSections();\r\n\r\n this.setHighLevelProfileSections();\r\n\r\n return this.uow.getHighLevelInspectionTeamMemberProfileSections(this.engagement.id)\r\n .then(result => {\r\n this.inspectionTeamMemberProfileSections = result;\r\n\r\n return Promise.resolve();\r\n //return this.getClients()\r\n // .then(() => {\r\n // this.getProjects();\r\n // this.getAptCaws();\r\n // });\r\n })\r\n .then(() => this.uow.getHighLevelInspectionTeamMemberEngagementSections(this.engagement.id))\r\n .then(result => {\r\n this.inspectionTeamMemberEngagementSections = result;\r\n\r\n return Promise.resolve();\r\n })\r\n .then(() => this.getClients())\r\n .then(() => {\r\n this.getProjects();\r\n this.getAptCaws();\r\n }).finally(() => {\r\n this.isBusy.set(LOADING_KEY, false);\r\n }); \r\n }\r\n else {\r\n this.router.navigate(['./engagements'], { relativeTo: this.activeRoute.parent });\r\n }\r\n });\r\n }\r\n }\r\n\r\n getStatusName(status: modelEnum.EngagementStatus) {\r\n const match = this.engagementStatuses.find(m => m.status == status);\r\n return match ? match.title : 'N/A';\r\n }\r\n\r\n setHighLevelProfileSections() {\r\n this.highLevelProfileSections = this.engagement.inspectionProfile && this.engagement.inspectionProfile.profileSections\r\n ? this.engagement.inspectionProfile.profileSections.filter(m => !m.parentSectionId || !m.parentSection.parentSectionId)\r\n .sort(Utilities.sortByName)\r\n : [];\r\n }\r\n\r\n setHighLevelEngagementSections() {\r\n this.highLevelEngagementSections = this.engagement.engagementSections\r\n .filter(es => !es.parentSectionId || !es.parentSection.parentSectionId)\r\n .sort(Utilities.sortByName);\r\n }\r\n\r\n expandAll() {\r\n if (this.engagement) {\r\n if (this.engagement.status > modelEnum.EngagementStatus.draft) {\r\n if (this.engagement.engagementSections && this.engagement.engagementSections.length) {\r\n this.engagement.engagementSections.forEach((m) => { m.isCollapsed = false; });\r\n }\r\n }\r\n else {\r\n if (this.engagement.inspectionProfile && this.engagement.inspectionProfile.profileSections) {\r\n this.engagement.inspectionProfile.profileSections.forEach((m) => { m.isCollapsed = false; });\r\n }\r\n }\r\n }\r\n }\r\n\r\n collapseAll() {\r\n if (this.engagement) {\r\n if (this.engagement.status > modelEnum.EngagementStatus.draft) {\r\n if (this.engagement.engagementSections && this.engagement.engagementSections.length) {\r\n this.engagement.engagementSections.forEach((m) => { m.isCollapsed = true; });\r\n }\r\n }\r\n else {\r\n if (this.engagement.inspectionProfile && this.engagement.inspectionProfile.profileSections) {\r\n this.engagement.inspectionProfile.profileSections.forEach((m) => { m.isCollapsed = true; });\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n syncMetadataFromProfile() {\r\n this.previewEngagement = false;\r\n const ip = this.inspectionProfiles.find(i => i.id == this.engagement.inspectionProfileId);\r\n if (ip.profileSections && ip.profileSections.some(p => p.questions && p.questions.length >= 0)) {\r\n //this.previewEngagement = true;\r\n //this.engagement.inspectionProfile = ip;\r\n\r\n this.getInspectionProfileById();\r\n } else {\r\n this.getInspectionProfileById(false);\r\n }\r\n if (this.engagement.inspectionProfileId) {\r\n if (!this.disableBusinessLine && !this.engagement.businessLineId) {\r\n this.engagement.businessLineId = this.engagement.inspectionProfile.businessLineId;\r\n }\r\n }\r\n }\r\n\r\n updateRegionCode() {\r\n if (this.engagement) {\r\n if (this.engagement.officeId) {\r\n const office = this.offices.find(m => m.id == this.engagement.officeId);\r\n if (office) {\r\n this.engagement.regionCode = office.regionCode;\r\n }\r\n else {\r\n this.engagement.regionCode = null;\r\n }\r\n }\r\n else {\r\n this.engagement.regionCode = null;\r\n }\r\n }\r\n }\r\n\r\n addTeamCaptainToTeamIfNecessary() {\r\n if (this.engagement) {\r\n if (this.engagement.inspectionLeadId) {\r\n if (!this.engagement.inspectionTeamMembers.some(m => m.employeeId == this.engagement.inspectionLeadId)) {\r\n const itm = this.uow.inspectionTeamMembers.createEntity();\r\n const employee = this.employees.find(m => m.id == this.engagement.inspectionLeadId);\r\n if (employee) {\r\n itm.employee = employee;\r\n itm.employeeId = employee.id;\r\n itm.engagement = this.engagement;\r\n itm.engagementId = this.engagement.id;\r\n this.engagement.inspectionTeamMembers.push(itm);\r\n }\r\n }\r\n\r\n this.oldInspectionEmployeeId = this.engagement.inspectionLeadId;\r\n }\r\n }\r\n }\r\n\r\n addInspectionTeamMember() {\r\n if (this.selectedInspectionTeamId) {\r\n if (!this.engagement.inspectionTeamMembers.some(m => m.employeeId == this.selectedInspectionTeamId)) {\r\n const itm = this.uow.inspectionTeamMembers.createEntity();\r\n const employee = this.employees.find(m => m.id == this.selectedInspectionTeamId);\r\n if (employee) {\r\n itm.employee = employee;\r\n itm.employeeId = employee.id;\r\n itm.engagement = this.engagement;\r\n itm.engagementId = this.engagement.id;\r\n this.engagement.inspectionTeamMembers.push(itm);\r\n }\r\n else {\r\n this.uow.inspectionTeamMembers.cancelChanges(itm);\r\n }\r\n }\r\n }\r\n\r\n this.selectedInspectionTeamId = null;\r\n }\r\n\r\n removeInspectionTeamMember(teamMember: model.InspectionTeamMember) {\r\n if (confirm('Remove \"' + teamMember.employee.fullName + '\" from the inspection team?')) {\r\n if (teamMember.id > 0) {\r\n teamMember.entityAspect.setDeleted();\r\n }\r\n else {\r\n this.uow.inspectionTeamMembers.cancelChanges(teamMember);\r\n }\r\n }\r\n }\r\n\r\n\r\n async addEngagementTeamMember() {\r\n if (this.selectedEngagementTeamId) {\r\n if (!this.engagement.engagementTeamMembers.some(m => m.employeeId == this.selectedEngagementTeamId)) {\r\n const etm = this.uow.engagementTeamMembers.createEntity();\r\n const employee = this.employees.find(m => m.id == this.selectedEngagementTeamId);\r\n if (employee) {\r\n let projectIds: string[] = [];\r\n this.engagement.engagementProjects.forEach(engagementProject => projectIds.push(engagementProject.projectId));\r\n let totalEmployeeProjectHours;\r\n\r\n await this.uow.getTotalEmployeeProjectHours(projectIds, employee.id)\r\n .then(result => totalEmployeeProjectHours = result[0])\r\n .catch(error => console.log(error));\r\n\r\n etm.employee = employee;\r\n etm.hours = totalEmployeeProjectHours ? totalEmployeeProjectHours : null;\r\n etm.inspectionTeamRoleId = null;\r\n etm.engagement = this.engagement;\r\n }\r\n else {\r\n this.uow.engagementTeamMembers.cancelChanges(etm);\r\n }\r\n }\r\n }\r\n\r\n this.selectedEngagementTeamId = null;\r\n }\r\n\r\n removeEngagementTeamMember(teamMember: model.EngagementTeamMember) {\r\n if (confirm('Remove \"' + teamMember.employee.fullName + '\" from the engagement team?')) {\r\n if (teamMember.id > 0) {\r\n teamMember.entityAspect.setDeleted();\r\n }\r\n else {\r\n this.uow.engagementTeamMembers.cancelChanges(teamMember);\r\n }\r\n }\r\n }\r\n\r\n addProject() {\r\n if (!this.selectedProject)\r\n return;\r\n if (!this.engagement.engagementProjects.find(p => p.projectId == this.selectedProject.id)) {\r\n if (!this.engagement.engagementProjects.length) {\r\n this.engagement.office = this.selectedProject.operatingUnit;\r\n this.engagement.regionCode = this.selectedProject.region;\r\n this.engagement.department = this.selectedProject.departmentName;\r\n }\r\n const engProj = this.uow.engagementProjects.createEntity();\r\n engProj.engagementId = this.engagement.id;\r\n engProj.engagement = this.engagement;\r\n engProj.projectId = this.selectedProject.id;\r\n this.engagement.engagementProjects.push(engProj);\r\n }\r\n if (this.selectedProject.entityAspect.entityState.isAddedModifiedOrDeleted()) {\r\n this.selectedProject.entityAspect.rejectChanges();\r\n }\r\n\r\n this.isBusy.set(LOADING_KEY, true, \"Loading project hours\");\r\n this.uow.getEmployeeProjectHours(this.selectedProject.id)\r\n .then(result => {\r\n if (result) {\r\n result.forEach(eph => {\r\n if (!this.engagement.engagementTeamMembers.find(tm => tm.employeeId == eph.employeeId)) {\r\n const etm = this.uow.engagementTeamMembers.createEntity({\r\n employeeId: eph.employeeId,\r\n inspectionTeamRole: this.teamMemberRoles.find(e => e.name.toLowerCase() == 'other')\r\n } as model.EngagementTeamMember);\r\n this.engagement.engagementTeamMembers.push(etm);\r\n }\r\n });\r\n }\r\n })\r\n .then(() => {\r\n if (this.engagement.engagementTeamMembers.length > 0) {\r\n this.engagement.totalEngagementHours = 0;\r\n this.engagement.engagementTeamMembers.forEach(async teamMember => {\r\n let projectIds: string[] = [];\r\n this.engagement.engagementProjects.forEach(engagementProject => projectIds.push(engagementProject.projectId));\r\n\r\n await this.uow.getTotalEmployeeProjectHours(projectIds, teamMember.employeeId)\r\n .then(result => {\r\n teamMember.hours = result[0];\r\n this.engagement.totalEngagementHours += teamMember.hours;\r\n this.engagement.totalEngagementHours = Math.round(this.engagement.totalEngagementHours * 100) / 100;\r\n })\r\n .catch(error => console.log(error));\r\n })\r\n }\r\n })\r\n .catch(error => console.log(error))\r\n .finally(() => this.isBusy.set(LOADING_KEY, false));\r\n\r\n setTimeout(() => this.selectedProject = null, 1);\r\n this.setAvailableProjects();\r\n }\r\n\r\n addAptCaw() {\r\n if (!this.selectedAptCaw)\r\n return;\r\n\r\n if (!this.engagement.engagementAptCaws.find(a => a.aptCawId == this.selectedAptCaw.id)) {\r\n if (!this.engagement.engagementAptCaws.length) {\r\n this.engagement.engagementType = this.selectedAptCaw.engagementType;\r\n this.engagement.clientEntityType = this.selectedAptCaw.clientEntityType;\r\n this.engagement.clientFiscalYearEnd = this.selectedAptCaw.fiscalYearEnd;\r\n }\r\n const engApt = this.uow.engagementAptCaws.createEntity();\r\n engApt.engagementId = this.engagement.id;\r\n engApt.engagement = this.engagement;\r\n engApt.aptCawId = this.selectedAptCaw.id;\r\n this.engagement.engagementAptCaws.push(engApt);\r\n }\r\n if (this.selectedAptCaw.entityAspect.entityState.isAddedModifiedOrDeleted()) {\r\n this.selectedAptCaw.entityAspect.rejectChanges();\r\n }\r\n const inds = (this.selectedAptCaw.industry || '').split('|');\r\n inds.forEach(i => {\r\n if (i) {\r\n const ind = this.industries.find(e => e.name == i);\r\n if (ind) {\r\n this.selectedIndustry = ind;\r\n this.addIndustry();\r\n }\r\n else {\r\n this.addIndustry(i);\r\n }\r\n }\r\n });\r\n setTimeout(() => this.selectedAptCaw = null, 1);\r\n this.setAvailableAptCaws();\r\n }\r\n\r\n addIndustry(name?: string) {\r\n let duplicateIndustry = this.engagement.engagementIndustries.filter(i => i.industryName == name && i.industryName != null)\r\n if (duplicateIndustry && duplicateIndustry.length > 0) {\r\n return;\r\n }\r\n if (name) {\r\n const engInd = this.uow.engagementIndustries.createEntity();\r\n engInd.engagementId = this.engagement.id;\r\n engInd.engagement = this.engagement;\r\n engInd.industryName = name;\r\n this.engagement.engagementIndustries.push(engInd);\r\n }\r\n else {\r\n if (!this.selectedIndustry)\r\n return;\r\n if (this.selectedIndustry && !this.engagement.engagementIndustries.find(i => i.industryId == this.selectedIndustry.id)) {\r\n const engInd = this.uow.engagementIndustries.createEntity();\r\n engInd.engagementId = this.engagement.id;\r\n engInd.engagement = this.engagement;\r\n engInd.industryId = this.selectedIndustry.id;\r\n this.engagement.engagementIndustries.push(engInd);\r\n }\r\n if (this.selectedIndustry.entityAspect.entityState.isAddedModifiedOrDeleted()) {\r\n this.selectedIndustry.entityAspect.rejectChanges();\r\n }\r\n setTimeout(() => this.selectedIndustry = null, 1);\r\n }\r\n }\r\n\r\n addEngagementQuestionActivatingTag(engagement, commitAfterAdd) {\r\n // add EngagementQuestionActivating tag when new EngagementTag is created\r\n engagement.engagementSections.forEach(engagementSection => {\r\n engagementSection.engagementQuestions.forEach(engagementQuestion => {\r\n engagementQuestion.question.profileQuestionActivatingTags.forEach(activatingTag => {\r\n engagementQuestion.engagementQuestionOptions.forEach(option => {\r\n this.tags.forEach(t => {\r\n if (activatingTag.tagId == t.id && activatingTag.questionId == engagementQuestion.questionId && activatingTag.questionOptionId == option.questionOptionId) {\r\n const eqat = this.uow.engagementQuestionActivatingTags.createEntity();\r\n\r\n eqat.tag = t;\r\n eqat.tagId = t.id;\r\n eqat.engagementQuestionOption = option;\r\n eqat.engagementQuestionOptionId = option.id;\r\n\r\n option.engagementQuestionActivatingTags.push(eqat);\r\n }\r\n });\r\n });\r\n });\r\n });\r\n });\r\n\r\n if (commitAfterAdd) {\r\n this.uow.commit();\r\n }\r\n }\r\n\r\n removeProject(engProj: model.EngagementProject) {\r\n const ind = this.engagement.engagementProjects.findIndex(p => p.projectId == engProj.projectId);\r\n if (ind >= 0) {\r\n this.uow.getEmployeeProjectHours(this.engagement.engagementProjects[ind].projectId)\r\n .then(result => {\r\n if (result) {\r\n result.forEach(eph => {\r\n const tmidx = this.engagement.engagementTeamMembers.findIndex(tm => !tm.entityAspect.entityState.isDeleted() && tm.employeeId == eph.employeeId);\r\n if (tmidx >= 0) {\r\n this.engagement.engagementTeamMembers[tmidx].hours -= eph.hours;\r\n this.engagement.totalEngagementHours -= eph.hours;\r\n if (this.engagement.engagementTeamMembers[tmidx].hours <= 0) {\r\n this.engagement.engagementTeamMembers[tmidx].entityAspect.setDeleted();\r\n }\r\n }\r\n });\r\n if (this.engagement.totalEngagementHours < 0)\r\n this.engagement.totalEngagementHours = 0;\r\n this.engagement.totalEngagementHours = Math.round(this.engagement.totalEngagementHours * 100) / 100;\r\n }\r\n })\r\n if (engProj.entityAspect.entityState.isAdded()) {\r\n this.engagement.engagementProjects[ind].entityAspect.rejectChanges();\r\n } else {\r\n this.engagement.engagementProjects[ind].entityAspect.setDeleted();\r\n }\r\n if (!this.engagement.engagementProjects.length) {\r\n this.engagement.officeId = null;\r\n this.engagement.regionCode = null;\r\n this.engagement.department = null;\r\n this.engagement.totalEngagementHours = 0;\r\n }\r\n }\r\n this.setAvailableProjects();\r\n }\r\n\r\n removeAptCaw(engAptCaw: model.EngagementAptCaw) {\r\n const ind = this.engagement.engagementAptCaws.findIndex(a => a.aptCawId == engAptCaw.aptCawId);\r\n if (ind >= 0) {\r\n if (engAptCaw.entityAspect.entityState.isAdded()) {\r\n this.engagement.engagementAptCaws[ind].entityAspect.rejectChanges();\r\n } else {\r\n this.engagement.engagementAptCaws[ind].entityAspect.setDeleted();\r\n }\r\n if (!this.engagement.engagementAptCaws.length) {\r\n this.engagement.engagementType = null;\r\n this.engagement.clientEntityType = null;\r\n this.engagement.clientFiscalYearEnd = null;\r\n const industryCount = this.engagement.engagementIndustries.length;\r\n for (let i = 0; i < industryCount; i++) {\r\n this.removeIndustry(this.engagement.engagementIndustries[0]);\r\n }\r\n }\r\n }\r\n this.setAvailableAptCaws();\r\n }\r\n\r\n removeIndustry(engInd: model.EngagementIndustry) {\r\n const ind = this.engagement.engagementIndustries.findIndex(i => i.industryId == engInd.industryId);\r\n if (ind >= 0) {\r\n if (engInd.entityAspect.entityState.isAdded()) {\r\n this.engagement.engagementIndustries[ind].entityAspect.rejectChanges();\r\n } else {\r\n this.engagement.engagementIndustries[ind].entityAspect.setDeleted();\r\n }\r\n }\r\n }\r\n\r\n addInspectionTeamMemberEngagementSectionByIndex(index, inspectionTeamMemberId) {\r\n\r\n let selectedSection = this.selectedEngagementSections[index];\r\n\r\n this.addInspectionTeamMemberEngagementSection(selectedSection, inspectionTeamMemberId);\r\n\r\n setTimeout(() => this.selectedEngagementSections[index] = null, 1);\r\n }\r\n\r\n addInspectionTeamMemberEngagementSectionByProfileSectionId(profileSectionId, inspectionTeamMemberId) {\r\n let selectedSection = this.highLevelEngagementSections.find(es => es.profileSectionId == profileSectionId);\r\n\r\n this.addInspectionTeamMemberEngagementSection(selectedSection, inspectionTeamMemberId);\r\n }\r\n\r\n addInspectionTeamMemberEngagementSection(engagementSection: model.EngagementSection, inspectionTeamMemberId) {\r\n if (!engagementSection) {\r\n return;\r\n }\r\n\r\n if (engagementSection && !this.inspectionTeamMemberEngagementSections.find(es => es.engagementSectionId == engagementSection.id && es.inspectionTeamMemberId == inspectionTeamMemberId)) {\r\n const newSection = this.uow.inspectionTeamMemberEngagementSections.createEntity();\r\n newSection.inspectionTeamMemberId = inspectionTeamMemberId;\r\n newSection.engagementSectionId = engagementSection.id;\r\n\r\n this.inspectionTeamMemberEngagementSections.push(newSection);\r\n\r\n if (engagementSection.parentSectionId == null) {\r\n this.addFirstLevelChildInspectionTeamMemberEngagementSections(this.engagement.engagementSections.filter(es => es.parentSectionId == newSection.engagementSectionId), inspectionTeamMemberId);\r\n }\r\n }\r\n\r\n if (engagementSection.entityAspect.entityState.isAddedModifiedOrDeleted()) {\r\n engagementSection.entityAspect.rejectChanges();\r\n }\r\n }\r\n\r\n addInspectionTeamMemberProfileSection(index, inspectionTeamMemberId) {\r\n let selectedSection = this.selectedProfileSections[index];\r\n\r\n if (!selectedSection) {\r\n return;\r\n }\r\n\r\n if (selectedSection && !this.inspectionTeamMemberProfileSections.find(ps => ps.profileSectionId == selectedSection.id && ps.inspectionTeamMemberId == inspectionTeamMemberId)) {\r\n const newSection = this.uow.inspectionTeamMemberProfileSections.createEntity();\r\n newSection.inspectionTeamMemberId = inspectionTeamMemberId;\r\n newSection.profileSectionId = selectedSection.id;\r\n\r\n this.inspectionTeamMemberProfileSections.push(newSection);\r\n\r\n if (selectedSection.parentSectionId == null) {\r\n this.addFirstLevelChildInspectionTeamMemberProfileSections(this.engagement.inspectionProfile.profileSections.filter(ps => ps.parentSectionId == newSection.profileSectionId), inspectionTeamMemberId);\r\n }\r\n\r\n }\r\n\r\n if (selectedSection.entityAspect.entityState.isAddedModifiedOrDeleted()) {\r\n selectedSection.entityAspect.rejectChanges();\r\n }\r\n\r\n setTimeout(() => this.selectedProfileSections[index] = null, 1);\r\n }\r\n\r\n addFirstLevelChildInspectionTeamMemberProfileSections(sections: model.ProfileSection[], teamMemberId: number) {\r\n sections.forEach(section => {\r\n if (teamMemberId) {\r\n let existingInspectionTeamMemberSection = this.inspectionTeamMemberProfileSections.find(ps => ps.profileSectionId == section.id && ps.inspectionTeamMemberId == teamMemberId);\r\n\r\n if (!existingInspectionTeamMemberSection) {\r\n const newSection = this.uow.inspectionTeamMemberProfileSections.createEntity();\r\n newSection.inspectionTeamMemberId = teamMemberId;\r\n newSection.profileSectionId = section.id;\r\n\r\n this.inspectionTeamMemberProfileSections.push(newSection);\r\n }\r\n }\r\n });\r\n }\r\n\r\n addFirstLevelChildInspectionTeamMemberEngagementSections(sections: model.EngagementSection[], teamMemberId: number) {\r\n sections.forEach(section => {\r\n if (teamMemberId) {\r\n let existingInspectionTeamMemberSection = this.inspectionTeamMemberEngagementSections.find(es => es.engagementSectionId == section.id && es.inspectionTeamMemberId == teamMemberId);\r\n\r\n if (!existingInspectionTeamMemberSection) {\r\n const newSection = this.uow.inspectionTeamMemberEngagementSections.createEntity();\r\n newSection.inspectionTeamMemberId = teamMemberId;\r\n newSection.engagementSectionId = section.id;\r\n\r\n this.inspectionTeamMemberEngagementSections.push(newSection);\r\n }\r\n }\r\n });\r\n }\r\n\r\n removeChildInspectionTeamMemberEngegementSections(sections: model.EngagementSection[], teamMemberId) {\r\n sections.forEach(section => {\r\n\r\n this.removeChildInspectionTeamMemberEngegementSections(this.engagement.engagementSections.filter(es => !es.isDeleted && es.parentSectionId == section.id), teamMemberId);\r\n\r\n let index = this.inspectionTeamMemberEngagementSections.findIndex(es => es.engagementSectionId == section.id && es.inspectionTeamMemberId == teamMemberId);\r\n\r\n if (index >= 0) {\r\n if (this.inspectionTeamMemberEngagementSections[index].entityAspect.entityState.isAdded()) {\r\n this.inspectionTeamMemberEngagementSections[index].entityAspect.rejectChanges();\r\n this.inspectionTeamMemberEngagementSections.splice(index, 1);\r\n } else {\r\n this.inspectionTeamMemberEngagementSections[index].entityAspect.setDeleted();\r\n this.inspectionTeamMemberEngagementSections.splice(index, 1);\r\n }\r\n }\r\n });\r\n }\r\n\r\n removeInspectionTeamMemberEngagementSection(section: model.InspectionTeamMemberEngagementSection) {\r\n\r\n this.removeChildInspectionTeamMemberEngegementSections(this.engagement.engagementSections.filter(es => !es.isDeleted && es.parentSectionId == section.engagementSectionId), section.inspectionTeamMemberId);\r\n\r\n const index = this.inspectionTeamMemberEngagementSections.findIndex(es => es.engagementSectionId == section.engagementSectionId && es.inspectionTeamMemberId == section.inspectionTeamMemberId);\r\n\r\n if (index >= 0) {\r\n if (section.entityAspect.entityState.isAdded()) {\r\n this.inspectionTeamMemberEngagementSections[index].entityAspect.rejectChanges();\r\n this.inspectionTeamMemberEngagementSections.splice(index, 1);\r\n } else {\r\n this.inspectionTeamMemberEngagementSections[index].entityAspect.setDeleted();\r\n this.inspectionTeamMemberEngagementSections.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n removeChildInspectionTeamMemberProfileSections(sections: model.ProfileSection[], teamMemberId) {\r\n sections.forEach(section => {\r\n\r\n this.removeChildInspectionTeamMemberProfileSections(this.engagement.inspectionProfile.profileSections.filter(ps => !ps.isDeleted && ps.parentSectionId == section.id), teamMemberId);\r\n\r\n let index = this.inspectionTeamMemberProfileSections.findIndex(ps => ps.profileSectionId == section.id && ps.inspectionTeamMemberId == teamMemberId);\r\n\r\n if (index >= 0) {\r\n if (this.inspectionTeamMemberProfileSections[index].entityAspect.entityState.isAdded()) {\r\n this.inspectionTeamMemberProfileSections[index].entityAspect.rejectChanges();\r\n this.inspectionTeamMemberProfileSections.splice(index, 1);\r\n } else {\r\n this.inspectionTeamMemberProfileSections[index].entityAspect.setDeleted();\r\n this.inspectionTeamMemberProfileSections.splice(index, 1);\r\n }\r\n }\r\n });\r\n }\r\n\r\n removeInspectionTeamMemberProfileSection(section) {\r\n\r\n this.removeChildInspectionTeamMemberProfileSections(this.engagement.inspectionProfile.profileSections.filter(ps => !ps.isDeleted && ps.parentSectionId == section.profileSectionId), section.inspectionTeamMemberId);\r\n\r\n const index = this.inspectionTeamMemberProfileSections.findIndex(ps => ps.profileSectionId == section.profileSectionId && ps.inspectionTeamMemberId == section.inspectionTeamMemberId);\r\n\r\n if (index >= 0) {\r\n if (section.entityAspect.entityState.isAdded()) {\r\n this.inspectionTeamMemberProfileSections[index].entityAspect.rejectChanges();\r\n this.inspectionTeamMemberProfileSections.splice(index, 1);\r\n } else {\r\n this.inspectionTeamMemberProfileSections[index].entityAspect.setDeleted();\r\n this.inspectionTeamMemberProfileSections.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n specialtyReviewerTypeAdded() {\r\n setTimeout(() => this.updateTaxAndISReviewers(), 1);\r\n }\r\n\r\n updateTaxAndISReviewers() {\r\n let taxReviewer = this.assignedInspectionTeamMembers.find(tm => tm.specialtyReviewerType && tm.specialtyReviewerType.name == 'Tax Reviewer');\r\n let isReviewer = this.assignedInspectionTeamMembers.find(tm => tm.specialtyReviewerType && tm.specialtyReviewerType.name == 'IS Reviewer');\r\n\r\n if ((taxReviewer && this.engagement.taxReviewerId != taxReviewer.employeeId) || this.engagement.taxReviewerId) {\r\n this.engagement.taxReviewerId = taxReviewer ? taxReviewer.employeeId : null;\r\n }\r\n\r\n if ((isReviewer && this.engagement.isReviewerId != isReviewer.employeeId) || this.engagement.isReviewerId) {\r\n this.engagement.isReviewerId = isReviewer ? isReviewer.employeeId : null;\r\n }\r\n }\r\n\r\n convertInspectionTeamMemberProfileSectionsToEngagementSections() {\r\n let engagementSections = this.engagement.engagementSections;\r\n\r\n this.inspectionTeamMemberProfileSections\r\n .forEach(itmps => {\r\n let selectedSection = engagementSections.find(es => es.profileSectionId == itmps.profileSectionId);\r\n\r\n if (selectedSection && !this.inspectionTeamMemberEngagementSections.find(es => es.engagementSectionId == selectedSection.id && es.inspectionTeamMemberId == itmps.inspectionTeamMemberId)) {\r\n const newSection = this.uow.inspectionTeamMemberEngagementSections.createEntity();\r\n newSection.inspectionTeamMemberId = itmps.inspectionTeamMemberId;\r\n newSection.engagementSectionId = selectedSection.id;\r\n\r\n this.inspectionTeamMemberEngagementSections.push(newSection);\r\n\r\n }\r\n\r\n if (selectedSection && selectedSection.entityAspect.entityState.isAddedModifiedOrDeleted()) {\r\n selectedSection.entityAspect.rejectChanges();\r\n }\r\n });\r\n }\r\n\r\n saveChanges() {\r\n // Make sure team captain is an inspection team member before saving\r\n this.addTeamCaptainToTeamIfNecessary();\r\n\r\n //const changes = this.uow.getChanges();\r\n //changes.forEach(change => {\r\n // change.entityAspect.validateEntity();\r\n // const errors = change.entityAspect.getValidationErrors();\r\n //});\r\n\r\n this.isBusy.set(SAVING_KEY, true, 'Saving engagement');\r\n \r\n this.uow.commit()\r\n .then(() => {\r\n\r\n this.uow.inspectionTeamMembers.saveChanges();\r\n return this.uow.commit()\r\n .then(() => this.uow.updateChildInspectionTeamMemberProfileSections(this.engagement.id))\r\n .then(() => {\r\n\r\n if (this.id != 'new') {\r\n this.uow.updateActivatedEngagementQuestions(this.engagement.id);\r\n this.sharedData.setMyEngagements(null);\r\n }\r\n if (!confirm('Engagement saved! Continue editing this engagement?')) {\r\n this.router.navigate(['./engagements'], { relativeTo: this.activeRoute.parent });\r\n }\r\n else {\r\n if (this.id == 'new') {\r\n this.router.navigate(['./edit'], { queryParams: { id: this.engagement.id }, relativeTo: this.activeRoute.parent });\r\n }\r\n }\r\n });\r\n })\r\n .catch(reason => {\r\n console.error(reason);\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(SAVING_KEY, false);\r\n });\r\n }\r\n\r\n publishEngagement() {\r\n if (confirm(\"Publish now? This will apply the selected questionnaire to this engagement and set the engagement as Active.\")) {\r\n this.cloneProfileNow = true;\r\n\r\n this.cloneInspectionProfileIntoEngagement();\r\n }\r\n }\r\n\r\n cloneInspectionProfileIntoEngagement() {\r\n if (this.engagement && this.engagement.inspectionProfile) {\r\n // Make sure team captain is an inspection team member before saving\r\n this.addTeamCaptainToTeamIfNecessary();\r\n\r\n this.isBusy.set(CLONING_KEY, true, 'Applying questionnaire \"' + this.engagement.inspectionProfile.name + '\" to this engagement');\r\n // Save any changes to the engagement, then clone the inspection profile\r\n return this.uow.commit()\r\n .then(() => {\r\n this.isPublishing = true;\r\n return this.uow.publishEngagement(this.engagement.id)\r\n .then((result) => {\r\n const engagement = result[0];\r\n this.addEngagementQuestionActivatingTag(engagement, true);\r\n this.uow.updateActivatedEngagementQuestions(this.engagement.id);\r\n\r\n this.setHighLevelEngagementSections();\r\n\r\n this.setHighLevelProfileSections();\r\n\r\n this.convertInspectionTeamMemberProfileSectionsToEngagementSections();\r\n return this.uow.commit();\r\n })\r\n .then(() => this.uow.updateChildInspectionTeamMemberProfileSections(this.engagement.id))\r\n .then(() => {\r\n if (!confirm('Engagement published! Continue editing this engagement?')) {\r\n this.router.navigate(['./engagements'], { relativeTo: this.activeRoute.parent });\r\n }\r\n else {\r\n this.router.navigate(['./edit'], { queryParams: { id: this.engagement.id }, relativeTo: this.activeRoute.parent });\r\n }\r\n })\r\n .catch(reason => {\r\n console.error(reason);\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isPublishing = false;\r\n this.isBusy.set(CLONING_KEY, false);\r\n });\r\n })\r\n .catch(reason => {\r\n console.error(reason);\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(CLONING_KEY, false);\r\n });\r\n }\r\n }\r\n\r\n markReviewComplete() {\r\n this.dialog.open(ConfirmationDialogComponent, {\r\n data: {\r\n title: \"Confirm\",\r\n content: \"Changes cannot be undone. Would you like to continue?\"\r\n }\r\n })\r\n .afterClosed().toPromise().then(response => {\r\n if (response == \"Yes\") {\r\n this.engagement.status = modelEnum.EngagementStatus.teamCaptainReviewComplete;\r\n this.engagement.signOffEmployeeId = (this.msalService.instance.getAllAccounts()[0] as Profile).idTokenClaims.employeeID;\r\n this.engagement.signOffDate = Utilities.getCurrentDate();\r\n this.uow.engagements.saveChanges([this.engagement]);\r\n }\r\n });\r\n }\r\n\r\n markRequiresChanges() {\r\n this.dialog.open(ConfirmationDialogComponent, {\r\n data: {\r\n title: \"Confirm\",\r\n content: \"Changes cannot be undone. Would you like to continue?\"\r\n }\r\n })\r\n .afterClosed().toPromise().then(response => {\r\n if (response == \"Yes\") {\r\n this.engagement.status = modelEnum.EngagementStatus.changesRequired;\r\n this.engagement.signOffEmployeeId = null;\r\n this.engagement.signOffDate = null;\r\n this.uow.engagements.saveChanges([this.engagement]);\r\n }\r\n });\r\n }\r\n\r\n markArchived() {\r\n this.dialog.open(ConfirmationDialogComponent, {\r\n data: {\r\n title: \"Confirm\",\r\n content: \"Changes cannot be undone. Would you like to continue?\"\r\n }\r\n })\r\n .afterClosed().toPromise().then(response => {\r\n if (response == \"Yes\") {\r\n this.engagement.status = modelEnum.EngagementStatus.archived;\r\n this.uow.engagements.saveChanges([this.engagement]);\r\n }\r\n });\r\n }\r\n\r\n\r\n formatDate(value: any): string {\r\n return moment(value).format('YYYY-MM-DD hh:mm A Z');\r\n }\r\n\r\n\r\n goHome() {\r\n this.router.navigate(['./engagements'], { relativeTo: this.activeRoute.parent });\r\n }\r\n}\r\n","
\r\n

Inspection Code Setup

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Please note: * indicates a required field\r\n
\r\n
\r\n
\r\n Metadata\r\n
\r\n
\r\n \r\n
\r\n

{{getStatusName(engagement.status)}}

\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Invalid\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Engagement Code is invalid.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n Loaded {{clients.length}} of {{clientsCount}}\r\n \r\n \r\n {{item.label}}\r\n \r\n \r\n Client is invalid.\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Loaded {{projects.length}} of {{projectsCount}}\r\n \r\n \r\n {{item.label}}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {{engProj?.project.label}}
\r\n Project is invalid.\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Loaded {{aptCaws.length}} of {{aptCawsCount}}\r\n \r\n \r\n {{item.label}}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {{engApt.aptCaw.label}}
\r\n APT CAW is invalid.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n Client Fiscal Year End is invalid.\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Total Engagement Hours is invalid.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Office is invalid.\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Region is invalid.\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Business Line is invalid.\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {{engInd.industryName || engInd.industry.name}}
\r\n Industry is invalid.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Market Cap is invalid.\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n Start of Inspection Fieldwork is invalid.\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n End of Inspection Fieldwork is invalid.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Engagement Review Questionnaire\r\n
\r\n \r\n
\r\n 0 && engagement.status > 0\"\r\n required\r\n (change)=\"syncMetadataFromProfile()\">\r\n \r\n {{item.name}}\r\n \r\n \r\n \r\n \r\n Engagement Review Questionnaire is invalid.\r\n \r\n
    \r\n
  • \r\n \r\n The Engagement Review Questionnaire defines the sections and questions associated with this engagement.\r\n
  • \r\n
  • 0\">\r\n \r\n Engagement Review Questionnaire cannot be changed once engagement is active.\r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  1. \r\n \r\n
  2. \r\n
\r\n
\r\n
\r\n
0\">\r\n
\r\n
    \r\n
  1. \r\n \r\n
  2. \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Inspection Team\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
NameSpecialty ReviewerSections Assigned
\r\n \r\n \r\n Engagement contains no inspection team members…\r\n \r\n
\r\n \r\n TC\r\n \r\n {{teamMember.employee?.fullName}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {{section.profileSection.name}}
\r\n
0\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {{section.engagementSection.name}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Engagement Team\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
NameHoursRole *
\r\n \r\n \r\n Engagement contains no engagement team members…\r\n \r\n
\r\n \r\n {{teamMember.employee?.fullName}}\r\n \r\n \r\n \r\n Role is invalid.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Comments\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport Utilities from '../../../services/utilities';\r\nimport { EngagementSection, EngagementQuestion } from '../../../../model/model';\r\n\r\n@Component({\r\n selector: 'engagement-section-tree-node-viewer',\r\n inputs: ['node', 'i'],\r\n templateUrl: './engagement-tree-node-viewer.component.html'\r\n})\r\nexport class EngagementSectionViewTreeNode implements OnInit {\r\n @Input() node: EngagementSection;\r\n @Input() i: number;\r\n @Input() context: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n get currentNodes() {\r\n return this.node.childSections ? this.node.childSections.filter(m => !m.isDeleted).sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n get questions() {\r\n return this.node.engagementQuestions ? this.node.engagementQuestions.filter(m => !m.isDeleted).sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n\r\n toggleSection() {\r\n if (this.node) {\r\n this.node.isCollapsed = !this.node.isCollapsed;\r\n }\r\n }\r\n\r\n\r\n viewQuestion(question: EngagementQuestion) {\r\n this.context.activeEngagementQuestion = question;\r\n\r\n this.context.showQuestionViewer = true;\r\n }\r\n\r\n\r\n getDisplayText(question: EngagementQuestion) {\r\n return question.name || question.description.substr(0, 40) + '...';\r\n }\r\n}\r\n","
\r\n
{{node.name}}
\r\n
\r\n

Section contains no questions

\r\n
    0\" class=\"question-list mb-2\">\r\n
  1. {{getDisplayText(question)}}
  2. \r\n
\r\n
    0\">\r\n
  1. \r\n \r\n
  2. \r\n
\r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport Utilities from '../../../services/utilities';\r\nimport { ProfileSection, Question } from '../../../../model/model';\r\n\r\n@Component({\r\n selector: 'section-tree-node-viewer',\r\n inputs: ['node', 'i'],\r\n templateUrl: './tree-node-viewer.component.html'\r\n})\r\nexport class ProfileSectionViewTreeNode implements OnInit {\r\n @Input() node: ProfileSection;\r\n @Input() i: number;\r\n @Input() context: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n get currentNodes() {\r\n return this.node.childSections ? this.node.childSections.filter(m => !m.isDeleted).sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n get questions() {\r\n return this.node.questions ? this.node.questions.filter(m => !m.isDeleted).sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n\r\n toggleSection() {\r\n if (this.node) {\r\n this.node.isCollapsed = !this.node.isCollapsed;\r\n }\r\n }\r\n\r\n\r\n viewQuestion(question: Question) {\r\n this.context.activeQuestion = question;\r\n\r\n this.context.showQuestionViewer = true;\r\n }\r\n\r\n getDisplayText(question: Question) {\r\n return question.name || question.description.substr(0, 40) + '...';\r\n }\r\n}\r\n","
\r\n
{{node.name}}
\r\n
\r\n

Section contains no questions

\r\n
    0\" class=\"question-list mb-2\">\r\n
  1. {{getDisplayText(question)}}
  2. \r\n
\r\n
    0\">\r\n
  1. \r\n \r\n
  2. \r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../services/unit-of-work/unit-of-work.service';\r\nimport { ApplicationInsightsService } from '../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../services/dialog-helper';\r\n\r\n\r\n@Component({\r\n selector: 'app-user-not-active',\r\n templateUrl: './not-active.component.html',\r\n})\r\nexport class NoLoginFoundComponent implements OnInit {\r\n\r\n constructor(\r\n private uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n public dialogHelper: DialogHelper\r\n ) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n}\r\n","\r\n
\r\n

\r\n \r\n User Not Found\r\n

\r\n

\r\n We're sorry. We could not find an active account matching your credentials. Please contact your administrator if you believe this to be incorrect.\r\n

\r\n
\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../../services/unit-of-work/unit-of-work.service';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ApplicationInsightsService } from '../../../services/application-insights/application-insights.service';\r\nimport { ServerSideConfigDataService } from '../../../services/server-side-config-data/server-side-config-data.service';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { DialogHelper } from '../../../services/dialog-helper';\r\nimport { IsBusyService } from '../../../services/is-busy/is-busy.service';\r\nimport { Employee } from '../../../../model/model';\r\nimport { MyInspectionsSummaryDto, GridFilter } from '../../../../model/modelDto';\r\nimport { ProgressStatus } from '../../../../model/modelEnums';\r\nimport { GlobalErrorHandler } from '../../../services/global-error-handler';\r\n\r\nconst LOADING_KEY: string = 'my-inspections:loadData';\r\nconst SAVING_KEY: string = 'my-inspections:saveData';\r\nconst DEFAULT_LIMIT: number = 15;\r\n\r\n@Component({\r\n selector: 'app-my-inspections',\r\n templateUrl: './home.component.html',\r\n})\r\nexport class MyInspectionsComponent implements OnInit {\r\n me: Employee;\r\n\r\n isLoading: boolean = false;\r\n currentYear = new Date().getFullYear();\r\n\r\n page: number = 1;\r\n limit: number = DEFAULT_LIMIT;\r\n pageCount: number = 1;\r\n rowCount: number = 0;\r\n engagementsCount: number = 0;\r\n pageLimitOptions = [15, 25, 50, 100];\r\n inspectionYears: number[] = [];\r\n inspectionYear: number = this.currentYear;\r\n\r\n filters: GridFilter[] = [];\r\n\r\n myInspectionsSummary: MyInspectionsSummaryDto[] = [];\r\n\r\n clientNames: string = null;\r\n engagementCodes: string = null;\r\n\r\n private subscriptions = new Subscription();\r\n\r\n constructor(private uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n private activeRoute: ActivatedRoute,\r\n public router: Router,\r\n\t\tpublic isBusy: IsBusyService,\r\n public dialogHelper: DialogHelper,\r\n private serverData: ServerSideConfigDataService\r\n ) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.subscriptions.add(this.serverData.configDataLoaded$.subscribe(() => {\r\n this.me = this.serverData.configData.me;\r\n }));\r\n this.activeRoute.queryParams.subscribe(routeParams => {\r\n this.page = routeParams.page && !Number.isNaN(routeParams.page) ? parseInt(routeParams.page) : 1;\r\n this.limit = routeParams.limit && !Number.isNaN(routeParams.limit) ? parseInt(routeParams.limit) : DEFAULT_LIMIT;\r\n this.updateFilters('year', this.inspectionYear);\r\n this.updateDataGrid();\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n const proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n get activeInspections() {\r\n return this.myInspectionsSummary.sort((a, b) => { return a.engagementClient.localeCompare(b.engagementClient); });\r\n }\r\n\r\n\r\n updateDataGrid() {\r\n this.isLoading = true;\r\n this.isBusy.set(LOADING_KEY, true, 'Loading your inspections');\r\n Promise\r\n .all([\r\n this.getRowCount(),\r\n this.getItems(this.page, this.limit)])\r\n .then(() => {\r\n this.getPageCount(this.limit);\r\n this.getInspectionYears();\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(LOADING_KEY, false);\r\n this.isLoading = false;\r\n });\r\n }\r\n\r\n updateFilters(key: string, value: any) {\r\n if (key) {\r\n if (!value || value == '') {\r\n this.removeFilter(key);\r\n } else {\r\n if (this.filters.some(m => m.key == key)) {\r\n const filter = this.filters.find(m => m.key == key);\r\n filter.value = value;\r\n }\r\n else {\r\n this.filters.push({ key: key, value: value } as GridFilter)\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeFilter(key: string) {\r\n const i = this.filters.findIndex(m => m.key == key);\r\n if (i >= 0) {\r\n this.filters.splice(i, 1);\r\n }\r\n }\r\n\r\n getPageCount(limit: number = DEFAULT_LIMIT) {\r\n if (this.rowCount > 0) {\r\n this.pageCount = Math.ceil(this.rowCount / limit);\r\n if (this.pageCount == 0) {\r\n this.pageCount = 1;\r\n }\r\n } else {\r\n this.pageCount = 1;\r\n }\r\n }\r\n\r\n getRowCount() {\r\n this.updateFilters('code', this.engagementCodes);\r\n if (this.inspectionYear != 0) {\r\n this.updateFilters('year', this.inspectionYear);\r\n }\r\n else {\r\n this.removeFilter('year');\r\n }\r\n return this.uow.getMyInspectionsCount(JSON.stringify(this.filters))\r\n .then(result => {\r\n this.rowCount = result[0];\r\n });\r\n }\r\n\r\n getItems(page: number = 1, limit: number = DEFAULT_LIMIT) {\r\n if (this.inspectionYear == 0) this.removeFilter('year');\r\n return this.uow.getMyInspections(page, limit, JSON.stringify(this.filters))\r\n .then(result => {\r\n this.myInspectionsSummary = result;\r\n });\r\n }\r\n\r\n getInspectionYears() {\r\n return this.uow.getInspectionYears()\r\n .then(result => {\r\n this.inspectionYears = result;\r\n });\r\n }\r\n\r\n applyPrimaryFilters() {\r\n this.updateFilters('code', this.engagementCodes);\r\n this.updateFilters('year', this.inspectionYear);\r\n this.updateDataGrid();\r\n }\r\n\r\n clearPrimaryFilters() {\r\n this.engagementCodes = '';\r\n this.inspectionYear = this.currentYear;\r\n this.updateDataGrid();\r\n }\r\n\r\n getProgressStatusName(status: ProgressStatus) {\r\n return this.uow.getProgressStatusName(status);\r\n }\r\n\r\n calculatePercentComplete(inspection: MyInspectionsSummaryDto, assignedToMeOnly: boolean): number {\r\n if (assignedToMeOnly && inspection.myAssignedSections > 0) {\r\n return inspection.myCompletedSections / inspection.myAssignedSections;\r\n }\r\n if (inspection.totalSections > 0) {\r\n return inspection.completedSections / inspection.totalSections;\r\n }\r\n return 0.0\r\n }\r\n}\r\n","
\r\n

My Assignments

\r\n
\r\n\r\n
\r\n
\r\n Search My Inspections\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n

\r\n {{rowCount}} {{(rowCount == 1 ? 'record' : 'records')}} found\r\n

\r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
Engagement CodeClient NameYearStatusMy Assigned SectionsMy Completed Sections
\r\n \r\n No data to display…\r\n \r\n \r\n Please wait while we load your inspections…\r\n \r\n
\r\n \r\n {{inspection.engagementCode}}\r\n \r\n \r\n \r\n {{inspection.engagementClient}}\r\n \r\n {{inspection.inspectionYear}}{{getProgressStatusName(inspection.status)}} 0\">{{inspection.myAssignedSections | number : '1.0-0'}}--- 0\">{{inspection.myCompletedSections | number : '1.0-0'}}---
\r\n
\r\n \r\n
\r\n
\r\n","import { Component, Input, Output, EventEmitter, SimpleChanges, SimpleChange } from '@angular/core';\r\nimport { EngagementQuestion, EngagementSection } from '../../../../model/model';\r\nimport { QuestionFilters } from '../../../../model/modelDto';\r\nimport Utilities from '../../../services/utilities';\r\nimport { FilteredQuestionsService } from '../../../services/filtered-questions/filtered-questions.service';\r\nimport * as modelEnum from '../../../../model/modelEnums';\r\n\r\nenum EngagementQuestionStatus {\r\n complete = 'complete',\r\n notComplete = 'not complete',\r\n saved = 'saved',\r\n withComments = 'with comments'\r\n}\r\n\r\n@Component({\r\n selector: 'inspection-tree-node-viewer',\r\n inputs: ['node', 'i'],\r\n templateUrl: './inspection-tree-node-viewer.component.html'\r\n})\r\nexport class InspectionViewerTreeNode {\r\n @Input() node: EngagementSection;\r\n @Input() i: number;\r\n @Input() context: any;\r\n @Input() filters: QuestionFilters;\r\n @Input() filterIsActive: boolean;\r\n _filterIsActive: boolean;\r\n filteredQuestions: object = {};\r\n meetsFilterCriteris: boolean = true;\r\n\r\n constructor(private filteredQuestionsService: FilteredQuestionsService) {}\r\n \r\n get assignedActivatedNodes() {\r\n return this.node.childSections ? this.node.childSections.filter(m => m.isActivated && this.context.hasActionableContent(m)).sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n get questions() {\r\n return this.node.engagementQuestions ? this.node.engagementQuestions.sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n getfilteredQuestions(): void {\r\n this.filteredQuestions = this.filteredQuestionsService.getFilteredQuestions\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this._filterIsActive = changes.filterIsActive ? changes.filterIsActive.currentValue : false;\r\n }\r\n\r\n getTooltip(question) {\r\n if (question.isComplete) {\r\n return 'Completed Question';\r\n }\r\n if (question.selectedOptionId != null && !question.isComplete) {\r\n return 'Question with a response not marked Complete';\r\n }\r\n return '';\r\n }\r\n\r\n toggleSection() {\r\n if (this.node) {\r\n this.node.isCollapsed = !this.node.isCollapsed;\r\n }\r\n }\r\n\r\n setActiveSection(node: EngagementSection) {\r\n this.context.setActiveSection(node);\r\n }\r\n\r\n setActiveQuestion(question: EngagementQuestion) {\r\n question.isSelected = true;\r\n this.context.setActiveQuestion(question);\r\n }\r\n\r\n getDisplayText(question: EngagementQuestion) {\r\n return question.name || question.description.substr(0, 40) + '...';\r\n }\r\n\r\n isAssignedToMe(node: EngagementSection) {\r\n return node.inspectionTeamMemberEngagementSections.some(o => o.inspectionTeamMember && o.inspectionTeamMember.employeeId == this.context.me.id);\r\n }\r\n\r\n questionHasChanges(question: EngagementQuestion) {\r\n return this.context.questionHasChanges(question);\r\n }\r\n\r\n questionIsFilteredAndActive(question: EngagementQuestion) {\r\n let filterCriteria = {\r\n isComplete: true,\r\n selectedOptionId: true,\r\n tag: true\r\n };\r\n for(const property in this.filters) {\r\n if(this.filters[property]) {\r\n filterCriteria[property] = this.checkQuestionAgainstFilter(question, property);\r\n }\r\n if(this._filterIsActive && filterCriteria[property]) {\r\n this.filteredQuestionsService.add(question);\r\n }\r\n }\r\n const doesNotMeetFiltercriteria = Object.values(filterCriteria).some(criteria => criteria == false || criteria == null); \r\n return doesNotMeetFiltercriteria || question.isActivated == false ? false : true;\r\n }\r\n \r\n checkQuestionAgainstFilter(question: EngagementQuestion, property) {\r\n switch (property) {\r\n case 'isComplete':\r\n return this.checkQuestionStatus(question, property);\r\n \r\n case 'selectedOptionId':\r\n if(question.selectedOption != null) {\r\n if(question.selectedOption.standardQuestionOption) {\r\n return question.selectedOption.standardQuestionOption.name == this.filters[property];\r\n } else {\r\n return question.selectedOption.text == this.filters[property];\r\n }\r\n } else {\r\n return false;\r\n }\r\n case 'tag':\r\n const hasTag = question.question.questionTags.find(t => t.tag.name == this.filters[property]) ? true : false;\r\n return hasTag;\r\n }\r\n }\r\n\r\n checkQuestionStatus(question: EngagementQuestion, property) {\r\n const questionStatus = this.filters[property];\r\n let {complete, notComplete, saved, withComments} = EngagementQuestionStatus;\r\n switch (questionStatus) {\r\n case complete:\r\n return question.isComplete;\r\n case notComplete:\r\n return !question.isComplete && !question.selectedOptionId;\r\n case saved:\r\n return question.selectedOptionId && !question.isComplete;\r\n case withComments:\r\n return question.engagementQuestionComments.filter(x => !x.isDeleted).length > 0;\r\n }\r\n }\r\n\r\n showNode() {\r\n return this.node.isActivated && this.hasNestedFilteredQuestions(this.node);\r\n }\r\n\r\n hasNestedFilteredQuestions(node: EngagementSection) {\r\n let childNodes = node.childSections ? node.childSections.filter(m => m.isActivated): [];\r\n\r\n return node.engagementQuestions.some(q => this.questionIsFilteredAndActive(q)) || childNodes.some(cn => this.hasNestedFilteredQuestions(cn));\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n {{node.name}}\r\n \r\n
\r\n
\r\n
    0\" class=\"question-list mb-2\">\r\n \r\n
  1. \r\n \r\n {{getDisplayText(question)}}\r\n \r\n
  2. \r\n
    \r\n
\r\n
    0\">\r\n
  1. \r\n \r\n
  2. \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../../services/unit-of-work/unit-of-work.service';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ApplicationInsightsService } from '../../../services/application-insights/application-insights.service';\r\nimport { ServerSideConfigDataService } from '../../../services/server-side-config-data/server-side-config-data.service';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { DialogHelper } from '../../../services/dialog-helper';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { IsBusyService } from '../../../services/is-busy/is-busy.service';\r\nimport Utilities from '../../../services/utilities';\r\nimport * as moment from 'moment';\r\nimport { SharedDataService } from '../../../services/shared-data/shared-data.service';\r\nimport * as model from '../../../../model/model';\r\nimport { QuestionFilters } from '../../../../model/modelDto';\r\nimport * as modelEnum from '../../../../model/modelEnums';\r\nimport { GlobalErrorHandler } from '../../../services/global-error-handler';\r\nimport { EngagementQuestion } from '../../../../model/model';\r\nimport { FilteredQuestionsService } from '../../../services/filtered-questions/filtered-questions.service';\r\nimport 'isomorphic-fetch';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nconst LOADING_KEY: string = 'inspection:loadData';\r\nconst SAVING_KEY: string = 'inspection:saveData';\r\nconst UPDATING_KEY: string = 'inspection:updateData';\r\nconst NO_ANSWER_NEEDED_NAME: string = 'No answer needed';\r\n\r\n@Component({\r\n selector: 'app-my-inspection-admin',\r\n templateUrl: './inspection.component.html',\r\n styleUrls: ['./inspection.component.less']\r\n})\r\nexport class MyInspectionComponent implements OnInit {\r\n @ViewChild('existingAnswerModal', { static: true }) existingAnswerModal: TemplateRef; // Note: TemplateRef\r\n\r\n me: model.Employee;\r\n\r\n isLoading = true;\r\n\r\n engagement: model.Engagement = {} as model.Engagement;\r\n engagementId: number = null;\r\n allEngagementOptions: Array;\r\n sectionId: number = null;\r\n questionId: number = null;\r\n commentText: string = null;\r\n currentComment: model.EngagementQuestionComment = null;\r\n tags: model.Tag[] = [];\r\n availableTags: model.Tag[] = [];\r\n engagementQuestionActivatingTags: number[] = [];\r\n\r\n questionNumber: number = null;\r\n currentFilteredQuestionNumber: number = null;\r\n currentQuestion: model.EngagementQuestion = null;\r\n\r\n hoverSectionName: string = null;\r\n\r\n parentSection: model.EngagementSection = null;\r\n\r\n currentSection: model.EngagementSection = null\r\n previousSection: model.EngagementSection = null;\r\n nextSection: model.EngagementSection = null;\r\n currentFilteredSection: any = {};\r\n\r\n nextQuestionDisabled: boolean = false;\r\n prevQuestionDisabled: boolean = false;\r\n\r\n nextAssignedSection: model.EngagementSection = null;\r\n\r\n public questionFilters: QuestionFilters;\r\n public filterIsActive: boolean = false;\r\n filteredQuestions: object = {};\r\n typingTimer: NodeJS.Timeout;//timer identifier\r\n\r\n private subscriptions = new Subscription();\r\n\r\n constructor(\r\n private uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n private activeRoute: ActivatedRoute,\r\n public router: Router,\r\n public isBusy: IsBusyService,\r\n public dialogHelper: DialogHelper,\r\n private modalService: NgbModal,\r\n private serverData: ServerSideConfigDataService,\r\n private sharedData: SharedDataService,\r\n private filteredQuestionsService: FilteredQuestionsService,\r\n private http: HttpClient\r\n ) {\r\n this.appInsights.logPageView();\r\n this.questionFilters = {\r\n isComplete: null,\r\n selectedOptionId: null,\r\n tag: null\r\n }\r\n this.allEngagementOptions = [];\r\n this.currentFilteredSection.filteredEngagementQuestions = [];\r\n }\r\n\r\n ngOnInit() {\r\n this.subscriptions.add(this.serverData.configDataLoaded$.subscribe(() => {\r\n this.me = this.serverData.configData.me;\r\n }));\r\n\r\n this.activeRoute.queryParams.subscribe(routeParams => {\r\n const cachedData = this.sharedData.myEngagements.value;\r\n if (!cachedData || cachedData.id != routeParams.id) {\r\n this.isBusy.set(LOADING_KEY, true, 'Loading engagement data');\r\n Promise\r\n .all([\r\n this.getEngagementById(routeParams.id, routeParams.sid, routeParams.qid),\r\n ])\r\n .then(() => {\r\n this.findSectionById();\r\n this.getAllEngagementOptions();\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(LOADING_KEY, false);\r\n });\r\n } else {\r\n this.engagement = cachedData;\r\n this.getTags()\r\n this.getAllEngagementOptions();\r\n }\r\n });\r\n this.setNextQuestionDisable();\r\n this.setPrevQuestionDisable();\r\n\r\n }\r\n\r\n commentKeyDown() {\r\n\r\n clearTimeout(this.typingTimer);\r\n\r\n }\r\n\r\n commentKeyUp() {\r\n var doneTypingInterval = 1000 //time in ms, 5 second for example\r\n var self = this as any;\r\n clearTimeout(this.typingTimer);\r\n this.commentEdit()\r\n this.typingTimer = setTimeout(function () { self.saveComment() }, doneTypingInterval);\r\n }\r\n\r\n get orderedEngagementQuestionOptions() {\r\n const temp = this.currentQuestion.engagementQuestionOptions ? this.currentQuestion.engagementQuestionOptions.filter(o => !o.isDeleted && (!o.standardQuestionOption || o.standardQuestionOption.name !== NO_ANSWER_NEEDED_NAME)).sort(Utilities.sortByDisplayOrder) : [];\r\n return temp;\r\n }\r\n\r\n ngDoCheck() {\r\n if (Object.keys(this.filteredQuestions).length !== 0) {\r\n this.setCurrentFilteredSection();\r\n }\r\n if (this.filterIsActive && this.currentQuestion) {\r\n this.setCurrentFilteredQuestionNumber();\r\n this.setNextQuestionDisable();\r\n this.setPrevQuestionDisable();\r\n }\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this.filterIsActive) {\r\n this.getFilteredQuestions();\r\n }\r\n }\r\n\r\n getFilteredQuestions(): void {\r\n this.filteredQuestionsService.getFilteredQuestions()\r\n .subscribe(filteredQuestions => this.filteredQuestions = filteredQuestions);\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n const proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n setAvailableTags() {\r\n this.availableTags = this.tags; \r\n }\r\n\r\n\r\n getEngagementById(id: number, sid?: number, qid?: number) {\r\n this.isBusy.set(LOADING_KEY, true, 'Loading engagement data');\r\n return this.uow.getMyEngagementNodeViewerById(id)\r\n .then(result => {\r\n this.getTags()\r\n if (result && result.length > 0) {\r\n this.engagement = result[0];\r\n this.setAvailableTags();\r\n this.sharedData.setMyEngagements(this.engagement);\r\n\r\n this.engagementId = id;\r\n this.sectionId = sid;\r\n this.questionId = qid;\r\n } else {\r\n this.router.navigate(['./inspections'], { relativeTo: this.activeRoute.parent });\r\n }\r\n this.isBusy.set(LOADING_KEY, false);\r\n });\r\n }\r\n\r\n\r\n getEngagementStatusName(status: modelEnum.EngagementStatus) {\r\n return this.uow.getEngagementStatusName(status);\r\n }\r\n\r\n getProgressStatusName(status: modelEnum.ProgressStatus) {\r\n return this.uow.getProgressStatusName(status);\r\n }\r\n\r\n formatDate(value: any): string {\r\n return moment(value).format('YYYY-MM-DD hh:mm A Z');\r\n }\r\n\r\n\r\n calculatePercentComplete(numerator: number, denominator: number): number {\r\n let value = 0.0;\r\n\r\n if (denominator > 0) {\r\n value = numerator / denominator;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n\r\n expandAll() {\r\n if (this.engagement) {\r\n if (this.engagement.engagementSections && this.engagement.engagementSections.length) {\r\n this.engagement.engagementSections.forEach(m => m.isCollapsed = false);\r\n }\r\n }\r\n }\r\n\r\n collapseAll() {\r\n if (this.engagement) {\r\n if (this.engagement.engagementSections && this.engagement.engagementSections.length) {\r\n this.engagement.engagementSections.forEach(m => m.isCollapsed = true);\r\n }\r\n }\r\n }\r\n\r\n get teamMember(): model.InspectionTeamMember {\r\n return this.engagement && this.engagement.inspectionTeamMembers && this.engagement.inspectionTeamMembers.filter(t => t.employeeId == this.me.id)\r\n ? this.engagement.inspectionTeamMembers.filter(t => t.employeeId == this.me.id)[0] : null;\r\n }\r\n\r\n get isTeamCaptain(): boolean {\r\n return this.engagement ? this.engagement.inspectionLeadId == this.me.id : false;\r\n }\r\n\r\n get canSubmitResponse(): boolean {\r\n return this.engagement && (this.engagement.status == modelEnum.EngagementStatus.active || this.isTeamCaptain);\r\n }\r\n\r\n\r\n get rootEngagementSections() {\r\n return this.engagement && this.engagement.engagementSections && this.engagement.engagementSections.length ? this.engagement.engagementSections\r\n .filter(m => m.parentSectionId == null && m.isActivated)\r\n .sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n get myRootSections() {\r\n return this.engagement && this.engagement.engagementSections && this.engagement.engagementSections.length ? this.engagement.engagementSections\r\n .filter(m => m.parentSectionId == null && m.isActivated && m.inspectionTeamMemberEngagementSections.filter(s => s.inspectionTeamMemberId == (this.teamMember.id || null)) && this.hasActionableContent(m))\r\n .sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n get currentQuestionOptions() {\r\n return this.currentQuestion && this.currentQuestion.engagementQuestionOptions ? this.currentQuestion.engagementQuestionOptions.sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n get currentComments() {\r\n return this.currentQuestion && this.currentQuestion.engagementQuestionComments ? this.currentQuestion.engagementQuestionComments.filter(c => !c.isDeleted && !c.entityAspect.entityState.isAdded()).sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n get hasChanges() {\r\n const a = this.uow.engagements.hasChanges.value;\r\n const b = this.uow.engagementSections.hasChanges.value;\r\n const c = this.uow.engagementQuestionComments.hasChanges.value;\r\n const d = this.uow.engagementQuestions.hasChanges.value;\r\n\r\n return a || b || c || d;\r\n }\r\n\r\n get prevSectionNavigationDisabled() {\r\n let disable = true;\r\n if (this.currentSection.parentSection && this.myRootSections.length > 0) {\r\n this.myRootSections[0].childSections.forEach(filteredSection => {\r\n if (this.currentSection.displayOrder > filteredSection.displayOrder || this.myRootSections.some(rootSection => rootSection.id == this.currentSection.parentSection.id)) {\r\n disable = false;\r\n }\r\n });\r\n } else if(this.myRootSections.length > 0 && this.myRootSections.filter(rs => rs.isActivated).findIndex(rs => rs.id == this.currentSection.id) > 0) {\r\n disable = false;\r\n } else {\r\n disable = true;\r\n }\r\n\r\n return disable;\r\n }\r\n\r\n get numberOfActiveQuestionsInSection() {\r\n return this.currentSection.engagementQuestions.filter(q => q.isActivated).length;\r\n }\r\n\r\n undoChanges() {\r\n if (this.hasChanges) {\r\n this.uow.rollback();\r\n }\r\n }\r\n\r\n hasActionableContent(section: model.EngagementSection): boolean {\r\n let hasContent = false;\r\n\r\n if (section.isActivated) {\r\n if (section.engagement.inspectionLeadId == this.me.id) { // show all sections if user is team lead\r\n hasContent = true;\r\n } else if (section.engagementQuestions && section.engagementQuestions.length > 0) {\r\n hasContent = section.inspectionTeamMemberEngagementSections.some(s => { // show section if user is assigned to the section\r\n if( s.inspectionTeamMember != null) {\r\n return s.inspectionTeamMember.employeeId == this.me.id\r\n } else {\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n hasContent = section.childSections && section.childSections.some(m => this.hasActionableContent(m));\r\n }\r\n }\r\n\r\n return hasContent;\r\n }\r\n\r\n\r\n reloadEngagementTree() {\r\n this.getEngagementById(this.engagementId);\r\n }\r\n\r\n findSectionById() {\r\n if (this.sectionId) {\r\n if (this.engagement.engagementSections && this.engagement.engagementSections.length) {\r\n this.setActiveSection(this.engagement.engagementSections.find(m => m.id == this.sectionId));\r\n }\r\n else {\r\n this.setActiveSection(null);\r\n }\r\n }\r\n else {\r\n this.setActiveSection(null);\r\n }\r\n }\r\n\r\n findNearestActiveParentSection(section: model.EngagementSection) {\r\n if (section) {\r\n this.parentSection = section.parentSection;\r\n if (this.parentSection) {\r\n if (!this.parentSection.isActivated) {\r\n this.parentSection = this.findNearestActiveParentSection(this.parentSection);\r\n }\r\n }\r\n }\r\n else {\r\n this.parentSection = null;\r\n }\r\n\r\n return this.parentSection;\r\n }\r\n\r\n getFocusSection() {\r\n if (this.currentSection == null || this.currentSection.parentSection == null) {\r\n return \"\";\r\n }\r\n\r\n var temp = this.currentSection;\r\n while (temp.parentSection.parentSection != null) {\r\n temp = temp.parentSection;\r\n }\r\n return temp.name;\r\n\r\n }\r\n\r\n setActiveSection(section: model.EngagementSection) {\r\n this.resetComment();\r\n this.setPreviousSection(section);\r\n this.currentSection = section;\r\n this.setCurrentFilteredSection();\r\n this.setHoverText(null);\r\n\r\n\r\n\r\n this.clearQuestionSelection();\r\n if (this.engagement.engagementSections && this.engagement.engagementSections.length) {\r\n if (section) {\r\n var element = document.getElementById('Node_' + section.id.toString());\r\n if (element != null) {\r\n element.scrollIntoView({ behavior: 'auto', block: 'start', inline: 'start' });\r\n $('#question-scrollbar').scrollLeft(0);\r\n }\r\n }\r\n if (this.currentSection) {\r\n this.sectionId = this.currentSection.id;\r\n\r\n // Check if there is an active question. How is there an active question?\r\n // 1. User selected a Question from either list - left nav (inspection-tree-node-viewer) or center nav (section-list-item)\r\n // 2. User clicked on the section navigator arrow\r\n if (this.questionId) {\r\n if (this.currentSection.engagementQuestions && this.currentSection.engagementQuestions.length) {\r\n const currentQ = this.currentSection.engagementQuestions.find(m => m.id == this.questionId);\r\n // if clicking on a different section while question is selected\r\n if (!currentQ) {\r\n this.questionNumber = 1;\r\n const firstActiveQuestionInSection = this.currentSection.engagementQuestions.find(q => q.isActivated);\r\n if (firstActiveQuestionInSection) {\r\n this.getQuestion(firstActiveQuestionInSection.id)\r\n .then(() => {\r\n this.checkParentSection();\r\n this.setNextQuestionDisable();\r\n this.setPrevQuestionDisable();\r\n });\r\n } else {\r\n this.checkParentSection();\r\n this.setNextQuestionDisable();\r\n this.setPrevQuestionDisable();\r\n }\r\n } else {\r\n // clicking on a question\r\n this.getQuestion(currentQ.id)\r\n .then(() => {\r\n this.questionNumber = this.currentSection.engagementQuestions.filter(q => q.isActivated).indexOf(this.currentQuestion) + 1;\r\n this.checkParentSection();\r\n this.setNextQuestionDisable();\r\n this.setPrevQuestionDisable();\r\n });\r\n }\r\n } else {\r\n this.checkParentSection();\r\n }\r\n } else {\r\n // if no question is currently selected\r\n if (this.currentSection.engagementQuestions && this.currentSection.engagementQuestions.length) {\r\n // user clicks on a Section that has questions\r\n this.getQuestion(this.currentSection.engagementQuestions.find(q => q.isActivated).id)\r\n .then(() => {\r\n this.questionNumber = 1;\r\n this.checkParentSection();\r\n this.setNextQuestionDisable();\r\n this.setPrevQuestionDisable();\r\n });\r\n } else {\r\n // user clicks on a section that has no immediate child question\r\n this.checkParentSection();\r\n }\r\n }\r\n\r\n\r\n\r\n } else {\r\n this.resetComment();\r\n this.sectionId = null;\r\n this.questionId = null;\r\n\r\n this.parentSection = null;\r\n this.currentQuestion = null;\r\n this.previousSection = null;\r\n this.nextSection = null;\r\n this.nextAssignedSection = null;\r\n }\r\n } else {\r\n this.resetComment();\r\n this.sectionId = null;\r\n this.questionId = null;\r\n\r\n this.parentSection = null;\r\n this.currentQuestion = null;\r\n this.previousSection = null;\r\n this.nextSection = null;\r\n this.nextAssignedSection = null;\r\n }\r\n }\r\n\r\n checkQuestionForNoAnswerOption() {\r\n if (this.currentQuestion\r\n && (!this.currentQuestion.selectedOptionId || !this.currentQuestion.isComplete)\r\n && this.hasNoAnswerNeededQuestionOption()) {\r\n let naOption = this.currentQuestion.engagementQuestionOptions.find(x => x.standardQuestionOption.name === NO_ANSWER_NEEDED_NAME);\r\n naOption.commentIsRequired = false;\r\n this.currentQuestion.selectedOptionId = naOption.id;\r\n this.saveResponseForm(true);\r\n }\r\n }\r\n\r\n setPreviousSection(section: model.EngagementSection) {\r\n if (section && section.parentSection) {\r\n // check for sibling children and iteravily check children of children\r\n const siblings = this.findNearestActiveParentSection(section).childSections.filter(m => m.isActivated).sort(Utilities.sortByDisplayOrder);\r\n const currentSectionIndex = siblings.findIndex(sibling => sibling.id == section.id);\r\n\r\n if (siblings.length > 1 && currentSectionIndex != 0) {\r\n const previousSibling = siblings[currentSectionIndex - 1];\r\n\r\n if (previousSibling.childSections.filter(m => m.isActivated).length == 0) {\r\n this.previousSection = previousSibling;\r\n } else {\r\n let childSections = previousSibling.childSections.filter(m => m.isActivated).sort(Utilities.sortByDisplayOrder);\r\n let sectionHasChildren = childSections.length > 0;\r\n\r\n // iteravily check children of children\r\n while (sectionHasChildren) {\r\n let childrenOfChildSections = childSections[childSections.length - 1].childSections.filter(m => m.isActivated);\r\n\r\n if (childrenOfChildSections.length > 0) {\r\n childSections = childrenOfChildSections\r\n } else {\r\n sectionHasChildren = false;\r\n }\r\n }\r\n this.previousSection = childSections[childSections.length - 1];\r\n }\r\n } else if (currentSectionIndex == 0) {\r\n this.previousSection = section.parentSection;\r\n\r\n }\r\n }\r\n }\r\n\r\n checkChildSections() {\r\n const childSections = this.currentSection.childSections.filter(m => m.isActivated).sort(Utilities.sortByDisplayOrder);\r\n this.nextSection = childSections[0];\r\n }\r\n\r\n checkSiblingSections() {\r\n const siblings = this.parentSection.childSections.filter(m => m.isActivated).sort(Utilities.sortByDisplayOrder);\r\n\r\n if (siblings) {\r\n const i = siblings.indexOf(this.currentSection);\r\n const lastIndex = siblings.length - 1;\r\n\r\n if (i == lastIndex) {\r\n this.checkParentSectionForSiblings();\r\n } else {\r\n if (i > 0) {\r\n if (this.filterIsActive) {\r\n this.checkPrevSiblingSectForFilteredQuests(siblings, i);\r\n }\r\n }\r\n\r\n if (i < lastIndex) {\r\n if (this.filterIsActive) {\r\n this.checkNextSiblingSectForFilteredQuests(siblings, i);\r\n } else {\r\n this.nextSection = siblings[i + 1];\r\n }\r\n } else {\r\n this.nextSection = null;\r\n }\r\n }\r\n } else if (this.currentSection.childSections.length > 0) {\r\n this.checkChildSections();\r\n }\r\n }\r\n\r\n checkParentSectionForSiblings() {\r\n if (this.parentSection.parentSection) {\r\n const siblingsOfParent = this.findNearestActiveParentSection(this.parentSection).childSections.filter(m => m.isActivated).sort(Utilities.sortByDisplayOrder);\r\n const indexOfParent = siblingsOfParent.findIndex(sibling => sibling.id == this.currentSection.parentSectionId);\r\n\r\n if (indexOfParent < siblingsOfParent.length - 1) {\r\n this.nextSection = siblingsOfParent[indexOfParent + 1];\r\n }\r\n } else {\r\n this.nextSection = null;\r\n }\r\n }\r\n\r\n checkParentSection() {\r\n this.parentSection = this.findNearestActiveParentSection(this.currentSection);\r\n const rootSectionIndex = this.rootEngagementSections.filter(rs => rs.isActivated).findIndex(rs => rs.id == this.currentSection.id);\r\n\r\n if (this.parentSection) {\r\n if (this.currentSection.parentSectionId == this.parentSection.id) {\r\n if (this.currentSection.childSections.filter(m => m.isActivated).length > 0) {\r\n this.checkChildSections();\r\n } else if (this.parentSection.childSections.filter(m => m.isActivated).length > 1) {\r\n this.checkSiblingSections();\r\n } else {\r\n this.checkParentSectionForSiblings();\r\n }\r\n } else {\r\n this.previousSection = null;\r\n this.nextSection = null;\r\n }\r\n } else if (rootSectionIndex >= 0 && !this.currentSection.childSections.filter(s => s.isActivated).length) {\r\n this.previousSection = this.rootEngagementSections.filter(rs => rs.isActivated)[rootSectionIndex - 1];\r\n this.nextSection = this.rootEngagementSections.filter(rs => rs.isActivated)[rootSectionIndex + 1];\r\n } else {\r\n // if rootsection and does have children\r\n if (rootSectionIndex >= 0) {\r\n this.previousSection = rootSectionIndex ? this.rootEngagementSections.filter(rs => rs.isActivated)[rootSectionIndex - 1] : null;\r\n this.nextSection = this.rootEngagementSections.filter(rs => rs.isActivated)[rootSectionIndex + 1];\r\n }\r\n this.checkChildSections();\r\n }\r\n }\r\n\r\n checkPrevSiblingSectForFilteredQuests(siblings, i) {\r\n let j = i - 1;\r\n let sectionHasFilteredQuestions = false;\r\n while (j >= 0 && !sectionHasFilteredQuestions) {\r\n for (let key in this.filteredQuestions) {\r\n if (siblings[j].id.toString() == key) {\r\n sectionHasFilteredQuestions = true;\r\n }\r\n }\r\n\r\n if (sectionHasFilteredQuestions) {\r\n this.previousSection = siblings[j];\r\n } else if (j == 0 && !sectionHasFilteredQuestions) {\r\n this.previousSection = null;\r\n } if (j > -1 && !sectionHasFilteredQuestions) {\r\n j--;\r\n }\r\n }\r\n }\r\n\r\n checkNextSiblingSectForFilteredQuests(siblings, i) {\r\n let j = i + 1;\r\n let sectionHasFilteredQuestions = false;\r\n while (j < siblings.length && !sectionHasFilteredQuestions) {\r\n for (let key in this.filteredQuestions) {\r\n if (siblings[j].id.toString() == key) {\r\n sectionHasFilteredQuestions = true;\r\n }\r\n }\r\n\r\n if (sectionHasFilteredQuestions) {\r\n this.previousSection = siblings[j];\r\n } else if (j == siblings.length - 1 && !sectionHasFilteredQuestions) {\r\n this.nextSection = null;\r\n } if (j < siblings.length && !sectionHasFilteredQuestions) {\r\n j++;\r\n }\r\n }\r\n }\r\n\r\n closeSection() {\r\n this.setActiveSection(null);\r\n }\r\n\r\n setHoverText(section: model.EngagementSection) {\r\n if (section) {\r\n if (section.name.length > 40) {\r\n this.hoverSectionName = section.name.substr(0, 40) + '...';\r\n } else {\r\n this.hoverSectionName = section.name;\r\n }\r\n }\r\n else {\r\n this.hoverSectionName = null;\r\n }\r\n }\r\n\r\n getQuestion(id: number): Promise {\r\n this.questionId = id;\r\n const questSection = this.engagement.engagementSections.find(s => s.engagementQuestions && s.engagementQuestions.filter(q => q.id == id).length > 0);\r\n const questionLoaded = questSection.engagementQuestions.find(q => q.id == id && q.isActivated);\r\n if (questionLoaded && questionLoaded.isFullyLoaded) {\r\n this.currentQuestion = questionLoaded;\r\n this.currentQuestion.isSelected = true;\r\n this.setNextQuestionDisable();\r\n this.setPrevQuestionDisable();\r\n this.loadActiveComment();\r\n this.checkQuestionForNoAnswerOption();\r\n return new Promise((resolve) => {\r\n resolve(this.currentQuestion);\r\n });\r\n } else {\r\n this.isBusy.set(LOADING_KEY, true);\r\n return this.uow.getEngagementQuestionById(id)\r\n .then((result) => {\r\n this.isBusy.set(LOADING_KEY, false);\r\n if (result[0] && result[0].isActivated) {\r\n const question = result[0];\r\n let eq = this.engagement.engagementSections.find(s => s.id == question.engagementSectionId).engagementQuestions.find(q => q.id == question.id);\r\n eq = question;\r\n this.currentQuestion = eq;\r\n this.currentQuestion.isSelected = true;\r\n this.currentQuestion.isFullyLoaded = true;\r\n this.loadActiveComment();\r\n this.sharedData.setMyEngagements(this.engagement);\r\n if (this.filterIsActive) {\r\n this.setCurrentFilteredQuestionNumber();\r\n }\r\n this.setNextQuestionDisable();\r\n this.setPrevQuestionDisable();\r\n\r\n this.checkQuestionForNoAnswerOption();\r\n return eq;\r\n }\r\n return null;\r\n });\r\n }\r\n }\r\n\r\n loadActiveComment() {\r\n if (this.currentQuestion && this.currentQuestion.engagementQuestionComments && this.currentQuestion.engagementQuestionComments.length) {\r\n const activeComment = this.currentQuestion.engagementQuestionComments.find(c => c.entityAspect.entityState.isAddedModifiedOrDeleted());\r\n if (activeComment) {\r\n this.currentComment = activeComment;\r\n this.commentText = this.currentComment.text;\r\n }\r\n }\r\n }\r\n\r\n loadQuestion(questNumber: number) {\r\n this.resetComment();\r\n if (this.currentQuestion) {\r\n this.clearQuestionSelection();\r\n }\r\n if (this.filterIsActive) {\r\n const engagementSectionId = this.currentSection.id;\r\n const engagementSectFilteredQuestions = this.filteredQuestions[engagementSectionId];\r\n\r\n let questNumberIncremented = questNumber;\r\n let foundNextFilteredQuestion = false;\r\n // nextFilteredQuestionId should be displayOrder = questionNumberIncrememted - 1\r\n // displayOrder should be the question.displayOrder not engagementQuestion.displayOrder\r\n // else this.current this.currentSection.engagementQuestions[questNumberIncremented - 1].id\r\n let nextFilteredQuestionId = this.currentSection.engagementQuestions.filter(q => q.isActivated)[questNumberIncremented - 1].id;\r\n let i = 0;\r\n\r\n while (i < engagementSectFilteredQuestions.length) {\r\n questNumberIncremented++;\r\n i++;\r\n foundNextFilteredQuestion = engagementSectFilteredQuestions.some(q => q.id == nextFilteredQuestionId && q.isActivated);\r\n }\r\n\r\n var element = document.getElementById('Q_' + nextFilteredQuestionId.toString());\r\n if (element != null) {\r\n //console.log(\"Moved to question \" + nextFilteredQuestionId);\r\n element.scrollIntoView({ behavior: 'auto', block: 'nearest', inline: 'start' });\r\n $('#question-scrollbar').scrollLeft(0);\r\n\r\n }\r\n\r\n return this.getQuestion(nextFilteredQuestionId)\r\n .then(() => {\r\n this.questionNumber = questNumber;\r\n\r\n });\r\n }\r\n if (this.currentSection.engagementQuestions.filter(q => q.isActivated)[questNumber - 1] && !this.filterIsActive) {\r\n this.getQuestion(this.currentSection.engagementQuestions.filter(q => q.isActivated)[questNumber - 1].id)\r\n .then(() => {\r\n\r\n var id = this.currentSection.engagementQuestions.filter(q => q.isActivated)[questNumber - 1].id\r\n var element = document.getElementById('Q_' + id.toString());\r\n if (element != null) {\r\n //console.log(\"Moved to question \" + id);\r\n element.scrollIntoView();\r\n }\r\n\r\n this.questionNumber = questNumber;\r\n this.setNextQuestionDisable();\r\n this.setPrevQuestionDisable();\r\n });\r\n }\r\n }\r\n\r\n setActiveQuestion(engQuestion: model.EngagementQuestion) {\r\n this.resetComment();\r\n\r\n if (this.currentQuestion) {\r\n this.clearQuestionSelection();\r\n }\r\n\r\n this.questionId = engQuestion.id;\r\n this.sectionId = engQuestion.engagementSectionId;\r\n this.findSectionById();\r\n }\r\n\r\n clearQuestionSelection() {\r\n if (this.engagement.engagementSections && this.engagement.engagementSections.length) {\r\n this.engagement.engagementSections.forEach(s => {\r\n if (s.engagementQuestions && s.engagementQuestions.length) {\r\n s.engagementQuestions.map(q => q.isSelected = false);\r\n }\r\n });\r\n }\r\n }\r\n\r\n getCurrentQuestionOptions() {\r\n return this.currentQuestion ? this.currentQuestion.engagementQuestionOptions.sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n updateCommentLabel(option: model.EngagementQuestionOption) {\r\n if (this.currentQuestion) {\r\n this.currentQuestion.selectedOption = option;\r\n this.currentQuestion.commentRequired = option.commentIsRequired;\r\n }\r\n }\r\n\r\n commentEdit() {\r\n // create new comment entity if new comment\r\n if (!this.currentComment) {\r\n this.currentComment = this.uow.engagementQuestionComments.createEntity();\r\n this.currentComment.engagementQuestionId = this.currentQuestion.id;\r\n this.currentComment.engagementQuestion = this.currentQuestion;\r\n this.currentComment.inspectionTeamMemberId = this.teamMember.id || null;\r\n this.currentComment.inspectionTeamMember = this.teamMember || null;\r\n this.currentQuestion.engagementQuestionComments.push(this.currentComment);\r\n } \r\n if (this.commentText != null) {\r\n this.currentComment.text = this.commentText;\r\n }\r\n }\r\n\r\n editComment(comment: model.EngagementQuestionComment) {\r\n this.currentComment = comment;\r\n this.commentText = comment.text;\r\n }\r\n\r\n deleteComment(comment: model.EngagementQuestionComment) {\r\n const proceed = this.dialogHelper.confirm('Are you sure you would like to delete the comment?');\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n comment.entityAspect.setDeleted()\r\n this.uow.engagementQuestionComments.saveChanges([comment]).then(() => {\r\n if (comment.id == this.currentComment.id) {\r\n this.resetComment();\r\n }\r\n });\r\n }\r\n })\r\n\r\n }\r\n\r\n clearClicked() {\r\n this.clearResponseForm();\r\n\r\n this.saveResponseForm(this.hasNoAnswerNeededQuestionOption());\r\n }\r\n\r\n saveResponseForm(markAsComplete: boolean) {\r\n this.isBusy.set(SAVING_KEY, true, 'Verifying response');\r\n\r\n return this.uow.checkQuestionForExistingResponse(this.currentQuestion.id, this.currentQuestion.selectedOptionId)\r\n .then(result => {\r\n if (result[0] == true) {\r\n this.modalService.open(this.existingAnswerModal, { ariaLabelledBy: 'modal-basic-title' })\r\n .result\r\n .then((response) => {\r\n if (response == 'save') {\r\n return this.saveQuestionResponse(markAsComplete, true);\r\n }\r\n });\r\n }\r\n else {\r\n return this.saveQuestionResponse(markAsComplete, false);\r\n }\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(SAVING_KEY, false);\r\n });\r\n }\r\n\r\n showExistingAnswerModal(): any {\r\n this.modalService.open(this.existingAnswerModal, { ariaLabelledBy: 'modal-basic-title' })\r\n .result\r\n .then((result) => {\r\n return result;\r\n });\r\n }\r\n\r\n\r\n\r\n resetQuestion() {\r\n this.uow.engagementQuestions.cancelChanges(this.currentQuestion);\r\n }\r\n\r\n private async saveComment() {\r\n this.isBusy.set('saving_comment', true);\r\n const commentChanges = this.currentQuestion.engagementQuestionComments.filter(c => c && c.entityAspect.entityState.isAddedModifiedOrDeleted());\r\n if (commentChanges) {\r\n //this.currentQuestion.engagementQuestionComments[1].\r\n commentChanges.forEach(c => c.originalText = c.text);\r\n await this.uow.engagementQuestionComments.saveChanges(this.currentQuestion.engagementQuestionComments)\r\n .then(() => /*this.resetComment()*/ { })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('saving_comment', false);\r\n });\r\n } else {\r\n this.isBusy.set('saving_comment', false);\r\n }\r\n }\r\n private async saveQuestionResponse(markAsComplete: boolean, replaceExisting: boolean) {\r\n this.isBusy.set(SAVING_KEY, true, 'Saving your response');\r\n\r\n this.currentQuestion.isComplete = markAsComplete;\r\n this.currentQuestion.respondingTeamMemberId = this.teamMember.id;\r\n this.currentQuestion.respondingTeamMember = this.teamMember;\r\n this.currentQuestion.responseDate = new Date();\r\n this.currentQuestion.completedDate = markAsComplete ? new Date() : null;\r\n\r\n await this.uow.getSelectedOptionActivatingTags(this.engagement.id, this.currentQuestion.id)\r\n .then(results => {\r\n this.engagementQuestionActivatingTags = results.map(tag => tag.tagId);\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n });\r\n\r\n await this.uow.engagementQuestions.saveChanges([this.currentQuestion])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n });\r\n\r\n const commentChanges = this.currentQuestion.engagementQuestionComments.filter(c => c && c.entityAspect.entityState.isAddedModifiedOrDeleted());\r\n if (commentChanges) {\r\n commentChanges.forEach(c => c.originalText = c.text);\r\n await this.uow.engagementQuestionComments.saveChanges(this.currentQuestion.engagementQuestionComments)\r\n .then(() => /*this.resetComment()*/ { })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n });\r\n }\r\n\r\n const updatedSections: model.EngagementSection[] = [];\r\n // Update triggered sections\r\n if (this.currentQuestion.engagementQuestionOptions && this.currentQuestion.engagementQuestionOptions.length) {\r\n const allEQO = this.currentQuestion.engagementQuestionOptions.filter(o => o.engagementSectionEngagementQuestionOptions && o.engagementSectionEngagementQuestionOptions.length);\r\n if (allEQO && allEQO.length) {\r\n allEQO.forEach(o => {\r\n o.engagementSectionEngagementQuestionOptions.forEach(qo => {\r\n if (this.currentQuestion.selectedOptionId == qo.engagementQuestionOptionId) {\r\n qo.engagementSection.isActivated = true;\r\n } else {\r\n qo.engagementSection.isActivated = false;\r\n }\r\n if (!updatedSections.find(s => s.id == qo.engagementSection.id)) {\r\n updatedSections.push(qo.engagementSection);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n if (this.currentSection && this.currentSection.id == this.currentQuestion.engagementSectionId) {\r\n if (this.currentSection.engagementQuestions.every(q => q.isComplete)) {\r\n if (!updatedSections.find(s => s.id == this.currentSection.id)) {\r\n updatedSections.push(this.currentSection);\r\n }\r\n }\r\n }\r\n\r\n if (updatedSections.length > 0) {\r\n await this.uow.engagementSections.saveChanges(updatedSections)\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n });\r\n }\r\n\r\n if (replaceExisting) {\r\n return this.uow.updateQuestionResponse(this.currentQuestion.id, markAsComplete, new Date(), this.currentQuestion.selectedOptionId, this.commentText, replaceExisting)\r\n .then(result => {\r\n this.resetComment();\r\n\r\n const question = result[0];\r\n\r\n if (question && question.id > 0) {\r\n this.currentQuestion.isComplete = question.isComplete;\r\n this.currentQuestion.selectedOptionId = question.selectedOptionId;\r\n this.currentQuestion.respondingTeamMemberId = question.respondingTeamMemberId;\r\n this.currentQuestion.respondingTeamMember = question.respondingTeamMember;\r\n this.currentQuestion.responseDate = question.responseDate;\r\n this.currentQuestion.engagementQuestionComments = question.engagementQuestionComments;\r\n }\r\n\r\n // Reload the sidebar tree-view, since new sections may have ben activated\r\n this.reloadEngagementTree();\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(SAVING_KEY, false);\r\n });\r\n }\r\n\r\n if (this.engagementQuestionActivatingTags.length) {\r\n this.isBusy.set(UPDATING_KEY, true, 'Updating active questions');\r\n this.uow.updateActivatedEngagementQuestionsByActivatingTags(this.engagement.id, this.engagementQuestionActivatingTags)\r\n .then((result) => {\r\n this.reloadEngagementTree();\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(UPDATING_KEY, false);\r\n })\r\n } else {\r\n this.reloadEngagementTree();\r\n }\r\n }\r\n\r\n resetComment() {\r\n this.currentComment = null;\r\n this.commentText = null;\r\n }\r\n\r\n questionHasChanges(question = this.currentQuestion): boolean {\r\n if (question) {\r\n const a = question.entityAspect.entityState.isModified();\r\n const b = question.engagementQuestionComments && question.engagementQuestionComments.length\r\n ? question.engagementQuestionComments.some(c => c.entityAspect.entityState.isAddedModifiedOrDeleted() || c == this.currentComment)\r\n : false;\r\n const c = this.currentComment && this.currentComment.engagementQuestionId == question.id ? this.currentComment.entityAspect.entityState.isAddedModifiedOrDeleted() : false;\r\n return a || b || c;\r\n }\r\n return false;\r\n }\r\n\r\n cancelChanges(question = this.currentQuestion) {\r\n if (question) {\r\n if (!this.hasNoAnswerNeededQuestionOption()) {\r\n question.entityAspect.rejectChanges();\r\n }\r\n \r\n if (question.engagementQuestionComments && question.engagementQuestionComments.length) {\r\n question.engagementQuestionComments.forEach(c => {\r\n if (c && c.entityAspect.entityState.isAddedModifiedOrDeleted()) {\r\n c.entityAspect.rejectChanges();\r\n }\r\n });\r\n }\r\n if (this.currentComment && this.currentComment.entityAspect.entityState.isAddedModifiedOrDeleted()) {\r\n this.currentComment.entityAspect.rejectChanges();\r\n }\r\n this.currentComment = null;\r\n this.commentText = null;\r\n }\r\n }\r\n\r\n clearResponseForm() {\r\n this.cancelChanges();\r\n\r\n if (!this.hasNoAnswerNeededQuestionOption()) {\r\n this.currentQuestion.selectedOptionId = null;\r\n }\r\n }\r\n\r\n hasNoAnswerNeededQuestionOption() {\r\n return this.currentQuestion\r\n && this.currentQuestion.engagementQuestionOptions\r\n && this.currentQuestion.engagementQuestionOptions\r\n .filter(x => x.standardQuestionOption && x.standardQuestionOption.name === NO_ANSWER_NEEDED_NAME).length > 0;\r\n }\r\n\r\n populateFilterObject(eventValue, property) {\r\n switch (property) {\r\n case 'isComplete':\r\n this.questionFilters.isComplete = eventValue == false ? null : eventValue;\r\n break;\r\n\r\n case 'selectedOptionId':\r\n this.questionFilters.selectedOptionId = eventValue == false ? null : eventValue;\r\n break;\r\n\r\n case 'tag':\r\n this.questionFilters.tag = eventValue == false ? null : eventValue;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n this.setFilterIsActive();\r\n }\r\n\r\n setFilterIsActive() {\r\n let filterIsNotNull = false;\r\n for (const property in this.questionFilters) {\r\n if (this.questionFilters[property]) {\r\n filterIsNotNull = true;\r\n }\r\n }\r\n\r\n this.filterIsActive = filterIsNotNull ? true : false\r\n\r\n if (!this.filterIsActive && this.currentQuestion) {\r\n this.checkParentSection();\r\n }\r\n }\r\n\r\n setCurrentFilteredSection() {\r\n if (this.currentSection != null) {\r\n this.currentFilteredSection = {\r\n ...this.currentSection,\r\n filteredEngagementQuestions: this.filteredQuestions[this.currentSection.id] == undefined ? [] : this.filteredQuestions[this.currentSection.id].filter(q => q.isActivated)\r\n }\r\n }\r\n }\r\n\r\n setCurrentFilteredQuestionNumber() {\r\n this.currentFilteredQuestionNumber = this.getIndexOfFilteredQuestion() + 1;\r\n }\r\n\r\n getIndexOfFilteredQuestion() {\r\n return this.currentFilteredSection.filteredEngagementQuestions.findIndex((question, index) => {\r\n return question.id == this.currentQuestion.id;\r\n });\r\n }\r\n\r\n setNextQuestionDisable() {\r\n if (this.currentSection == null) {\r\n this.nextQuestionDisabled = true;\r\n } else if (!this.filterIsActive) {\r\n this.nextQuestionDisabled = this.questionNumber == this.currentSection.engagementQuestions.filter(q => q.isActivated).length;\r\n } else {\r\n const filteredQuestLength = this.currentFilteredSection.filteredEngagementQuestions.filter(q => q.isActivated).length;\r\n this.nextQuestionDisabled = this.currentQuestion.displayOrder == filteredQuestLength;\r\n }\r\n }\r\n\r\n setPrevQuestionDisable() {\r\n if (!this.filterIsActive) {\r\n this.prevQuestionDisabled = this.questionNumber == 1\r\n } else {\r\n const indexOfCurrentQuestion = this.getIndexOfFilteredQuestion();\r\n this.prevQuestionDisabled = indexOfCurrentQuestion == 0 ? true : false;\r\n }\r\n }\r\n\r\n getTags() {\r\n return this.uow.getActiveTags()\r\n .then(result => {\r\n this.tags = result;\r\n });\r\n }\r\n\r\n getAllEngagementOptions() {\r\n for (let section of this.engagement.engagementSections) {\r\n for (let question of section.engagementQuestions) {\r\n for (let option of question.engagementQuestionOptions) {\r\n if (!this.allEngagementOptions.find(o => o.standardQuestionOptionId == option.standardQuestionOptionId)) {\r\n this.allEngagementOptions.push(option);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n filterQuestions(question: EngagementQuestion) {\r\n const engagementSectionId = question.engagementSectionId;\r\n\r\n if (!this.filteredQuestions[question.engagementSectionId]) {\r\n this.filteredQuestions = {\r\n ...this.filteredQuestions,\r\n [engagementSectionId]: [question],\r\n }\r\n } else if (!this.filteredQuestions[question.engagementSectionId].some(q => q.id == question.id)) {\r\n this.filteredQuestions[question.engagementSectionId].push(question)\r\n }\r\n }\r\n\r\n printReport() {\r\n const engagementId = this.engagement.id;\r\n const statusFilter = this.questionFilters.isComplete == 'null' ? '' : this.questionFilters.isComplete\r\n const answerFilter = this.questionFilters.selectedOptionId == 'null' ? '' : this.questionFilters.selectedOptionId\r\n const tagFilter = this.questionFilters.tag == 'null' ? '' : this.questionFilters.tag;\r\n const currentUrl = window.location.origin;\r\n\r\n this.http.get(\r\n `${currentUrl}/breeze/getEngagementReport?engagementId=${engagementId}&statusFilter=${statusFilter}&answerFilter=${answerFilter}&tagFilter=${tagFilter}`,\r\n { responseType: 'blob' }\r\n )\r\n .toPromise()\r\n .then(response => {\r\n var link = document.createElement('a');\r\n\r\n //use if user is on IE\r\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\r\n link.target = \"_blank\";\r\n var fileName = `${this.engagement.name}.pdf`;\r\n link.click();\r\n window.navigator.msSaveOrOpenBlob(response, fileName);\r\n } else {\r\n window.open(URL.createObjectURL(response), '_blank');\r\n }\r\n }).catch(e => {\r\n console.error(e);\r\n });\r\n }\r\n}\r\n","
\r\n

My Assignments

\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
    \r\n
  1. \r\n \r\n
  2. \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Engagement Code:{{engagement.code}}
Client Name:{{engagement.client?.name}}
 
Team Captain:{{engagement.inspectionLead?.fullName}}
Office:{{engagement.office?.name}}Year:{{engagement.inspectionYear}}
Region:{{engagement.regionCode}}
Focus Section:{{getFocusSection()}}
\r\n
\r\n\r\n
\r\n

Please select a section to complete. 0\">Your actionable sections are:

\r\n
    0\">\r\n
  • \r\n \r\n
  • \r\n
\r\n
\r\n \r\n \r\n Return to inspections list\r\n \r\n
\r\n\r\n
\r\n
\r\n Section:{{currentSection.name}}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {{hoverSectionName}}\r\n
\r\n\r\n
\r\n\r\n
\r\n
0\">\r\n \r\n \r\n \r\n Question {{questionNumber}} of {{numberOfActiveQuestionsInSection}}\r\n \r\n \r\n \r\n Question {{currentFilteredQuestionNumber}} of {{currentFilteredSection.filteredEngagementQuestions.length}}\r\n \r\n \r\n \r\n ( Completed by {{currentQuestion.respondingTeamMember?.employee?.fullName}} on {{formatDate(currentQuestion.responseDate)}})\r\n \r\n \r\n ( Answered by {{currentQuestion.respondingTeamMember?.employee?.fullName}} on {{formatDate(currentQuestion.responseDate)}})\r\n \r\n\r\n \r\n Next up:\r\n \r\n \r\n
\r\n\r\n

\r\n {{currentQuestion.name}}\r\n

\r\n\r\n
\r\n

{{currentQuestion.description}}

\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n Comment is required.\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Comments ({{(currentQuestion && currentComments ? currentComments.length : 0)}})\r\n \r\n \r\n
\r\n
    \r\n
  • \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    {{comment.originalText}}

    \r\n
    \r\n
    \r\n

    {{comment.modifiedByUser?.fullName || comment.createdByUser?.fullName}}

    \r\n

    {{formatDate(comment.modifiedDate || comment.createdDate)}}

    \r\n
    \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n Help\r\n \r\n \r\n
\r\n
\r\n
\r\n Questionnaire Navigation\r\n
\r\n

\r\n Use the left sidebar to view a section or question.\r\n

\r\n

\r\n Your assigned sections are indicated by the icon.\r\n Completed questions are indicated by the icon.\r\n The icon indicates a question with a response which is\r\n not marked as complete.\r\n

\r\n
\r\n\r\n
\r\n
\r\n Question Help\r\n
\r\n

{{ currentQuestion.helpText }}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
Please confirm
\r\n \r\n
\r\n
\r\n

\r\n This question has an existing response from another team member. Continue saving? This will\r\n replace the existing response with your submission.\r\n

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'home-grid-pager',\r\n inputs: ['page', 'limit', 'pageCount', 'limits'],\r\n templateUrl: './home-pager.component.html'\r\n})\r\nexport class HomeGridPager implements OnInit {\r\n @Input() page: number;\r\n @Input() limit: number;\r\n @Input() pageCount: number;\r\n @Input() limits: number[];\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","\r\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport Config from '../../services/config';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { Role } from '../../../model/role';\r\nimport { Router, Route } from '@angular/router';\r\nimport { MsalBroadcastService, MsalService } from '@azure/msal-angular';\r\nimport { filter } from 'rxjs/operators';\r\nimport { InteractionStatus } from '@azure/msal-browser';\r\nimport { Profile } from '../../../typings';\r\nimport { SharedDataService } from '../../services/shared-data/shared-data.service';\r\nimport { ServerSideConfigDataService } from '../../services/server-side-config-data/server-side-config-data.service';\r\n\r\n@Component({\r\n selector: 'app-nav-menu',\r\n templateUrl: './nav-menu.component.html',\r\n styleUrls: ['./nav-menu.component.less']\r\n})\r\nexport class NavMenuComponent implements OnDestroy, OnInit {\r\n appTitle = Config.appTitle;\r\n name: BehaviorSubject = new BehaviorSubject(\"\");\r\n showMenu: boolean;\r\n private userSub: Subscription;\r\n\r\n isAdmin: BehaviorSubject = new BehaviorSubject(false);\r\n isNationalQcAdmin: BehaviorSubject = new BehaviorSubject(false);\r\n isActive: BehaviorSubject = new BehaviorSubject(false);\r\n hasICSAccess: BehaviorSubject = new BehaviorSubject(false);\r\n\r\n routes: Route[] = [];\r\n\r\n constructor(private router: Router, private broadcastService: MsalBroadcastService, private msalService: MsalService, private cd: ChangeDetectorRef, private sharedData: SharedDataService, private serverSide: ServerSideConfigDataService) {\r\n this.showMenu = false;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userSub = this.broadcastService.inProgress$\r\n .pipe(filter((status: InteractionStatus) => status === InteractionStatus.None))\r\n .subscribe(() => {\r\n this.showMenu = true;\r\n\r\n const account: Profile = this.msalService.instance.getAllAccounts()[0];\r\n\r\n this.name.next(account.idTokenClaims.name);\r\n this.isAdmin.next(account.idTokenClaims && account.idTokenClaims.roles && account.idTokenClaims.roles.includes(Role.admin));\r\n this.isNationalQcAdmin.next(account.idTokenClaims && account.idTokenClaims.roles && account.idTokenClaims.roles.includes(Role.nationalQcAdmin));\r\n this.hasICSAccess.next(account.idTokenClaims && account.idTokenClaims.roles && account.idTokenClaims.roles.includes(Role.icsAccess));\r\n this.isActive.next(account.idTokenClaims.acct === '0');\r\n this.serverSide\r\n .loadServerSideData()\r\n .then(() => { this.getRoutes(); });\r\n });\r\n }\r\n\r\n signOut(): void {\r\n this.msalService.logoutRedirect();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.userSub) {\r\n this.userSub.unsubscribe();\r\n }\r\n }\r\n\r\n getRoutes(): void {\r\n const foundRoutes: Route[] = [];\r\n\r\n if (this.router) {\r\n this.router.config.forEach(route => {\r\n if (route.data && route.data[\"order\"]) { \r\n foundRoutes.push(route);\r\n }\r\n\r\n if (route.children && route.children.length) {\r\n route.children.forEach(childRoute => {\r\n if (childRoute.data && childRoute.data[\"order\"]) {\r\n if (childRoute.data['requiresAdmin'] === true) {\r\n if (this.sharedData.me.value.isAdmin) {\r\n foundRoutes.push(childRoute);\r\n }\r\n } else if (childRoute.data['requiresQcAdmin'] === true) {\r\n if (this.sharedData.me.value.isAdmin || this.sharedData.me.value.isNationalQcAdmin) {\r\n foundRoutes.push(childRoute);\r\n }\r\n } else {\r\n foundRoutes.push(childRoute);\r\n }\r\n }\r\n })\r\n }\r\n })\r\n }\r\n this.routes = foundRoutes.sort((a, b) => {\r\n return Number(a.data[\"order\"]) == Number(b.data[\"order\"]) ? 0 : Number(a.data[\"order\"]) < Number(b.data[\"order\"]) ? -1 : 1;\r\n });\r\n }\r\n\r\n isSelfOrParentRoute(route: Route): boolean {\r\n if (route) {\r\n return this.router.isActive(route.path, true) || (route.path != \"\" && this.router.url.includes(route.path));\r\n }\r\n\r\n return false;\r\n }\r\n\r\n}\r\n\r\n","
\r\n
\r\n
\r\n {{appTitle}}\r\n
\r\n
\r\n
\r\n {{name | async}}\r\n (Logout)\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../../services/unit-of-work/unit-of-work.service';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ApplicationInsightsService } from '../../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../../services/dialog-helper';\r\nimport { IsBusyService } from '../../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../../model/model';\r\nimport * as modelDto from '../../../../model/modelDto';\r\nimport * as modelEnum from '../../../../model/modelEnums';\r\nimport { GlobalErrorHandler } from '../../../services/global-error-handler';\r\nimport { FileService } from '../../../services/file-service/file-service.service';\r\n\r\nconst loadingKey: string = 'inspection-profiles:loadData';\r\nconst saveKey: string = 'inspection-profiles:saveInspectionProfile';\r\nconst importKey: string = 'inspection-profiles:importQuestionnaire'\r\nconst defaultLimit: number = 15;\r\n\r\n@Component({\r\n selector: 'app-inspection-profiles',\r\n templateUrl: './inspection-profiles.component.html',\r\n})\r\nexport class InspectionProfilesComponent implements OnInit {\r\n inspectionProfileSummaries: modelDto.AllInspectionsSummaryDto[] = [];\r\n page: number = 1;\r\n limit: number = defaultLimit;\r\n pageCount: number = 1;\r\n pageLimitOptions = [15, 25, 50, 100];\r\n\r\n filters: modelDto.GridFilter[] = [];\r\n nameFilter: string = null;\r\n statusFilter: string = null;\r\n businessLineFilter: string = null;\r\n\r\n\r\n constructor(\r\n\t\tprivate uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n\t\tprivate activeRoute: ActivatedRoute,\r\n\t\tpublic router: Router,\r\n\t\tpublic isBusy: IsBusyService,\r\n\t\tpublic dialogHelper: DialogHelper,\r\n public fileService: FileService\r\n\t) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.activeRoute.queryParams.subscribe(routeParams => {\r\n this.page = routeParams.page && !Number.isNaN(routeParams.page) ? parseInt(routeParams.page) : 1;\r\n this.limit = routeParams.limit && !Number.isNaN(routeParams.limit) ? parseInt(routeParams.limit) : defaultLimit;\r\n\r\n this.updateDataGrid();\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n const proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n get activeInspectionProfiles() {\r\n return this.inspectionProfileSummaries.sort((a, b) => { return a.inspectionProfile.name.localeCompare(b.inspectionProfile.name); });\r\n }\r\n\r\n\r\n updateFilters(key: string, value: any) {\r\n if (this.filters.some(m => m.key == key)) {\r\n const filter = this.filters.find(m => m.key == key);\r\n filter.value = value;\r\n }\r\n else {\r\n this.filters.push({ key: key, value: value } as modelDto.GridFilter)\r\n }\r\n\r\n this.updateDataGrid();\r\n }\r\n\r\n clearFilters() {\r\n this.filters = [];\r\n this.nameFilter = null;\r\n this.statusFilter = null;\r\n this.businessLineFilter = null;\r\n\r\n this.updateDataGrid();\r\n }\r\n\r\n updateDataGrid() {\r\n this.isBusy.set(loadingKey, true, 'Loading data');\r\n Promise\r\n .all([\r\n this.getPageCount(this.limit),\r\n this.getInspectionProfiles(this.page, this.limit)])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(loadingKey, false);\r\n });\r\n }\r\n\r\n getStatusName(status: modelEnum.InspectionProfileStatus) {\r\n return this.uow.getStatusName(status);\r\n }\r\n\r\n getInspectionProfiles(page: number = 1, limit: number = defaultLimit) {\r\n return this.uow.getInspectionProfilesSummary(page, limit, JSON.stringify(this.filters))\r\n .then(result => {\r\n this.inspectionProfileSummaries = result;\r\n });\r\n }\r\n\r\n getPageCount(limit: number = defaultLimit) {\r\n return this.uow.getInspectionProfilesPageCount(limit, JSON.stringify(this.filters))\r\n .then(result => {\r\n this.pageCount = result[0];\r\n });\r\n }\r\n\r\n saveInspectionProfileChanges(profile: modelDto.AllInspectionsSummaryDto, message: string) {\r\n this.isBusy.set(saveKey, true, message);\r\n this.uow.inspectionProfiles.saveChanges([profile.inspectionProfile])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(saveKey, false);\r\n });\r\n }\r\n\r\n destroyInspectionProfile(profile: modelDto.AllInspectionsSummaryDto) {\r\n if (profile) {\r\n if (confirm('Are you sure you want to remove \"' + profile.inspectionProfile.name + '\"?')) {\r\n profile.inspectionProfile.entityAspect.setDeleted();\r\n const ind = this.inspectionProfileSummaries.findIndex(i => i.inspectionProfile.id == profile.inspectionProfile.id);\r\n this.inspectionProfileSummaries.splice(ind, 1);\r\n this.saveInspectionProfileChanges(profile, 'Removing questionnaire \"' + profile.inspectionProfile.name + '\"');\r\n }\r\n }\r\n }\r\n\r\n cloneInspectionProfile(profile: modelDto.AllInspectionsSummaryDto) {\r\n if (profile) {\r\n const newName: string = prompt('Please enter a name for the new questionnaire:', profile.inspectionProfile.name);\r\n if (newName && newName.trim() != '') {\r\n this.isBusy.set(saveKey, true, 'Saving copy of \"' + profile.inspectionProfile.name + '\" as \"' + newName + '\"');\r\n this.uow.cloneInspectionProfile(profile.inspectionProfile.id, newName)\r\n .then((newProfile) => {\r\n if (newProfile && newProfile.length > 0) {\r\n this.inspectionProfileSummaries.push(newProfile[0]);\r\n }\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n this.isBusy.set(saveKey, false);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(saveKey, false);\r\n });\r\n }\r\n }\r\n }\r\n\r\n import(files) {\r\n if (!files) {\r\n alert('No file selected');\r\n return;\r\n }\r\n\r\n if (files.length > 1) {\r\n alert('Unable to import using multiple files');\r\n return;\r\n }\r\n\r\n this.isBusy.set(importKey, true, 'Performing Import');\r\n\r\n var formData = new FormData();\r\n formData.append(\"file\", files[0]);\r\n\r\n this.fileService.importQuestionnaire(formData)\r\n .then(() => {\r\n this.getInspectionProfiles();\r\n })\r\n .finally(() => {\r\n this.isBusy.set(importKey, false);\r\n });\r\n }\r\n}\r\n","
\r\n

Engagement Review Questionnaires

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n

Questionnaires

\r\n
\r\n \r\n \r\n Create\r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
NameStatusBusiness LineSectionsQuestions
\r\n \r\n
\r\n \r\n \r\n No data to display…\r\n \r\n
\r\n
0\">\r\n \r\n \r\n Edit\r\n \r\n \r\n \r\n
\r\n
{{profile.inspectionProfile.name}}{{getStatusName(profile.inspectionProfile.inspectionProfileStatus)}}{{profile.inspectionProfile.businessLineName()}}{{profile.sectionsCount}}{{profile.questionsCount}}
\r\n
\r\n\r\n \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../../services/unit-of-work/unit-of-work.service';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ApplicationInsightsService } from '../../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../../services/dialog-helper';\r\nimport { IsBusyService } from '../../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../../model/model';\r\nimport * as modelDto from '../../../../model/modelDto';\r\nimport { GlobalErrorHandler } from '../../../services/global-error-handler';\r\n\r\nconst loadingKey: string = 'profile-questions:loadData';\r\nconst saveKey: string = 'profile-questions:saveChanges';\r\nconst defaultLimit: number = 15;\r\n\r\n@Component({\r\n selector: 'app-profile-questions',\r\n templateUrl: './profile-questions.component.html',\r\n})\r\nexport class ProfileQuestionsComponent implements OnInit {\r\n\r\n questions: model.Question[] = [];\r\n page: number = 1;\r\n limit: number = defaultLimit;\r\n pageCount: number = 1;\r\n pageLimitOptions = [15, 25, 50, 100];\r\n\r\n filters: modelDto.GridFilter[] = [];\r\n nameFilter: string = null;\r\n profileFilter: string = null;\r\n sectionFilter: string = null;\r\n tagsFilter: string = null;\r\n\r\n\r\n constructor(\r\n\t\tprivate uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n\t\tprivate activeRoute: ActivatedRoute,\r\n\t\tpublic router: Router,\r\n\t\tpublic isBusy: IsBusyService,\r\n\t\tpublic dialogHelper: DialogHelper\r\n\t) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.activeRoute.queryParams.subscribe(routeParams => {\r\n this.page = routeParams.page && !Number.isNaN(routeParams.page) ? parseInt(routeParams.page) : 1;\r\n this.limit = routeParams.limit && !Number.isNaN(routeParams.limit) ? parseInt(routeParams.limit) : defaultLimit;\r\n\r\n this.updateDataGrid();\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n get activeProfileQuestions() {\r\n return this.questions.filter(m => !m.entityAspect.entityState.isDeleted() && !m.entityAspect.entityState.isDetached());\r\n }\r\n\r\n getQuestions(page: number = 1, limit: number = defaultLimit) {\r\n return this.uow.getQuestions(page, limit, JSON.stringify(this.filters))\r\n .then(result => {\r\n this.questions = result;\r\n });\r\n }\r\n\r\n getPageCount(limit: number = defaultLimit) {\r\n return this.uow.getQuestionsPageCount(limit, JSON.stringify(this.filters))\r\n .then(result => {\r\n this.pageCount = result[0];\r\n });\r\n }\r\n\r\n updateFilters(key: string, value: any) {\r\n if (this.filters.some(m => m.key == key)) {\r\n let filter = this.filters.find(m => m.key == key);\r\n filter.value = value;\r\n }\r\n else {\r\n this.filters.push({ key: key, value: value } as modelDto.GridFilter)\r\n }\r\n\r\n this.updateDataGrid();\r\n }\r\n\r\n clearFilters() {\r\n this.filters = [];\r\n this.nameFilter = null;\r\n this.profileFilter = null;\r\n this.sectionFilter = null;\r\n this.tagsFilter = null;\r\n\r\n this.updateDataGrid();\r\n }\r\n\r\n updateDataGrid() {\r\n this.isBusy.set(loadingKey, true, 'Loading data');\r\n Promise\r\n .all([\r\n this.getPageCount(this.limit),\r\n this.getQuestions(this.page, this.limit)\r\n ])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(loadingKey, false);\r\n });\r\n }\r\n\r\n getDisplayText(question: model.Question) {\r\n return question.name || question.description.substr(0, 40) + '...';\r\n }\r\n\r\n saveProfileQuestionChanges(question: model.Question, message: string) {\r\n this.isBusy.set(saveKey, true, message);\r\n this.uow.questions.saveChanges([question])\r\n .then(() => {\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(saveKey, false);\r\n });\r\n }\r\n\r\n destroyProfileQuestion(question: model.Question) {\r\n if (question) {\r\n if (confirm('Are you sure you want to remove \"' + question.name + '\"?')) {\r\n question.entityAspect.setDeleted();\r\n this.saveProfileQuestionChanges(question, 'Removing question \"' + question.name + '\"');\r\n }\r\n }\r\n }\r\n\r\n cloneProfileQuestion(question: model.Question) {\r\n let uow = this.uow;\r\n if (question) {\r\n let newName: string = prompt('Please enter a name for the new question:', question.name);\r\n if (newName && newName.trim() != '') {\r\n let clone = uow.questions.createEntity();\r\n clone.name = question.name;\r\n clone.description = question.description;\r\n clone.helpText = question.helpText;\r\n clone.profileSection = question.profileSection;\r\n\r\n if (question.questionOptions) {\r\n question.questionOptions.forEach(function (opt) {\r\n let option = uow.questionOptions.createEntity();\r\n option.text = opt.text;\r\n option.standardQuestionOptionId = opt.standardQuestionOptionId;\r\n option.question = clone;\r\n\r\n opt.profileSectionQuestionOptions.forEach(function (psqo) {\r\n let pqo = uow.profileSectionQuestionOptions.createEntity();\r\n pqo.questionOption = option;\r\n pqo.profileSection = psqo.profileSection;\r\n\r\n option.profileSectionQuestionOptions.push(pqo);\r\n });\r\n\r\n clone.questionOptions.push(option);\r\n });\r\n }\r\n\r\n if (question.questionTags) {\r\n question.questionTags.forEach(function (qt) {\r\n let questionTag = uow.questionTags.createEntity();\r\n questionTag.question = clone;\r\n questionTag.tag = qt.tag;\r\n question.questionTags.push(questionTag);\r\n });\r\n }\r\n \r\n this.isBusy.set(saveKey, true, 'Saving copy of \"' + question.name + '\" as \"' + clone.name + '\"');\r\n this.uow.questions.saveChanges([clone])\r\n .then(() => {\r\n this.questions.push(clone);\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(saveKey, false);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","
\r\n

Engagement Review Questionnaires

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n

Questions

\r\n \r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
NameQuestionnaireSectionTags
\r\n \r\n
\r\n \r\n \r\n No data to display…\r\n \r\n
\r\n
0\">\r\n \r\n \r\n Edit\r\n \r\n \r\n
\r\n
{{getDisplayText(question)}}\r\n {{question.profileName()}}\r\n \r\n ---\r\n {{question.sectionName()}}\r\n \r\n {{qt.tag.name}}\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../../services/unit-of-work/unit-of-work.service';\r\nimport { Router, Route, ActivatedRoute } from '@angular/router';\r\nimport { ApplicationInsightsService } from '../../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../../services/dialog-helper';\r\nimport { IsBusyService } from '../../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../../model/model';\r\nimport * as modelDto from '../../../../model/modelDto';\r\nimport { GlobalErrorHandler } from '../../../services/global-error-handler';\r\n\r\nconst loadingKey: string = 'profile-sections:loadData';\r\nconst saveKey: string = 'profile-sections:saveChanges';\r\nconst defaultLimit: number = 15;\r\n\r\n@Component({\r\n selector: 'app-profile-sections',\r\n templateUrl: './profile-sections.component.html',\r\n})\r\nexport class ProfileSectionsComponent implements OnInit {\r\n\r\n profileSections: model.ProfileSection[] = [];\r\n page: number = 1;\r\n limit: number = defaultLimit;\r\n pageCount: number = 1;\r\n pageLimitOptions = [15, 25, 50, 100];\r\n\r\n filters: modelDto.GridFilter[] = [];\r\n nameFilter: string = null;\r\n profileFilter: string = null;\r\n\r\n\r\n constructor(\r\n\t\tprivate uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n\t\tprivate activeRoute: ActivatedRoute,\r\n\t\tpublic router: Router,\r\n\t\tpublic isBusy: IsBusyService,\r\n\t\tpublic dialogHelper: DialogHelper\r\n\t) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.activeRoute.queryParams.subscribe(routeParams => {\r\n this.page = routeParams.page && !Number.isNaN(routeParams.page) ? parseInt(routeParams.page) : 1;\r\n this.limit = routeParams.limit && !Number.isNaN(routeParams.limit) ? parseInt(routeParams.limit) : defaultLimit;\r\n\r\n this.updateDataGrid();\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n get activeProfileSections() {\r\n return this.profileSections.filter(m => !m.entityAspect.entityState.isDeleted() && !m.entityAspect.entityState.isDetached());\r\n }\r\n\r\n getProfileSections(page: number = 1, limit: number = defaultLimit) {\r\n return this.uow.getProfileSections(page, limit, JSON.stringify(this.filters))\r\n .then(result => {\r\n this.profileSections = result;\r\n });\r\n }\r\n\r\n getPageCount(limit: number = defaultLimit) {\r\n return this.uow.getProfileSectionsPageCount(limit, JSON.stringify(this.filters))\r\n .then(result => {\r\n this.pageCount = result[0];\r\n });\r\n }\r\n\r\n updateFilters(key: string, value: any) {\r\n if (this.filters.some(m => m.key == key)) {\r\n let filter = this.filters.find(m => m.key == key);\r\n filter.value = value;\r\n }\r\n else {\r\n this.filters.push({ key: key, value: value } as modelDto.GridFilter)\r\n }\r\n\r\n this.updateDataGrid();\r\n }\r\n\r\n clearFilters() {\r\n this.filters = [];\r\n this.nameFilter = null;\r\n this.profileFilter = null;\r\n\r\n this.updateDataGrid();\r\n }\r\n\r\n updateDataGrid() {\r\n this.isBusy.set(loadingKey, true, 'Loading data');\r\n Promise\r\n .all([\r\n this.getPageCount(this.limit),\r\n this.getProfileSections(this.page, this.limit)\r\n ])\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(loadingKey, false);\r\n });\r\n }\r\n\r\n saveProfileSectionChanges(section: model.ProfileSection, message: string) {\r\n this.isBusy.set(saveKey, true, message);\r\n this.uow.profileSections.saveChanges([section])\r\n .then(() => {\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(saveKey, false);\r\n });\r\n }\r\n\r\n destroyProfileSection(section: model.ProfileSection) {\r\n if (section) {\r\n section.entityAspect.setDeleted();\r\n this.saveProfileSectionChanges(section, 'Removing profile section')\r\n }\r\n }\r\n}\r\n","
\r\n

Engagement Review Questionnaires

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n

Questionnaire Sections

\r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
NameQuestionnaireSectionsQuestions
\r\n \r\n
\r\n \r\n \r\n No data to display…\r\n \r\n
{{section.name}}\r\n {{section.profileName()}}\r\n {{section.sectionCount()}}{{section.questionCount()}}
\r\n
\r\n\r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input, ViewEncapsulation } from '@angular/core';\r\nimport { ApplicationInsightsService } from '../../../../services/application-insights/application-insights.service';\r\nimport { DialogHelper } from '../../../../services/dialog-helper';\r\nimport { IsBusyService } from '../../../../services/is-busy/is-busy.service';\r\nimport { UnitOfWorkService } from '../../../../services/unit-of-work/unit-of-work.service';\r\nimport { CdkDragDrop, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\r\nimport Utilities from '../../../../services/utilities';\r\nimport { InspectionProfile, ProfileSection, Question } from '../../../../../model/model';\r\nimport { GlobalErrorHandler } from '../../../../services/global-error-handler';\r\nimport { Profile } from '../../../../../typings';\r\n\r\n@Component({\r\n selector: 'inspection-dragdrop',\r\n inputs: ['node', 'i', 'inspectionProfile'],\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: './inspection-dragdrop.component.html',\r\n styleUrls: ['./inspection-dragdrop.component.less']\r\n})\r\nexport class InspectionDragdropComponent implements OnInit {\r\n @Input() node: ProfileSection;\r\n @Input() i: number;\r\n @Input() inspectionProfile: InspectionProfile;\r\n @Input() context: any;\r\n @Input() isQuestion: boolean;\r\n\r\n displayEditQuestion: Question = null;\r\n allProfileSectionIds: string[] = [];\r\n unsortedProfileSections: ProfileSection[] = [];\r\n\r\n constructor(\r\n private uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n public isBusy: IsBusyService,\r\n public dialogHelper: DialogHelper\r\n ) { }\r\n\r\n ngOnInit() {\r\n if (this.inspectionProfile && this.inspectionProfile.profileSections) {\r\n this.inspectionProfile.profileSections.forEach(s => this.allProfileSectionIds.push(s.id.toString()));\r\n }\r\n\r\n this.unsortedProfileSections = this.rootProfileSections;\r\n }\r\n\r\n get rootProfileSections() {\r\n if (this.inspectionProfile && this.inspectionProfile.profileSections) {\r\n this.inspectionProfile.profileSections.forEach(s => this.sortSectionAndChildren(s));\r\n return this.inspectionProfile.profileSections.filter(m => m.parentSectionId == null).sort(Utilities.sortByDisplayOrder)\r\n }\r\n\r\n return [];\r\n }\r\n\r\n get hasChanges() {\r\n if (this.isQuestion) {\r\n return this.inspectionProfile.entityAspect.entityState.isAddedModifiedOrDeleted()\r\n || this.inspectionProfile.profileSections.filter(s => s.entityAspect.entityState.isAddedModifiedOrDeleted() ||\r\n s.questions.some(q => q.entityAspect.entityState.isAddedModifiedOrDeleted() || q.initialIndex != null || q.initialSection != null)).length > 0;\r\n }\r\n else if (!this.isQuestion) {\r\n return this.inspectionProfile.entityAspect.entityState.isAddedModifiedOrDeleted()\r\n || this.inspectionProfile.profileSections.filter(s => s.entityAspect.entityState.isAddedModifiedOrDeleted() || s.initialIndex != null).length > 0;\r\n }\r\n }\r\n\r\n toggleSection(section: ProfileSection) {\r\n if (section) {\r\n section.isCollapsed = !section.isCollapsed;\r\n }\r\n }\r\n\r\n sortSectionAndChildren(section: ProfileSection) {\r\n if (section.childSections) {\r\n section.childSections.sort(Utilities.sortByDisplayOrder);\r\n section.childSections.forEach(s => this.sortSectionAndChildren(s));\r\n }\r\n }\r\n\r\n resetDisplayOrder(section: ProfileSection, container: ProfileSection[] = []) {\r\n if (this.isQuestion) {\r\n if (section && section.questions && section.questions.length) {\r\n let i = 1;\r\n section.questions.forEach(q => {\r\n q.displayOrder = i;\r\n i = i + 1;\r\n });\r\n }\r\n }\r\n else if (!this.isQuestion) {\r\n if (container) {\r\n let i = 1;\r\n container.forEach(c => {\r\n console.log(c.name, c.displayOrder, i);\r\n c.displayOrder = i;\r\n i = i + 1;\r\n\r\n this.resetDisplayOrder(null, c.childSections);\r\n });\r\n }\r\n }\r\n }\r\n\r\n checkMoved(section: ProfileSection, question: Question, i: number) {\r\n if (this.isQuestion) {\r\n const q = question.initialIndex != null && question.initialIndex != i && question.initialIndex >= 0;\r\n const s = question.initialSection != null && question.initialSection.id != section.id && section.id >= 0;\r\n return q || s;\r\n }\r\n else if (!this.isQuestion && section.initialIndex !== null && section.initialIndex >= 0) {\r\n return section.initialIndex !== i;\r\n }\r\n }\r\n\r\n undoMove(container: ProfileSection[], section: ProfileSection, question: Question, i: number) {\r\n if (this.isQuestion) {\r\n if (question && section && question.initialSection) {\r\n transferArrayItem(section.questions, question.initialSection.data, i, question.initialIndex);\r\n } else {\r\n moveItemInArray(section.questions, i, question.initialIndex);\r\n }\r\n question.initialIndex = null;\r\n question.initialSection = null;\r\n question.entityAspect.rejectChanges();\r\n }\r\n else if (!this.isQuestion) {\r\n if (container && section) {\r\n moveItemInArray(container, i, section.initialIndex);\r\n }\r\n\r\n section.initialIndex = null;\r\n section.entityAspect.rejectChanges();\r\n }\r\n }\r\n\r\n drop(event: CdkDragDrop) {\r\n if (event.previousContainer == event.container) {\r\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n if (!event.item.data.initialIndex && event.item.data.initialIndex != 0) {\r\n event.item.data.initialIndex = event.previousIndex;\r\n }\r\n } else {\r\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\r\n if (!event.item.data.initialSection) {\r\n event.item.data.initialSection = event.previousContainer;\r\n }\r\n if (!event.item.data.initialIndex && event.item.data.initialIndex != 0) {\r\n event.item.data.initialIndex = event.previousIndex;\r\n }\r\n event.item.data.profileSectionId = event.container.id;\r\n }\r\n }\r\n\r\n // Undo move for all questions\r\n cancelReorderChanges() {\r\n const confirmation = this.dialogHelper.confirm('Undo all changes?');\r\n\r\n confirmation.subscribe(result => {\r\n if (result) {\r\n this.undoAllChanges();\r\n }\r\n });\r\n }\r\n\r\n undoAllChanges() {\r\n this.inspectionProfile.profileSections\r\n .filter(s => s.questions.some(q => q.initialIndex != null || q.initialSection != null))\r\n .forEach(s => {\r\n s.questions.filter(q => q.initialIndex != null || q.initialSection != null).forEach(q => {\r\n const ind = s.questions.findIndex(sq => sq.id == q.id);\r\n if (ind > -1) {\r\n this.undoMove(null, s, q, ind);\r\n }\r\n });\r\n });\r\n }\r\n\r\n closeReorderChanges() {\r\n this.context.reorderQuestions = false;\r\n this.context.reorderSections = false;\r\n }\r\n\r\n saveReorderChanges() {\r\n const confirmation = this.dialogHelper.confirm('Display orders will be reassigned in the current order for all modified sections. Would you like to save your changes?');\r\n confirmation.subscribe(result => {\r\n if (result && this.isQuestion) {\r\n this.isBusy.set('savingQuestions', true, 'Saving');\r\n const moved = this.inspectionProfile.profileSections.filter(s => s.entityAspect.entityState.isAddedModifiedOrDeleted() ||\r\n s.questions.some(q => q.entityAspect.entityState.isAddedModifiedOrDeleted() || q.initialIndex != null || q.initialSection != null));\r\n moved.forEach(s => this.resetDisplayOrder(s));\r\n this.uow.commit()\r\n .then(() => {\r\n this.inspectionProfile.profileSections.forEach(s => {\r\n s.questions.forEach(q => {\r\n q.initialIndex = null;\r\n q.initialSection = null;\r\n });\r\n });\r\n this.isBusy.set('savingQuestions', false, 'Success');\r\n })\r\n .catch((reason) => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('savingQuestions', false);\r\n });\r\n }\r\n else if (result && !this.isQuestion) {\r\n this.isBusy.set('savingQuestions', true, 'Saving');\r\n const moved = this.inspectionProfile.profileSections.filter(s => s.entityAspect.entityState.isAddedModifiedOrDeleted() || s.initialIndex != null);\r\n moved.forEach(s => this.resetDisplayOrder(null, this.unsortedProfileSections));\r\n this.uow.commit()\r\n .then(() => {\r\n this.inspectionProfile.profileSections.forEach(s => {\r\n s.initialIndex = null;\r\n });\r\n this.isBusy.set('savingQuestions', false, 'Success');\r\n })\r\n .catch((reason) => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('savingQuestions', false);\r\n });\r\n }\r\n });\r\n }\r\n\r\n setEditQuestion(question: Question) {\r\n if (question) {\r\n this.displayEditQuestion = question;\r\n }\r\n }\r\n\r\n saveDisplayQuestion(question: Question) {\r\n if (question && question.entityAspect.entityState.isModified()) {\r\n //console.log(question);\r\n }\r\n this.displayEditQuestion = null;\r\n }\r\n\r\n getDisplayText(question, max = 60) {\r\n if (question.name) {\r\n if (question.name.length > max) {\r\n return question.name.substr(0, max) + '...';\r\n }\r\n return question.name;\r\n }\r\n if (question.description) {\r\n if (question.description.length > max) {\r\n return question.description.substr(0, max) + '...';\r\n }\r\n return question.description;\r\n }\r\n return '';\r\n }\r\n\r\n}\r\n","
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {{ getDisplayText(question) }}\r\n {{ question.displayOrder }}\r\n \r\n \r\n {{ getDisplayText(question) }}\r\n {{ section.name }}\r\n {{ question.displayOrder }}\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {{section.name}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
10\">\r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit, Injector } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../../services/unit-of-work/unit-of-work.service';\r\nimport Utilities from '../../../services/utilities';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ApplicationInsightsService } from '../../../services/application-insights/application-insights.service';\r\nimport { DialogHelper } from '../../../services/dialog-helper';\r\nimport { Observable } from 'rxjs';\r\nimport { IsBusyService } from '../../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../../model/model';\r\nimport * as modelEnum from '../../../../model/modelEnums';\r\nimport { GlobalErrorHandler } from '../../../services/global-error-handler';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmationDialogComponent } from '../../shared/confirmation-dialog/confirmation-dialog.component';\r\nimport { SharedDataService } from '../../../services/shared-data/shared-data.service';\r\nimport { FileService } from '../../../services/file-service/file-service.service';\r\n\r\nconst LOADING_KEY: string = 'inspection-profile:loadData';\r\nconst SAVING_KEY: string = 'inspection-profile:saveData';\r\n\r\n@Component({\r\n selector: 'app-inspection-profile',\r\n templateUrl: './inspection-profile-editor.component.html',\r\n})\r\nexport class InspectionProfileAdminComponent implements OnInit {\r\n\r\n inspectionProfileStatuses: { status: modelEnum.InspectionProfileStatus, title: string }[] = [];\r\n industries: model.Industry[] = [];\r\n businessLines: model.BusinessLine[] = [];\r\n standardOptions: model.StandardQuestionOption[] = [];\r\n unassignedQuestions: model.Question[] = [];\r\n tags: model.Tag[] = [];\r\n activatingTags: model.EngagementQuestionActivatingTag[] = [];\r\n\r\n questionToCloneId: number = null;\r\n isExistingQuestion: boolean = false;\r\n\r\n id: string = null;\r\n inspectionProfile: model.InspectionProfile = {} as model.InspectionProfile;\r\n isLoading: boolean = true;\r\n reorderQuestions: boolean = false;\r\n reorderSections: boolean = false;\r\n\r\n constructor(\r\n private activeRoute: ActivatedRoute,\r\n private uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n public router: Router,\r\n public isBusy: IsBusyService,\r\n public dialogHelper: DialogHelper,\r\n private injector: Injector,\r\n private dialog: MatDialog,\r\n private sharedData: SharedDataService,\r\n private fileService: FileService\r\n ) {\r\n appInsights.logPageView();\r\n this.dialog = this.injector.get(MatDialog);\r\n this.inspectionProfileStatuses = uow.inspectionProfileStatuses;\r\n }\r\n\r\n ngOnInit() {\r\n this.activeRoute.queryParams.subscribe(routeParams => {\r\n this.isLoading = true;\r\n this.isBusy.set(LOADING_KEY, true, 'Loading questionnaire data');\r\n Promise\r\n .all([\r\n this.getBusinessLines(),\r\n this.getStandardQuestionOptions(),\r\n this.getUnassignedQuestions(),\r\n this.getTags(),\r\n ])\r\n .then(() => {\r\n this.getInspectionProfile(routeParams.id);\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(LOADING_KEY, false);\r\n this.isLoading = false;\r\n });\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n console.log(this.uow.getChanges());\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n get rootProfileSections() {\r\n return this.inspectionProfile && this.inspectionProfile.profileSections ? this.inspectionProfile.profileSections.filter(m => !m.parentSectionId).sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n get currentUnassignedQuestions() {\r\n return this.unassignedQuestions ? this.unassignedQuestions.filter(m => !m.profileSectionId).sort(Utilities.sortByName) : [];\r\n }\r\n\r\n get activeSection(): model.ProfileSection {\r\n return this.inspectionProfile && this.inspectionProfile.profileSections ? this.inspectionProfile.profileSections.find(m => m.isEditing) : {} as model.ProfileSection;\r\n }\r\n\r\n get activeQuestion(): model.Question {\r\n return this.activeSection && this.activeSection.questions ? this.activeSection.questions.find(m => m.isEditing) : {} as model.Question;\r\n }\r\n\r\n get activeQuestionOptions() {\r\n return this.activeQuestion.questionOptions.filter(m => !m.isDeleted).sort(Utilities.sortByDisplayOrder);\r\n }\r\n\r\n get currentTags() {\r\n return this.activeQuestion && this.activeQuestion.questionTags ? this.activeQuestion.questionTags.filter(m => m.tag).sort(Utilities.sortByName) : [];\r\n }\r\n\r\n get canChangeStatus() {\r\n return this.inspectionProfile.id > 0 && (!this.inspectionProfile.engagements || !this.inspectionProfile.engagements.some(m => !m.isDeleted));\r\n }\r\n\r\n get nextQuestion(): model.Question {\r\n const psQuestions = this.activeSection ? this.activeSection.questions : null;\r\n if (psQuestions && this.activeQuestion.id !== psQuestions[psQuestions.length - 1].id) {\r\n const currentQuestionIndex = psQuestions.findIndex(q => q.id == this.activeQuestion.id);\r\n const nextQuest = currentQuestionIndex > -1 ? psQuestions[currentQuestionIndex + 1] : null;\r\n return nextQuest;\r\n } else if (psQuestions && this.activeQuestion.id == psQuestions[psQuestions.length - 1].id) {\r\n const currentPSIndex = this.inspectionProfile.profileSections.findIndex(ps => ps.id == this.activeSection.id);\r\n const newPS = currentPSIndex + 1 <= this.inspectionProfile.profileSections.length - 1 ? this.inspectionProfile.profileSections[currentPSIndex + 1] : null;\r\n if (newPS && newPS.questions.length > 0) {\r\n return newPS.questions[0];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n get previousQuestion(): model.Question {\r\n const psQuestions = this.activeSection ? this.activeSection.questions : null;\r\n if (psQuestions && this.activeQuestion.id !== psQuestions[0].id) {\r\n const currentQuestionIndex = psQuestions.findIndex(q => q.id == this.activeQuestion.id);\r\n const previousQuest = currentQuestionIndex > -1 ? psQuestions[currentQuestionIndex - 1] : null;\r\n return previousQuest;\r\n } else if (psQuestions && this.activeQuestion.id == psQuestions[0].id) {\r\n const currentPSIndex = this.inspectionProfile.profileSections.findIndex(ps => ps.id == this.activeSection.id);\r\n const newPS = currentPSIndex - 1 >= 0 ? this.inspectionProfile.profileSections[currentPSIndex - 1] : null;\r\n if (newPS && newPS.questions.length > 0) {\r\n return newPS.questions[newPS.questions.length - 1];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n get hasChanges() {\r\n const a = this.uow.inspectionProfiles.hasChanges.value;\r\n const b = this.uow.questions.hasChanges.value;\r\n const c = this.uow.profileSections.hasChanges.value;\r\n const d = this.uow.profileSectionQuestionOptions.hasChanges.value;\r\n const e = this.uow.questionTags.hasChanges.value;\r\n const f = this.uow.questionOptions.hasChanges.value;\r\n\r\n return a || b || c || d || e || f;\r\n }\r\n\r\n undoChanges() {\r\n if (this.hasChanges) {\r\n this.uow.rollback();\r\n }\r\n }\r\n\r\n getBusinessLines() {\r\n return this.uow.getBusinessLines()\r\n .then(result => {\r\n this.businessLines = result;\r\n });\r\n }\r\n\r\n getStandardQuestionOptions() {\r\n return this.uow.getStandardQuestionOptions()\r\n .then(result => {\r\n this.standardOptions = result;\r\n });\r\n }\r\n\r\n getUnassignedQuestions() {\r\n return this.uow.getUnassignedQuestions()\r\n .then(result => {\r\n this.unassignedQuestions = result;\r\n });\r\n }\r\n\r\n getTags() {\r\n return this.uow.getActiveTags()\r\n .then(result => {\r\n this.tags = result;\r\n });\r\n }\r\n\r\n getInspectionProfile(id: string) {\r\n this.id = id;\r\n\r\n if (id == 'new') {\r\n this.inspectionProfile = this.uow.inspectionProfiles.createEntity();\r\n this.inspectionProfile.inspectionProfileStatus = modelEnum.InspectionProfileStatus.draft;\r\n } else {\r\n this.isBusy.set('questData', true, 'Loading questions');\r\n return this.uow.getInspectionProfileById(parseInt(id))\r\n .then(result => {\r\n if (result && result.length > 0) {\r\n this.inspectionProfile = result[0];\r\n if (this.inspectionProfile.profileSections && this.inspectionProfile.profileSections.length) {\r\n this.inspectionProfile.profileSections.sort(Utilities.sortByDisplayOrder).forEach(s => s.questions.sort(Utilities.sortByDisplayOrder));\r\n }\r\n this.clearQuestionEditor();\r\n }\r\n else {\r\n this.router.navigate(['./inspection-profiles'], { relativeTo: this.activeRoute.parent });\r\n }\r\n })\r\n .catch((reason) => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('questData', false);\r\n });\r\n }\r\n }\r\n\r\n\r\n addRootSection() {\r\n let name: string = null;\r\n if (name = prompt('Please enter new section name:')) {\r\n const newSection = this.uow.profileSections.createEntity();\r\n newSection.name = name;\r\n newSection.displayOrder = (this.maxNodeOrder(this.inspectionProfile.profileSections) || 0) + 1;\r\n newSection.inspectionProfile = this.inspectionProfile;\r\n\r\n this.uow.profileSections.saveChanges([newSection])\r\n .then(() => {\r\n this.setActiveSection(newSection);\r\n\r\n this.uow.propagateProfileSectionChanges(newSection.id);\r\n });\r\n }\r\n }\r\n\r\n addSection(parentSection: model.ProfileSection) {\r\n let name: string = prompt('Please enter new section name:');\r\n if (name != null) {\r\n const section = this.uow.profileSections.createEntity();\r\n section.name = name;\r\n section.parentSection = parentSection;\r\n section.displayOrder = (this.maxNodeOrder(parentSection.childSections) || 0) + 1;\r\n section.inspectionProfile = this.inspectionProfile;\r\n\r\n this.uow.profileSections.saveChanges([section])\r\n .then(() => {\r\n this.setActiveSection(section);\r\n\r\n this.uow.propagateProfileSectionChanges(section.id);\r\n });\r\n }\r\n }\r\n\r\n saveSectionChanges(section: model.ProfileSection) {\r\n return this.uow.profileSections.saveChanges([section])\r\n .then(() => {\r\n this.uow.propagateProfileSectionChanges(section.id);\r\n });\r\n }\r\n\r\n removeSection(section: model.ProfileSection) {\r\n if (section.id > 0) {\r\n section.entityAspect.setDeleted();\r\n\r\n this.uow.profileSections.saveChanges([section])\r\n .then(() => {\r\n this.uow.propagateProfileSectionChanges(section.id);\r\n });\r\n }\r\n else {\r\n this.uow.profileSections.cancelChanges(section);\r\n }\r\n }\r\n\r\n setActiveSection(section?: model.ProfileSection) {\r\n this.inspectionProfile.profileSections.forEach(m => {\r\n m.questions.forEach(q => q.isEditing = false);\r\n m.isEditing = false;\r\n });\r\n\r\n if (section) {\r\n section.isEditing = true;\r\n }\r\n\r\n this.clearQuestionEditor();\r\n }\r\n\r\n\r\n expandAll() {\r\n if (this.inspectionProfile && this.inspectionProfile.profileSections) {\r\n this.inspectionProfile.profileSections.forEach((m) => { m.isCollapsed = false; })\r\n }\r\n }\r\n\r\n collapseAll() {\r\n if (this.inspectionProfile && this.inspectionProfile.profileSections) {\r\n this.inspectionProfile.profileSections.forEach((m) => { m.isCollapsed = true; })\r\n }\r\n }\r\n\r\n openReorderQuestionComp() {\r\n this.reorderQuestions = true;\r\n }\r\n\r\n openReorderSectionComp() {\r\n this.reorderSections = true;\r\n }\r\n\r\n maxNodeOrder(nodes: model.ProfileSection[]): number {\r\n return nodes && nodes.length > 0 ? Math.max.apply(Math, nodes.map(function (o) { return o.displayOrder; })) : 0;\r\n }\r\n\r\n maxQuestionOrder(questions: model.Question[]): number {\r\n return questions && questions.length > 0 ? Math.max.apply(Math, questions.map(function (o) { return o.displayOrder; })) : 0;\r\n }\r\n\r\n maxOptionOrder(options: model.QuestionOption[]): number {\r\n return options && options.length > 0 ? Math.max.apply(Math, options.map(function (o) { return o.displayOrder; })) : 0;\r\n }\r\n\r\n\r\n addOption() {\r\n if (!this.activeQuestion.questionOptions) {\r\n this.activeQuestion.questionOptions = [];\r\n }\r\n\r\n const option = this.uow.questionOptions.createEntity();\r\n option.standardQuestionOptionId = null;\r\n option.displayOrder = (this.maxOptionOrder(this.activeQuestion.questionOptions) || 0) + 1;\r\n option.question = this.activeQuestion;\r\n }\r\n\r\n removeOption(option: model.QuestionOption) {\r\n if (confirm('Are you sure you want to remove this option?')) {\r\n if (option.id > 0) {\r\n option.isDeleted = true;\r\n }\r\n else {\r\n this.uow.questionOptions.cancelChanges(option);\r\n }\r\n }\r\n }\r\n\r\n checkOption(option: model.QuestionOption, section: model.ProfileSection) {\r\n if (option) {\r\n return this.activeSection && this.activeSection.id == section.id;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n addTriggeredSection(m: string, option: model.QuestionOption) {\r\n const $select = $(m);\r\n const id = $select.val();\r\n\r\n if (!option.profileSectionQuestionOptions) {\r\n option.profileSectionQuestionOptions = [];\r\n }\r\n\r\n if (!option.profileSectionQuestionOptions.some(m => m.profileSectionId == id)) {\r\n const psqo = this.uow.profileSectionQuestionOptions.createEntity();\r\n const section = this.inspectionProfile.profileSections.find(m => m.id == id);\r\n if (section) {\r\n psqo.profileSection = section\r\n psqo.questionOption = option;\r\n }\r\n\r\n option.profileSectionQuestionOptions.push(psqo);\r\n }\r\n\r\n $select.find('option:selected').prop('disabled', true);\r\n\r\n return $select.find('option:selected').val();\r\n }\r\n\r\n addTriggeredQuestionTag(tag: string, option: model.QuestionOption) {\r\n const $select = $(tag);\r\n const selectedTagId = $select.val();\r\n\r\n if (!option.profileQuestionActivatingTags) {\r\n option.profileQuestionActivatingTags = [];\r\n }\r\n\r\n if (!option.profileQuestionActivatingTags.some(m => m.tagId == selectedTagId)) {\r\n const pqat = this.uow.profileQuestionActivatingTags.createEntity();\r\n const question = option.question;\r\n const tag = this.tags.find(t => t.id == selectedTagId);\r\n\r\n pqat.question = question;\r\n pqat.questionOption = option;\r\n pqat.tag = tag;\r\n\r\n option.profileQuestionActivatingTags.push(pqat);\r\n }\r\n\r\n $select.find('option:selected').prop('disabled', true);\r\n\r\n return $select.find('option:selected').val();\r\n }\r\n\r\n removeSectionFromOption(m: string, option: model.QuestionOption, section: model.ProfileSectionQuestionOption) {\r\n const $select = $(m);\r\n $select.find('option[value=\"' + section.profileSectionId + '\"]').prop('disabled', false);\r\n\r\n if (section.id > 0) {\r\n const associatedSectionActivatingOption = section.profileSection.engagementSections.forEach(es => es.engagementSectionEngagementQuestionOptions.forEach(eseqo => {\r\n if (eseqo.engagementSectionId == es.id && eseqo.engagementQuestionOption.questionOptionId == section.questionOptionId) {\r\n eseqo.engagementSection.isActivated = true;\r\n eseqo.engagementSection.entityAspect.setModified();\r\n eseqo.entityAspect.setDeleted();\r\n }\r\n section.entityAspect.setDeleted();\r\n }));\r\n }\r\n else {\r\n this.uow.profileSectionQuestionOptions.cancelChanges(section);\r\n }\r\n }\r\n\r\n removeTagFromOption(m: string, option: model.QuestionOption, tag: model.ProfileQuestionActivatingTag) {\r\n const $select = $(m);\r\n $select.find('option[value=\"' + tag.id + '\"]').prop('disabled', false);\r\n\r\n if (tag.id > 0) {\r\n const associatedEngagementQuestionActivatingTag = tag.tag.engagementQuestionActivatingTags.find(eqat => eqat.tagId == tag.tagId && tag.questionOptionId == eqat.engagementQuestionOption.questionOptionId);\r\n if (associatedEngagementQuestionActivatingTag) {\r\n associatedEngagementQuestionActivatingTag.entityAspect.setDeleted();\r\n }\r\n tag.entityAspect.setDeleted();\r\n }\r\n else {\r\n this.uow.profileQuestionActivatingTags.cancelChanges(tag);\r\n }\r\n }\r\n\r\n addTag(tagId: number) {\r\n if (!this.activeQuestion.questionTags) {\r\n this.activeQuestion.questionTags = [];\r\n }\r\n\r\n if (!this.activeQuestion.questionTags.some(m => m.tagId == tagId)) {\r\n const qt = this.uow.questionTags.createEntity();\r\n const tag = this.tags.find(m => m.id == tagId);\r\n qt.tag = tag;\r\n qt.question = this.activeQuestion;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n removeTag(tag: model.QuestionTag) {\r\n if (tag.id > 0) {\r\n tag.entityAspect.setDeleted();\r\n }\r\n else {\r\n this.uow.questionTags.cancelChanges(tag);\r\n }\r\n }\r\n\r\n\r\n clearQuestionEditor() {\r\n if (this.activeQuestion) {\r\n this.activeQuestion.isEditing = false;\r\n }\r\n\r\n this.isExistingQuestion = false;\r\n }\r\n\r\n cancelQuestionChanges() {\r\n if (this.activeQuestion) {\r\n this.uow.rollback();\r\n }\r\n\r\n this.clearQuestionEditor();\r\n }\r\n\r\n saveQuestionChanges() {\r\n this.isBusy.set(SAVING_KEY, true, 'Saving changes to current question');\r\n\r\n return this.uow.commit()\r\n .then(() => {\r\n this.isBusy.set(SAVING_KEY, false);\r\n this.isBusy.set(SAVING_KEY, true, 'Done! Propagating question updates to engagements');\r\n\r\n return this.uow.propagateQuestionChanges(this.activeQuestion.id)\r\n .then(() => {\r\n this.clearQuestionEditor();\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(SAVING_KEY, false);\r\n });\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(SAVING_KEY, false);\r\n this.sharedData.setMyEngagements(null);\r\n });\r\n }\r\n\r\n addQuestion() {\r\n this.clearQuestionEditor();\r\n\r\n const question = this.uow.questions.createEntity();\r\n question.isEditing = true;\r\n question.displayOrder = (this.maxQuestionOrder(this.activeSection.questions) || 0) + 1;\r\n question.profileSection = this.activeSection;\r\n }\r\n\r\n editQuestion(question: model.Question) {\r\n this.clearQuestionEditor();\r\n question.isEditing = true;\r\n this.isExistingQuestion = true;\r\n }\r\n\r\n editNavigatedQuestion(question: model.Question) {\r\n if (this.activeQuestion.entityAspect.entityState.isModified()) {\r\n this.dialog.open(ConfirmationDialogComponent, {\r\n data: {\r\n title: \"Confirm\",\r\n content: `There are unsaved changes. Continue without saving?`\r\n }\r\n })\r\n .afterClosed().toPromise().then(response => {\r\n if (response == \"Yes\") {\r\n this.uow.rollback();\r\n this.toNextQuestion(question);\r\n }\r\n });\r\n } else {\r\n this.toNextQuestion(question);\r\n }\r\n }\r\n\r\n toNextQuestion(question: model.Question) {\r\n if (question.profileSectionId !== this.activeSection.id) {\r\n this.setActiveSection(question.profileSection);\r\n }\r\n this.editQuestion(question);\r\n }\r\n\r\n removeQuestion(question: model.Question) {\r\n this.isBusy.set('deleteQuestion', true, 'Deleting question');\r\n if (question.questionOptions.length) {\r\n question.questionOptions.forEach((opt) => {\r\n if (opt.profileSectionQuestionOptions.length) {\r\n while (opt.profileSectionQuestionOptions.length) {\r\n opt.profileSectionQuestionOptions[0].entityAspect.setDeleted();\r\n }\r\n }\r\n });\r\n while (question.questionOptions.length) {\r\n question.questionOptions[0].entityAspect.setDeleted();\r\n }\r\n }\r\n\r\n question.entityAspect.setDeleted();\r\n this.clearQuestionEditor();\r\n this.uow.commit(true)\r\n .then(() => {\r\n this.isBusy.set('deleteQuestion', false);\r\n });;\r\n }\r\n\r\n duplicateQuestion(question: model.Question) {\r\n this.isBusy.set('copyQuestion', true, 'Duplicating question');\r\n const newQuestion = this.uow.questions.createEntity();\r\n newQuestion.name = question.name;\r\n newQuestion.description = question.description;\r\n newQuestion.helpText = question.helpText;\r\n newQuestion.displayOrder = question.displayOrder;\r\n newQuestion.profileSectionId = question.profileSectionId;\r\n\r\n // duplicate all question options\r\n if (question.questionOptions.length) {\r\n question.questionOptions.forEach((option) => {\r\n const newOpt = this.uow.questionOptions.createEntity();\r\n newOpt.text = option.text;\r\n newOpt.displayOrder = option.displayOrder;\r\n newOpt.questionId = newQuestion.id;\r\n newOpt.standardQuestionOptionId = option.standardQuestionOptionId;\r\n newOpt.isNRF = option.isNRF;\r\n newOpt.commentIsRequired = option.commentIsRequired;\r\n\r\n if (option.profileSectionQuestionOptions.length) {\r\n option.profileSectionQuestionOptions.forEach((psqo) => {\r\n const newPSQO = this.uow.profileSectionQuestionOptions.createEntity();\r\n newPSQO.profileSectionId = psqo.profileSectionId;\r\n newPSQO.questionOptionId = newOpt.id;\r\n });\r\n }\r\n });\r\n }\r\n\r\n // duplicate all question tags\r\n if (question.questionTags.length) {\r\n question.questionTags.forEach((tag) => {\r\n const newQTag = this.uow.questionTags.createEntity();\r\n newQTag.questionId = newQuestion.id;\r\n newQTag.tagId = tag.id;\r\n });\r\n }\r\n\r\n const section = this.inspectionProfile.profileSections.find(s => s.id == question.profileSectionId);\r\n section.questions.push(newQuestion);\r\n section.questions.sort(Utilities.sortByDisplayOrder);\r\n newQuestion.isNewQuestion = true;\r\n\r\n this.uow.commit(true)\r\n .then(() => {\r\n this.isBusy.set('copyQuestion', false);\r\n setTimeout(() => newQuestion.isNewQuestion = false, 1000);\r\n });\r\n }\r\n\r\n loadQuestionFromExisting() {\r\n if (this.questionToCloneId) {\r\n if (this.activeQuestion) {\r\n if (this.activeQuestion.name || this.activeQuestion.description || this.activeQuestion.helpText || this.activeQuestion.questionOptions) {\r\n if (confirm('Selecting an unassigned question will override the current values. Continue?')) {\r\n this.loadUnassignedQuestion(this.questionToCloneId);\r\n }\r\n }\r\n else {\r\n this.loadUnassignedQuestion(this.questionToCloneId);\r\n }\r\n }\r\n else {\r\n this.loadUnassignedQuestion(this.questionToCloneId);\r\n }\r\n }\r\n }\r\n\r\n loadUnassignedQuestion(id: number) {\r\n this.uow.questions.cancelChanges(this.activeQuestion);\r\n const questionToClone = this.unassignedQuestions.find(m => m.id == id);\r\n if (questionToClone) {\r\n questionToClone.profileSection = this.activeSection;\r\n questionToClone.isEditing = true;\r\n questionToClone.displayOrder = (this.maxQuestionOrder(this.activeSection.questions) || 0) + 1;\r\n this.isExistingQuestion = false;\r\n }\r\n }\r\n\r\n\r\n getStatusName(status: modelEnum.InspectionProfileStatus) {\r\n const match = this.inspectionProfileStatuses.find(m => m.status == status);\r\n return match ? match.title : 'N/A';\r\n }\r\n\r\n\r\n saveChanges(silent: boolean = false) {\r\n this.uow.inspectionProfiles.saveChanges([this.inspectionProfile])\r\n .then(() => {\r\n if (!confirm('Questionnaire saved! Continue editing \"' + this.inspectionProfile.name + '\"?')) {\r\n this.router.navigate(['./inspection-profiles'], { relativeTo: this.activeRoute.parent });\r\n }\r\n else {\r\n if (this.id == 'new') {\r\n this.router.navigate(['./edit'], { queryParams: { id: this.inspectionProfile.id }, relativeTo: this.activeRoute.parent });\r\n }\r\n }\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n });\r\n }\r\n\r\n goHome() {\r\n this.router.navigate(['./inspection-profiles'], { relativeTo: this.activeRoute.parent });\r\n }\r\n}\r\n","
\r\n

Engagement Review Questionnaires

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n

Manage Questionnaire

\r\n
\r\n

Please note: * indicates a required field

\r\n
\r\n Metadata\r\n
\r\n \r\n
\r\n \r\n Questionnaire name is required.\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n \r\n Questionnaire sections and questions can be added once Metadata has been saved.\r\n

\r\n
\r\n
0\" [disabled]=\"isLoading\">\r\n Sections & Questions\r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
    \r\n
  1. \r\n \r\n
  2. \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
0 && activeQuestion && activeQuestion.isEditing && !reorderQuestions\">\r\n
Edit question
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Use this option to assign an existing unassigned question to this section\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Question text is required.\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Help text is invalid.\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Standard optionTextEnables sectionEnables questions with tag:
\r\n \r\n \r\n Question contains no options\r\n \r\n
\r\n \r\n \r\n \r\n Select a standard option\r\n \r\n \r\n Required for custom text option\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {{section.profileSection.name}}
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {{activatingTag.tag.name}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
    \r\n
  • \r\n \r\n \r\n {{qt.tag.name}}\r\n \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
0 && !activeQuestion?.isEditing && reorderQuestions\">\r\n \r\n
\r\n
\r\n
\r\n
0 && !activeQuestion?.isEditing && reorderSections\">\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../../services/unit-of-work/unit-of-work.service';\r\nimport Utilities from '../../../services/utilities';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ApplicationInsightsService } from '../../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../../services/dialog-helper';\r\nimport { IsBusyService } from '../../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../../model/model';\r\nimport * as modelDto from '../../../../model/modelDto';\r\nimport { GlobalErrorHandler } from '../../../services/global-error-handler';\r\n\r\nconst LOADING_KEY: string = 'profile-question:loadData';\r\nconst SAVING_KEY: string = 'profile-question:saveChanges';\r\n\r\n@Component({\r\n selector: 'app-profile-question',\r\n templateUrl: './question-editor.component.html',\r\n})\r\nexport class ProfileQuestionAdminComponent implements OnInit {\r\n\r\n inspectionProfileId: number = null;\r\n standardOptions: model.StandardQuestionOption[] = [];\r\n inspectionProfiles: modelDto.InspectionProfileDto[] = [];\r\n profileSections: model.ProfileSection[] = [];\r\n profileSectionsForQuestionOptions: model.ProfileSection[] = [];\r\n tags: model.Tag[] = [];\r\n\r\n id: string = null;\r\n question: model.Question;\r\n isLoading: boolean = true;\r\n wasPreviouslyUnassigned: boolean = false;\r\n\r\n selectedSectionId: number = null;\r\n\r\n constructor(private activeRoute: ActivatedRoute,\r\n private uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n public router: Router,\r\n\t\tpublic isBusy: IsBusyService,\r\n public dialogHelper: DialogHelper\r\n\t) {\r\n appInsights.logPageView();\r\n this.question = uow.questions.createEntity();\r\n }\r\n\r\n ngOnInit() {\r\n this.activeRoute.queryParams.subscribe(routeParams => {\r\n this.isLoading = true;\r\n this.isBusy.set(LOADING_KEY, true, 'Loading data');\r\n Promise\r\n .all([\r\n this.getStandardQuestionOptions(),\r\n this.getInspectionProfiles(),\r\n this.getSectionsForProfile(),\r\n this.getTags()\r\n ])\r\n .then(() => {\r\n this.getQuestion(routeParams.id);\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(LOADING_KEY, false);\r\n this.isLoading = false;\r\n });\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n getStandardQuestionOptions() {\r\n return this.uow.getStandardQuestionOptions()\r\n .then(result => {\r\n this.standardOptions = result;\r\n });\r\n }\r\n\r\n getInspectionProfiles() {\r\n return this.uow.getInspectionProfilesForLookup()\r\n .then(result => {\r\n this.inspectionProfiles = result;\r\n });\r\n }\r\n\r\n getProfileSections() {\r\n return this.uow.getProfileSectionsForLookup()\r\n .then(result => {\r\n this.profileSections = result;\r\n });\r\n }\r\n\r\n getTags() {\r\n return this.uow.getActiveTags()\r\n .then(result => {\r\n this.tags = result;\r\n });\r\n }\r\n\r\n getDisplayText(question: model.Question) {\r\n return question.name || question.description.substr(0, 40) + '...';\r\n }\r\n\r\n\r\n get activeInspectionProfiles() {\r\n return this.inspectionProfiles.sort(Utilities.sortByName);\r\n }\r\n\r\n get activeProfileSections() {\r\n return this.profileSections.sort(Utilities.sortByName);\r\n }\r\n\r\n get availableProfileSections() {\r\n return this.profileSectionsForQuestionOptions.sort(Utilities.sortByName);\r\n }\r\n\r\n get activeQuestionOptions() {\r\n return this.question.questionOptions.filter(m => !m.isDeleted).sort(Utilities.sortByDisplayOrder);\r\n }\r\n\r\n get activeQuestionTags() {\r\n return this.question.questionTags.filter(m => !m.isDeleted).sort(Utilities.sortByName);\r\n }\r\n\r\n get hasChanges() {\r\n const a = this.uow.hasChanges.value;\r\n return a;\r\n }\r\n\r\n undoChanges() {\r\n if (this.hasChanges) {\r\n this.uow.rollback();\r\n }\r\n }\r\n\r\n\r\n maxOptionOrder(options: model.QuestionOption[]): number {\r\n return options && options.length > 0 ? Math.max.apply(Math, options.map(function (o) { return o.displayOrder; })) : 0;\r\n }\r\n\r\n\r\n getSectionsForProfile() {\r\n if (this.inspectionProfileId) {\r\n if (this.question.profileSection && this.question.profileSection.inspectionProfileId !== this.inspectionProfileId) {\r\n this.question.profileSectionId = null;\r\n }\r\n\r\n return this.uow.getSectionsForInspectionProfile(this.inspectionProfileId)\r\n .then(result => {\r\n this.profileSections = result;\r\n });\r\n }\r\n else {\r\n this.question.profileSectionId = null;\r\n this.profileSections = [];\r\n }\r\n }\r\n\r\n getProfileSectionsForSection() {\r\n if (this.question && this.question.profileSectionId > 0) {\r\n return this.uow.getProfileSectionsForSection(this.question.profileSectionId)\r\n .then(result => {\r\n this.profileSectionsForQuestionOptions = result;\r\n\r\n this.uow.getMaxQuestionDisplayOrder(this.question.profileSectionId)\r\n .then(result => {\r\n this.question.displayOrder = result[0];\r\n });\r\n });\r\n }\r\n else {\r\n this.profileSectionsForQuestionOptions = [];\r\n }\r\n }\r\n\r\n getQuestion(id: string) {\r\n this.id = id;\r\n this.uow.questions.cancelChanges(this.question);\r\n\r\n if (id == 'new') {\r\n this.question = this.uow.questions.createEntity();\r\n this.question.displayOrder = 0;\r\n\r\n this.getProfileSectionsForSection();\r\n } else {\r\n const qid = parseInt(id);\r\n if (!isNaN(qid)) {\r\n return this.uow.getQuestionById(qid)\r\n .then(result => {\r\n if (result && result.length > 0) {\r\n this.question = result[0];\r\n\r\n if (this.question) {\r\n if (this.question.profileSection) {\r\n this.inspectionProfileId = this.question.profileSection.inspectionProfileId;\r\n\r\n this.getSectionsForProfile();\r\n }\r\n else {\r\n this.wasPreviouslyUnassigned = true;\r\n\r\n this.getProfileSectionsForSection();\r\n }\r\n }\r\n else {\r\n this.router.navigate(['./profile-questions'], { relativeTo: this.activeRoute.parent });\r\n }\r\n }\r\n else {\r\n this.router.navigate(['./profile-questions'], { relativeTo: this.activeRoute.parent });\r\n }\r\n });\r\n }\r\n else {\r\n this.router.navigate(['./profile-questions'], { relativeTo: this.activeRoute.parent });\r\n }\r\n }\r\n }\r\n\r\n\r\n addOption() {\r\n const option = this.uow.questionOptions.createEntity();\r\n option.text = null;\r\n option.standardQuestionOptionId = null;\r\n option.displayOrder = (this.maxOptionOrder(this.question.questionOptions) || 0) + 1;\r\n option.question = this.question;\r\n }\r\n\r\n removeOption(option: model.QuestionOption) {\r\n if (confirm('Are you sure you want to remove this option?')) {\r\n if (option.id > 0) {\r\n option.isDeleted = true;\r\n }\r\n else {\r\n this.uow.questionOptions.cancelChanges(option);\r\n }\r\n }\r\n }\r\n\r\n checkOption(options: model.ProfileSectionQuestionOption[], section: model.ProfileSection) {\r\n if (options) {\r\n return options.some(m => m.profileSectionId == section.id);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n addTriggeredSection(m: string, option: model.QuestionOption) {\r\n const $select = $(m);\r\n const id = $select.val();\r\n\r\n if (!option.profileSectionQuestionOptions.some(m => m.profileSectionId == id)) {\r\n const psqo = this.uow.profileSectionQuestionOptions.createEntity();\r\n const section = this.profileSectionsForQuestionOptions.find(m => m.id == id);\r\n if (section) {\r\n psqo.profileSection = section\r\n psqo.questionOption = option;\r\n }\r\n\r\n option.profileSectionQuestionOptions.push(psqo);\r\n }\r\n\r\n\r\n $select.find('option:selected').prop('disabled', true);\r\n\r\n return $select.find('option:selected').val();\r\n }\r\n\r\n removeSectionFromOption(m: string, option: model.QuestionOption, section: model.ProfileSectionQuestionOption) {\r\n const $select = $(m);\r\n $select.find('option[value=\"' + section.profileSectionId + '\"]').prop('disabled', false);\r\n\r\n if (section.id > 0) {\r\n section.entityAspect.setDeleted();\r\n }\r\n else {\r\n this.uow.profileSectionQuestionOptions.cancelChanges(section);\r\n }\r\n }\r\n\r\n addTag(tagId: number) {\r\n if (!this.question.questionTags.some(m => m.tagId == tagId)) {\r\n const qt = this.uow.questionTags.createEntity();\r\n const tag = this.tags.find(m => m.id == tagId);\r\n qt.tag = tag;\r\n qt.question = this.question;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n removeTag(tag: model.QuestionTag) {\r\n if (confirm('Are you sure you want to remove tag \"' + tag.tag.name + '\"?')) {\r\n if (tag.id > 0) {\r\n tag.entityAspect.setDeleted();\r\n }\r\n else {\r\n this.uow.questionTags.cancelChanges(tag);\r\n }\r\n }\r\n }\r\n\r\n\r\n saveChanges() {\r\n this.isBusy.set(SAVING_KEY, true, 'Saving question');\r\n\r\n // Is this a new question?\r\n if (this.id == 'new') {\r\n if (this.question.profileSectionId) {\r\n this.uow.getMaxQuestionDisplayOrder(this.question.profileSectionId)\r\n .then(result => {\r\n this.question.displayOrder = result[0];\r\n\r\n return this.saveNow();\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(SAVING_KEY, false);\r\n });\r\n }\r\n else {\r\n return this.saveNow();\r\n }\r\n }\r\n else {\r\n return this.saveNow();\r\n }\r\n\r\n }\r\n\r\n\r\n saveNow() {\r\n return this.uow.commit()\r\n .then(() => {\r\n if (this.question.profileSectionId) {\r\n this.isBusy.set(SAVING_KEY, true, 'Propagating question updates to engagements');\r\n\r\n return this.uow.propagateQuestionChanges(this.question.id)\r\n .then(() => {\r\n if (!confirm('Done! Continue editing \"' + this.getDisplayText(this.question) + '\"?')) {\r\n this.router.navigate(['./profile-questions'], { relativeTo: this.activeRoute.parent });\r\n }\r\n else {\r\n if (this.id == 'new') {\r\n this.router.navigate(['./profile-question'], { queryParams: { id: this.question.id }, relativeTo: this.activeRoute.parent });\r\n }\r\n }\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(SAVING_KEY, false);\r\n });\r\n }\r\n else {\r\n if (!confirm('Done! Continue editing \"' + this.getDisplayText(this.question) + '\"?')) {\r\n this.router.navigate(['./profile-questions'], { relativeTo: this.activeRoute.parent });\r\n }\r\n else {\r\n if (this.id == 'new') {\r\n this.router.navigate(['./profile-question'], { queryParams: { id: this.question.id }, relativeTo: this.activeRoute.parent });\r\n }\r\n }\r\n }\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(SAVING_KEY, false);\r\n });\r\n }\r\n\r\n\r\n goHome() {\r\n this.router.navigate(['./profile-questions'], { relativeTo: this.activeRoute.parent });\r\n }\r\n}\r\n","
\r\n

Engagement Review Questionnaire Management

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n

Manage Question

\r\n
\r\n
\r\n
\r\n \r\n \r\n Please note: * indicates a required field\r\n
\r\n
\r\n

\r\n Can be left empty if creating an unassigned question\r\n

\r\n
\r\n \r\n
\r\n 0 && question.profileSectionId != null\"\r\n [(ngModel)]=\"inspectionProfileId\"\r\n (change)=\"getSectionsForProfile()\">\r\n \r\n {{item.name}}\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n 0 && question.profileSectionId != null\"\r\n [(ngModel)]=\"question.profileSectionId\"\r\n (change)=\"getProfileSectionsForSection()\">\r\n \r\n {{item.name}}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Question text is required.\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Help text is invalid.\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Standard optionTextEnables sectionEnables questions with tag:
\r\n \r\n \r\n Question contains no options\r\n \r\n
\r\n \r\n \r\n \r\n Select a standard option\r\n \r\n \r\n Required for custom text option\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {{section.profileSection.name}}
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {{section.profileSection.name}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
    \r\n
  • \r\n \r\n \r\n {{qt.tag.name}}\r\n \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport Utilities from '../../../services/utilities';\r\nimport { ProfileSection, InspectionProfile, Question } from '../../../../model/model';\r\nimport { ConfirmationDialogComponent } from '../../shared/confirmation-dialog/confirmation-dialog.component';\r\n\r\n@Component({\r\n selector: 'section-tree-node-editor',\r\n inputs: ['node', 'i', 'inspectionProfile'],\r\n templateUrl: './tree-node-editor.component.html'\r\n})\r\n\r\nexport class ProfileSectionTreeNode implements OnInit {\r\n @Input() node: ProfileSection;\r\n @Input() i: number;\r\n @Input() inspectionProfile: InspectionProfile;\r\n @Input() context: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n this.setActiveSection();\r\n }\r\n\r\n get currentNodes() {\r\n return this.node.childSections ? this.node.childSections.filter(m => !m.isDeleted).sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n setActiveSection() {\r\n this.context.setActiveSection(this.node);\r\n }\r\n\r\n toggleSection() {\r\n this.node.isCollapsed = !this.node.isCollapsed;\r\n }\r\n\r\n addSection() {\r\n this.context.addSection(this.node);\r\n }\r\n\r\n remove() {\r\n if (confirm('Are you sure you want to remove \"' + this.node.name + '\"?')) {\r\n this.context.removeSection(this.node);\r\n }\r\n }\r\n\r\n addQuestion() {\r\n this.setActiveSection();\r\n\r\n this.context.addQuestion();\r\n }\r\n\r\n editQuestion(question: Question) {\r\n this.setActiveSection();\r\n\r\n this.context.editQuestion(question);\r\n }\r\n\r\n removeQuestion(question: Question) {\r\n this.context.dialog.open(ConfirmationDialogComponent, {\r\n data: {\r\n title: \"Confirm\",\r\n content: `Are you sure you want to remove \"${this.getDisplayText(question)}\"?`\r\n }\r\n })\r\n .afterClosed().toPromise().then(response => {\r\n if (response == \"Yes\") {\r\n this.context.removeQuestion(question);\r\n }\r\n });\r\n }\r\n\r\n duplicateQuestion(question: Question) {\r\n this.context.dialog.open(ConfirmationDialogComponent, {\r\n data: {\r\n title: \"Confirm\",\r\n content: `Are you sure you want to duplicate \"${this.getDisplayText(question)}\"?`\r\n }\r\n })\r\n .afterClosed().toPromise().then(response => {\r\n if (response == \"Yes\") {\r\n this.context.duplicateQuestion(question);\r\n }\r\n });\r\n }\r\n\r\n getDisplayText(question: Question) {\r\n return question.name || question.description.substr(0, 40) + '...';\r\n }\r\n\r\n saveSectionChanges() {\r\n return this.context.saveSectionChanges(this.node);\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n 0 || node.questions.length > 0\"\r\n class=\"input-group-text\"\r\n [placement]=\"['top', 'auto']\"\r\n ngbTooltip=\"To be removed, this section must have no child sections or questions\" container=\"body\">\r\n \r\n \r\n
\r\n
\r\n Section name is required.\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
    0\">\r\n
  1. \r\n \r\n
  2. \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'profile-nav-menu',\r\n inputs: ['currentTab'],\r\n template: ``\r\n})\r\nexport class ProfileNavMenu implements OnInit {\r\n @Input() currentTab: string;\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { ApplicationInsightsService } from '../../services/application-insights/application-insights.service';\r\nimport { UnitOfWorkService } from '../../services/unit-of-work/unit-of-work.service';\r\nimport { IsBusyService } from '../../services/is-busy/is-busy.service';\r\nimport { ExportEngagementQuestionsDto } from '../../../model/modelDto';\r\nimport { GlobalErrorHandler } from '../../services/global-error-handler';\r\n\r\n@Component({\r\n selector: 'app-export-questions-and-responses',\r\n templateUrl: './export-questions-and-responses.component.html',\r\n})\r\nexport class ExportQuestionsAndResponsesComponent implements OnInit {\r\n\r\n inspectionYears: number[] = [];\r\n inspectionYear: number = new Date().getFullYear();\r\n\r\n constructor(\r\n private uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n public isBusy: IsBusyService,\r\n private errorHandler: GlobalErrorHandler\r\n ) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.getInspectionYears();\r\n }\r\n\r\n getInspectionYears() {\r\n return this.uow.getInspectionYears()\r\n .then(result => {\r\n this.inspectionYears = result;\r\n });\r\n }\r\n\r\n createExportFile(questions: ExportEngagementQuestionsDto[]) {\r\n\r\n var fileName = \"Questionnaire \" + this.inspectionYear + \".csv\";\r\n\r\n var csv = \"sep=| \\r\\n\\\"Database\\\"|\\\"EngagementCode\\\"|\\\"Client\\\"|\\\"TeamCaptainId\\\"|\\\"TeamCaptain\\\"|\" +\r\n \"\\\"Office\\\"|\\\"Region\\\"|\\\"ClientFiscalYearEnd\\\"|\\\"InspectionYear\\\"|\\\"Project\\\"|\\\"Section\\\"|\\\"Name\\\"|\" +\r\n \"\\\"Question\\\"|\\\"Answer\\\"|\\\"AnsweredBy\\\"|\\\"Comment\\\"|\\\"QuestionId\\\"|\\\"Tag\\\"\\r\\n\";\r\n\r\n questions.forEach(q => {\r\n csv += this.csvField('NationalAssuranceInspections');\r\n csv += this.csvField(q.engagementCode);\r\n csv += this.csvField(q.clientName);\r\n csv += this.csvField(q.teamCaptainId);\r\n csv += this.csvField(q.teamCaptainName);\r\n csv += this.csvField(q.office);\r\n csv += this.csvField(q.region);\r\n csv += this.csvField(q.clientFiscalYearEnd ? moment(q.clientFiscalYearEnd).format('YYYY-MM-DD') : null);\r\n csv += this.csvField(q.inspectionYear);\r\n csv += this.csvField(q.project);\r\n csv += this.csvField(q.section);\r\n csv += this.csvField(q.name);\r\n csv += this.csvField(q.question);\r\n csv += this.csvField(q.answer);\r\n csv += this.csvField(q.answeredBy);\r\n csv += this.csvField(q.comment);\r\n csv += this.csvField(q.id);\r\n csv += this.csvField(q.tag, true); \r\n });\r\n\r\n var link = document.createElement(\"a\");\r\n\r\n if ((link).download !== undefined) { //Non IE\r\n var url = URL.createObjectURL(new Blob([csv], { type: 'text/csv;charset=utf-8' }));\r\n link.setAttribute(\"href\", url);\r\n link.setAttribute(\"download\", fileName);\r\n link.style.visibility = \"hidden\";\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n\r\n return csv;\r\n }\r\n\r\n export() {\r\n\r\n this.isBusy.set('admin:loadData', true, 'Loading data');\r\n this.uow.getExportEngagementQuestionsByYear(this.inspectionYear)\r\n .then(questions => {\r\n return this.createExportFile(questions);\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set('admin:loadData', false);\r\n });\r\n }\r\n\r\n csvField(val: string, endLine?: boolean) {\r\n if (!val && endLine) {\r\n return \"\\\"NULL\\\"\\r\\n\";\r\n }\r\n\r\n if (!val) {\r\n return \"\\\"NULL\\\"|\";\r\n }\r\n\r\n return '\"' + val + '\"' + (endLine ? \"\\r\\n\" : \"|\");\r\n }\r\n}\r\n","
\r\n

Reports

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n Export Questions and Responses\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { SharedDataService } from '../../services/shared-data/shared-data.service';\r\n\r\ndeclare var window: any;\r\n@Component({\r\n selector: 'reports-nav-menu',\r\n inputs: ['currentTab'],\r\n templateUrl: './reports-nav.component.html'\r\n})\r\nexport class ReportsNavMenu implements OnInit {\r\n @Input() currentTab: string;\r\n\r\n navItems = [\r\n { id: 'export-questions-and-responses', title: 'Export Questions and Responses' }\r\n ];\r\n\r\n constructor(\r\n private sharedData: SharedDataService\r\n ) { }\r\n\r\n ngOnInit() {\r\n const env = window.location.host;\r\n }\r\n}\r\n","\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { timer, Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-session-timeout',\r\n templateUrl: './session-timeout.component.html',\r\n styleUrls: ['./session-timeout.component.less']\r\n})\r\nexport class SessionTimeoutComponent {\r\n secondsLeft: number;\r\n countDown: Observable;\r\n\r\n get timeLeft(): string {\r\n const minutes = Math.ceil(this.secondsLeft / 60);\r\n\r\n return minutes > 1 ? `${minutes} minutes` : `${this.secondsLeft} second${this.secondsLeft == 1 ? \"\" : \"s\"}`;\r\n }\r\n\r\n constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any) {\r\n this.secondsLeft = data.timer;\r\n this.countDown = timer(0, 1000);\r\n this.countDown.subscribe(val => {\r\n this.secondsLeft -= 1;\r\n\r\n if (this.secondsLeft == 0) {\r\n this.dialogRef.close(false);\r\n }\r\n });\r\n }\r\n}\r\n","
\r\n
Are you still there?
\r\n
\r\n
\r\n

Your session will expire in {{timeLeft}}. Please select an option:

\r\n
\r\n
\r\n \r\n \r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { SharedDataService } from '../../../services/shared-data/shared-data.service';\r\nimport Utilities from '../../../services/utilities';\r\n\r\n@Component({\r\n selector: 'app-access-denied',\r\n templateUrl: './access-denied.component.html',\r\n styleUrls: ['./access-denied.component.less']\r\n})\r\nexport class AccessDeniedComponent implements OnInit {\r\n constructor(private sharedData: SharedDataService) { }\r\n\r\n get accessType(): string {\r\n return !this.sharedData ? 'site' : this.sharedData.accessType;\r\n }\r\n\r\n ngOnInit(): void {\r\n Utilities.hideLoadingScreen();\r\n }\r\n}\r\n","
\r\n
\r\n

Oh no!

\r\n
\r\n

(∩╹□╹∩)

\r\n
\r\n
\r\n
\r\n

It looks like you don't have access to this {{accessType}}. Please contact the site administrator to request access.

\r\n
\r\n
\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ServerSideConfigDataService } from '../../../services/server-side-config-data/server-side-config-data.service';\r\nimport * as moment from 'moment';\r\nimport { DIALOG_CANCEL, DIALOG_CLOSE, DIALOG_NO, DIALOG_OK, DIALOG_YES } from './confirmation-dialog.constants';\r\n\r\n@Component({\r\n selector: 'app-confirmation-dialog',\r\n templateUrl: './confirmation-dialog.component.html',\r\n styleUrls: ['./confirmation-dialog.component.less']\r\n})\r\nexport class ConfirmationDialogComponent {\r\n title = '';\r\n content: string;\r\n onlyShowOk = false;\r\n debug: string;\r\n\r\n // used in HTML\r\n get DIALOG_CANCEL() { return DIALOG_CANCEL; }\r\n get DIALOG_CLOSE() { return DIALOG_CLOSE; }\r\n get DIALOG_NO() { return DIALOG_NO; }\r\n get DIALOG_OK() { return DIALOG_OK; }\r\n get DIALOG_YES() { return DIALOG_YES; }\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) data: any,\r\n serverSideConfig: ServerSideConfigDataService\r\n ) {\r\n this.title = data.title;\r\n this.content = data.content;\r\n this.onlyShowOk = data.onlyShowOk ? data.onlyShowOk : false;\r\n if (serverSideConfig.configData\r\n && ['Local', 'Development'].indexOf(serverSideConfig.configData.environment) > -1\r\n ) {\r\n this.debug = data.debug;\r\n } else {\r\n this.debug = null;\r\n }\r\n }\r\n\r\n downloadDebugData(): void {\r\n if (this.debug) {\r\n const element = document.createElement('a');\r\n element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(this.debug));\r\n element.setAttribute('download', `debug_${moment().format('MM-DD-YYYY_HH-mm-ss')}.html`);\r\n\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n\r\n element.click();\r\n\r\n document.body.removeChild(element);\r\n }\r\n }\r\n}\r\n","
\r\n
{{title}}
\r\n \r\n
\r\n
{{content}}
\r\n
\r\n \r\n \r\n
\r\n","export const DIALOG_YES = \"Yes\";\r\nexport const DIALOG_NO = \"No\";\r\nexport const DIALOG_OK = \"Ok\";\r\nexport const DIALOG_CANCEL = \"Cancel\";\r\nexport const DIALOG_CLOSE = \"Close\";\r\n","import { Component, EventEmitter, Input, OnInit, Output, OnDestroy } from '@angular/core';\r\nimport * as model from '../../../../model/model';\r\nimport { UnitOfWorkService } from '../../../services/unit-of-work/unit-of-work.service';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-employee-search',\r\n templateUrl: './employee-search.component.html',\r\n styleUrls: ['./employee-search.component.less']\r\n})\r\nexport class EmployeeSearchComponent implements OnInit, OnDestroy {\r\n private _model: any;\r\n list: model.Employee[] = [];\r\n debouncer = new Subject();\r\n subs = new Array();\r\n\r\n @Input()\r\n set employeeList(data: model.Employee[]) {\r\n if (data.length > 0) {\r\n this.list = data;\r\n }\r\n }\r\n @Input() showButton: boolean = false;\r\n @Input() required: boolean = false;\r\n @Input() errorMessage: string = null;\r\n @Input() buttonScreenReaderText: string = null;\r\n @Input() debounceTime = 500;\r\n @Input() \r\n get model(): any { return this._model; }\r\n set model(data: any) {\r\n this._model = data;\r\n this.uow.getEmployees(null, data).then(response => {\r\n this.employeeList = response;\r\n });\r\n }\r\n @Output() modelChange: EventEmitter = new EventEmitter();\r\n @Output() onChange: EventEmitter = new EventEmitter();\r\n @Output() buttonClick: EventEmitter = new EventEmitter();\r\n @Output() onSearch: EventEmitter = new EventEmitter();\r\n\r\n filteredList: model.Employee[] = [];\r\n\r\n constructor(private uow: UnitOfWorkService) {\r\n this.subs.push(this.debouncer\r\n .pipe(debounceTime(this.debounceTime))\r\n .subscribe(\r\n (value: string) => { this.onSearch.emit(value); },\r\n (error) => { console.log(error); }\r\n ));\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnDestroy() {\r\n for (const sub of this.subs) {\r\n sub.unsubscribe();\r\n }\r\n }\r\n\r\n emitChange() {\r\n this.modelChange.emit(this.model);\r\n this.onChange.emit();\r\n }\r\n\r\n buttonClicked() {\r\n this.buttonClick.emit();\r\n }\r\n\r\n search(e) {\r\n this.debouncer.next(e.term);\r\n //this.onSearch.emit(e.term);\r\n }\r\n}\r\n","
\r\n \r\n \r\n {{errorMessage}}\r\n
\r\n \r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'grid-pager',\r\n inputs: ['actionName', 'page', 'limit', 'pageCount', 'limits'],\r\n templateUrl: './grid-pager.component.html'\r\n})\r\nexport class GridPager implements OnInit {\r\n @Input() actionName: string;\r\n @Input() page: number;\r\n @Input() limit: number;\r\n @Input() pageCount: number;\r\n @Input() limits: number[];\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","\r\n","import { Component, Input } from '@angular/core';\r\nimport Utilities from '../../services/utilities';\r\nimport { EngagementSection } from '../../../model/model';\r\n\r\n@Component({\r\n selector: 'section-list-item',\r\n inputs: ['node'],\r\n templateUrl: './section-list-viewer.component.html'\r\n})\r\nexport class SectionListItem {\r\n @Input() node: EngagementSection;\r\n @Input() context: any;\r\n\r\n constructor() {\r\n }\r\n\r\n\r\n get activatedNodes() {\r\n return this.node.childSections ? this.node.childSections.filter(m => this.context.hasActionableContent(m)).sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n \r\n\r\n setActiveSection(node: EngagementSection) {\r\n this.context.setActiveSection(node);\r\n }\r\n}\r\n","\r\n\r\n
    0)\">\r\n
  • \r\n \r\n
  • \r\n
\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-signout',\r\n templateUrl: './signout.component.html'\r\n})\r\nexport class SignoutComponent { }\r\n\r\n// Keep this class here to prevent console errors\r\n","
\r\n You have successfully signed out.\r\n
\r\n","import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../../services/unit-of-work/unit-of-work.service';\r\nimport Utilities from '../../../services/utilities';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ApplicationInsightsService } from '../../../services/application-insights/application-insights.service';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../../services/dialog-helper';\r\nimport { NgbModal, ModalDismissReasons } from '@ng-bootstrap/ng-bootstrap';\r\nimport { IsBusyService } from '../../../services/is-busy/is-busy.service';\r\nimport * as model from '../../../../model/model';\r\nimport * as modelDto from '../../../../model/modelDto';\r\nimport * as modelEnum from '../../../../model/modelEnums';\r\nimport { GlobalErrorHandler } from '../../../services/global-error-handler';\r\nimport { MsalBroadcastService, MsalService } from '@azure/msal-angular';\r\nimport { InteractionStatus } from '@azure/msal-browser';\r\nimport { filter } from 'rxjs/operators';\r\nimport { Profile } from '../../../../typings';\r\nimport { Role } from '../../../../model/role';\r\n\r\nconst loadingKey: string = 'team-inspections:loadData';\r\nconst defaultLimit: number = 15;\r\n\r\n@Component({\r\n selector: 'app-team-inspections-admin',\r\n templateUrl: './team-inspections.component.html',\r\n})\r\nexport class TeamInspectionsComponent implements OnInit {\r\n @ViewChild('teamMembersModal', { static: true }) teamMembersModal: TemplateRef; // Note: TemplateRef\r\n @ViewChild('setStatusModal', { static: true }) setStatusModal: TemplateRef; // Note: TemplateRef\r\n\r\n isAdmin = new BehaviorSubject(false);\r\n teamCaptains: model.Employee[] = [];\r\n selectedCaptain: string = \"\";\r\n\r\n page: number = 1;\r\n limit: number = defaultLimit;\r\n pageCount: number = 1;\r\n rowCount: number = 0;\r\n engagementsCount: number = 0;\r\n pageLimitOptions = [15, 25, 50, 100];\r\n groupBy: string = 'section';\r\n\r\n assignChildSections: boolean = false;\r\n\r\n offices: model.Office[] = [];\r\n regions: string[] = [];\r\n businessLines: model.BusinessLine[] = [];\r\n\r\n groupByMode: string = 'section';\r\n\r\n engagements: modelDto.EngagementSummaryDto[] = [];\r\n engagementSections: modelDto.EngagementSectionSummaryDto[] = [];\r\n engagementQuestions: modelDto.EngagementQuestionSummaryDto[] = [];\r\n\r\n currentSection: modelDto.EngagementSectionSummaryDto = {} as modelDto.EngagementSectionSummaryDto;\r\n teamMembers: modelDto.InspectionTeamMemberDto[] = [];\r\n\r\n selectedEngagementStatus: modelEnum.EngagementStatus;\r\n\r\n filters: modelDto.GridFilter[] = [];\r\n\r\n // shared filter\r\n engagementCodes: string = null;\r\n\r\n // top-level filters\r\n inspectionYears: string = null;\r\n selectedOffices: string[] = [];\r\n selectedRegions: string[] = [];\r\n selectedBusinessLines: number[] = [];\r\n\r\n inspectionStatusesLabel: string = 'Filter by...';\r\n\r\n progressStatusesLabel: string = 'Filter by...';\r\n\r\n // engagement filters\r\n clientNameFilter: string = null;\r\n\r\n // section filters\r\n sectionNameFilter: string = null;\r\n sectionStatusFilter: string = null;\r\n assignedOnFilter: string = null;\r\n assignedToFilter: string = null;\r\n\r\n // questionFilters\r\n questionNameFilter: string = null;\r\n hasCommentsFilter: string = null;\r\n isNrfFilter: string = null;\r\n hasObservationsFilter: string = null;\r\n\r\n groupByModes = [\r\n { id: 'engagement-code', name: 'Engagement Code' },\r\n { id: 'section', name: 'Questionnaire Section' },\r\n { id: 'question', name: 'Question' }\r\n ];\r\n\r\n yesNoOptions = [\r\n { isSelected: false, name: \"Yes\", value: \"true\" },\r\n { isSelected: false, name: \"No\", value: \"false\" }\r\n ];\r\n\r\n\r\n constructor(private uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n private activeRoute: ActivatedRoute,\r\n public router: Router,\r\n public isBusy: IsBusyService,\r\n public dialogHelper: DialogHelper,\r\n private modalService: NgbModal,\r\n private broadcastService: MsalBroadcastService,\r\n private msalService: MsalService) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.activeRoute.queryParams.subscribe(routeParams => {\r\n this.page = routeParams.page && !Number.isNaN(routeParams.page) ? parseInt(routeParams.page) : 1;\r\n this.limit = routeParams.limit && !Number.isNaN(routeParams.limit) ? parseInt(routeParams.limit) : defaultLimit;\r\n\r\n this.isBusy.set(loadingKey, true, 'Loading search data');\r\n Promise\r\n .all([\r\n this.getBusinessLines(),\r\n this.getOffices(),\r\n this.getTeamCaptains()\r\n ])\r\n .then(() => {\r\n this.updateDataGrid();\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(loadingKey, false);\r\n });\r\n });\r\n\r\n this.broadcastService.inProgress$\r\n .pipe(filter((status: InteractionStatus) => status === InteractionStatus.None))\r\n .subscribe(() => {\r\n const account: Profile = this.msalService.instance.getAllAccounts()[0];\r\n\r\n this.isAdmin.next(account.idTokenClaims && account.idTokenClaims.roles && account.idTokenClaims.roles.includes(Role.admin));\r\n }\r\n );\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n get activeEngagements() {\r\n return this.engagements;\r\n }\r\n\r\n get activeEngagementSections() {\r\n return this.engagementSections;\r\n }\r\n\r\n get activeEngagementQuestions() {\r\n return this.engagementQuestions;\r\n }\r\n\r\n get hasSelections() {\r\n switch (this.groupBy) {\r\n case 'engagement-code':\r\n return this.activeEngagements.some(m => m.isSelected);\r\n\r\n case 'section':\r\n return this.activeEngagementSections.some(m => m.isSelected);\r\n\r\n case 'question':\r\n return this.activeEngagementQuestions.some(m => m.isSelected);\r\n }\r\n }\r\n\r\n get engagementStatusOptions() {\r\n return this.uow.engagementStatuses.filter(m => m.status > modelEnum.EngagementStatus.draft);\r\n }\r\n\r\n get engagementStatuses() {\r\n return this.uow.engagementStatuses.filter(m => m.status > modelEnum.EngagementStatus.draft);\r\n }\r\n\r\n get progressStatuses() {\r\n return this.uow.progressStatuses;\r\n }\r\n\r\n getTeamCaptains() {\r\n return this.uow.getTeamCaptains()\r\n .then(result => this.teamCaptains = result);\r\n }\r\n\r\n getBusinessLines() {\r\n return this.uow.getBusinessLines()\r\n .then(result => {\r\n this.businessLines = result;\r\n });\r\n }\r\n\r\n getOffices() {\r\n return this.uow.getOffices()\r\n .then(result => {\r\n this.offices = result;\r\n this.getRegions();\r\n });\r\n }\r\n\r\n getRegions() {\r\n this.regions = this.offices.map(o => o.regionCode)\r\n .filter(Utilities.onlyUnique)\r\n .sort((a, b) => { return a.localeCompare(b); });\r\n }\r\n\r\n\r\n selectAll() {\r\n let toggle: boolean = false;\r\n\r\n switch (this.groupBy) {\r\n case 'engagement-code':\r\n toggle = this.engagements.some(m => m.isSelected);\r\n this.engagements.forEach(m => m.isSelected = !toggle);\r\n break;\r\n\r\n case 'section':\r\n toggle = this.engagementSections.some(m => m.isSelected);\r\n this.engagementSections.forEach(m => m.isSelected = !toggle);\r\n break;\r\n\r\n case 'question':\r\n toggle = this.engagementQuestions.some(m => m.isSelected);\r\n this.engagementQuestions.forEach(m => m.isSelected = !toggle);\r\n break;\r\n }\r\n }\r\n\r\n setStatus() {\r\n alert(\"We're sorry. This feature has not been implemented yet.\");\r\n }\r\n\r\n assignTo() {\r\n alert(\"We're sorry. This feature has not been implemented yet.\");\r\n }\r\n\r\n\r\n showAssignSectionModal(section: modelDto.EngagementSectionSummaryDto) {\r\n this.currentSection = section;\r\n this.teamMembers = section.inspectionTeamMembers;\r\n\r\n this.teamMembers.forEach(m => { m.isSelected = section.assignedTeamMembers.some(n => n.id == m.id); });\r\n\r\n this.modalService.open(this.teamMembersModal, { ariaLabelledBy: 'modal-basic-title' })\r\n .result\r\n .then((result) => {\r\n if (result == 'save') {\r\n const selected = this.teamMembers.filter(m => m.isSelected).map(m => m.id);\r\n const previouslySelectedTeamMembers = section.assignedTeamMembers.length;\r\n const teamMemberWasRemoved = selected.length < previouslySelectedTeamMembers ? true : false;\r\n\r\n this.uow.updateAssignedSections(this.currentSection.sectionId, this.assignChildSections, selected, teamMemberWasRemoved)\r\n .then(() => {\r\n this.updateDataGrid();\r\n });\r\n }\r\n }, (reason) => {\r\n const closeResult = `Dismissed ${this.getDismissReason(reason)}`;\r\n\r\n console.log('Reason: ' + closeResult);\r\n });\r\n }\r\n\r\n showSetStatusModal() {\r\n this.engagementStatusOptions.forEach(m => m.isSelected = false);\r\n this.modalService.open(this.setStatusModal, { ariaLabelledBy: 'modal-basic-title' })\r\n .result\r\n .then((result) => {\r\n if (result == 'save') {\r\n let engagementsToUpdate: number[];\r\n\r\n switch (this.groupBy) {\r\n case 'engagement-code':\r\n engagementsToUpdate = this.engagements.filter(m => m.isSelected == true).map(m => m.engagementId);\r\n break;\r\n\r\n case 'section':\r\n engagementsToUpdate = this.engagementSections.filter(m => m.isSelected == true).map(m => m.engagementId);\r\n break;\r\n\r\n case 'question':\r\n engagementsToUpdate = this.engagementQuestions.filter(m => m.isSelected == true).map(m => m.engagementId);\r\n break;\r\n }\r\n\r\n if (engagementsToUpdate.length > 0) {\r\n this.uow.updateEngagementStatus(this.selectedEngagementStatus, engagementsToUpdate)\r\n .then(() => {\r\n this.updateDataGrid();\r\n });\r\n }\r\n }\r\n }, (reason) => {\r\n const closeResult = `Dismissed ${this.getDismissReason(reason)}`;\r\n\r\n console.log('Reason: ' + closeResult);\r\n });\r\n }\r\n\r\n private getDismissReason(reason: any): string {\r\n if (reason == ModalDismissReasons.ESC) {\r\n return 'by pressing ESC';\r\n } else if (reason == ModalDismissReasons.BACKDROP_CLICK) {\r\n return 'by clicking on a backdrop';\r\n } else {\r\n return `with: ${reason}`;\r\n }\r\n }\r\n\r\n\r\n updateInspectionStatusFilters(e: any) {\r\n if (e == false) {\r\n if (this.engagementStatuses.some(m => m.isSelected)) {\r\n this.inspectionStatusesLabel = this.engagementStatuses.filter(m => m.isSelected).map(m => m.title).join(', ');\r\n this.updateFilters('inspectionStatus', this.engagementStatuses.filter(m => m.isSelected).map(m => m.status).join(','), true);\r\n }\r\n else {\r\n this.inspectionStatusesLabel = 'Filter by...';\r\n this.updateFilters('inspectionStatus', null, true);\r\n }\r\n }\r\n }\r\n\r\n clearInspectionStatusFilters() {\r\n this.engagementStatuses.filter(m => m.isSelected = false);\r\n }\r\n\r\n\r\n updateProgressStatusFilters(e: any) {\r\n if (e == false) {\r\n if (this.progressStatuses.some(m => m.isSelected)) {\r\n this.progressStatusesLabel = this.progressStatuses.filter(m => m.isSelected).map(m => m.title).join(', ');\r\n this.updateFilters('progressStatus', this.progressStatuses.filter(m => m.isSelected).map(m => m.status).join(','), true);\r\n }\r\n else {\r\n this.inspectionStatusesLabel = 'Filter by...';\r\n this.updateFilters('progressStatus', null, true);\r\n }\r\n }\r\n }\r\n\r\n clearProgressStatusFilters() {\r\n this.progressStatuses.filter(m => m.isSelected = false);\r\n }\r\n\r\n\r\n updateFilters(key: string, value: any, applyNow: boolean = false) {\r\n if (key) {\r\n if (!value || value == '') {\r\n this.removeFilter(key);\r\n } else {\r\n if (this.filters.some(m => m.key == key)) {\r\n const filter = this.filters.find(m => m.key == key);\r\n filter.value = value;\r\n }\r\n else {\r\n this.filters.push({ key: key, value: value } as modelDto.GridFilter)\r\n }\r\n }\r\n }\r\n\r\n if (applyNow == true) {\r\n this.updateDataGrid();\r\n }\r\n }\r\n\r\n removeFilter(key: string) {\r\n const i = this.filters.findIndex(m => m.key == key);\r\n if (i >= 0) {\r\n this.filters.splice(i, 1);\r\n }\r\n }\r\n\r\n applyPrimaryFilters() {\r\n if (this.groupBy !== this.groupByMode) {\r\n this.clearSecondaryFilters();\r\n }\r\n\r\n this.groupBy = this.groupByMode;\r\n\r\n this.updateFilters('code', this.engagementCodes);\r\n this.updateFilters('year', this.inspectionYears);\r\n\r\n if (this.selectedOffices.length > 0) {\r\n const officeFilter = this.selectedOffices.join(',');\r\n this.updateFilters('officeId', officeFilter);\r\n } else {\r\n this.removeFilter('officeId');\r\n }\r\n\r\n if (this.selectedRegions.length > 0) {\r\n const regionFilter = this.selectedRegions.join(',');\r\n this.updateFilters('region', regionFilter);\r\n } else {\r\n this.removeFilter('region');\r\n }\r\n\r\n if (this.selectedBusinessLines.length > 0) {\r\n const businessLineFilter = this.selectedBusinessLines.join(',');\r\n this.updateFilters('businessLineId', businessLineFilter);\r\n } else {\r\n this.removeFilter('businessLineId');\r\n }\r\n\r\n if (this.selectedCaptain !== \"\") {\r\n this.updateFilters('selectedCaptainId', this.selectedCaptain);\r\n }\r\n\r\n this.updateDataGrid();\r\n }\r\n\r\n clearPrimaryFilters() {\r\n this.engagementCodes = null;\r\n this.inspectionYears = null;\r\n this.selectedOffices = [];\r\n this.selectedRegions = [];\r\n this.selectedBusinessLines = [];\r\n this.selectedCaptain = \"\";\r\n\r\n this.removeFilter('code');\r\n this.removeFilter('year');\r\n this.removeFilter('week');\r\n this.removeFilter('officeId');\r\n this.removeFilter('region');\r\n this.removeFilter('businessLineId');\r\n this.removeFilter('selectedCaptainId');\r\n\r\n this.groupByMode = 'section';\r\n\r\n this.groupBy = this.groupByMode;\r\n\r\n this.updateDataGrid();\r\n }\r\n\r\n\r\n clearSecondaryFilters() {\r\n this.engagementCodes = null;\r\n this.assignedOnFilter = null;\r\n this.assignedToFilter = null;\r\n this.sectionNameFilter = null;\r\n\r\n this.removeFilter('code');\r\n this.removeFilter('assignedOn');\r\n this.removeFilter('assignedTo');\r\n this.removeFilter('clientName');\r\n this.removeFilter('sectionName');\r\n this.removeFilter('questionName');\r\n this.removeFilter('nrfs');\r\n this.removeFilter('observations');\r\n this.removeFilter('hasComments');\r\n\r\n this.clearInspectionStatusFilters();\r\n this.inspectionStatusesLabel = 'Filter by...';\r\n this.removeFilter('inspectionStatus');\r\n\r\n this.clearProgressStatusFilters();\r\n this.progressStatusesLabel = 'Filter by...';\r\n this.removeFilter('progressStatus');\r\n\r\n this.updateDataGrid();\r\n }\r\n\r\n\r\n updateDataGrid() {\r\n this.isBusy.set(loadingKey, true, 'Loading data');\r\n Promise\r\n .all([\r\n this.getRowCount(),\r\n this.getItems(this.page, this.limit)])\r\n .then(() => {\r\n this.getPageCount(this.limit);\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(loadingKey, false);\r\n });\r\n }\r\n\r\n\r\n getEngagementStatusName(status: modelEnum.EngagementStatus) {\r\n return this.uow.getEngagementStatusName(status);\r\n }\r\n\r\n getProgressStatusName(status: modelEnum.ProgressStatus) {\r\n return this.uow.getProgressStatusName(status);\r\n }\r\n\r\n\r\n calculatePercentComplete(numerator: number, denominator: number): number {\r\n let value = 0.0;\r\n\r\n if (denominator > 0) {\r\n value = numerator / denominator;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n\r\n getPageCount(limit: number = defaultLimit) {\r\n if (this.rowCount > 0) {\r\n this.pageCount = Math.ceil(this.rowCount / limit);\r\n if (this.pageCount == 0) {\r\n this.pageCount = 1;\r\n }\r\n } else {\r\n this.pageCount = 1;\r\n }\r\n }\r\n\r\n getRowCount() {\r\n switch (this.groupBy) {\r\n case 'engagement-code':\r\n return this.getEngagementsCount();\r\n\r\n case 'section':\r\n return this.getEngagementSectionsCount();\r\n\r\n case 'question':\r\n return this.getEngagementQuestionsCount();\r\n }\r\n }\r\n\r\n getItems(page: number = 1, limit: number = defaultLimit) {\r\n switch (this.groupBy) {\r\n case 'engagement-code':\r\n return this.getEngagements(page, limit);\r\n\r\n case 'section':\r\n return this.getEngagementSections(page, limit);\r\n\r\n case 'question':\r\n return this.getEngagementQuestions(page, limit);\r\n }\r\n }\r\n\r\n\r\n getEngagements(page: number = 1, limit: number = defaultLimit) {\r\n return this.uow.getEngagementsForMyTeams(page, limit, JSON.stringify(this.filters))\r\n .then(result => {\r\n this.engagements = result;\r\n });\r\n }\r\n\r\n getEngagementsCount() {\r\n return this.uow.getEngagementsCountForMyTeams(JSON.stringify(this.filters))\r\n .then(result => {\r\n this.rowCount = result[0];\r\n });\r\n }\r\n\r\n\r\n getEngagementSections(page: number = 1, limit: number = defaultLimit) {\r\n return this.uow.getEngagementSectionsForMyTeams(page, limit, JSON.stringify(this.filters))\r\n .then(result => {\r\n this.engagementSections = result;\r\n });\r\n }\r\n\r\n getEngagementSectionsCount() {\r\n return this.uow.getEngagementSectionsCountForMyTeams(JSON.stringify(this.filters))\r\n .then(result => {\r\n this.rowCount = result[0];\r\n this.engagementsCount = result[1];\r\n });\r\n }\r\n\r\n\r\n getEngagementQuestions(page: number = 1, limit: number = defaultLimit) {\r\n return this.uow.getEngagementQuestionsForMyTeams(page, limit, JSON.stringify(this.filters))\r\n .then(result => {\r\n this.engagementQuestions = result;\r\n });\r\n }\r\n\r\n getEngagementQuestionsCount() {\r\n return this.uow.getEngagementQuestionsCountForMyTeams(JSON.stringify(this.filters))\r\n .then(result => {\r\n this.rowCount = result[0];\r\n this.engagementsCount = result[1];\r\n });\r\n }\r\n}\r\n","
\r\n

My Team's Inspections

\r\n
\r\n
\r\n
\r\n Search Inspections\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n

\r\n {{rowCount}} {{(rowCount == 1 ? 'record' : 'records')}} found\r\n

\r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
Engagement CodeClient NameInspection StatusProgress StatusSectionsCompleted Sections% CompleteNRFsObservations
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
0\">\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n No data to display…\r\n \r\n
\r\n \r\n \r\n \r\n {{engagement.code}}\r\n \r\n \r\n \r\n {{engagement.clientName}}\r\n \r\n {{getEngagementStatusName(engagement.inspectionStatus)}}{{getProgressStatusName(engagement.progressStatus)}}{{engagement.totalSections | number : '1.0-0'}}---{{engagement.completedSections | number : '1.0-0'}}---\r\n {{calculatePercentComplete(engagement.completedSections, engagement.totalSections) | percent : '1.1-2'}}\r\n ({{engagement.completedSections}}/{{engagement.totalSections}})\r\n ---{{engagement.nrfs | number : '1.0-0'}}---{{engagement.observations | number : '1.0-0'}}---
\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n

\r\n {{rowCount}} {{(rowCount == 1 ? 'record' : 'records')}} found from {{engagementsCount}} {{(engagementsCount == 1 ? 'inspection' : 'inspections')}}\r\n

\r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
Assigned OnEngagement CodeEngagement StatusSectionProgress Status% CompleteNRFsObservationsAssigned To
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
0\">\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n No data to display…\r\n \r\n
\r\n \r\n 0\">{{section.assignedOn | date: short}}---\r\n \r\n {{section.engagementCode}}\r\n \r\n {{getEngagementStatusName(section.inspectionStatus)}}\r\n \r\n {{section.sectionName}}\r\n \r\n {{getProgressStatusName(section.progressStatus)}}\r\n {{calculatePercentComplete(section.completedQuestions, section.totalQuestions) | percent : '1.1-2'}}\r\n ({{section.completedQuestions}}/{{section.totalQuestions}})\r\n ---{{section.nrfs | number : '1.0-0'}}{{section.observations | number : '1.0-0'}}\r\n
    0\">\r\n
  • {{teamMember.fullName}}
  • \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n

\r\n {{rowCount}} {{(rowCount == 1 ? 'record' : 'records')}} found from {{engagementsCount}} {{(engagementsCount == 1 ? 'inspection' : 'inspections')}}\r\n

\r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
Engagement CodeEngagement StatusSectionNameStatusComments?
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
0\">\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
0\">\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n No data to display…\r\n \r\n
\r\n \r\n \r\n \r\n {{question.engagementCode}}\r\n \r\n {{getEngagementStatusName(question.inspectionStatus)}}\r\n \r\n {{question.sectionName}}\r\n \r\n \r\n \r\n {{question.questionName}}\r\n \r\n {{getProgressStatusName(question.progressStatus)}}\r\n ---\r\n \r\n \r\n \r\n ---\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n
Assign Team Member(s)
\r\n \r\n
\r\n
\r\n

\r\n Please select one or more team members to assign to:\r\n

\r\n

\r\n {{currentSection.sectionName}}\r\n

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n
Set Engagement Status
\r\n \r\n
\r\n
\r\n

\r\n Please select a status to assign to the selected engagements:\r\n

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport Utilities from '../../../services/utilities';\r\nimport { EngagementSectionDto, EngagementQuestionDto } from '../../../../model/modelDto';\r\n\r\n@Component({\r\n selector: 'engagement-tree-node-viewer',\r\n inputs: ['node', 'i', 'context'],\r\n templateUrl: './engagement-tree-node-viewer.component.html'\r\n})\r\nexport class EngagementViewerTreeNode implements OnInit {\r\n @Input() node: EngagementSectionDto;\r\n @Input() i: number;\r\n @Input() context: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n get currentNodes() {\r\n return this.node.childSections ? this.node.childSections.filter(m => m.isActivated).sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n get questions() {\r\n return this.node.questions ? this.node.questions.sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n getDisplayText(question: EngagementQuestionDto) {\r\n return question.name || question.description.substr(0, 40) + '...';\r\n }\r\n\r\n toggleSection() {\r\n if (this.node) {\r\n this.node.isCollapsed = !this.node.isCollapsed;\r\n }\r\n }\r\n\r\n\r\n setActiveSection(node: EngagementSectionDto) {\r\n this.context.setActiveSection(node);\r\n }\r\n\r\n setActiveQuestion(question: EngagementQuestionDto) {\r\n question.isSelected = true;\r\n this.context.setActiveQuestion(question);\r\n }\r\n}\r\n","
\r\n
\r\n \r\n\r\n {{node.name}}\r\n
\r\n\r\n
\r\n

Section contains no questions

\r\n
    0\" class=\"question-list mb-2\">\r\n
  1. \r\n \r\n {{getDisplayText(question)}}\r\n \r\n
  2. \r\n
\r\n
    0\">\r\n
  1. \r\n \r\n
  2. \r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UnitOfWorkService } from '../../../services/unit-of-work/unit-of-work.service';\r\nimport Utilities from '../../../services/utilities';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ApplicationInsightsService } from '../../../services/application-insights/application-insights.service';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogHelper } from '../../../services/dialog-helper';\r\nimport { IsBusyService } from '../../../services/is-busy/is-busy.service';\r\nimport * as moment from 'moment';\r\nimport * as modelDto from '../../../../model/modelDto';\r\nimport * as modelEnum from '../../../../model/modelEnums';\r\nimport { GlobalErrorHandler } from '../../../services/global-error-handler';\r\n\r\nconst LOADING_KEY: string = 'inspection:loadData';\r\nconst SAVING_KEY: string = 'inspection:saveData';\r\nconst NO_ANSWER_NEEDED_NAME: string = 'No answer needed';\r\n\r\n@Component({\r\n selector: 'app-team-inspection-admin',\r\n templateUrl: './inspection.component.html',\r\n})\r\nexport class TeamCaptainInspectionComponent implements OnInit {\r\n\r\n isLoading: boolean = true;\r\n\r\n engagement: modelDto.EngagementDto = {} as modelDto.EngagementDto;\r\n engagementId: number = null;\r\n sectionId: number = null;\r\n questionId: number = null;\r\n commentText: string = null;\r\n\r\n questionNumber: number = null;\r\n currentQuestion: modelDto.EngagementQuestionDto = null;\r\n\r\n hoverSectionName: string = null;\r\n\r\n parentSection: modelDto.EngagementSectionDto = null;\r\n\r\n currentSection: modelDto.EngagementSectionDto = null;\r\n previousSection: modelDto.EngagementSectionDto = null;\r\n nextSection: modelDto.EngagementSectionDto = null;\r\n\r\n constructor(private uow: UnitOfWorkService,\r\n private appInsights: ApplicationInsightsService,\r\n private errorHandler: GlobalErrorHandler,\r\n private activeRoute: ActivatedRoute,\r\n public router: Router,\r\n public isBusy: IsBusyService,\r\n public dialogHelper: DialogHelper) {\r\n appInsights.logPageView();\r\n }\r\n\r\n ngOnInit() {\r\n this.activeRoute.queryParams.subscribe(routeParams => {\r\n this.isLoading = true;\r\n this.isBusy.set(LOADING_KEY, true, 'Loading engagement data');\r\n Promise\r\n .all([this.getMyTeamsEngagementById(routeParams.id, routeParams.sid, routeParams.qid)])\r\n .then(() => {\r\n this.findSectionById();\r\n })\r\n .catch(reason => {\r\n this.errorHandler.handleError(reason);\r\n })\r\n .finally(() => {\r\n this.isBusy.set(LOADING_KEY, false);\r\n this.isLoading = false;\r\n });\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.uow.hasChanges.value) {\r\n let proceed = this.dialogHelper.confirm();\r\n\r\n proceed.subscribe(result => {\r\n if (result) {\r\n this.uow.rollback();\r\n }\r\n })\r\n\r\n return proceed;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n get rootEngagementSections() {\r\n return this.engagement && this.engagement.sections ? this.engagement.sections.filter(m => !m.parentSectionId).sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n get currentQuestionOptions() {\r\n return this.currentQuestion && this.currentQuestion.options ? this.currentQuestion.options.filter(o => o.text !== NO_ANSWER_NEEDED_NAME).sort(Utilities.sortByDisplayOrder) : [];\r\n }\r\n\r\n get hasChanges() {\r\n const a = this.uow.engagements.hasChanges.value;\r\n const b = this.uow.engagementTeamMembers.hasChanges.value;\r\n const c = this.uow.engagementSections.hasChanges.value;\r\n\r\n return a || b || c;\r\n }\r\n\r\n undoChanges() {\r\n if (this.hasChanges) {\r\n this.uow.rollback();\r\n }\r\n }\r\n\r\n getMyTeamsEngagementById(id: number, sid?: number, qid?: number) {\r\n return this.uow.getMyTeamsEngagementById(id)\r\n .then(result => {\r\n if (result && result.length > 0) {\r\n this.engagement = result[0];\r\n\r\n this.engagementId = id;\r\n this.sectionId = sid;\r\n this.questionId = qid;\r\n }\r\n else {\r\n this.router.navigate(['./inspections'], { relativeTo: this.activeRoute.parent });\r\n }\r\n });\r\n }\r\n\r\n\r\n getEngagementStatusName(status: modelEnum.EngagementStatus) {\r\n return this.uow.getEngagementStatusName(status);\r\n }\r\n\r\n getProgressStatusName(status: modelEnum.ProgressStatus) {\r\n return this.uow.getProgressStatusName(status);\r\n }\r\n\r\n formatDate(value: any): string {\r\n return moment(value).format('YYYY-MM-DD hh:mm A Z');\r\n }\r\n\r\n calculatePercentComplete(numerator: number, denominator: number): number {\r\n let value = 0.0;\r\n\r\n if (denominator > 0) {\r\n value = numerator / denominator;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n\r\n reloadSections() {\r\n return this.uow.getMyTeamsEngagementById(this.engagementId)\r\n .then(result => {\r\n if (result && result.length > 0) {\r\n this.engagement = result[0];\r\n if (this.engagement.sections) {\r\n this.engagement.sections.forEach(s => {\r\n if (s.questions) {\r\n s.questions.forEach(q => q.isSelected = q.id == this.questionId);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n findSectionById() {\r\n if (this.sectionId && this.engagement.sections) {\r\n this.setActiveSection(this.engagement.sections.find(m => m.id == this.sectionId));\r\n }\r\n else {\r\n this.setActiveSection(null);\r\n }\r\n }\r\n\r\n findNearestActiveParentSection(section: modelDto.EngagementSectionDto) {\r\n if (section) {\r\n this.parentSection = section.parentSection;\r\n if (this.parentSection) {\r\n if (!this.parentSection.isActivated) {\r\n this.parentSection = this.findNearestActiveParentSection(this.parentSection);\r\n }\r\n }\r\n }\r\n else {\r\n this.parentSection = null;\r\n }\r\n\r\n return this.parentSection;\r\n }\r\n\r\n setActiveSection(section: modelDto.EngagementSectionDto) {\r\n this.currentSection = section;\r\n this.setHoverText(null);\r\n\r\n this.clearQuestionSelection();\r\n\r\n if (this.engagement.sections) {\r\n if (section) {\r\n this.sectionId = this.currentSection.id;\r\n\r\n if (this.questionId) {\r\n if (this.currentSection.questions) {\r\n this.currentQuestion = this.currentSection.questions.find(m => m.id == this.questionId);\r\n if (!this.currentQuestion) {\r\n this.questionNumber = 1;\r\n\r\n this.currentQuestion = this.currentSection.questions[0];\r\n if (this.currentQuestion) {\r\n this.questionId = this.currentQuestion.id;\r\n this.currentQuestion.isSelected = true;\r\n }\r\n else {\r\n this.clearQuestionSelection();\r\n }\r\n }\r\n else {\r\n this.questionNumber = this.currentSection.questions.indexOf(this.currentQuestion) + 1;\r\n this.currentQuestion.isSelected = true;\r\n }\r\n }\r\n else {\r\n this.clearQuestionSelection();\r\n }\r\n }\r\n else {\r\n if (this.currentSection.questions) {\r\n this.currentQuestion = this.currentSection.questions[0];\r\n this.questionNumber = 1;\r\n\r\n if (this.currentQuestion) {\r\n this.questionId = this.currentQuestion.id;\r\n this.currentQuestion.isSelected = true;\r\n }\r\n else {\r\n this.clearQuestionSelection();\r\n }\r\n }\r\n else {\r\n this.clearQuestionSelection();\r\n }\r\n }\r\n\r\n this.checkQuestionForNoAnswerOption();\r\n\r\n this.parentSection = this.findNearestActiveParentSection(this.currentSection);\r\n\r\n if (this.parentSection) {\r\n if (this.currentSection.parentSectionId == this.parentSection.id) {\r\n const siblings = this.parentSection.childSections.filter(m => m.isActivated).sort(Utilities.sortByDisplayOrder);\r\n const i = siblings.indexOf(this.currentSection);\r\n\r\n if (i > 0) {\r\n this.previousSection = siblings[i - 1];\r\n }\r\n else {\r\n this.previousSection = null;\r\n }\r\n\r\n if (i < siblings.length - 1) {\r\n this.nextSection = siblings[i + 1];\r\n }\r\n else {\r\n this.nextSection = null;\r\n }\r\n }\r\n else {\r\n this.previousSection = null;\r\n this.nextSection = null;\r\n }\r\n }\r\n else {\r\n const siblings = this.engagement.sections.filter(m => m.isActivated).sort(Utilities.sortByDisplayOrder);\r\n const i = siblings.indexOf(this.currentSection);\r\n\r\n if (i > 0) {\r\n this.previousSection = siblings[i - 1];\r\n }\r\n else {\r\n this.previousSection = null;\r\n }\r\n\r\n if (i < siblings.length - 1) {\r\n this.nextSection = siblings[i + 1];\r\n }\r\n else {\r\n this.nextSection = null;\r\n }\r\n }\r\n }\r\n else {\r\n this.sectionId = null;\r\n this.questionId = null;\r\n\r\n this.parentSection = null;\r\n this.currentQuestion = null;\r\n this.previousSection = null;\r\n this.nextSection = null;\r\n }\r\n }\r\n else {\r\n this.sectionId = null;\r\n this.questionId = null;\r\n\r\n this.parentSection = null;\r\n this.currentQuestion = null;\r\n this.previousSection = null;\r\n this.nextSection = null;\r\n }\r\n }\r\n\r\n checkQuestionForNoAnswerOption() {\r\n if (this.currentQuestion\r\n && this.currentQuestion.options\r\n && this.currentQuestion.options.filter(x => x.text === NO_ANSWER_NEEDED_NAME).length > 0) {\r\n let naOption = this.currentQuestion.options.find(x => x.text === NO_ANSWER_NEEDED_NAME);\r\n this.currentQuestion.selectedOptionId = naOption.id;\r\n }\r\n }\r\n\r\n closeSection() {\r\n this.setActiveSection(null);\r\n }\r\n\r\n setHoverText(section: modelDto.EngagementSectionDto) {\r\n if (section) {\r\n if (section.name.length > 40) {\r\n this.hoverSectionName = section.name.substr(0, 40) + '...';\r\n } else {\r\n this.hoverSectionName = section.name;\r\n }\r\n }\r\n else {\r\n this.hoverSectionName = null;\r\n }\r\n }\r\n\r\n\r\n loadQuestion(i: number) {\r\n if (this.currentQuestion) {\r\n this.currentQuestion.isSelected = false;\r\n }\r\n\r\n if (this.currentSection.questions) {\r\n if (this.currentSection.questions[i - 1]) {\r\n this.currentQuestion = this.currentSection.questions[i - 1];\r\n this.questionId = this.currentQuestion.id;\r\n this.questionNumber = i;\r\n this.currentQuestion.isSelected = true;\r\n\r\n this.checkQuestionForNoAnswerOption();\r\n }\r\n }\r\n }\r\n\r\n setActiveQuestion(question: modelDto.EngagementQuestionDto) {\r\n this.questionId = question.id;\r\n this.sectionId = question.sectionId;\r\n\r\n this.findSectionById();\r\n }\r\n\r\n clearQuestionSelection() {\r\n if (this.engagement.sections) {\r\n this.engagement.sections.forEach(s => {\r\n if (s.questions) {\r\n s.questions.forEach(q => q.isSelected = false);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n expandAll() {\r\n if (this.engagement && this.engagement.sections) {\r\n this.engagement.sections.forEach((m) => { m.isCollapsed = false; });\r\n }\r\n }\r\n\r\n collapseAll() {\r\n if (this.engagement && this.engagement.sections) {\r\n this.engagement.sections.forEach((m) => { m.isCollapsed = true; });\r\n }\r\n }\r\n}\r\n","
\r\n

My Team's Inspections

\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
    \r\n
  1. \r\n \r\n
  2. \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Engagement Code:{{engagement.engagementCode}}
Client Name:{{engagement.clientName}}
 
Team Captain:{{engagement.teamCaptain}}
Office:{{engagement.officeName}}Year:{{engagement.inspectionYear}}
Region:{{engagement.regionCode}}
\r\n
\r\n\r\n
\r\n

Please select a section to review:

\r\n
    \r\n
  • \r\n \r\n
  • \r\n
\r\n
\r\n \r\n \r\n Return to inspections list\r\n \r\n
\r\n\r\n
\r\n
\r\n Section:{{currentSection.name}}\r\n
\r\n\r\n
\r\n \r\n

\r\n None\r\n

\r\n
    0\">\r\n
  • \r\n {{teamMember.fullName}}\r\n
  • \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n {{hoverSectionName}}\r\n
\r\n\r\n
\r\n\r\n
\r\n
0\">\r\n \r\n \r\n \r\n Question {{questionNumber}} of {{currentSection.questions.length}}\r\n \r\n
\r\n\r\n

\r\n {{currentQuestion.name}}\r\n

\r\n\r\n
\r\n

{{ currentQuestion.description }}

\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
Not Started
\r\n
In Progress
\r\n
Complete
\r\n
\r\n\r\n
\r\n \r\n
None
\r\n
{{currentQuestion.respondingTeamMemberName}} [{{formatDate(currentQuestion.responseDate)}}]
\r\n
\r\n\r\n
\r\n \r\n
    \r\n
  • None
  • \r\n
  • \r\n

    {{ comment.text }}

    \r\n
    \r\n

    {{comment.inspectionTeamMember?.fullName}}

    \r\n

    [{{formatDate(comment.timestamp)}}]

    \r\n
    \r\n
  • \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

\r\n \r\n Help\r\n

\r\n
\r\n

{{ currentQuestion.helpText }}

\r\n
\r\n
\r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';\r\nimport { MsalGuard, MsalService } from '@azure/msal-angular';\r\nimport { AccountInfo } from '@azure/msal-common';\r\nimport { RequireAuthenticatedUserGuard } from '../auth/require-authenticated-user.guard';\r\nimport { BreezeSetupGuard } from '../breeze-setup/breeze-setup.guard';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppGuard implements CanActivate {\r\n constructor(\r\n private msalGuard: MsalGuard,\r\n private breezeGuard: BreezeSetupGuard,\r\n private router: Router,\r\n private authService: MsalService\r\n ) { }\r\n\r\n private reroute() {\r\n //this.router.navigate([\"/access-denied\"]);\r\n return false;\r\n }\r\n\r\n public async canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n let account: AccountInfo = this.authService.instance.getAllAccounts()[0];\r\n\r\n if (await this.msalGuard.canActivate(next, state).toPromise().catch(err => this.reroute()) == false) {\r\n return this.reroute();\r\n }\r\n\r\n if (await this.breezeGuard.canActivate(next, state).catch(err => this.reroute()) == false) {\r\n return this.reroute();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { MsalGuardConfiguration, MsalService, MSAL_GUARD_CONFIG } from '@azure/msal-angular';\r\nimport { RedirectRequest } from '@azure/msal-browser';\r\nimport { AccountInfo } from '@azure/msal-common';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RequireAuthenticatedUserGuard implements CanActivate {\r\n constructor(private authService: MsalService) { }\r\n\r\n async canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const account: AccountInfo = this.authService.instance.getAllAccounts()[0];\r\n if (account) {\r\n return Promise.resolve(true);\r\n } else {\r\n return Promise.resolve(false);\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, CanActivate, Router } from \"@angular/router\";\r\nimport { MsalService } from \"@azure/msal-angular\";\r\nimport { AccountInfo } from \"@azure/msal-common\";\r\nimport { ServerSideConfigDataService } from '../../services/server-side-config-data/server-side-config-data.service';\r\nimport { SharedDataService } from '../../services/shared-data/shared-data.service';\r\nimport * as model from '../../../model/model';\r\n\r\ninterface Account extends AccountInfo {\r\n idTokenClaims?: {\r\n roles?: string[]\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RoleGuard implements CanActivate {\r\n constructor(private msalService: MsalService, private router: Router, private serverSide: ServerSideConfigDataService, private sharedData: SharedDataService)\r\n {\r\n this.serverSide.loadServerSideData();\r\n }\r\n\r\n canActivate(route: ActivatedRouteSnapshot): boolean {\r\n const { roles } = route.data;\r\n const account: Account = this.msalService.instance.getAllAccounts()[0];\r\n const me: model.Employee = this.sharedData.me.value;\r\n \r\n\r\n let hasAccess = false;\r\n\r\n if (me && me.isActive) {\r\n\r\n if (me.isAdmin) {\r\n hasAccess = true;\r\n } else {\r\n roles.forEach(role => {\r\n\r\n if (role == 'NationalQcAdmin' && me.isNationalQcAdmin) {\r\n hasAccess = true;\r\n } else if (role == 'Basic' && (me.canSignIn || me.isNationalQcAdmin)) {\r\n hasAccess = true;\r\n }\r\n\r\n });\r\n } \r\n }\r\n if (!hasAccess) {\r\n this.router.navigate(['/access-denied'])\r\n }\r\n return hasAccess;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { EntityManagerProviderService } from '../../services//entity-manager-provider/entity-manager-provider.service';\r\nimport { ServerSideConfigDataService } from '../../services/server-side-config-data/server-side-config-data.service';\r\nimport { UnitOfWorkService } from '../../services/unit-of-work/unit-of-work.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BreezeSetupGuard implements CanActivate {\r\n constructor(\r\n private serverSide: ServerSideConfigDataService,\r\n private entityManagerProvider: EntityManagerProviderService,\r\n private uowService: UnitOfWorkService,\r\n ) { }\r\n\r\n async canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n return this.serverSide\r\n .loadServerSideData()\r\n .then(() => this.entityManagerProvider.init())\r\n .then(() => {\r\n this.uowService.init();\r\n return true;\r\n });\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, CanDeactivate } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmationDialogComponent } from '../../components/shared/confirmation-dialog/confirmation-dialog.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GenericCanDeactivateGuard implements CanDeactivate {\r\n constructor(private dialog: MatDialog) { }\r\n\r\n canDeactivate(component: ISaveUndoChanges, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Observable | Promise | boolean {\r\n if (!component.hasChanges) {\r\n return true;\r\n }\r\n\r\n return this.dialog\r\n .open(ConfirmationDialogComponent, {\r\n disableClose: true,\r\n data: {\r\n title: 'Pending Changes',\r\n //content: \"You have pending changes. Would you like to save these changes before you leave?\"\r\n content: \"There are unsaved changes. Continue without saving?\"\r\n }\r\n })\r\n .afterClosed()\r\n .toPromise()\r\n .then(result => {\r\n if (result == \"Yes\") {\r\n //return component.saveChanges();\r\n component.undoChanges();\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n}\r\n\r\nexport interface ISaveUndoChanges {\r\n hasChanges: boolean;\r\n saveChanges(): Promise;\r\n undoChanges(secondAction?: boolean): void;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { AppInsights } from 'applicationinsights-js';\r\nimport { Profile } from '../../../typings';\r\nimport { ServerSideConfigDataService } from '../server-side-config-data/server-side-config-data.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApplicationInsightsService {\r\n private env: { [name: string]: string } = {};\r\n\r\n constructor(private serverSide: ServerSideConfigDataService, private msalService: MsalService) {\r\n this.serverSide.configDataLoaded$.subscribe(loaded => {\r\n if (loaded) {\r\n const config: Microsoft.ApplicationInsights.IConfig = {\r\n instrumentationKey: this.serverSide.configData.appInsightsKey\r\n };\r\n\r\n const envProps = this.serverSide.configData.appInsightsEnv.split(';');\r\n envProps.forEach(p => {\r\n const e: string[] = p.split(':');\r\n this.env[e[0]] = e[1];\r\n });\r\n\r\n if (!AppInsights.config) {\r\n AppInsights.downloadAndSetup(config);\r\n }\r\n\r\n const employeeId = (this.msalService.instance.getAllAccounts()[0] as Profile).idTokenClaims.employeeID;\r\n if (employeeId) {\r\n AppInsights.setAuthenticatedUserContext(employeeId);\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n private getProps(properties?: { [name: string]: string }) {\r\n const props = this.env;\r\n if (properties) {\r\n for (const p in properties) {\r\n if (properties.hasOwnProperty(p)) {\r\n props[p] = properties[p];\r\n }\r\n }\r\n }\r\n\r\n return props;\r\n }\r\n\r\n logPageView(name?: string, url?: string, properties?: { [name: string]: string }, measurements?: { [name: string]: number }, duration?: number) {\r\n AppInsights.trackPageView(name, url, this.getProps(properties), measurements, duration);\r\n }\r\n\r\n logEvent(name: string, properties?: { [name: string]: string }, measurements?: { [name: string]: number }) {\r\n AppInsights.trackEvent(name, this.getProps(properties), measurements);\r\n }\r\n\r\n logError(exception: Error, handledAt?: string, properties?: { [name: string]: string }, measurements?: { [name: string]: number }, severityLevel?: AI.SeverityLevel) {\r\n AppInsights.trackException(exception, handledAt, this.getProps(properties), measurements, severityLevel);\r\n }\r\n\r\n logTrace(message: string, properties?: { [name: string]: string }, severityLevel?: AI.SeverityLevel) {\r\n AppInsights.trackTrace(message, this.getProps(properties), severityLevel);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EntityManager, Validator } from 'breeze-client';\r\nimport { AnnotatedMetadata, MetaEntityType } from '../../../model/metaEntity';\r\nimport { environment } from '../../../environments/environment.prod';\r\nimport { Project } from '../../../model/model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BreezeValidatorsService {\r\n private entityManager: EntityManager;\r\n\r\n /**\r\n * Register your validators here\r\n * \"EntityName\": validatorMethod\r\n */\r\n private readonly validators: IDictionary = {\r\n \"Project\": this.projectValidators\r\n };\r\n\r\n /**\r\n * These are custom validators. They will be called whenever saveChanges() or commit() is called.\r\n * This file might get pretty big, and you may want to consider breaking out each entity type\r\n * into it's own static file and reference them here\r\n */\r\n constructor() { }\r\n\r\n private projectValidators(entityType: MetaEntityType): ICustomValidator {\r\n const nameProp = entityType.getProperty(\"name\");\r\n if (!nameProp) {\r\n if (!environment.production) {\r\n console.log(`${entityType.name} returned null for getProperty(\"name\"), this is a bypass for testing purposes, but it's unclear why this happens`);\r\n }\r\n return;\r\n }\r\n\r\n nameProp.validators.push(new Validator(\r\n 'uniqueRequirement',\r\n (value: string, context) => {\r\n const entity: Project = (context).entity;\r\n\r\n if (!value) {\r\n return true;\r\n }\r\n\r\n const projects = this.entityManager.getEntities(\"Project\");\r\n\r\n const isValid = projects\r\n .filter(p =>\r\n p.id !== entity.id\r\n && p.name\r\n && p.name.trim().toLowerCase() == value.trim().toLowerCase()\r\n )\r\n .length == 0;\r\n\r\n return isValid;\r\n },\r\n {\r\n messageTemplate: `Project Name must be unique`\r\n }\r\n ));\r\n }\r\n\r\n /**\r\n * Sets up the above validators. Called from EntityManagerProficerService during app initialization\r\n * @param entityTypes\r\n * @param entityManager\r\n */\r\n public setupCustomValidators(entityTypes: Array, entityManager: EntityManager) {\r\n this.entityManager = entityManager;\r\n\r\n entityTypes.map(metaData => this.entityManager.metadataStore.getEntityType(metaData.key, true))\r\n .forEach((entityType: MetaEntityType) => {\r\n const validator = this.validators[entityType.shortName];\r\n if (validator) {\r\n (validator.bind(this))(entityType);\r\n }\r\n }, this);\r\n }\r\n}\r\n\r\ntype ICustomValidator = (entityType: MetaEntityType) => void;\r\n\r\ninterface IDictionary {\r\n [entity: string]: ICustomValidator;\r\n}\r\n","import { Validator } from \"breeze-client\";\r\nimport * as $ from 'jquery';\r\n\r\nexport default class DefaultBreezeValidators {\r\n private static removeValidator(validators, name) {\r\n let index = -1;\r\n\r\n $.each(validators, (i, val) => {\r\n if (val.name == name) {\r\n index = Number(i);\r\n return;\r\n }\r\n });\r\n\r\n if (index > -1) {\r\n validators.splice(index, 1);\r\n }\r\n }\r\n\r\n private static validator(context, messageTemplate, name, fn) {\r\n const defaultContext = { messageTemplate: messageTemplate };\r\n\r\n $.extend(defaultContext, context);\r\n\r\n return new Validator(\r\n name,\r\n fn,\r\n defaultContext\r\n );\r\n }\r\n\r\n private static int16Validator(v, ctxt) {\r\n return this.intValidator(v, ctxt, -32768, 32767);\r\n }\r\n\r\n private static int32Validator(v, ctxt) {\r\n return this.intValidator(v, ctxt, -2147483648, 2147483647);\r\n }\r\n\r\n static int64Validator(v, ctxt) {\r\n return this.intValidator(v, ctxt, -9223372036854775808, 9223372036854775807);\r\n }\r\n\r\n private static intValidator(v, ctxt, minValue, maxValue) {\r\n if (v == null || v == \"\") { return true; } // if empty string then required will validate empty string\r\n if (typeof v == \"string\") {\r\n v = parseInt(v, 0);\r\n }\r\n if ((typeof v == \"number\") && (!isNaN(v)) && Math.floor(v) == v) {\r\n if (minValue != null && v < minValue) {\r\n return false;\r\n }\r\n if (maxValue != null && v > maxValue) {\r\n return false;\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n private static numValidator(v, ctxt) {\r\n if (v == null || v == \"\") { return true; } // if empty string then required will validate empty string\r\n if (typeof v == \"string\") {\r\n v = parseFloat(v);\r\n }\r\n if ((typeof v == \"number\") && !isNaN(v)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n private static requiredValidator(context) {\r\n return this.validator(context,\r\n '%displayName% is required',\r\n \"required\",\r\n (value, ctxt) => {\r\n if ((value !== 0 && !value) || value == null) { return false; } // '== null' matches null and empty string\r\n\r\n return true;\r\n }\r\n );\r\n }\r\n\r\n private static rangeValidator(context) {\r\n return this.validator(context,\r\n '%displayName% must be between ' + context.min + ' and ' + context.max,\r\n \"range_\" + context.min + '_and_' + context.max,\r\n (value, ctxt) => {\r\n if (!value || value == null) { return true; }\r\n\r\n if (value < context.min || value > context.max) { return false; }\r\n\r\n return true;\r\n }\r\n );\r\n }\r\n\r\n private static regexValidator(context) {\r\n return this.validator(context,\r\n '%displayName% is not in the correct format',\r\n 'regex_' + context.name,\r\n (value, ctxt) => {\r\n if (!value || value == null) { return true; }\r\n\r\n const patt = new RegExp(context.regex, 'igm');\r\n return patt.test(value);\r\n }\r\n );\r\n }\r\n\r\n private static currencyValidator(context) {\r\n return this.validator(context,\r\n '%displayName% must be entered as currency',\r\n 'currency',\r\n (value, ctxt) => {\r\n if (!value || value == null) { return true; }\r\n\r\n // Allows for US and International currency formats\r\n return new RegExp(/(?:^\\d{1,3}(?:\\.?\\d{3})*(?:,\\d{2})?$)|(?:^\\d{1,3}(?:,?\\d{3})*(?:\\.\\d{2})?$)/).test(value);\r\n }\r\n );\r\n }\r\n\r\n private static emailValidator(context) {\r\n return this.validator(context,\r\n '%displayName% must be a valid e-mail address',\r\n 'email',\r\n (value, ctxt) => {\r\n if (!value || value == null) { return true; }\r\n\r\n return new RegExp(/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i).test(value);\r\n }\r\n );\r\n }\r\n\r\n private static urlValidator(context) {\r\n return this.validator(context,\r\n '%displayName% must be a valid URL',\r\n 'url',\r\n (value, ctxt) => {\r\n if (!value || value == null) { return true; }\r\n\r\n return new RegExp(/[-a-zA-Z0-9@:%_\\+.~#?&//=]{2,256}\\.[a-z]{2,4}\\b(\\/[-a-zA-Z0-9@:%_\\+.~#?&//=]*)?/gi).test(value);\r\n }\r\n );\r\n }\r\n\r\n private static creditCardValidator(context) {\r\n return this.validator(context,\r\n '%displayName% is not a valid credit card number',\r\n 'creditCard',\r\n (value, ctxt) => {\r\n if (!value || value == null) { return true; }\r\n\r\n const cc = value.replace(/[^\\d]/g, '');\r\n\r\n if (this.luhn(cc)) {\r\n return new RegExp(/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$/).test(cc);\r\n }\r\n\r\n return false;\r\n }\r\n );\r\n }\r\n\r\n private static luhn(cc) {\r\n let sum = 0;\r\n let i;\r\n\r\n for (i = cc.length - 2; i >= 0; i -= 2) {\r\n sum += Array(0, 2, 4, 6, 8, 1, 3, 5, 7, 9)[parseInt(cc.charAt(i), 10)];\r\n }\r\n for (i = cc.length - 1; i >= 0; i -= 2) {\r\n sum += parseInt(cc.charAt(i), 10);\r\n }\r\n return (sum % 10) == 0;\r\n }\r\n\r\n // These validators are configured on the server side via EF\r\n public static setupEFValidators(validators, meta) {\r\n for (const index in validators) {\r\n if (validators.hasOwnProperty(index)) {\r\n switch (validators[index].name) {\r\n case \"int16\":\r\n validators[index].valFn = this.int16Validator.bind(this);\r\n break;\r\n case \"int32\":\r\n validators[index].valFn = this.int32Validator.bind(this);\r\n break;\r\n case \"int64\":\r\n validators[index].valFn = this.int64Validator.bind(this);\r\n break;\r\n case \"number\":\r\n validators[index].valFn = this.numValidator.bind(this);\r\n }\r\n }\r\n }\r\n\r\n if (meta.requiredErrorMessage) {\r\n this.removeValidator(validators, \"required\");\r\n validators.push(this.requiredValidator({ messageTemplate: meta.requiredErrorMessage }));\r\n }\r\n\r\n if (meta.range) {\r\n this.removeValidator(validators, \"range\");\r\n validators.push(this.rangeValidator({ min: meta.range.min, max: meta.range.max, messageTemplate: meta.range.errorMessage }));\r\n }\r\n\r\n if (meta.regEx) {\r\n validators.push(this.regexValidator({ regex: meta.regEx.expression, name: meta.displayName, messageTemplate: meta.regEx.errorMessage }));\r\n }\r\n\r\n if (meta.myType == \"EmailAddress\") {\r\n validators.push(this.emailValidator({ messageTemplate: meta.myType.errorMessage }));\r\n }\r\n\r\n if (meta.myType == \"Currency\") {\r\n validators.push(this.currencyValidator({ messageTemplate: meta.myType.errorMessage }));\r\n }\r\n\r\n if (meta.myType == \"Url\" || meta.myType == \"ImageUrl\") {\r\n validators.push(this.urlValidator({ messageTemplate: meta.myType.errorMessage }));\r\n }\r\n\r\n if (meta.myType == \"Currency\") {\r\n validators.push(this.creditCardValidator({ messageTemplate: meta.myType.errorMessage }));\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Predicate, EntityQuery, FetchStrategy } from \"breeze-client\";\r\nimport { EntityManagerProviderService } from \"../entity-manager-provider/entity-manager-provider.service\";\r\nimport * as model from '../../../model/model';\r\nimport * as modelDto from '../../../model/modelDto';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BridgeService {\r\n constructor(private _http: HttpClient, private _entityManagerProvider: EntityManagerProviderService) { }\r\n\r\n private isEmpty(obj: Object): boolean {\r\n for(const prop in obj) {\r\n if (obj.hasOwnProperty(prop)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private httpPost(resourceName: string, params: Object): Promise {\r\n const url = this._entityManagerProvider.manager().serviceName + resourceName;\r\n return this._http.post(url, params).toPromise();\r\n }\r\n\r\n private httpGet(resourceName: string, params: Object, sort?: string, filter?: Predicate) {\r\n let query = EntityQuery\r\n .from(resourceName);\r\n\r\n if (!this.isEmpty(params)) {\r\n query = query.withParameters(params);\r\n }\r\n\r\n return this.executeQuery(query, sort, filter);\r\n }\r\n\r\n private postWithParams(resourceName: string, params: Object, sort?: string, filter?: Predicate) {\r\n const postParams = { $method: 'POST', $encoding: 'JSON', $data: params };\r\n return this.getWithParams(resourceName, postParams, sort, filter);\r\n }\r\n\r\n private getWithParams(resourceName: string, params: Object, sort?: string, filter?: Predicate) {\r\n const query = EntityQuery\r\n .from(resourceName)\r\n .withParameters(params);\r\n\r\n return this.executeQuery(query, sort, filter);\r\n }\r\n\r\n private executeQuery(query: EntityQuery, sort?: string, filter?: Predicate) {\r\n if (filter) {\r\n query = query.where(filter);\r\n }\r\n\r\n if (sort) {\r\n query = query.orderBy(sort);\r\n }\r\n\r\n return this._entityManagerProvider.manager()\r\n .executeQuery(query.using(FetchStrategy.FromServer))\r\n .then((data) => {\r\n return data.results;\r\n });\r\n }\r\n \r\n lookups( sort?: string, filter?: Predicate) {\r\n const params = { };\r\n return this.httpGet('lookups', params, sort, filter);\r\n }\r\n\r\n getEmployees(searchValue: string, id: string, showOnlyAdmins: boolean, showOnlyCaptains: boolean,page: number,limit: number, sort?: string, filter?: Predicate) {\r\n const params = { searchValue: searchValue, id: id, showOnlyAdmins: showOnlyAdmins, showOnlyCaptains: showOnlyCaptains, page: page, limit: limit };\r\n return this.httpGet('getEmployees', params, sort, filter);\r\n }\r\n\r\n getActiveTags(includeAll: boolean, sort?: string, filter?: Predicate) {\r\n const params = { includeAll: includeAll };\r\n return this.httpGet('getActiveTags', params, sort, filter);\r\n }\r\n\r\n getTags(includeAll: boolean, sort?: string, filter?: Predicate) {\r\n const params = { includeAll: includeAll };\r\n return this.httpGet('getTags', params, sort, filter);\r\n }\r\n\r\n getInspectionTeamRoles(includeAll: boolean, sort?: string, filter?: Predicate) {\r\n const params = { includeAll: includeAll };\r\n return this.httpGet('getInspectionTeamRoles', params, sort, filter);\r\n }\r\n\r\n getActiveIndustries(includeAll: boolean, sort?: string, filter?: Predicate) {\r\n const params = { includeAll: includeAll };\r\n return this.httpGet('getActiveIndustries', params, sort, filter);\r\n }\r\n\r\n getIndustries(includeAll: boolean, sort?: string, filter?: Predicate) {\r\n const params = { includeAll: includeAll };\r\n return this.httpGet('getIndustries', params, sort, filter);\r\n }\r\n\r\n getOffices( sort?: string, filter?: Predicate) {\r\n const params = { };\r\n return this.httpGet('getOffices', params, sort, filter);\r\n }\r\n\r\n getRegions( sort?: string, filter?: Predicate) {\r\n const params = { };\r\n return this.httpGet('getRegions', params, sort, filter);\r\n }\r\n\r\n getBusinessLines(includeAll: boolean, sort?: string, filter?: Predicate) {\r\n const params = { includeAll: includeAll };\r\n return this.httpGet('getBusinessLines', params, sort, filter);\r\n }\r\n\r\n getStandardQuestionOptions(includeAll: boolean, sort?: string, filter?: Predicate) {\r\n const params = { includeAll: includeAll };\r\n return this.httpGet('getStandardQuestionOptions', params, sort, filter);\r\n }\r\n\r\n getClients(id: string,q: string,page: number,limit: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id, q: q, page: page, limit: limit };\r\n return this.httpGet('getClients', params, sort, filter);\r\n }\r\n\r\n getClientsCount(id: string,q: string, sort?: string, filter?: Predicate) {\r\n const params = { id: id, q: q };\r\n return this.httpGet('getClientsCount', params, sort, filter);\r\n }\r\n\r\n getProjects(id: string,name: string,clientId: string,clientName: string,page: number,limit: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id, name: name, clientId: clientId, clientName: clientName, page: page, limit: limit };\r\n return this.httpGet('getProjects', params, sort, filter);\r\n }\r\n\r\n getProjectsCount(id: string,name: string,clientId: string,clientName: string, sort?: string, filter?: Predicate) {\r\n const params = { id: id, name: name, clientId: clientId, clientName: clientName };\r\n return this.httpGet('getProjectsCount', params, sort, filter);\r\n }\r\n\r\n getAptCaws(id: string,name: string,clientId: string,clientName: string,page: number,limit: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id, name: name, clientId: clientId, clientName: clientName, page: page, limit: limit };\r\n return this.httpGet('getAptCaws', params, sort, filter);\r\n }\r\n\r\n getAptCawsCount(id: string,name: string,clientId: string,clientName: string, sort?: string, filter?: Predicate) {\r\n const params = { id: id, name: name, clientId: clientId, clientName: clientName };\r\n return this.httpGet('getAptCawsCount', params, sort, filter);\r\n }\r\n\r\n getInspectionProfile(id: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id };\r\n return this.httpGet('getInspectionProfile', params, sort, filter);\r\n }\r\n\r\n getInspectionProfilesSummary(page: number,limit: number,gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { page: page, limit: limit, gridFilters: gridFilters };\r\n return this.httpGet('getInspectionProfilesSummary', params, sort, filter);\r\n }\r\n\r\n getInspectionProfilesPageCount(limit: number,gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { limit: limit, gridFilters: gridFilters };\r\n return this.httpGet('getInspectionProfilesPageCount', params, sort, filter);\r\n }\r\n\r\n getInspectionProfilesForLookup( sort?: string, filter?: Predicate) {\r\n const params = { };\r\n return this.httpGet('getInspectionProfilesForLookup', params, sort, filter);\r\n }\r\n\r\n getInspectionProfilesForEngagement( sort?: string, filter?: Predicate) {\r\n const params = { };\r\n return this.httpGet('getInspectionProfilesForEngagement', params, sort, filter);\r\n }\r\n\r\n getInspectionProfileForEngagementById(id: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id };\r\n return this.httpGet('getInspectionProfileForEngagementById', params, sort, filter);\r\n }\r\n\r\n getProfileSections(page: number,limit: number,gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { page: page, limit: limit, gridFilters: gridFilters };\r\n return this.httpGet('getProfileSections', params, sort, filter);\r\n }\r\n\r\n getProfileSectionsPageCount(limit: number,gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { limit: limit, gridFilters: gridFilters };\r\n return this.httpGet('getProfileSectionsPageCount', params, sort, filter);\r\n }\r\n\r\n getProfileSectionsForLookup( sort?: string, filter?: Predicate) {\r\n const params = { };\r\n return this.httpGet('getProfileSectionsForLookup', params, sort, filter);\r\n }\r\n\r\n getSectionsForInspectionProfile(profileId: number, sort?: string, filter?: Predicate) {\r\n const params = { profileId: profileId };\r\n return this.httpGet('getSectionsForInspectionProfile', params, sort, filter);\r\n }\r\n\r\n getProfileSectionsForSection(id: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id };\r\n return this.httpGet('getProfileSectionsForSection', params, sort, filter);\r\n }\r\n\r\n getQuestions(page: number,limit: number,gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { page: page, limit: limit, gridFilters: gridFilters };\r\n return this.httpGet('getQuestions', params, sort, filter);\r\n }\r\n\r\n getQuestionsPageCount(limit: number,gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { limit: limit, gridFilters: gridFilters };\r\n return this.httpGet('getQuestionsPageCount', params, sort, filter);\r\n }\r\n\r\n getQuestion(id: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id };\r\n return this.httpGet('getQuestion', params, sort, filter);\r\n }\r\n\r\n getUnassignedQuestions( sort?: string, filter?: Predicate) {\r\n const params = { };\r\n return this.httpGet('getUnassignedQuestions', params, sort, filter);\r\n }\r\n\r\n getQuestionOptions( sort?: string, filter?: Predicate) {\r\n const params = { };\r\n return this.httpGet('getQuestionOptions', params, sort, filter);\r\n }\r\n\r\n getSelectedOptionActivatingTags(id: number,selectedOptionId: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id, selectedOptionId: selectedOptionId };\r\n return this.httpGet('getSelectedOptionActivatingTags', params, sort, filter);\r\n }\r\n\r\n getEngagement(id: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id };\r\n return this.httpGet('getEngagement', params, sort, filter);\r\n }\r\n\r\n getAllEngagementsSummary(page: number,limit: number,gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { page: page, limit: limit, gridFilters: gridFilters };\r\n return this.httpGet('getAllEngagementsSummary', params, sort, filter);\r\n }\r\n\r\n getEngagements(page: number,limit: number,gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { page: page, limit: limit, gridFilters: gridFilters };\r\n return this.httpGet('getEngagements', params, sort, filter);\r\n }\r\n\r\n getEngagementsPageCount(limit: number,gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { limit: limit, gridFilters: gridFilters };\r\n return this.httpGet('getEngagementsPageCount', params, sort, filter);\r\n }\r\n\r\n publishEngagement(id: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id };\r\n return this.httpGet('publishEngagement', params, sort, filter);\r\n }\r\n\r\n getMyTeamsEngagementById(id: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id };\r\n return this.httpGet('getMyTeamsEngagementById', params, sort, filter);\r\n }\r\n\r\n getEngagementsForMyTeams(page: number,limit: number,gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { page: page, limit: limit, gridFilters: gridFilters };\r\n return this.httpGet('getEngagementsForMyTeams', params, sort, filter);\r\n }\r\n\r\n getEngagementsCountForMyTeams(gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { gridFilters: gridFilters };\r\n return this.httpGet('getEngagementsCountForMyTeams', params, sort, filter);\r\n }\r\n\r\n getEngagementSectionsForMyTeams(page: number,limit: number,gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { page: page, limit: limit, gridFilters: gridFilters };\r\n return this.httpGet('getEngagementSectionsForMyTeams', params, sort, filter);\r\n }\r\n\r\n getEngagementSectionsCountForMyTeams(gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { gridFilters: gridFilters };\r\n return this.httpGet('getEngagementSectionsCountForMyTeams', params, sort, filter);\r\n }\r\n\r\n getEngagementQuestionsForMyTeams(page: number,limit: number,gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { page: page, limit: limit, gridFilters: gridFilters };\r\n return this.httpGet('getEngagementQuestionsForMyTeams', params, sort, filter);\r\n }\r\n\r\n getEngagementQuestionsCountForMyTeams(gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { gridFilters: gridFilters };\r\n return this.httpGet('getEngagementQuestionsCountForMyTeams', params, sort, filter);\r\n }\r\n\r\n getMyInspections(page: number,limit: number,gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { page: page, limit: limit, gridFilters: gridFilters };\r\n return this.httpGet('getMyInspections', params, sort, filter);\r\n }\r\n\r\n getMyInspectionsCount(gridFilters: string, sort?: string, filter?: Predicate) {\r\n const params = { gridFilters: gridFilters };\r\n return this.httpGet('getMyInspectionsCount', params, sort, filter);\r\n }\r\n\r\n getEngagementQuestionById(id: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id };\r\n return this.httpGet('getEngagementQuestionById', params, sort, filter);\r\n }\r\n\r\n getExportEngagementQuestionsByYear(inspectionYear: number, sort?: string, filter?: Predicate) {\r\n const params = { inspectionYear: inspectionYear };\r\n return this.httpGet('getExportEngagementQuestionsByYear', params, sort, filter);\r\n }\r\n\r\n getMyEngagementNodeViewerById(id: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id };\r\n return this.httpGet('getMyEngagementNodeViewerById', params, sort, filter);\r\n }\r\n\r\n getMyEngagementById(id: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id };\r\n return this.httpGet('getMyEngagementById', params, sort, filter);\r\n }\r\n\r\n updateQuestionResponse(id: number,isComplete: boolean,completedDate: Date,optionId: number,comment: string,replaceExisting: boolean, sort?: string, filter?: Predicate) {\r\n const params = { id: id, isComplete: isComplete, completedDate: completedDate, optionId: optionId, comment: comment, replaceExisting: replaceExisting };\r\n return this.httpGet('updateQuestionResponse', params, sort, filter);\r\n }\r\n\r\n checkQuestionForExistingResponse(id: number,optionId: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id, optionId: optionId };\r\n return this.httpGet('checkQuestionForExistingResponse', params, sort, filter);\r\n }\r\n\r\n saveQuestionComment(id: number,text: string, sort?: string, filter?: Predicate) {\r\n const params = { id: id, text: text };\r\n return this.httpGet('saveQuestionComment', params, sort, filter);\r\n }\r\n\r\n propagateProfileSectionChanges(id: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id };\r\n return this.httpGet('propagateProfileSectionChanges', params, sort, filter);\r\n }\r\n\r\n propagateQuestionChanges(id: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id };\r\n return this.httpGet('propagateQuestionChanges', params, sort, filter);\r\n }\r\n\r\n getMaxProfileSectionDisplayOrder(id: number,parentSectionId: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id, parentSectionId: parentSectionId };\r\n return this.httpGet('getMaxProfileSectionDisplayOrder', params, sort, filter);\r\n }\r\n\r\n getMaxQuestionDisplayOrder(id: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id };\r\n return this.httpGet('getMaxQuestionDisplayOrder', params, sort, filter);\r\n }\r\n\r\n updateActivatedEngagementQuestions(id: number, sort?: string, filter?: Predicate) {\r\n const params = { id: id };\r\n return this.httpGet('updateActivatedEngagementQuestions', params, sort, filter);\r\n }\r\n\r\n cleanupEngagements( sort?: string, filter?: Predicate) {\r\n const params = { };\r\n return this.httpGet('cleanupEngagements', params, sort, filter);\r\n }\r\n\r\n testApplicationException( sort?: string, filter?: Predicate) {\r\n const params = { };\r\n return this.httpGet('testApplicationException', params, sort, filter);\r\n }\r\n\r\n testException( sort?: string, filter?: Predicate) {\r\n const params = { };\r\n return this.httpGet('testException', params, sort, filter);\r\n }\r\n\r\n cloneInspectionProfile(origProfileId: number,newName: string, sort?: string, filter?: Predicate) {\r\n const params = { origProfileId: origProfileId, newName: newName };\r\n return this.httpGet('cloneInspectionProfile', params, sort, filter);\r\n }\r\n\r\n getEmployeeProjectHours(projectId: string, sort?: string, filter?: Predicate) {\r\n const params = { projectId: projectId };\r\n return this.httpGet('getEmployeeProjectHours', params, sort, filter);\r\n }\r\n\r\n getTeamCaptains( sort?: string, filter?: Predicate) {\r\n const params = { };\r\n return this.httpGet('getTeamCaptains', params, sort, filter);\r\n }\r\n\r\n getInspectionYears( sort?: string, filter?: Predicate) {\r\n const params = { };\r\n return this.httpGet('getInspectionYears', params, sort, filter);\r\n }\r\n\r\n updateAssignedSections(assignedSections: modelDto.UpdateAssignedSectionsDto, sort?: string, filter?: Predicate) {\r\n const params = assignedSections;\r\n return this.httpPost('updateAssignedSections', params);\r\n }\r\n \r\n updateEngagementStatus(engagementStatus: modelDto.UpdateEngagementStatusDto, sort?: string, filter?: Predicate) {\r\n const params = engagementStatus;\r\n return this.httpPost('updateEngagementStatus', params);\r\n }\r\n \r\n updateActivatedEngagementQuestionsByActivatingTags(updateActivatedEngagementQuestionsByActivatingTagsDto: modelDto.UpdateActivatedEngagementQuestionsByActivatingTagsDto, sort?: string, filter?: Predicate) {\r\n const params = updateActivatedEngagementQuestionsByActivatingTagsDto;\r\n return this.httpPost('updateActivatedEngagementQuestionsByActivatingTags', params);\r\n }\r\n \r\n getTotalEmployeeProjectHours(totalEmployeeProjectHours: modelDto.TotalEmployeeProjectHoursDto, sort?: string, filter?: Predicate) {\r\n const params = totalEmployeeProjectHours;\r\n return this.httpPost('getTotalEmployeeProjectHours', params);\r\n }\r\n \r\n\r\n getEngagementReport(engagementId: number) {\r\n const params = { engagementId: engagementId };\r\n return this.httpGet('getEngagementReport', params);\r\n }\r\n\r\n getSpecialtyReviewerTypes(includeAll: boolean, sort?: string, filter?: Predicate) {\r\n const params = { includeAll: includeAll };\r\n return this.httpGet('getSpecialtyReviewerTypes', params, sort, filter);\r\n }\r\n\r\n isReviewerTypeAssigned(reviewerTypeId: number, sort?: string, filter?: Predicate) {\r\n const params = { reviewerTypeId: reviewerTypeId };\r\n return this.httpGet('isReviewerTypeAssigned', params, sort, filter);\r\n }\r\n\r\n getInspectionTeamMemberProfileSections(engagementId: number, sort?: string, filter?: Predicate) {\r\n const params = { engagementId: engagementId };\r\n return this.httpGet('getInspectionTeamMemberProfileSections', params, sort, filter);\r\n }\r\n\r\n getInspectionTeamMemberEngagementSections(engagementId: number, sort?: string, filter?: Predicate) {\r\n const params = { engagementId: engagementId };\r\n return this.httpGet('getInspectionTeamMemberEngagementSections', params, sort, filter);\r\n }\r\n\r\n getHighLevelInspectionTeamMemberProfileSections(engagementId: number, sort?: string, filter?: Predicate) {\r\n const params = { engagementId: engagementId };\r\n return this.httpGet('getHighLevelInspectionTeamMemberProfileSections', params, sort, filter);\r\n }\r\n\r\n getHighLevelInspectionTeamMemberEngagementSections(engagementId: number, sort?: string, filter?: Predicate) {\r\n const params = { engagementId: engagementId };\r\n return this.httpGet('getHighLevelInspectionTeamMemberEngagementSections', params, sort, filter);\r\n }\r\n\r\n updateChildInspectionTeamMemberProfileSections(engagementId: number, sort?: string, filter?: Predicate) {\r\n const params = { engagementId };\r\n return this.httpGet('updateChildInspectionTeamMemberProfileSections', params, sort, filter);\r\n }\r\n}\r\n","import * as moment from 'moment';\r\nimport { NamingConvention, DataType, DataService } from 'breeze-client';\r\n\r\nexport default class Config {\r\n static appTitle = \"BDO Measure\";\r\n static virtualDirRoot = window.location.origin + \"/\";\r\n static configApi = Config.virtualDirRoot + 'api/config';\r\n static serviceName = Config.virtualDirRoot + 'breeze';\r\n static storeExpirationMs = (1000 * 60 * 60 * 24 * 30); // 30 days\r\n static dayMs = (1000 * 60 * 60 * 24); // 1 day\r\n static throttleMs = 200;\r\n static toastrTimeoutMs = 4000; // 4 seconds\r\n static skipFieldsForMessage = [\"rights\", \"createdDate\", \"id\", \"createdByUserId\", \"modifiedDate\", \"modifiedByUserId\", \"relatedRecordId\", \"sortOrder\"];\r\n\r\n static params = window.location.search;\r\n static openIdConfigUri;\r\n static redirectUrl;\r\n static resource;\r\n\r\n //private static params = new URLSearchParams(window.location.search);\r\n //static openIdConfigUri = Config.params.has(\"e2e\") ? Config.virtualDirRoot + '.well-known/openid-configuration-alt' : Config.configApi + '/.well-known/openid-configuration';\r\n //static redirectUrl = Config.virtualDirRoot + \"signin-oidc\" + (Config.params.has(\"e2e\") ? \"?e2e\" : \"\");\r\n //static resource = Config.params.has(\"impersonate\") ? Config.params.get(\"impersonate\") + \":\" + Config.params.get(\"code\") : null;\r\n\r\n static stateKeys = {\r\n metadataHash: Config.appTitle + '-V2-metadataHash',\r\n annotatedMetadataHash: Config.appTitle + '-V2-annotatedMetadataHash',\r\n lookupsHash: Config.appTitle + '-V2-lookupsHash',\r\n breezeMetadata: Config.appTitle + '-V2-breezeMetadata',\r\n lookups: Config.appTitle + '-V2-lookups',\r\n annotatedMetadata: Config.appTitle + '-V2-annotatedMetadata',\r\n savedRoute: Config.appTitle + '-V2-savedRoute'\r\n };\r\n\r\n static hashes = {\r\n currentMetadataHash: '',\r\n currentAnnotatedMetadataHash: '',\r\n currentLookupsHash: ''\r\n };\r\n\r\n private static queryParam(name: string): string {\r\n const results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);\r\n if (results == null) {\r\n return null;\r\n } else {\r\n return decodeURI(results[1]) || null;\r\n }\r\n }\r\n\r\n private static hasQueryParam(name: string): boolean {\r\n return !!this.queryParam(name);\r\n }\r\n\r\n private static configureImpersonate(): void {\r\n this.openIdConfigUri = Config.params.includes(\"e2e\") ? Config.virtualDirRoot + '.well-known/openid-configuration-alt' : Config.configApi + '/.well-known/openid-configuration';\r\n this.redirectUrl = Config.virtualDirRoot + \"signin-oidc\" + (Config.params.includes(\"e2e\") ? \"?e2e\" : \"\");\r\n this.resource = this.hasQueryParam(\"impersonate\") ? this.queryParam(\"impersonate\") + \":\" + this.queryParam(\"code\") : null;\r\n }\r\n\r\n static init() {\r\n this.configureImpersonate();\r\n NamingConvention.camelCase.setAsDefault();\r\n DataType.parseDateFromServer = (source) => moment(source).toDate();\r\n\r\n /*\r\n (breeze.EntityType.prototype).getEntityCtor = function () {\r\n var origCtor = this.getEntityCtor.apply(this);\r\n\r\n var rightsProp = this.getDataProperty(\"rights\");\r\n if (!rightsProp) {\r\n this.addProperty(new breeze.DataProperty(this.rights));\r\n rightsProp = this.getDataProperty(\"rights\");\r\n }\r\n\r\n if (rightsProp.isUnmapped) {\r\n rightsProp.isUnmapped = false;\r\n }\r\n\r\n return origCtor;\r\n };\r\n */\r\n\r\n // Breeze does a bad thing and uses substr(-1) instead of slice(-1)\r\n // that is browser inconsistent. This implementation overrides the\r\n // default behavior\r\n (DataService)._normalizeServiceName = function (serviceName) {\r\n serviceName = serviceName.trim();\r\n if (serviceName.slice(-1) !== \"/\") {\r\n return serviceName + '/';\r\n } else {\r\n return serviceName;\r\n }\r\n };\r\n }\r\n}\r\n","import { Observable, of } from \"rxjs\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class DialogHelper {\r\n confirm(message?: string): Observable {\r\n const confirmation = window.confirm(message || 'There are unsaved changes. Continue without saving?');\r\n\r\n return of(confirmation);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { environment } from '../../../environments/environment';\r\nimport { AnnotatedMetadata, MetaEntityType, MetaProperty } from '../../../model/metaEntity';\r\nimport { ModelBuilderService } from '../model-builder/model-builder.service';\r\nimport { BreezeValidatorsService } from '../breeze-validators/breeze-validators.service';\r\nimport DefaultBreezeValidators from '../breeze-validators/default-breeze-validators';\r\nimport Config from '../config';\r\nimport Utilities from '../utilities';\r\nimport * as breeze from 'breeze-client';\r\nimport 'breeze-client-labs/breeze.savequeuing';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EntityManagerProviderService {\r\n private initialized: boolean;\r\n\r\n rights = {\r\n name: \"rights\",\r\n isUnmapped: true,\r\n nameOnServer: \"Rights\",\r\n dataType: breeze.DataType.Undefined\r\n };\r\n\r\n private serviceName: string = Config.serviceName;\r\n private masterManager: breeze.EntityManager = new breeze.EntityManager({\r\n serviceName: this.serviceName,\r\n saveOptions: new breeze.SaveOptions({\r\n allowConcurrentSaves: true\r\n })\r\n });\r\n\r\n private _manager: breeze.EntityManager;\r\n\r\n private cachedMetadataHash: string;\r\n private cachedAnnotatedMetadataHash: string;\r\n private cachedLookupsHash: string;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private modelBuilder: ModelBuilderService,\r\n private breezeValidators: BreezeValidatorsService\r\n ) { }\r\n\r\n private prepare() {\r\n this.cachedMetadataHash = localStorage.getItem(Config.stateKeys.metadataHash);\r\n this.cachedAnnotatedMetadataHash = localStorage.getItem(Config.stateKeys.annotatedMetadataHash);\r\n this.cachedLookupsHash = localStorage.getItem(Config.stateKeys.lookupsHash);\r\n\r\n return this.hydrateMetadata()\r\n .then(() => this.modelBuilder.extendMetadata(this.masterManager.metadataStore))\r\n .then(() => Promise.all([this.hydrateLookups(), this.hydrateAnnotatedMetadata()]));\r\n }\r\n\r\n private hydrateMetadata(): Promise {\r\n const metadata = localStorage.getItem(Config.stateKeys.breezeMetadata);\r\n\r\n if (!this.cachedMetadataHash || !metadata || this.cachedMetadataHash !== Config.hashes.currentMetadataHash) {\r\n return this.masterManager\r\n .fetchMetadata()\r\n .then(() => {\r\n this.cacheMetadata();\r\n return true;\r\n });\r\n }\r\n\r\n this.masterManager.metadataStore = breeze.MetadataStore.importMetadata(metadata);\r\n return Utilities.valueAsPromise(true);\r\n }\r\n\r\n private cacheMetadata() {\r\n const meta = this.masterManager.metadataStore.exportMetadata();\r\n localStorage.setItem(Config.stateKeys.breezeMetadata, meta);\r\n localStorage.setItem(Config.stateKeys.metadataHash, Config.hashes.currentMetadataHash);\r\n }\r\n\r\n private hydrateLookups(): Promise {\r\n const lookups = localStorage.getItem(Config.stateKeys.lookups);\r\n\r\n if (!this.cachedLookupsHash || !lookups || this.cachedLookupsHash !== Config.hashes.currentLookupsHash) {\r\n\r\n const query = breeze.EntityQuery\r\n .from('lookups');\r\n\r\n return this.masterManager\r\n .executeQuery(query)\r\n .then(() => {\r\n this.cacheLookups();\r\n return true;\r\n });\r\n }\r\n\r\n this.masterManager.importEntities(lookups);\r\n return Utilities.valueAsPromise(true);\r\n }\r\n\r\n private cacheLookups() {\r\n const lookups = this.masterManager.exportEntities();\r\n localStorage.setItem(Config.stateKeys.lookups, lookups);\r\n localStorage.setItem(Config.stateKeys.lookupsHash, Config.hashes.currentLookupsHash);\r\n }\r\n\r\n private hydrateAnnotatedMetadata(): Promise {\r\n const annotated = localStorage.getItem(Config.stateKeys.annotatedMetadata);\r\n\r\n if (!this.cachedAnnotatedMetadataHash || !annotated || this.cachedAnnotatedMetadataHash !== Config.hashes.currentAnnotatedMetadataHash) {\r\n return this.http.get>(this.serviceName + '/annotatedmetadata')\r\n .toPromise()\r\n .then((data) => {\r\n this.parseAnnotatedMetadata(data);\r\n this.cacheAnnotatedMetadata(JSON.stringify(data));\r\n return true;\r\n });\r\n }\r\n\r\n this.parseAnnotatedMetadata(>JSON.parse(annotated));\r\n return Utilities.valueAsPromise(true);\r\n }\r\n\r\n private cacheAnnotatedMetadata(data) {\r\n localStorage.setItem(Config.stateKeys.annotatedMetadata, data);\r\n localStorage.setItem(Config.stateKeys.annotatedMetadataHash, Config.hashes.currentAnnotatedMetadataHash);\r\n }\r\n\r\n private parseAnnotatedMetadata(data: Array) {\r\n const entityManager = this.masterManager;\r\n const metadataStore = entityManager.metadataStore;\r\n\r\n data.forEach((metaEntity: AnnotatedMetadata) => {\r\n const entityType = metadataStore.getEntityType(metaEntity.key, true);\r\n\r\n if (entityType) {\r\n metadataStore[entityType.shortName] = function () {\r\n return entityType;\r\n };\r\n\r\n entityType.displayName = metaEntity.value.meta.displayName;\r\n entityType.meta = metaEntity.value.meta;\r\n entityType.props = {};\r\n\r\n const entityProps = entityType.getProperties();\r\n entityProps.forEach((entityProp: MetaProperty) => {\r\n entityType.props[entityProp.name] = function () {\r\n return entityProp;\r\n };\r\n\r\n const metaProp = metaEntity.value.properties[entityProp.name];\r\n\r\n if (metaProp) {\r\n entityProp.displayName = metaProp.displayName;\r\n entityProp.meta = metaProp;\r\n\r\n DefaultBreezeValidators.setupEFValidators(entityProp.validators, entityProp.meta);\r\n }\r\n }, this);\r\n }\r\n });\r\n\r\n this.breezeValidators.setupCustomValidators(data, entityManager);\r\n }\r\n\r\n private buildManager(): void {\r\n this._manager = this.masterManager.createEmptyCopy();\r\n this._manager.saveOptions.allowConcurrentSaves = true;\r\n this._manager.enableSaveQueuing(true);\r\n\r\n // Populate with lookup data\r\n this._manager.importEntities(this.masterManager.exportEntities());\r\n }\r\n\r\n manager(): breeze.EntityManager {\r\n if (!this._manager) {\r\n this.buildManager();\r\n }\r\n\r\n return this._manager;\r\n }\r\n\r\n init(): Promise {\r\n if (this.initialized) {\r\n return Utilities.valueAsPromise(this.initialized);\r\n }\r\n\r\n this.masterManager.enableSaveQueuing(true);\r\n\r\n return this.prepare()\r\n .then(() => {\r\n this.buildManager();\r\n this.initialized = true;\r\n return true;\r\n })\r\n .catch((error) => {\r\n if (!environment.production) {\r\n console.log(error);\r\n }\r\n\r\n return Promise.reject(error);\r\n });\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FileService {\r\n rootUrl = window.location.origin;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n importQuestionnaire(formData: FormData) {\r\n return this.http.post(`${this.rootUrl}/file/importQuestionnaire`, formData).toPromise();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { add } from 'ngx-bootstrap/chronos';\r\nimport { EngagementQuestion } from '../../../model/model';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FilteredQuestionsService {\r\n filteredQuestions: object = {};\r\n\r\n constructor() { }\r\n\r\n getFilteredQuestions(): Observable {\r\n return of(this.filteredQuestions);\r\n }\r\n\r\n add(question: EngagementQuestion) {\r\n const engagementSectionId = question.engagementSectionId;\r\n\r\n if(!this.filteredQuestions[question.engagementSectionId]) {\r\n this.filteredQuestions = {\r\n ...this.filteredQuestions,\r\n [engagementSectionId]: [question],\r\n }\r\n } else if(!this.filteredQuestions[question.engagementSectionId].some(q => q.id == question.id)) {\r\n this.filteredQuestions[question.engagementSectionId].push(question)\r\n }\r\n }\r\n}\r\n","import { Injectable, ErrorHandler, Injector } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ConfirmationDialogComponent } from '../components/shared/confirmation-dialog/confirmation-dialog.component';\nimport { ServerSideConfigDataService } from '../services/server-side-config-data/server-side-config-data.service';\nimport { QueuedSaveFailedError } from 'breeze-client';\nimport * as moment from 'moment';\nimport { environment } from '../../environments/environment';\n\n@Injectable()\nexport class GlobalErrorHandler implements ErrorHandler {\n private serverSideConfig: ServerSideConfigDataService;\n\n constructor(private injector: Injector) {\n this.serverSideConfig = this.injector.get(ServerSideConfigDataService);\n }\n\n private previousErrors: TrackedError[] = [];\n\n handleError(error: any): void {\n const dialog: MatDialog = this.injector.get(MatDialog);\n let showDialog = true;\n\n let message = \"\";\n let httpResponse = null;\n\n if (error instanceof HttpErrorResponse) {\n // Errors from HTTP Request\n const http = this.parseHttpError(error);\n message = http.message;\n if (http) {\r\n httpResponse = http.httpResponse;\n }\n } else if (error instanceof QueuedSaveFailedError) {\n // Errors from breeze\n message = this.parseQueuedSaveFailedError(error);\n } else {\n // Assuming these will be typical javascript errors\n // User most likely does not need to be notified\n // of these so we are not showing the dialog, but\n // will still pass the error on to the console as\n // normal\n const e: Error = (error);\n showDialog = false;\n // showDialog = !this.errorAlreadyOccurred(e);\n // message = e.message;\n console.error(e.message, e.name, e.stack);\n }\n\n if (showDialog) {\n dialog.open(ConfirmationDialogComponent, {\n disableClose: true,\n data: {\n title: 'An Error Has Occurred',\n content: message,\n onlyShowOk: true,\n debug: httpResponse\n }\n });\n }\n }\n\n private parseHttpError(response: HttpErrorResponse): { message: string; httpResponse?: HttpErrorResponse; } {\n if (this.serverSideConfig.configData\n && ['Local', 'Development'].indexOf(this.serverSideConfig.configData.environment) > -1\n && typeof response.error == 'string'\n && response.error.indexOf('') > -1\n ) {\n const regex = new RegExp(/
(.*?)<\\/div>/);\n const match = response.error.match(regex);\n\n return {\n message: match && match.length ? match[1] : \"An Exception has occurred\",\n httpResponse: response\n };\n }\n\n const properMessage = !environment.production && !response.error\n ? \"Check console log for details\"\n : response.error;\n\n return { message: properMessage };\n }\n\n private parseQueuedSaveFailedError(error: QueuedSaveFailedError): string {\n return error.innerError.entityErrors.map(e => e.errorMessage).join('\\n');\n }\n\n // The following two methods can be used to avoid handling repeated errors.\n // If a binding is wrong or something is misconfigured, Angular like to\n // throw an infinite number of errors in the console. The code below is\n // really just meant to mitigate that incase you want to show a dialog with\n // said error(s)\n private removeOldErrors() {\n if (this.previousErrors.length) {\n const oldestErrorTimestamp = moment().add(-2, 'seconds');\n this.previousErrors = this.previousErrors.filter(e => e.timestamp.isSameOrAfter(oldestErrorTimestamp));\n }\n }\n\n private errorAlreadyOccurred(error: Error) {\n this.removeOldErrors();\n\n const prevError = this.previousErrors.filter(e => e.error.message == error.message)[0];\n const i = this.previousErrors.indexOf(prevError);\n\n if (i > -1) {\n this.previousErrors[i].timestamp = moment();\n return true;\n } else {\n this.previousErrors.push({\n error: error,\n timestamp: moment()\n });\n return false;\n }\n }\n}\n\ninterface TrackedError {\n error: Error;\n timestamp: moment.Moment;\n}\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { ToastrService, ActiveToast } from 'ngx-toastr';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IsBusyService implements OnDestroy {\r\n private sub: Subscription;\r\n private isBusySubscribers: IsBusyValue[] = [];\r\n private isBusyBs = new BehaviorSubject(false);\r\n\r\n constructor(\r\n private toastr: ToastrService\r\n ) {\r\n this.sub = this.isBusyBs.subscribe((value) => {\r\n if (value == true) {\r\n $('.loading-bar-dots.loading-data').css('display', 'flex');\r\n } else {\r\n $('.loading-bar-dots.loading-data').fadeOut('slow');\r\n }\r\n });\r\n }\r\n\r\n get isBusy() {\r\n return this.isBusyBs.value;\r\n }\r\n\r\n set(key: string, isBusy: boolean, message?: string, toast?: ActiveToast) {\r\n const context = this;\r\n setTimeout(() => {\r\n const isSubscriberIndex = context.isBusySubscribers\r\n .map((e) => e.key)\r\n .indexOf(key);\r\n\r\n if (isBusy == true && isSubscriberIndex < 0) {\r\n if (message) {\r\n toast = context.toastr.info(message, \"\", { timeOut: 0, extendedTimeOut: 0 });\r\n }\r\n\r\n context.isBusySubscribers.push({\r\n key: key,\r\n isBusy: isBusy,\r\n message: message,\r\n toast: toast\r\n });\r\n } else if (isBusy == false && isSubscriberIndex >= 0) {\r\n const existing = context.isBusySubscribers[isSubscriberIndex];\r\n\r\n if (existing.toast) {\r\n context.toastr.clear(existing.toast.toastId);\r\n }\r\n\r\n context.isBusySubscribers.splice(isSubscriberIndex, 1);\r\n }\r\n\r\n context.isBusyBs.next(context.isBusySubscribers.length > 0);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.sub.unsubscribe();\r\n }\r\n}\r\n\r\nexport interface IsBusyValue {\r\n key: string;\r\n isBusy: boolean;\r\n message?: string;\r\n toast?: ActiveToast;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MetadataStore, Entity } from 'breeze-client';\r\nimport { Employee, ProfileSection, InspectionProfile, Question, QuestionTag, QuestionOption, Engagement, EngagementSection, EngagementQuestionComment, EngagementQuestionOption, Project, Client, AptCaw } from '../../../model/model';\r\nimport { ProgressStatus } from '../../../model/modelEnums';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ModelBuilderService {\r\n private metadataStore: MetadataStore;\r\n\r\n /**\r\n * Implement extended model properties here.\r\n * Declare them in modelExtended.d.ts\r\n */\r\n constructor() { }\r\n\r\n private computed(entity: T, propNames: string[], func: (entity: T) => Y): BehaviorSubject {\r\n const subject = new BehaviorSubject(func(entity));\r\n\r\n entity.entityAspect.propertyChanged.subscribe(p => {\r\n if (propNames.find(n => n == p.propertyName)) {\r\n subject.next(func(entity));\r\n }\r\n });\r\n\r\n return subject;\r\n }\r\n\r\n private extendEmployee() {\r\n const myEntityCtor = function () { };\r\n\r\n const myEntityInitializer = (myEntity: Employee) => {\r\n myEntity.fullName = `${myEntity.firstName} ${myEntity.lastName}`;\r\n }\r\n this.metadataStore.registerEntityTypeCtor('Employee', myEntityCtor, myEntityInitializer);\r\n }\r\n \r\n private extendInspectionProfile() {\r\n const myEntityCtor = function () { };\r\n\r\n function sumQuestions(array: ProfileSection[]): number {\r\n let count = 0;\r\n\r\n if (array.length > 0) {\r\n array.forEach(function (section) {\r\n count += section.questions.filter(m => !m.isDeleted).length;\r\n });\r\n }\r\n\r\n return count;\r\n }\r\n\r\n const myEntityInitializer = (myEntity: InspectionProfile) => {\r\n myEntity.businessLineName = () => {\r\n return myEntity.businessLine ? `${myEntity.businessLine.name}` : `---`;\r\n }\r\n myEntity.sectionCount = () => {\r\n if (myEntity.profileSections && myEntity.profileSections.length > 0) {\r\n // All sections have a reference to the profile, regardless of how deep the section -> child section reference is,\r\n // so just count the profile sections\r\n return myEntity.profileSections.filter(m => !m.isDeleted).length;\r\n }\r\n\r\n return 0;\r\n }\r\n myEntity.questionCount = () => {\r\n if (myEntity.profileSections && myEntity.profileSections.length > 0) {\r\n return sumQuestions(myEntity.profileSections.filter(m => !m.isDeleted));\r\n }\r\n\r\n return 0;\r\n }\r\n }\r\n\r\n this.metadataStore.registerEntityTypeCtor('InspectionProfile', myEntityCtor, myEntityInitializer);\r\n }\r\n\r\n private extendProfileSection() {\r\n const myEntityCtor = function () { };\r\n function sumQuestions(array: ProfileSection[]): number {\r\n let count = 0;\r\n\r\n if (array.length > 0) {\r\n array.forEach(function (section) {\r\n // Increment by one for current section\r\n count += section.questions != null ? section.questions.filter(m => !m.isDeleted).length : 0;\r\n // Get count of this section's children\r\n if (section.childSections) {\r\n count += sumQuestions(section.childSections);\r\n }\r\n });\r\n }\r\n\r\n return count;\r\n }\r\n\r\n function sumSections(array: ProfileSection[]): number {\r\n let count = 0;\r\n\r\n if (array.length > 0) {\r\n array.forEach(function (section) {\r\n // Increment by one for current section\r\n count += 1;\r\n // Get count of this section's children\r\n if (section.childSections) {\r\n count += sumSections(section.childSections);\r\n }\r\n });\r\n }\r\n\r\n return count;\r\n }\r\n\r\n const myEntityInitializer = (myEntity: ProfileSection) => {\r\n myEntity.profileName = () => {\r\n return myEntity.inspectionProfile ? `${myEntity.inspectionProfile.name}` : 'Unassigned';\r\n }\r\n myEntity.sectionCount = () => {\r\n if (myEntity.childSections) {\r\n return sumSections(myEntity.childSections.filter(m => !m.isDeleted));\r\n }\r\n\r\n return 0;\r\n }\r\n myEntity.questionCount = () => {\r\n let count: number = myEntity.questions ? myEntity.questions.length : 0;\r\n if (myEntity.childSections && myEntity.childSections.length > 0) {\r\n count += sumQuestions(myEntity.childSections.filter(m => !m.isDeleted));\r\n }\r\n\r\n return count;\r\n }\r\n }\r\n\r\n this.metadataStore.registerEntityTypeCtor('ProfileSection', myEntityCtor, myEntityInitializer);\r\n }\r\n\r\n private extendQuestion() {\r\n const myEntityCtor = function () { };\r\n\r\n const myEntityInitializer = (myEntity: Question) => {\r\n myEntity.profileName = () => {\r\n return myEntity.profileSection ? myEntity.profileSection.inspectionProfile ? `${myEntity.profileSection.inspectionProfile.name}` : `Unassigned` : `Unassigned`;\r\n }\r\n myEntity.sectionName = () => {\r\n return myEntity.profileSection ? `${myEntity.profileSection.name}` : `---`;\r\n }\r\n }\r\n\r\n this.metadataStore.registerEntityTypeCtor('Question', myEntityCtor, myEntityInitializer);\r\n }\r\n\r\n private extendQuestionTag() {\r\n const myEntityCtor = function () { };\r\n\r\n const myEntityInitializer = (myEntity: QuestionTag) => {\r\n myEntity.tagName = () => {\r\n return myEntity && myEntity.tag ? myEntity.tag.name : '';\r\n }\r\n myEntity.name = myEntity && myEntity.tag ? myEntity.tag.name: '';\r\n }\r\n\r\n this.metadataStore.registerEntityTypeCtor('QuestionTag', myEntityCtor, myEntityInitializer);\r\n }\r\n\r\n private extendQuestionOption() {\r\n const myEntityCtor = function () { };\r\n\r\n const myEntityInitializer = (myEntity: QuestionOption) => {\r\n myEntity.canSave = () => {\r\n return myEntity.standardQuestionOptionId > 0 || (myEntity.text && myEntity.text.trim() != '');\r\n }\r\n }\r\n\r\n this.metadataStore.registerEntityTypeCtor('QuestionOption', myEntityCtor, myEntityInitializer);\r\n }\r\n\r\n private extendEngagement() {\r\n const myEntityCtor = function () { };\r\n\r\n const myEntityInitializer = (myEntity: Engagement) => {\r\n myEntity.leadInspector = () => {\r\n return myEntity.inspectionLead ? myEntity.inspectionLead.fullName : '---';\r\n }\r\n }\r\n\r\n this.metadataStore.registerEntityTypeCtor('Engagement', myEntityCtor, myEntityInitializer);\r\n }\r\n\r\n private extendEngagementSection() {\r\n const myEntityCtor = function () { };\r\n\r\n const myEntityInitializer = (myEntity: EngagementSection) => {\r\n myEntity.status = () => {\r\n let questionStatus = ProgressStatus.na;\r\n let sectionStatus = ProgressStatus.na;\r\n\r\n if (myEntity.isActivated) {\r\n if (myEntity.engagementQuestions && myEntity.engagementQuestions.length) {\r\n if (myEntity.percentComplete() == 1) {\r\n questionStatus = ProgressStatus.completed;\r\n }\r\n else if (myEntity.percentComplete() == 0) {\r\n questionStatus = ProgressStatus.notStarted;\r\n }\r\n else {\r\n questionStatus = ProgressStatus.inProgress;\r\n }\r\n }\r\n\r\n if (myEntity.childSections && myEntity.childSections.filter(s => s.isActivated).length) {\r\n if (myEntity.childSections.every(s => s.isActivated && s.status() == ProgressStatus.completed)) {\r\n sectionStatus = ProgressStatus.completed;\r\n }\r\n else if (myEntity.childSections.some(s => s.isActivated && s.status() > ProgressStatus.notStarted)) {\r\n sectionStatus = ProgressStatus.inProgress;\r\n }\r\n else if (myEntity.childSections.some(s => s.isActivated && s.status() > ProgressStatus.na)) {\r\n sectionStatus = ProgressStatus.notStarted;\r\n }\r\n\r\n if (questionStatus > ProgressStatus.na) {\r\n if (questionStatus > ProgressStatus.notStarted) {\r\n if (questionStatus < sectionStatus) {\r\n sectionStatus = questionStatus;\r\n }\r\n }\r\n else {\r\n if (sectionStatus > ProgressStatus.notStarted) {\r\n if (sectionStatus != ProgressStatus.inProgress) {\r\n sectionStatus = ProgressStatus.inProgress;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n sectionStatus = questionStatus;\r\n }\r\n }\r\n\r\n return sectionStatus;\r\n }\r\n\r\n myEntity.percentComplete = () => {\r\n if (myEntity.engagementQuestions && myEntity.engagementQuestions.length) {\r\n const completed = myEntity.engagementQuestions.filter(q => q.isComplete).length;\r\n const total = myEntity.engagementQuestions.length;\r\n\r\n if (total) {\r\n return completed / total;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n myEntity.completedQuestions = () => {\r\n if (myEntity.engagementQuestions && myEntity.engagementQuestions.length) {\r\n return myEntity.engagementQuestions.filter(q => q.isComplete).length;\r\n }\r\n return null;\r\n }\r\n\r\n myEntity.totalQuestions = () => {\r\n if (myEntity.engagementQuestions && myEntity.engagementQuestions.length) {\r\n return myEntity.engagementQuestions.length;\r\n }\r\n return null;\r\n }\r\n\r\n myEntity.nrfs = () => {\r\n if (myEntity.engagementQuestions && myEntity.engagementQuestions.length) {\r\n return myEntity.engagementQuestions.filter(q => q.selectedOption && q.selectedOption.isNRF).length;\r\n }\r\n return null;\r\n }\r\n\r\n myEntity.oberservations = () => {\r\n if (myEntity.engagementQuestions && myEntity.engagementQuestions.length) {\r\n return myEntity.engagementQuestions.filter(q => q.selectedOption && q.selectedOption.commentIsRequired).length;\r\n }\r\n return null;\r\n }\r\n }\r\n\r\n this.metadataStore.registerEntityTypeCtor('EngagementSection', myEntityCtor, myEntityInitializer);\r\n }\r\n \r\n private extendEngagementQuestionComment() {\r\n const myEntityCtor = function () { };\r\n\r\n const myEntityInitializer = (myEntity: EngagementQuestionComment) => {\r\n myEntity.originalText = myEntity.text;\r\n }\r\n\r\n this.metadataStore.registerEntityTypeCtor('EngagementQuestionComment', myEntityCtor, myEntityInitializer);\r\n }\r\n\r\n private extendEngagementQuestionOption() {\r\n const myEntityCtor = function () { };\r\n\r\n const myEntityInitializer = (myEntity: EngagementQuestionOption) => {\r\n myEntity.displayValue = () => {\r\n return myEntity.text == null ? myEntity.standardQuestionOption.value : myEntity.text;\r\n }\r\n }\r\n\r\n this.metadataStore.registerEntityTypeCtor('EngagementQuestionOption', myEntityCtor, myEntityInitializer);\r\n }\r\n\r\n private extendProject() {\r\n const myEntityCtor = function () { };\r\n\r\n const myEntityInitializer = (myEntity: Project) => {\r\n myEntity.label = myEntity.id + ' - ' + myEntity.name;\r\n }\r\n\r\n this.metadataStore.registerEntityTypeCtor('Project', myEntityCtor, myEntityInitializer);\r\n }\r\n\r\n private extendClient() {\r\n const myEntityCtor = function () { };\r\n\r\n const myEntityInitializer = (myEntity: Client) => {\r\n myEntity.label = myEntity.id + ' - ' + myEntity.name;\r\n }\r\n\r\n this.metadataStore.registerEntityTypeCtor('Client', myEntityCtor, myEntityInitializer);\r\n }\r\n\r\n private extendAptCaw() {\r\n const myEntityCtor = function () { };\r\n\r\n const myEntityInitializer = (myEntity: AptCaw) => {\r\n myEntity.label = myEntity.name + ' (' + myEntity.id + ')';\r\n }\r\n\r\n this.metadataStore.registerEntityTypeCtor('AptCaw', myEntityCtor, myEntityInitializer);\r\n }\r\n\r\n extendMetadata(metadataStore: MetadataStore) {\r\n this.metadataStore = metadataStore;\r\n\r\n this.extendEmployee();\r\n this.extendInspectionProfile();\r\n this.extendProfileSection();\r\n this.extendQuestion();\r\n this.extendQuestionTag();\r\n this.extendQuestionOption();\r\n this.extendEngagement();\r\n this.extendEngagementSection();\r\n this.extendEngagementQuestionComment();\r\n this.extendEngagementQuestionOption();\r\n this.extendProject();\r\n this.extendClient();\r\n this.extendAptCaw();\r\n }\r\n}\r\n","import { EntityType, MetadataStore, Predicate, EntityQuery, EntityState, EntityManager, EntityKey, QueuedSaveFailedError } from \"breeze-client\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\nimport { EntityManagerProviderService } from \"./entity-manager-provider/entity-manager-provider.service\";\r\nimport { MetaEntity } from '../../model/metaEntity';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { GlobalErrorHandler } from '../services/global-error-handler';\r\nimport Utilities from './utilities';\r\nimport Strings from './strings';\r\nimport { MergeableDto, MergeableDtoAlt } from '../../typings';\r\n\r\nexport class Repository {\r\n hasChanges = new BehaviorSubject(false);\r\n\r\n constructor(\r\n private entityManagerProvider: EntityManagerProviderService,\r\n private toastr: ToastrService,\r\n private errorHandler: GlobalErrorHandler,\r\n private entityTypeName: string,\r\n private resourceName: string\r\n ) {\r\n let entityType: EntityType;\r\n if (this.entityTypeName) {\r\n entityType = this.getMetastore().getEntityType(this.entityTypeName);\r\n entityType.setProperties({ defaultResourceName: this.resourceName });\r\n\r\n this.getMetastore().setEntityTypeForResourceName(this.resourceName, this.entityTypeName);\r\n }\r\n\r\n this.manager().hasChangesChanged.subscribe(this.updateHasChanges);\r\n\r\n if (!window[\"$ms\"]) {\r\n window[\"$ms\"] = this.manager().metadataStore;\r\n }\r\n }\r\n\r\n withId(key: string): Promise {\r\n if (!this.entityTypeName) {\r\n throw new Error(\"Repository must be created with an entity type specified\");\r\n }\r\n\r\n return this.manager().fetchEntityByKey(this.entityTypeName, key, true)\r\n .then(function (data) {\r\n if (!data.entity) {\r\n throw new Error(\"Entity not found!\");\r\n }\r\n return data.entity;\r\n });\r\n }\r\n\r\n findInCache(predicate: Predicate, sort?: string): T[] {\r\n let query = EntityQuery\r\n .from(this.resourceName)\r\n .where(predicate);\r\n\r\n if (sort) {\r\n query = query.orderBy(sort);\r\n }\r\n\r\n return this.executeCacheQuery(query);\r\n }\r\n\r\n allCached(sort?: string): T[] {\r\n let query = EntityQuery\r\n .from(this.resourceName);\r\n\r\n if (sort) {\r\n query = query.orderBy(sort);\r\n }\r\n\r\n return this.executeCacheQuery(query);\r\n }\r\n\r\n updateHasChanges = (eventArgs?) => {\r\n if (this.entityTypeName) {\r\n this.hasChanges.next(this.manager().hasChanges([this.entityTypeName]));\r\n }\r\n }\r\n\r\n cancelChanges(entity?: T): void {\r\n let entities: T[];\r\n const manager = this.manager();\r\n\r\n if (entity) {\r\n entities = [entity];\r\n } else {\r\n entities = this.allCached();\r\n }\r\n\r\n entities.forEach(function (e) {\r\n if (e.entityAspect.entityState == EntityState.Added) {\r\n manager.detachEntity(e);\r\n } else {\r\n e.entityAspect.rejectChanges();\r\n }\r\n });\r\n\r\n this.updateHasChanges();\r\n }\r\n\r\n executeCacheQuery(query: EntityQuery): T[] {\r\n return this.entityManagerProvider.manager()\r\n .executeQueryLocally(query);\r\n }\r\n\r\n getMetastore(): MetadataStore {\r\n return this.manager().metadataStore;\r\n }\r\n\r\n private manager(): EntityManager {\r\n return this.entityManagerProvider.manager();\r\n }\r\n\r\n createEntity(config?: {}): T {\r\n const e = this.manager().createEntity(this.entityTypeName, config);\r\n\r\n if ((e).createdDate != null) {\r\n (e).createdDate = new Date().getTime();\r\n }\r\n\r\n if ((e).createdByUserId != null) {\r\n (e).createdByUserId = \"client\";\r\n }\r\n\r\n return e;\r\n }\r\n\r\n addEntity(entity: T): T {\r\n const added = this.manager().addEntity(entity);\r\n this.updateHasChanges();\r\n return added;\r\n }\r\n\r\n saveChanges(entities?: Array): Promise {\r\n let modified: Array;\r\n\r\n if (entities) {\r\n modified = entities;\r\n } else {\r\n modified = this.allCached().filter((entity) => entity.entityAspect.entityState == EntityState.Added || entity.entityAspect.entityState == EntityState.Deleted || entity.entityAspect.entityState == EntityState.Modified);\r\n }\r\n\r\n modified.forEach((entity) => {\r\n (entity.entityAspect).fieldsSaving = {};\r\n (entity.entityAspect).fieldsSavingEntityState = entity.entityAspect.entityState;\r\n\r\n for (const prop in entity.entityAspect.originalValues) {\r\n if (entity.entityAspect.originalValues.hasOwnProperty(prop)) {\r\n (entity.entityAspect).fieldsSaving[prop] = entity.entityAspect.originalValues[prop];\r\n }\r\n }\r\n });\r\n\r\n return this.manager()\r\n .saveChanges(modified)\r\n .then((saveResult) => {\r\n this.updateHasChanges();\r\n\r\n this.toastr.success(Strings.toasts.savedData);\r\n })\r\n .catch((error: QueuedSaveFailedError) => {\r\n // Http request errors are handled in add-authorization-header-interceptor.ts\r\n if (!error.innerError.httpResponse) {\r\n this.errorHandler.handleError(error);\r\n }\r\n });\r\n }\r\n\r\n mergeEntityIntoCache(data: { results: MergeableDto[] }, isPartial?: boolean, entityCallback?: (entity: T, dto: MergeableDto) => void): T[] {\r\n const entityType = this.getMetastore().getEntityType(this.entityTypeName);\r\n const manager = this.manager();\r\n\r\n return data.results.map((dto) => {\r\n const id = dto.id;\r\n const key = new EntityKey(entityType, id);\r\n let entity = manager.getEntityByKey(key);\r\n if (!entity) {\r\n entity = entityType.createEntity();\r\n entity.id = id;\r\n manager.attachEntity(entity);\r\n entity.isPartial = isPartial == undefined ? true : isPartial;\r\n }\r\n\r\n this.mapToEntity(entity, dto);\r\n\r\n if (entityCallback) {\r\n entityCallback(entity, dto);\r\n }\r\n\r\n entity.entityAspect.setUnchanged();\r\n\r\n return entity;\r\n });\r\n }\r\n\r\n private mapToEntity(entity: T, dto: MergeableDto): MetaEntity {\r\n for (const prop in dto) {\r\n if (entity.hasOwnProperty(prop)) {\r\n const propInfo = entity.entityType.getProperty(prop, false);\r\n if (!propInfo || (propInfo && !propInfo.isNavigationProperty)) {\r\n entity[prop] = dto[prop];\r\n }\r\n }\r\n }\r\n\r\n return entity;\r\n }\r\n\r\n mergeEntityIntoCacheAlt(data: { results: MergeableDtoAlt[] }, isPartial?: boolean, entityCallback?: (entity: T, dto: MergeableDtoAlt) => void): T[] {\r\n const entityType = this.getMetastore().getEntityType(this.entityTypeName);\r\n const manager = this.manager();\r\n\r\n return data.results.map((dto) => {\r\n const id = dto.id;\r\n const key = new EntityKey(entityType, id);\r\n let entity = manager.getEntityByKey(key);\r\n if (!entity) {\r\n entity = entityType.createEntity();\r\n entity.id = id;\r\n manager.attachEntity(entity);\r\n entity.isPartial = isPartial == undefined ? true : isPartial;\r\n }\r\n\r\n this.mapToEntityAlt(entity, dto);\r\n\r\n if (entityCallback) {\r\n entityCallback(entity, dto);\r\n }\r\n\r\n entity.entityAspect.setUnchanged();\r\n\r\n return entity;\r\n });\r\n }\r\n\r\n private mapToEntityAlt(entity: T, dto: MergeableDtoAlt): MetaEntity {\r\n for (const prop in dto) {\r\n if (entity.hasOwnProperty(prop)) {\r\n const propInfo = entity.entityType.getProperty(prop, false);\r\n if (!propInfo || (propInfo && !propInfo.isNavigationProperty)) {\r\n entity[prop] = dto[prop];\r\n }\r\n }\r\n }\r\n\r\n return entity;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport Config from '../config';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport Utilities from '../utilities';\r\nimport { ServerSideConfigData } from '../../../typings';\r\nimport { SharedDataService } from '../shared-data/shared-data.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServerSideConfigDataService {\r\n configData: ServerSideConfigData;\r\n configDataLoaded$ = new ReplaySubject(1);\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private sharedData: SharedDataService\r\n ) { }\r\n\r\n loadServerSideData(): Promise {\r\n if (!this.configData) {\r\n return this.http.get(`${Config.serviceName}/getServerSideConfigData`)\r\n .toPromise()\r\n .then((result) => {\r\n this.configData = result;\r\n\r\n Config.hashes.currentMetadataHash = result.hashes[0].metadataHash;\r\n Config.hashes.currentAnnotatedMetadataHash = result.hashes[0].annotatedMetadataHash;\r\n Config.hashes.currentLookupsHash = result.hashes[0].lookupsHash;\r\n\r\n this.sharedData.setMe(this.configData.me);\r\n this.configDataLoaded$.next(true);\r\n return true;\r\n })\r\n .catch(err => Promise.reject(err));\r\n } else {\r\n return Utilities.valueAsPromise(true);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport * as model from '../../../model/model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SharedDataService {\r\n public accessType: string;\r\n\r\n me = new BehaviorSubject(null);\r\n setMe = (data) => this.me.next(data);\r\n\r\n myEngagements = new BehaviorSubject(null);\r\n setMyEngagements = (data) => this.myEngagements.next(data);\r\n\r\n constructor() { }\r\n}\r\n","export default class Strings {\r\n static toasts = {\r\n changesPending: \"Please save or cancel your changes before leaving the page\",\r\n errorSavingData: \"Data could not be saved\",\r\n errorGettingData: \"toasts_errorGettingData\",\r\n invalidRoute: \"Could not retrieve data\",\r\n welcomeMsg: \"Welcome, {0}!\",\r\n retrievedData: \"Successfully Loaded {0}!\",\r\n savedData: \"Data saved successfully\",\r\n canceledData: \"Changes reverted back to original values\",\r\n invalidData: \"Some fields have invalid data, please correct them before continuing\",\r\n entityAdded: \"{0} Added\",\r\n entityDeleted: \"{0} Deleted\"\r\n };\r\n\r\n static errors = {\r\n nocallback: \"callback must be specified.\",\r\n noroute: \"No route was indicated.\",\r\n queryfailed: \"Query failed:\",\r\n savefailed: \"Save failed:\",\r\n };\r\n\r\n static actions = {\r\n undoDelete: \"action_undo_delete\"\r\n };\r\n\r\n static validation = {\r\n required: \"'%displayName%' is required\",\r\n date: \"'%displayName%' must be a date\",\r\n \"string\": \"'%displayName%' must be a string\",\r\n \"bool\": \"'%displayName%' must be a a 'true' or 'false' value\",\r\n guid: \"'%displayName%' must be a GUID\",\r\n \"number\": \"'%displayName%' must be a number\",\r\n integer: \"'%displayName%' must be an integer\",\r\n integerRange: \"'%displayName%' must be an integer between the values of %minValue% and %maxValue%\",\r\n maxLength: \"'%displayName%' must be a string with less than %maxLength% characters\",\r\n stringLength: \"'%displayName%' must be a string with between %minLength% and %maxLength% characters\"\r\n };\r\n\r\n static labels = {\r\n pager: \"Page {0} of {1}\",\r\n cancel: \"Cancel\",\r\n save: \"Save\",\r\n submit: \"Submit\",\r\n rollback: \"Rollback Status\",\r\n validationSummary: \"Validation Summary\",\r\n view: \"View:\",\r\n back: \"Back\",\r\n copy: \"Copy\",\r\n cancelCopy: \"Cancel\",\r\n newLabel: \"New\",\r\n add: \"Add\",\r\n undo: \"(Undo)\",\r\n noUsersAuthorized: \"label_noUsersAuthorized\",\r\n name: \"Name\",\r\n noUsersFound: \"label_noUsersFound\",\r\n new: \"New\",\r\n yes: \"Yes\",\r\n no: \"No\",\r\n footer: \"&copy; Copyright BDO USA, P.C., a Virginia Professional Service Corporation {0}. All Rights Reserved.\"\r\n };\r\n\r\n static titles = {\r\n home: \"My Projects\",\r\n admin: \"Admin\"\r\n };\r\n\r\n static loadingMsgs = {};\r\n\r\n static reports = {\r\n reportname: {\r\n name: \"report_controller_action\",\r\n title: \"Report_MyReportName_Title\",\r\n description: \"Report_MyReportName_Description\"\r\n }\r\n };\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { SaveOptions, QueuedSaveFailedError, SaveResult, EntityChangedEventArgs } from 'breeze-client';\r\nimport { Repository } from '../repository';\r\nimport { BridgeService } from '../bridge/bridge.service';\r\nimport { EntityManagerProviderService } from '../entity-manager-provider/entity-manager-provider.service';\r\nimport * as model from '../../../model/model';\r\nimport * as modelEnum from '../../../model/modelEnums';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { GlobalErrorHandler } from '../../services/global-error-handler';\r\nimport { MetaEntity } from '../../../model/metaEntity';\r\nimport Strings from '../strings';\r\n\r\nconst defaultLimit: number = 15;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UnitOfWorkService implements OnDestroy {\r\n hasChanges = new BehaviorSubject(false);\r\n entityChanged = new Subject();\r\n\r\n inspectionProfileStatuses = [\r\n { isSelected: false, status: modelEnum.InspectionProfileStatus.draft, title: 'Draft' },\r\n { isSelected: false, status: modelEnum.InspectionProfileStatus.active, title: 'Active' },\r\n { isSelected: false, status: modelEnum.InspectionProfileStatus.archived, title: 'Archived' }\r\n ];\r\n\r\n engagementStatuses = [\r\n { isSelected: false, status: modelEnum.EngagementStatus.draft, title: 'Draft' },\r\n { isSelected: false, status: modelEnum.EngagementStatus.active, title: 'Active' },\r\n { isSelected: false, status: modelEnum.EngagementStatus.changesRequired, title: 'Changes Required' },\r\n { isSelected: false, status: modelEnum.EngagementStatus.teamCaptainReviewComplete, title: 'Team Captain Review Complete' },\r\n { isSelected: false, status: modelEnum.EngagementStatus.archived, title: 'Archived' }\r\n ];\r\n\r\n progressStatuses = [\r\n { isSelected: false, status: modelEnum.ProgressStatus.na, title: '---' },\r\n { isSelected: false, status: modelEnum.ProgressStatus.notActivated, title: 'Not Activated' },\r\n { isSelected: false, status: modelEnum.ProgressStatus.notStarted, title: 'Not Started' },\r\n { isSelected: false, status: modelEnum.ProgressStatus.inProgress, title: 'In Progress' },\r\n { isSelected: false, status: modelEnum.ProgressStatus.completed, title: 'Completed' }\r\n ];\r\n\r\n engagementRatings = [\r\n { isSelected: false, status: modelEnum.EngagementRating.pending, title: 'Pending' },\r\n { isSelected: false, status: modelEnum.EngagementRating.veryPoor, title: 'Very Poor' },\r\n { isSelected: false, status: modelEnum.EngagementRating.poor, title: 'Poor' },\r\n { isSelected: false, status: modelEnum.EngagementRating.acceptable, title: 'Acceptable' },\r\n { isSelected: false, status: modelEnum.EngagementRating.veryGood, title: 'Very Good' },\r\n { isSelected: false, status: modelEnum.EngagementRating.excellent, title: 'Excellent' }\r\n ];\r\n\r\n // Declare repositories for entity types you need to create/read/update/delete\r\n employees: Repository;\r\n tags: Repository;\r\n inspectionTeamRoles: Repository;\r\n industries: Repository;\r\n offices: Repository;\r\n businessLines: Repository;\r\n standardQuestionOptions: Repository;\r\n inspectionProfiles: Repository;\r\n profileSections: Repository;\r\n questions: Repository;\r\n questionOptions: Repository;\r\n profileSectionQuestionOptions: Repository;\r\n profileQuestionActivatingTags: Repository;\r\n questionTags: Repository;\r\n clients: Repository;\r\n projects: Repository;\r\n aptCaws: Repository;\r\n\r\n engagements: Repository;\r\n engagementQuestions: Repository;\r\n engagementQuestionComments: Repository;\r\n engagementQuestionOptions: Repository;\r\n engagementQuestionTags: Repository;\r\n engagementQuestionActivatingTags: Repository;\r\n engagementSections: Repository;\r\n engagementSectionEngagementQuestionOptions: Repository;\r\n engagementTeamMembers: Repository;\r\n inspectionTeamMemberEngagementSections: Repository;\r\n inspectionTeamMemberProfileSections: Repository;\r\n inspectionTeamMembers: Repository;\r\n engagementAptCaws: Repository;\r\n engagementIndustries: Repository;\r\n engagementProjects: Repository;\r\n answerSetOptions: Repository;\r\n specialtyReviewerTypes: Repository;\r\n\r\n private initialized = false;\r\n\r\n constructor(\r\n private bridge: BridgeService,\r\n private provider: EntityManagerProviderService,\r\n private toastr: ToastrService,\r\n private errorHandler: GlobalErrorHandler\r\n ) {\r\n this.provider.manager().hasChangesChanged.subscribe((evt) => {\r\n this.hasChanges.next(evt.hasChanges);\r\n });\r\n\r\n this.provider.manager().entityChanged.subscribe((evt) => {\r\n this.entityChanged.next(evt);\r\n });\r\n }\r\n\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n // Initialize the above repositories\r\n this.employees = this.createRepo('Employee', 'employees');\r\n this.tags = this.createRepo('Tag', 'tags');\r\n this.inspectionTeamRoles = this.createRepo('InspectionTeamRole', 'inspectionTeamRoles');\r\n this.industries = this.createRepo('Industry', 'industries');\r\n this.offices = this.createRepo('Office', 'offices');\r\n this.businessLines = this.createRepo('BusinessLine', 'businessLines');\r\n this.standardQuestionOptions = this.createRepo('StandardQuestionOption', 'standardQuestionOptions');\r\n this.inspectionProfiles = this.createRepo('InspectionProfile', 'inspectionProfiles');\r\n this.profileSections = this.createRepo('ProfileSection', 'profileSections');\r\n this.questions = this.createRepo('Question', 'questions');\r\n this.questionOptions = this.createRepo('QuestionOption', 'questionOptions');\r\n this.profileSectionQuestionOptions = this.createRepo('ProfileSectionQuestionOption', 'profileSectionQuestionOptions');\r\n this.profileQuestionActivatingTags = this.createRepo('ProfileQuestionActivatingTag', 'profileQuestionActivatingTags');\r\n this.questionTags = this.createRepo('QuestionTag', 'questionTags');\r\n this.clients = this.createRepo('Client', 'clients');\r\n this.projects = this.createRepo('Project', 'projects');\r\n this.aptCaws = this.createRepo('AptCaw', 'aptCaws');\r\n this.engagements = this.createRepo('Engagement', 'engagements');\r\n this.engagementQuestions = this.createRepo('EngagementQuestion', 'engagementQuestions');\r\n this.engagementQuestionComments = this.createRepo('EngagementQuestionComment', 'engagementQuestionComments');\r\n this.engagementQuestionOptions = this.createRepo('EngagementQuestionOption', 'engagementQuestionOptions');\r\n this.engagementQuestionTags = this.createRepo('EngagementQuestionTag', 'engagementQuestionTags');\r\n this.engagementQuestionActivatingTags = this.createRepo('EngagementQuestionActivatingTag', 'engagementQuestionActivatingTags');\r\n this.engagementSections = this.createRepo('EngagementSection', 'engagementSections');\r\n this.engagementSectionEngagementQuestionOptions = this.createRepo('EngagementSectionEngagementQuestionOption', 'engagementSectionEngagementQuestionOptions');\r\n this.engagementTeamMembers = this.createRepo('EngagementTeamMember', 'engagementTeamMembers');\r\n this.inspectionTeamMemberEngagementSections = this.createRepo('InspectionTeamMemberEngagementSection', 'inspectionTeamMemberEngagementSections');\r\n this.inspectionTeamMemberProfileSections = this.createRepo('InspectionTeamMemberProfileSection', 'inspectionTeamMemberProfileSections');\r\n this.inspectionTeamMembers = this.createRepo('InspectionTeamMember', 'inspectionTeamMembers');\r\n this.engagementAptCaws = this.createRepo('EngagementAptCaw', 'engagementAptCaws');;\r\n this.engagementIndustries = this.createRepo('EngagementIndustry', 'engagementIndustries');\r\n this.engagementProjects = this.createRepo('EngagementProject', 'engagementProjects');\r\n this.answerSetOptions = this.createRepo('AnswerSetOption', 'answerSetOptions');\r\n this.specialtyReviewerTypes = this.createRepo('SpecialtyReviewerType', 'specialtyReviewerTypes');\r\n\r\n this.initialized = true;\r\n }\r\n\r\n private createRepo(entityTypeName: string, resourceName: string) {\r\n return new Repository(this.provider, this.toastr, this.errorHandler, entityTypeName, resourceName);\r\n }\r\n\r\n commit(silent = false) {\r\n const saveOptions = new SaveOptions({ resourceName: 'savechanges' });\r\n\r\n return this.provider.manager()\r\n .saveChanges(null, saveOptions)\r\n .then((saveResult: SaveResult) => {\r\n if (!silent) {\r\n this.toastr.success(Strings.toasts.savedData);\r\n }\r\n })\r\n .catch((error: QueuedSaveFailedError) => {\r\n // Http request errors are handled in add-authorization-header-interceptor.ts\r\n if (!error.innerError.httpResponse) {\r\n this.errorHandler.handleError(error);\r\n }\r\n });\r\n }\r\n\r\n rollback() {\r\n this.provider.manager().rejectChanges();\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n if (this.hasChanges) {\r\n this.hasChanges.unsubscribe();\r\n }\r\n\r\n if (this.entityChanged) {\r\n this.entityChanged.unsubscribe();\r\n }\r\n }\r\n\r\n clear() {\r\n this.provider.manager().clear();\r\n }\r\n\r\n getChanges() {\r\n return this.provider.manager().getChanges();\r\n }\r\n\r\n private clearCache(entityName, entityId = null) {\r\n var cachedItems = this.provider.manager().getEntities(entityName);\r\n // Todo: this should be a function of the Breeze EntityManager itself\r\n if (cachedItems == null || cachedItems.length == 0) return;\r\n\r\n if (entityId != null) {\r\n cachedItems = cachedItems.filter(x => x['id'] == entityId);\r\n }\r\n\r\n cachedItems.forEach((entity) => {\r\n this.provider.manager().detachEntity(entity);\r\n });\r\n }\r\n\r\n getStatusName(status: modelEnum.InspectionProfileStatus) {\r\n var inspectionStatus = this.inspectionProfileStatuses.filter(s => s.status == Number(status))[0];\r\n return inspectionStatus ? inspectionStatus.title : 'UNDEFINED';\r\n }\r\n\r\n getEngagementStatusName(status: modelEnum.EngagementStatus) {\r\n var engagementStatus = this.engagementStatuses.filter(s => s.status == Number(status))[0];\r\n return engagementStatus ? engagementStatus.title : 'UNDEFINED';\r\n }\r\n\r\n getEngagementRatingName(status: modelEnum.EngagementRating) {\r\n var engagementRating = this.engagementRatings.filter(s => s.status == Number(status))[0];\r\n return engagementRating ? engagementRating.title : 'UNDEFINED';\r\n }\r\n\r\n getProgressStatusName(status: modelEnum.ProgressStatus) {\r\n var progressStatus = this.progressStatuses.filter(s => s.status == Number(status))[0];\r\n return progressStatus ? progressStatus.title : 'UNDEFINED';\r\n }\r\n\r\n getEmployees(searchTerm: string, id: string = null, showOnlyAdmins: boolean = false, showOnlyCaptains: boolean = false) {\r\n return this.bridge.getEmployees(searchTerm, id, showOnlyAdmins, showOnlyCaptains, 1, 50);\r\n }\r\n\r\n getActiveTags(includeAll: boolean = false) {\r\n return this.bridge.getActiveTags(includeAll, null);\r\n }\r\n getTags(includeAll: boolean = false) {\r\n return this.bridge.getTags(includeAll, null);\r\n }\r\n\r\n getInspectionTeamRoles(includeAll: boolean = false) {\r\n return this.bridge.getInspectionTeamRoles(includeAll, null);\r\n }\r\n\r\n getActiveIndustries(includeAll: boolean = false) {\r\n return this.bridge.getActiveIndustries(includeAll, null);\r\n }\r\n getIndustries(includeAll: boolean = false) {\r\n return this.bridge.getIndustries(includeAll, null);\r\n }\r\n\r\n getOffices() {\r\n return this.bridge.getOffices(null);\r\n }\r\n\r\n getRegions() {\r\n return this.bridge.getRegions(null);\r\n }\r\n\r\n getBusinessLines(includeAll: boolean = false) {\r\n return this.bridge.getBusinessLines(includeAll, null);\r\n }\r\n\r\n getClients(id: string = null, q: string = null, page: number = 1, limit: number = 500) {\r\n return this.bridge.getClients(id, q, page, limit, null);\r\n }\r\n\r\n getClientsCount(id: string = null, q: string = null) {\r\n return this.bridge.getClientsCount(id, q, null);\r\n }\r\n\r\n getProjects(id: string = null, name: string = null, clientId: string = null, clientName: string = null, page: number = 1, limit: number = 500) {\r\n return this.bridge.getProjects(id, name, clientId, clientName, page, limit, null);\r\n }\r\n\r\n getProjectsCount(id: string = null, name: string = null, clientId: string = null, clientName: string = null) {\r\n return this.bridge.getProjectsCount(id, name, clientId, clientName, null);\r\n }\r\n\r\n getAptCaws(id: string = null, name: string = null, clientId: string = null, clientName: string = null, page: number = 1, limit: number = 500) {\r\n return this.bridge.getAptCaws(id, name, clientId, clientName, page, limit, null);\r\n }\r\n\r\n getAptCawsCount(id: string = null, name: string = null, clientId: string = null, clientName: string = null) {\r\n return this.bridge.getAptCawsCount(id, name, clientId, clientName, null);\r\n }\r\n\r\n getStandardQuestionOptions(includeAll: boolean = false) {\r\n return this.bridge.getStandardQuestionOptions(includeAll, null);\r\n }\r\n\r\n getInspectionProfileById(id: number) {\r\n return this.bridge.getInspectionProfile(id);\r\n }\r\n\r\n getInspectionProfilesForLookup() {\r\n return this.bridge.getInspectionProfilesForLookup(null);\r\n }\r\n\r\n getInspectionProfilesForEngagement() {\r\n return this.bridge.getInspectionProfilesForEngagement(null);\r\n }\r\n\r\n getInspectionProfileForEngagementById(id: number) {\r\n return this.bridge.getInspectionProfileForEngagementById(id);\r\n }\r\n\r\n getInspectionProfilesSummary(page: number = 1, limit: number = defaultLimit, gridFilters: string = null) {\r\n return this.bridge.getInspectionProfilesSummary(page, limit, gridFilters, null);\r\n }\r\n\r\n getInspectionProfilesPageCount(limit: number = defaultLimit, gridFilters: string = null) {\r\n return this.bridge.getInspectionProfilesPageCount(limit, gridFilters, null);\r\n }\r\n\r\n getProfileSections(page: number = 1, limit: number = defaultLimit, gridFilters: string = null) {\r\n return this.bridge.getProfileSections(page, limit, gridFilters, null);\r\n }\r\n\r\n getProfileSectionsPageCount(limit: number = defaultLimit, gridFilters: string = null) {\r\n return this.bridge.getProfileSectionsPageCount(limit, gridFilters, null);\r\n }\r\n\r\n getProfileSectionsForLookup() {\r\n return this.bridge.getProfileSectionsForLookup(null);\r\n }\r\n\r\n getSectionsForInspectionProfile(profileId: number) {\r\n return this.bridge.getSectionsForInspectionProfile(profileId, null);\r\n }\r\n\r\n getProfileSectionsForSection(id: number) {\r\n return this.bridge.getProfileSectionsForSection(id, null);\r\n }\r\n\r\n getQuestions(page: number = 1, limit: number = defaultLimit, gridFilters: string = null) {\r\n return this.bridge.getQuestions(page, limit, gridFilters, null);\r\n }\r\n\r\n getQuestionsPageCount(limit: number = defaultLimit, gridFilters: string = null) {\r\n return this.bridge.getQuestionsPageCount(limit, gridFilters, null);\r\n }\r\n\r\n getQuestionById(id: number) {\r\n return this.bridge.getQuestion(id);\r\n }\r\n\r\n getQuestionOptions() {\r\n return this.bridge.getQuestionOptions(null);\r\n }\r\n\r\n getUnassignedQuestions() {\r\n return this.bridge.getUnassignedQuestions(null);\r\n }\r\n\r\n getEngagementById(id: number) {\r\n return this.bridge.getEngagement(id);\r\n }\r\n\r\n getAllEngagementsSummary(page: number = 1, limit: number = defaultLimit, gridFilters: string = null) {\r\n return this.bridge.getAllEngagementsSummary(page, limit, gridFilters, null);\r\n }\r\n\r\n getEngagements(page: number = 1, limit: number = defaultLimit, gridFilters: string = null) {\r\n return this.bridge.getEngagements(page, limit, gridFilters, null);\r\n }\r\n\r\n getEngagementsPageCount(limit: number = defaultLimit, gridFilters: string = null) {\r\n return this.bridge.getEngagementsPageCount(limit, gridFilters, null);\r\n }\r\n\r\n\r\n getMyTeamsEngagementById(id: number) {\r\n return this.bridge.getMyTeamsEngagementById(id);\r\n }\r\n\r\n getEngagementsForMyTeams(page: number = 1, limit: number = defaultLimit, gridFilters: string = null) {\r\n return this.bridge.getEngagementsForMyTeams(page, limit, gridFilters, null);\r\n }\r\n\r\n getEngagementsCountForMyTeams(gridFilters: string = null) {\r\n return this.bridge.getEngagementsCountForMyTeams(gridFilters, null);\r\n }\r\n\r\n publishEngagement(id: number) {\r\n return this.bridge.publishEngagement(id, null);\r\n }\r\n\r\n getEngagementSectionsForMyTeams(page: number = 1, limit: number = defaultLimit, gridFilters: string = null) {\r\n return this.bridge.getEngagementSectionsForMyTeams(page, limit, gridFilters, null);\r\n }\r\n\r\n getEngagementSectionsCountForMyTeams(gridFilters: string = null) {\r\n return this.bridge.getEngagementSectionsCountForMyTeams(gridFilters, null);\r\n }\r\n\r\n\r\n getEngagementQuestionsForMyTeams(page: number = 1, limit: number = defaultLimit, gridFilters: string = null) {\r\n return this.bridge.getEngagementQuestionsForMyTeams(page, limit, gridFilters, null);\r\n }\r\n\r\n getEngagementQuestionsCountForMyTeams(gridFilters: string = null) {\r\n return this.bridge.getEngagementQuestionsCountForMyTeams(gridFilters, null);\r\n }\r\n\r\n\r\n getMyInspections(page: number = 1, limit: number = defaultLimit, gridFilters: string = null) {\r\n return this.bridge.getMyInspections(page, limit, gridFilters);\r\n }\r\n\r\n getMyInspectionsCount(gridFilters: string = null) {\r\n return this.bridge.getMyInspectionsCount(gridFilters, null);\r\n }\r\n\r\n getExportEngagementQuestionsByYear(inspectionYear: number) {\r\n return this.bridge.getExportEngagementQuestionsByYear(inspectionYear);\r\n }\r\n\r\n getEngagementQuestionById(id: number) {\r\n return this.bridge.getEngagementQuestionById(id);\r\n }\r\n\r\n getMyEngagementNodeViewerById(id: number) {\r\n return this.bridge.getMyEngagementNodeViewerById(id);\r\n }\r\n\r\n getMyEngagementById(id: number) {\r\n return this.bridge.getMyEngagementById(id);\r\n }\r\n\r\n getSelectedOptionActivatingTags(id: number, selectedOptionId: number) {\r\n return this.bridge.getSelectedOptionActivatingTags(id, selectedOptionId);\r\n }\r\n\r\n checkQuestionForExistingResponse(id: number, optionId: number) {\r\n return this.bridge.checkQuestionForExistingResponse(id, optionId);\r\n }\r\n\r\n updateAssignedSections(sectionId: number, assignChildSections: boolean, teamMemberIds: number[], teamMemberWasRemoved: boolean) {\r\n if (teamMemberWasRemoved) {\r\n this.clearCache('EngagementSection', sectionId);\r\n }\r\n const params = { sectionId: sectionId, assignChildSections: assignChildSections, teamMemberIds: teamMemberIds };\r\n return this.bridge.updateAssignedSections(params);\r\n }\r\n\r\n updateQuestionResponse(id: number, isComplete: boolean, completedDate: Date, optionId?: number, comment?: string, replaceExisting?: boolean) {\r\n return this.bridge.updateQuestionResponse(id, isComplete, completedDate, optionId, comment, replaceExisting);\r\n }\r\n\r\n saveQuestionComment(id: number, text: string) {\r\n return this.bridge.saveQuestionComment(id, text, null);\r\n }\r\n\r\n\r\n updateEngagementStatus(status: number, engagementIds: number[]) {\r\n const params = { status: status, engagementIds: engagementIds };\r\n return this.bridge.updateEngagementStatus(params);\r\n }\r\n\r\n updateActivatedEngagementQuestions(id: number) {\r\n return this.bridge.updateActivatedEngagementQuestions(id);\r\n }\r\n\r\n updateActivatedEngagementQuestionsByActivatingTags(engagementId: number, engagementQuestionActivatingTags: number[]) {\r\n const params = { engagementId: engagementId, engagementQuestionActivatingTags: engagementQuestionActivatingTags};\r\n return this.bridge.updateActivatedEngagementQuestionsByActivatingTags(params);\r\n }\r\n\r\n propagateProfileSectionChanges(id: number) {\r\n return this.bridge.propagateProfileSectionChanges(id, null);\r\n }\r\n\r\n propagateQuestionChanges(id: number) {\r\n return this.bridge.propagateQuestionChanges(id, null);\r\n }\r\n\r\n\r\n getMaxProfileSectionDisplayOrder(id: number, parentSectionId?: number) {\r\n return this.bridge.getMaxProfileSectionDisplayOrder(id, parentSectionId, null);\r\n }\r\n\r\n getMaxQuestionDisplayOrder(id: number) {\r\n return this.bridge.getMaxQuestionDisplayOrder(id, null);\r\n }\r\n\r\n\r\n cleanupEngagements() {\r\n return this.bridge.cleanupEngagements(null);\r\n }\r\n\r\n\r\n testApplicationException() {\r\n return this.bridge.testApplicationException();\r\n }\r\n\r\n testException() {\r\n return this.bridge.testException();\r\n }\r\n\r\n cloneInspectionProfile(origProfileId: number, newName: string) {\r\n return this.bridge.cloneInspectionProfile(origProfileId, newName);\r\n }\r\n\r\n getEngagementReport(engagementId: number) {\r\n return this.bridge.getEngagementReport(engagementId);\r\n }\r\n\r\n getTotalEmployeeProjectHours(projectIds: string[], employeeId: string) {\r\n const params = { projectIds: projectIds, employeeId: employeeId};\r\n return this.bridge.getTotalEmployeeProjectHours(params);\r\n }\r\n\r\n getEmployeeProjectHours(projectId: string) {\r\n return this.bridge.getEmployeeProjectHours(projectId);\r\n }\r\n\r\n getTeamCaptains() {\r\n return this.bridge.getTeamCaptains();\r\n }\r\n\r\n getInspectionYears() {\r\n return this.bridge.getInspectionYears();\r\n }\r\n\r\n getSpecialtyReviewerTypes(includeAll: boolean = false) {\r\n return this.bridge.getSpecialtyReviewerTypes(includeAll, null);\r\n }\r\n\r\n isReviewerTypeAssigned(reviewerTypeId: number) {\r\n return this.bridge.isReviewerTypeAssigned(reviewerTypeId);\r\n }\r\n\r\n getInspectionTeamMemberProfileSections(engagementId: number) {\r\n return this.bridge.getInspectionTeamMemberProfileSections(engagementId);\r\n }\r\n\r\n getInspectionTeamMemberEngagementSections(engagementId: number) {\r\n return this.bridge.getInspectionTeamMemberEngagementSections(engagementId);\r\n }\r\n\r\n getHighLevelInspectionTeamMemberProfileSections(engagementId: number) {\r\n return this.bridge.getHighLevelInspectionTeamMemberProfileSections(engagementId);\r\n }\r\n\r\n getHighLevelInspectionTeamMemberEngagementSections(engagementId: number) {\r\n return this.bridge.getHighLevelInspectionTeamMemberEngagementSections(engagementId);\r\n }\r\n\r\n updateChildInspectionTeamMemberProfileSections(engagementId: number) {\r\n return this.bridge.updateChildInspectionTeamMemberProfileSections(engagementId);\r\n }\r\n}\r\n","import * as $ from 'jquery';\r\nimport { SaveResult, EntityState } from 'breeze-client';\r\nimport { MetaEntity } from '../../model/metaEntity';\r\nimport Strings from './strings';\r\nimport Config from './config';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport * as moment from 'moment';\r\nimport { StorageItem } from '../../typings';\r\n\r\nconst LOADING_SCREEN_CLASS = 'finished-loading';\r\nconst LOADING_SHELL_CLASS = '.app-loading-shell';\r\n\r\nexport default class Utilities {\r\n static emptyPromise = new Promise((resolve) => { resolve(null); });\r\n\r\n static valueAsPromise(value: T): Promise {\r\n return new Promise((resolve) => resolve(value));\r\n }\r\n\r\n static showLoadingScreen() {\r\n if ($(LOADING_SHELL_CLASS).hasClass(LOADING_SCREEN_CLASS)) {\r\n $(LOADING_SHELL_CLASS).removeClass(LOADING_SCREEN_CLASS);\r\n }\r\n }\r\n\r\n static hideLoadingScreen() {\r\n if (!$(LOADING_SHELL_CLASS).hasClass(LOADING_SCREEN_CLASS)) {\r\n $(LOADING_SHELL_CLASS).addClass(LOADING_SCREEN_CLASS);\r\n }\r\n }\r\n\r\n static decodeHtml(html: string) {\r\n const txt = document.createElement(\"textarea\");\r\n txt.innerHTML = html;\r\n return txt.value;\r\n }\r\n\r\n static isMobileSafari() {\r\n return navigator.userAgent.match(/(iPod|iPhone|iPad)/) && navigator.userAgent.match(/AppleWebKit/) && !navigator.userAgent.match(/CriOS/);\r\n }\r\n\r\n static numberWithCommas(x: number, round?: number): string {\r\n let y = 0;\r\n if (x) {\r\n y = x;\r\n }\r\n\r\n const parts = (round == null ? y.toString() : y.toFixed(round)).split(\".\");\r\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n return parts.join(\".\");\r\n }\r\n\r\n static camelCaseDto(dto: any): any {\r\n const m = {};\r\n $.map(dto, function (prop, propName: string) {\r\n m[propName.charAt(0).toLowerCase() + propName.slice(1)] = dto[propName];\r\n });\r\n\r\n return m;\r\n }\r\n\r\n static formatSavedMessage(saveResult: SaveResult) {\r\n let result = \"\";\r\n\r\n saveResult.entities.forEach(function (entity: MetaEntity) {\r\n if (entity.entityAspect.valueQueue) {\r\n if (entity.entityAspect.fieldsSavingEntityState == EntityState.Modified) {\r\n for (const field in entity.entityAspect.fieldsSaving) {\r\n if (entity.entityAspect.valueQueue[field]) {\r\n entity.entityAspect.valueQueue[field].orig = entity[field]();\r\n entity.entityAspect.valueQueue[field].isSaved = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (result.length) {\r\n result += \"
\";\r\n }\r\n\r\n if (entity.entityAspect.fieldsSavingEntityState == EntityState.Deleted || (entity.hasOwnProperty(\"isDeleted\") && entity.isDeleted && (entity.entityAspect.fieldsSaving[\"isDeleted\"] !== undefined && entity.isDeleted == true))) {\r\n if (entity.entityAspect.delMsg) {\r\n result = entity.entityAspect.delMsg;\r\n } else if (entity.name) {\r\n result = Strings.toasts.entityDeleted.replace(/\\{0\\}/gi, entity.name);\r\n }\r\n } else if (entity.entityAspect.fieldsSavingEntityState == EntityState.Added || (entity.hasOwnProperty(\"isDeleted\") && entity.isDeleted && (entity.entityAspect.fieldsSaving[\"isDeleted\"] !== undefined && !entity.isDeleted))) {\r\n if (entity.entityAspect.addMsg) {\r\n result = entity.entityAspect.addMsg;\r\n } else if (entity.name) {\r\n result = Strings.toasts.entityAdded.replace(/\\{0\\}/gi, entity.name);\r\n }\r\n } else if (entity.entityAspect.fieldsSavingEntityState == EntityState.Modified) {\r\n for (const field in entity.entityAspect.fieldsSaving) {\r\n if (Config.skipFieldsForMessage.indexOf(field) >= 0) {\r\n continue;\r\n }\r\n\r\n const fieldName = entity.entityType.props[field].displayName;\r\n let fieldValue = entity[field];\r\n\r\n if (/.+Id$/gi.test(field)) {\r\n const actualField = field.replace(/Id$/gi, \"\");\r\n if (entity[actualField]) {\r\n const actualEntity = entity[actualField];\r\n if (actualEntity && actualEntity.name) {\r\n fieldValue = actualEntity.name;\r\n }\r\n }\r\n }\r\n\r\n if (fieldValue && fieldValue.length > 28) {\r\n fieldValue = fieldValue.substring(0, 25) + \"...\";\r\n }\r\n result += fieldName + \": \" + fieldValue + \"
\";\r\n }\r\n }\r\n\r\n result = result.replace(/
$/gi, \"\");\r\n\r\n entity.entityAspect.fieldsSaving = {};\r\n });\r\n\r\n return result;\r\n }\r\n\r\n static getCurrentDate(): Date {\r\n return new Date();\r\n }\r\n\r\n static sortByValue(a: string, b: string): number {\r\n return a.localeCompare(b);\r\n }\r\n\r\n static sortById(a, b): number {\r\n return a.id > b.id ? 1 : a.id < b.id ? -1 : 0;\r\n }\r\n\r\n static sortByName(a, b): number {\r\n return a.name.localeCompare(b.name);\r\n }\r\n\r\n static sortByDisplayOrder(a, b): number {\r\n return a.displayOrder > b.displayOrder ? 1 : a.displayOrder < b.displayOrder ? -1 : 0;\r\n }\r\n\r\n static koPropIfAvailable(item: BehaviorSubject, propName: string, defaultValue: any): any {\r\n if (item && item.value)\r\n if (item.value[propName] && typeof item.value[propName] == 'function')\r\n return item.value[propName]();\r\n else if (item.value[propName])\r\n return item.value[propName];\r\n return defaultValue;\r\n }\r\n\r\n // Helper function for grouping a collection by one of the properties defined in the collection's type\r\n static groupByField(field: string, self: Array<{}>) {\r\n var groups = {};\r\n self.forEach(function (el) {\r\n if (field in groups == false) {\r\n groups[field] = [];\r\n }\r\n groups[field].push(el);\r\n });\r\n\r\n return Object.keys(groups).map(function (key) {\r\n return {\r\n key: key,\r\n values: groups[key]\r\n };\r\n });\r\n }\r\n\r\n static onlyUnique(value: string, index: number, self: Array) {\r\n return self.indexOf(value) == index;\r\n }\r\n}\r\n\r\n\r\nexport class Store {\r\n expires1Day: Date;\r\n expires30Days: Date;\r\n\r\n constructor() {\r\n this.expires1Day = moment().add(Config.dayMs, \"ms\").toDate();\r\n this.expires30Days = moment().add(Config.storeExpirationMs, \"ms\").toDate();\r\n }\r\n\r\n clear(key: string) {\r\n localStorage.removeItem(key);\r\n }\r\n\r\n fetch(key: string): string {\r\n const cache = localStorage.getItem(key);\r\n if (cache) {\r\n const item: StorageItem = JSON.parse(cache);\r\n if (moment().isSameOrBefore(item.expires)) {\r\n return item.item;\r\n } else {\r\n this.clear(key);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n save(key: string, value: string) {\r\n const item: StorageItem = {\r\n item: value,\r\n expires: this.expires30Days\r\n }\r\n const cache = JSON.stringify(item);\r\n\r\n localStorage.setItem(key, cache);\r\n }\r\n\r\n saveForADay(key: string, value: string) {\r\n const item: StorageItem = {\r\n item: value,\r\n expires: this.expires1Day\r\n }\r\n const cache = JSON.stringify(item);\r\n\r\n localStorage.setItem(key, cache);\r\n }\r\n\r\n saveForCurrentSession(key: string, value: string) {\r\n sessionStorage.setItem(key, value);\r\n }\r\n\r\n fetchFromSession(key: string): string {\r\n const value = sessionStorage.getItem(key);\r\n if (value) {\r\n return value;\r\n }\r\n\r\n return null;\r\n }\r\n}\r\nexport const store = new Store();\r\n\r\ninterface listPickerData {\r\n isSelected: BehaviorSubject,\r\n name\r\n}\r\n\r\nexport class ListPicker {\r\n expand = new BehaviorSubject(true);\r\n\r\n toggle = () => {\r\n this.expand.next(!this.expand.value);\r\n }\r\n\r\n allData: BehaviorSubject;\r\n\r\n mapToString: (item: T) => string;\r\n\r\n name: string = \"\";\r\n\r\n selectAll = { isSelected: new BehaviorSubject(true), name: 'Select All' };\r\n\r\n private isAutoDeselecting = false;\r\n\r\n private availableBase = new BehaviorSubject([]);\r\n available = new BehaviorSubject([]);\r\n selected = new BehaviorSubject([]);\r\n\r\n updateData() {\r\n if (this.selected.value.length == this.availableBase.value.length && !this.selectAll.isSelected.value) {\r\n this.isAutoDeselecting = true;\r\n this.selectAll.isSelected.next(true);\r\n } else if (this.selected.value.length < this.availableBase.value.length && this.selectAll.isSelected.value) {\r\n this.isAutoDeselecting = true;\r\n this.selectAll.isSelected.next(false);\r\n }\r\n }\r\n\r\n constructor(name: string, data: BehaviorSubject, mapToStringCallback: (item: T) => string) {\r\n this.name = name;\r\n this.allData = data;\r\n this.allData.subscribe(val => {\r\n const items = val\r\n .map(this.mapToString)\r\n .filter(this.onlyUnique)\r\n .sort()\r\n .map((data) => {\r\n return { isSelected: new BehaviorSubject(true), name: data };\r\n });\r\n\r\n this.availableBase.next(items);\r\n });\r\n this.mapToString = mapToStringCallback;\r\n\r\n this.selectAll.isSelected.subscribe((val) => {\r\n if (this.isAutoDeselecting == false) {\r\n this.availableBase.value.forEach((item) => { item.isSelected.next(val); });\r\n }\r\n else {\r\n this.isAutoDeselecting = false;\r\n }\r\n\r\n this.updateData();\r\n });\r\n\r\n this.availableBase.subscribe(val => {\r\n const availableItems = this.availableBase.value;\r\n this.available.next(availableItems);\r\n\r\n const selectedItems = val\r\n .filter((item) => item.isSelected.value)\r\n .map((item) => item.name);\r\n this.selected.next(selectedItems);\r\n\r\n this.updateData();\r\n });\r\n }\r\n\r\n isSelected(item): boolean {\r\n if (this.selectAll.isSelected.value)\r\n return true;\r\n\r\n if (this.selected.value.length == 0)\r\n return false;\r\n\r\n const value = this.mapToString(item);\r\n return this.selected.value.indexOf(value) !== -1;\r\n }\r\n\r\n onlyUnique(value: string, index: number, self: Array) {\r\n return self.indexOf(value) == index;\r\n }\r\n}\r\n\r\nexport class DateRangePicker {\r\n expand = new BehaviorSubject(true);\r\n\r\n toggle = () => {\r\n this.expand.next(!this.expand.value);\r\n }\r\n\r\n allData: BehaviorSubject;\r\n\r\n mapToDate: (item: T) => Date;\r\n\r\n name: string = \"\";\r\n\r\n selectAll = { isSelected: new BehaviorSubject(true), name: 'Select All' };\r\n\r\n minDate = new BehaviorSubject(null);\r\n\r\n maxDate = new BehaviorSubject(null);\r\n\r\n constructor(name: string, data: BehaviorSubject, mapToDateCallback: (item: T) => Date) {\r\n this.name = name;\r\n this.allData = data;\r\n this.mapToDate = mapToDateCallback;\r\n\r\n this.minDate.subscribe((val) => {\r\n if (val && this.selectAll.isSelected.value)\r\n this.selectAll.isSelected.next(false);\r\n\r\n if (!val && !this.maxDate.value)\r\n this.selectAll.isSelected.next(true);\r\n });\r\n\r\n this.maxDate.subscribe((val) => {\r\n if (val && this.selectAll.isSelected.value)\r\n this.selectAll.isSelected.next(false);\r\n\r\n if (!val && !this.minDate.value)\r\n this.selectAll.isSelected.next(true);\r\n });\r\n }\r\n\r\n isSelected(item): boolean {\r\n if (this.selectAll.isSelected.value)\r\n return true;\r\n\r\n const value = this.mapToDate(item);\r\n if (!value)\r\n return false;\r\n\r\n if (this.minDate.value && moment(value).isBefore(this.minDate.value))\r\n return false;\r\n\r\n if (this.maxDate.value && moment(value).isAfter(moment(this.maxDate.value).endOf(\"day\")))\r\n return false;\r\n\r\n return true;\r\n }\r\n}\r\n","export const environment = {\r\n production: true,\r\n hmr: false\r\n};\r\n","// The file contents for the current environment will overwrite these during build.\r\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\r\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\r\n// The list of which env maps to which file can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false,\r\n hmr: false\r\n};\r\n","import { NgModuleRef, ApplicationRef } from '@angular/core';\r\nimport { createNewHosts } from '@angularclass/hmr';\r\n\r\n/**\r\n * This code came from https://github.com/angular/angular-cli/blob/master/docs/documentation/stories/configure-hmr.md\r\n * @param module\r\n * @param bootstrap\r\n */\r\nexport const hmrBootstrap = (module: any, bootstrap: () => Promise>) => {\r\n let ngModule: NgModuleRef;\r\n module.hot.accept();\r\n bootstrap().then(mod => ngModule = mod);\r\n module.hot.dispose(() => {\r\n const appRef: ApplicationRef = ngModule.injector.get(ApplicationRef);\r\n const elements = appRef.components.map(c => c.location.nativeElement);\r\n const makeVisible = createNewHosts(elements);\r\n ngModule.destroy();\r\n makeVisible();\r\n });\r\n};\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\nimport { hmrBootstrap } from './hmr';\r\n\r\nexport function getBaseUrl() {\r\n return document.getElementsByTagName('base')[0].href;\r\n}\r\n\r\nconst providers = [\r\n { provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] },\r\n];\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nconst bootstrap = () => platformBrowserDynamic(providers).bootstrapModule(AppModule);\r\n\r\nif (environment.hmr) {\r\n if (module['hot']) {\r\n hmrBootstrap(module, bootstrap);\r\n } else {\r\n console.error('HMR is not enabled for webpack-dev-server!');\r\n console.log('Are you using the --hmr flag for ng serve?');\r\n }\r\n} else {\r\n bootstrap().catch(err => console.log(err));\r\n}\r\n","export enum InspectionProfileStatus {\r\n draft = 1,\r\n active = 2,\r\n archived = 3,\r\n}\r\n\r\nexport enum EngagementRating {\r\n pending = 0,\r\n veryPoor = 1,\r\n poor = 2,\r\n acceptable = 3,\r\n veryGood = 4,\r\n excellent = 5,\r\n}\r\n\r\nexport enum EngagementStatus {\r\n draft = 0,\r\n active = 1,\r\n changesRequired = 2,\r\n teamCaptainReviewComplete = 3,\r\n archived = 4,\r\n}\r\n\r\nexport enum ProgressStatus {\r\n na = 0,\r\n notActivated = 1,\r\n notStarted = 2,\r\n inProgress = 3,\r\n completed = 4,\r\n}\r\n\r\n\r\n","export enum Role {\r\n basic = \"Basic\",\r\n admin = \"Admin\",\r\n nationalQcAdmin = \"NationalQcAdmin\",\r\n icsAccess = \"ICSAccess\",\r\n}\r\n"],"sourceRoot":"webpack:///"}