{"version":3,"sources":["webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/app/app.component.html","webpack:///./src/app/audits/audits.component.html","webpack:///./src/app/footer/app-footer.component.html","webpack:///./src/app/groups/groups.component.html","webpack:///./src/app/help/help.component.html","webpack:///./src/app/home/home.component.html","webpack:///./src/app/login/login.component.html","webpack:///./src/app/nav-menu/nav-menu.component.html","webpack:///./src/app/units/units.component.html","webpack:///./src/app/user-profile/user-profile.component.html","webpack:///./src/app/users/user.component.html","webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/Common/app.constants.ts","webpack:///./src/app/Common/app.notification.ts","webpack:///./src/app/app-primeng/app-primeng.module.ts","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/audits/audits.component.scss","webpack:///./src/app/audits/audits.component.ts","webpack:///./src/app/common/app.constants.ts","webpack:///./src/app/common/app.helper.ts","webpack:///./src/app/common/app.notification.ts","webpack:///./src/app/common/app.roles.ts","webpack:///./src/app/footer/app-footer.component.css","webpack:///./src/app/footer/app-footer.component.ts","webpack:///./src/app/groups/groups.component.scss","webpack:///./src/app/groups/groups.component.ts","webpack:///./src/app/help/help.component.css","webpack:///./src/app/help/help.component.ts","webpack:///./src/app/home/home.component.ts","webpack:///./src/app/interceptors/token.interceptor.service.ts","webpack:///./src/app/login/login.component.ts","webpack:///./src/app/models/AddUserToGroupRequest.model.ts","webpack:///./src/app/models/GenerateCode.model.ts","webpack:///./src/app/models/GetActiveLockUsersAndLocks.model.ts","webpack:///./src/app/models/LockGetRequest.model.ts","webpack:///./src/app/models/LockUpdateRequest.model.ts","webpack:///./src/app/models/LockUserAccess.model.ts","webpack:///./src/app/models/LockUserGroup.model.ts","webpack:///./src/app/models/LockUsers.model.ts","webpack:///./src/app/models/LoginRequest.model.ts","webpack:///./src/app/models/SendMessage.model.ts","webpack:///./src/app/models/UserGetRequest.model.ts","webpack:///./src/app/models/UserLocksModel.model.ts","webpack:///./src/app/models/UserUpdateRequest.model.ts","webpack:///./src/app/models/model.module.ts","webpack:///./src/app/models/repository.ts","webpack:///./src/app/models/userGetResponseRecord.model.ts","webpack:///./src/app/nav-menu/nav-menu.component.css","webpack:///./src/app/nav-menu/nav-menu.component.ts","webpack:///./src/app/shared/authenticated.guard.ts","webpack:///./src/app/shared/dataService.ts","webpack:///./src/app/units/units.component.scss","webpack:///./src/app/units/units.component.ts","webpack:///./src/app/user-profile/user-profile.component.scss","webpack:///./src/app/user-profile/user-profile.component.ts","webpack:///./src/app/users/user.component.scss","webpack:///./src/app/users/user.component.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.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-bd\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"./node_modules/moment/locale/bn-bd.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-mx\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/moment/locale/es-mx.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\"./tk\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"./node_modules/moment/locale/tk.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 ^\\\\.\\\\/.*$\";","module.exports = \"\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
    \\r\\n
  1. \\r\\n {{pageTitle}}\\r\\n
  2. \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n EMAIL LOGS | PREFERRED TIME ZONE\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{appLabels.auditDetails}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Lock ID\\r\\n {{userLock.serialNumber}}\\r\\n \\r\\n \\r\\n Location\\r\\n {{userLock.location}}\\r\\n \\r\\n \\r\\n Audit\\r\\n {{userLock.lastAuditCollection | date:'d/M/yyyy h:mm:ss a':currentTimeZoneName}}\\r\\n \\r\\n \\r\\n Customer\\r\\n {{userLock.customer}}\\r\\n \\r\\n \\r\\n Notes\\r\\n {{userLock.notes}}\\r\\n \\r\\n \\r\\n View Audit\\r\\n {{appLabels.clickToView}} >\\r\\n \\r\\n \\r\\n \\r\\n TOTAL RECORDS: {{userLocks?.length || 0}}\\r\\n \\r\\n \\r\\n \\r\\n No 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 {{col.header}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Date/Time\\r\\n {{auditDetail.dateTime | date:'d/M/yyyy h:mm:ss a':currentTimeZoneName}}\\r\\n \\r\\n \\r\\n User\\r\\n {{auditDetail.lockUserName}}\\r\\n \\r\\n \\r\\n Event\\r\\n {{auditDetail.eventType}}\\r\\n \\r\\n \\r\\n \\r\\n TOTAL RECORDS: {{auditDetails?.length || 0}}\\r\\n \\r\\n \\r\\n \\r\\n No 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

{{appLabels.downloadAuditLog}}

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n\"","module.exports = \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n\\r\\n
    \\r\\n
  1. \\r\\n {{pageTitle}}\\r\\n
  2. \\r\\n\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
  3. \\r\\n \\r\\n {{pageTitle}}\\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  4. \\r\\n
    \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{appLabels.groupMembers}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Group Name\\r\\n {{lockUserGroup.groupName}}\\r\\n \\r\\n \\r\\n Created Date\\r\\n {{lockUserGroup.created | date:'d/M/yyyy h:mm:ss a':currentTimeZoneName}}\\r\\n \\r\\n \\r\\n View Group Members\\r\\n {{appLabels.clickToView}} >\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n No 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 {{col.header}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n User\\r\\n {{lockUserGroupMem.name}}\\r\\n \\r\\n \\r\\n Phone\\r\\n {{lockUserGroupMem.phone}}\\r\\n \\r\\n \\r\\n Email\\r\\n {{lockUserGroupMem.email}}\\r\\n \\r\\n \\r\\n Arbitrary code\\r\\n
\\r\\n
\\r\\n {{constSecretHidden}}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Created Date\\r\\n {{lockUserGroupMem.created | date:'d/M/yyyy h:mm:ss a':currentTimeZoneName}}\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n No 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

{{appLabels.createLockUserGroup}}

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

{{appLabels.deleteLockUserGroup}}

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

{{appLabels.addArbitaryLockUserToGroup}}

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

{{appLabels.deleteArbitaryLockUserFromGroup}}

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  1. \\r\\n {{ pageTitle }}\\r\\n
  2. \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
Guide
\\r\\n \\r\\n
How to
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n\\r\\n
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\tWelcome {{loginUser}},
    \\r\\n\\t\\t\\t\\t\\t\\tSearch, select and manage your Locks, Users & Groups...\\r\\n\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
Manage Locks
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{manageLocksCardSubTitle}}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
Assigned Locks
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{appLabels.viewAssignedLocksSubTitle}}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
Manage Users
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{appLabels.manageUsersCardSubTitle}}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
Manage Groups
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{appLabels.manageGroupsCardSubTitle}}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
View Audits
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{appLabels.auditsCardSubTitle}}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

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

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n username 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 \\r\\n
\\r\\n password is required!\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n confirm password 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
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n

LOGIN AS OWNER USER

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

{{appLabels.contactInfoTitle}}

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\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 {{ pageTitle }}\\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
  3. \\r\\n\\r\\n \\r\\n {{ pageTitle }}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n {{ pageTitle }}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
  4. \\r\\n
    \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{appLabels.lockId}}
(TYPE / STATUS)\\r\\n \\r\\n \\r\\n \\r\\n {{appLabels.lockSyncRequired}} \\r\\n \\r\\n \\r\\n \\r\\n {{appLabels.interface}}
(FIRMWARE Ver.)\\r\\n \\r\\n \\r\\n \\r\\n {{appLabels.activationCode}}\\r\\n \\r\\n \\r\\n \\r\\n {{appLabels.cloneOf}}\\r\\n \\r\\n \\r\\n \\r\\n {{appLabels.dateInstalled}}\\r\\n \\r\\n \\r\\n \\r\\n {{appLabels.location}}\\r\\n \\r\\n \\r\\n \\r\\n {{appLabels.customer}}\\r\\n \\r\\n \\r\\n \\r\\n {{appLabels.notes}}\\r\\n \\r\\n \\r\\n {{appLabels.generateAccessCode}}\\r\\n {{appLabels.removeAccessCode}}\\r\\n {{appLabels.lockDetails}}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Lock ID (TYPE / STATUS)\\r\\n {{userLock.serialNumber}}
({{appHelper.isNullOrUndefinedOrWhiteSpace(userLock.lockType) ? 'Not set' : userLock.lockType}} / {{appHelper.isNullOrUndefinedOrWhiteSpace(userLock.status) ? 'Not Avail.' : userLock.status}})\\r\\n \\r\\n \\r\\n {{appLabels.lockSyncRequired}}\\r\\n \\r\\n \\r\\n {{appLabels.yes}}\\r\\n \\r\\n \\r\\n \\r\\n {{appLabels.no}}\\r\\n \\r\\n \\r\\n \\r\\n Interface
(Firmware Ver.)
\\r\\n {{userLock.hasInterface == 0 ? appLabels.noInterface : userLock.hasInterface == 2 ? appLabels.videofiedInterface : userLock.hasInterface == 3 ? appLabels.ajaxReadyInterface : appLabels.undefinedInterface}}
{{userLock.firmwareVersion}}\\r\\n \\r\\n \\r\\n Activation Code\\r\\n
\\r\\n
\\r\\n {{constSecretHidden}}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Clone Of\\r\\n {{userLock.cloneOf?.replace(',', ', ')?.replace(' ', ' ')}}\\r\\n \\r\\n \\r\\n Date Installed\\r\\n {{userLock.installationDate | date:'d/M/yyyy h:mm:ss a':currentTimeZoneName}}\\r\\n \\r\\n \\r\\n Location\\r\\n {{userLock.location}}\\r\\n \\r\\n \\r\\n Customer\\r\\n {{userLock.customer}}\\r\\n \\r\\n \\r\\n Notes\\r\\n {{userLock.notes}}\\r\\n \\r\\n \\r\\n Generate Access Code\\r\\n {{appLabels.clickToAssign}} >\\r\\n \\r\\n \\r\\n Remove Access Code\\r\\n {{appLabels.clickToRemove}} >\\r\\n \\r\\n \\r\\n View Lock\\r\\n {{appLabels.clickToView}} >\\r\\n
\\r\\n {{appLabels.clickToEdit}} >\\r\\n \\r\\n \\r\\n
\\r\\n TOTAL RECORDS: {{userLocks?.length || 0}}\\r\\n \\r\\n \\r\\n \\r\\n No 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 {{appLabels.lockId}}
(TYPE)\\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{appLabels.lockId}} (TYPE)\\r\\n {{userLock.serialNumber}}
({{userLock.lockType === '' ? 'Not set' : userLock.lockType}})\\r\\n \\r\\n \\r\\n {{appLabels.status}}\\r\\n {{userLock.status}}\\r\\n \\r\\n \\r\\n Interface\\r\\n {{userLock.hasInterface == 0 ? appLabels.noInterface : userLock.hasInterface == 2 ? appLabels.videofiedInterface : userLock.hasInterface == 3 ? appLabels.ajaxReadyInterface : appLabels.undefinedInterface}}\\r\\n \\r\\n \\r\\n {{appLabels.location}}\\r\\n {{userLock.location}}\\r\\n \\r\\n \\r\\n {{appLabels.notes}}\\r\\n {{userLock.notes}}\\r\\n \\r\\n \\r\\n {{appLabels.owner}} ({{appLabels.userName}})\\r\\n {{userLock.ownerUser.includes('USER NOT FOUND/ACTIVE') && userLock.ownerUserName.includes('USER NOT FOUND/ACTIVE') ? userLock.ownerUser : userLock.ownerUser + ' (' + userLock.ownerUserName + ')'}}\\r\\n \\r\\n \\r\\n {{appLabels.customer}}\\r\\n {{userLock.customer}}\\r\\n \\r\\n \\r\\n {{appLabels.audit}}\\r\\n {{userLock.lastAuditCollection}}\\r\\n \\r\\n \\r\\n {{appLabels.dateCreated}}\\r\\n {{userLock.created | date:'d/M/yyyy h:mm:ss a':currentTimeZoneName}}\\r\\n \\r\\n \\r\\n
\\r\\n TOTAL RECORDS: {{userLocks?.length || 0}}\\r\\n \\r\\n \\r\\n \\r\\n No 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 {{col.header}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n User\\r\\n {{lockUser.lockUserName}} 0\\\"> {{appLabels.arbitraryUserInidicator}}\\r\\n \\r\\n \\r\\n Code\\r\\n
\\r\\n
\\r\\n {{constSecretHidden}}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Code Type\\r\\n {{lockUser.codeTypeDescription}}\\r\\n \\r\\n \\r\\n Date/Time Assigned\\r\\n {{lockUser.added | date:'d/M/yyyy h:mm:ss a':currentTimeZoneName}}\\r\\n \\r\\n \\r\\n
\\r\\n TOTAL RECORDS: {{lockUsers?.length || 0}}\\r\\n \\r\\n \\r\\n \\r\\n No records found\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

{{appLabels.activateMultiLocks}}

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{\\r\\nlock.serialNumber\\r\\n }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n

{{appLabels.activateLock}}

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

{{appLabels.deActivateLock}}

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

{{appLabels.cloneLock}}

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

{{appLabels.resendUserCode}}

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

{{appLabels.changeSeedCode}}

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

{{appLabels.generateAccessCode}}

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

{{appLabels.removeAccessCode}}

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

{{appLabels.editLockDetails}}

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t
  1. \\r\\n\\t\\t\\t\\t\\t\\t\\t{{ pageTitle }}\\r\\n\\t\\t\\t\\t\\t\\t
  2. \\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
{{appLabels.profileInfoTitle}}
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t{{loggedInUserName}}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t{{loggedInUserRole}}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
{{appLabels.lockCodeCountTitle}}
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t

{{appLabels.lockCodeCountSubTitle}}

\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n
\\r\\n\"","module.exports = \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
    \\r\\n
  1. \\r\\n {{ pageTitle }}\\r\\n
  2. \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
  3. \\r\\n \\r\\n {{ pageTitle }}\\r\\n \\r\\n \\r\\n \\r\\n
  4. \\r\\n
    \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
SELECT USER TYPE  |
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{(userRole==roles.globalAdmin)?(selectedUser?.userName):(selectedLockUser?.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 \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n UserName\\r\\n {{user.userName}}\\r\\n \\r\\n \\r\\n First Name\\r\\n {{user.firstName}}\\r\\n \\r\\n \\r\\n Last Name\\r\\n {{user.lastName}}\\r\\n \\r\\n \\r\\n Role\\r\\n {{user.rolesToDisplay}}\\r\\n \\r\\n \\r\\n Email\\r\\n {{user.email}}\\r\\n \\r\\n \\r\\n Phone\\r\\n {{user.phone}}\\r\\n \\r\\n \\r\\n Company\\r\\n {{user.company}}\\r\\n \\r\\n \\r\\n Group\\r\\n {{user.group}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n TOTAL RECORDS: {{ownerUsersAuditCollectors?.length || 0}}\\r\\n \\r\\n \\r\\n \\r\\n No 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 {{col.header}}\\r\\n \\r\\n \\r\\n {{appLabels.userDetails}}\\r\\n {{appLabels.userLocks}}\\r\\n {{appLabels.newActivationCode}}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n User\\r\\n {{lockUser.name}} 0\\\"> {{appLabels.arbitraryUserInidicator}}\\r\\n \\r\\n \\r\\n Role\\r\\n {{roles.lockUserLabel}}\\r\\n \\r\\n \\r\\n Email\\r\\n {{lockUser.email}}\\r\\n \\r\\n \\r\\n Phone\\r\\n {{lockUser.phone}}\\r\\n \\r\\n \\r\\n Company\\r\\n {{lockUser.company}}\\r\\n \\r\\n \\r\\n Group\\r\\n {{lockUser.groups}}\\r\\n \\r\\n \\r\\n {{appLabels.editUserDetails}}\\r\\n {{appLabels.clickToEdit}} >\\r\\n \\r\\n \\r\\n View User Locks\\r\\n {{appLabels.clickToView}} >\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n User\\r\\n {{lockUser.userName}}\\r\\n \\r\\n \\r\\n First Name\\r\\n {{lockUser.firstName}}\\r\\n \\r\\n \\r\\n Last Name\\r\\n {{lockUser.lastName}}\\r\\n \\r\\n \\r\\n Role\\r\\n {{lockUser.rolesToDisplay}}\\r\\n \\r\\n \\r\\n Email\\r\\n {{lockUser.email}}\\r\\n \\r\\n \\r\\n Phone\\r\\n {{lockUser.phone}}\\r\\n \\r\\n \\r\\n Company\\r\\n {{lockUser.company}}\\r\\n \\r\\n \\r\\n Group\\r\\n {{lockUser.groups}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n User\\r\\n {{lockUser.userName}}\\r\\n \\r\\n \\r\\n First Name\\r\\n {{lockUser.firstName}}\\r\\n \\r\\n \\r\\n Last Name\\r\\n {{lockUser.lastName}}\\r\\n \\r\\n \\r\\n Role\\r\\n {{lockUser.rolesToDisplay}}\\r\\n \\r\\n \\r\\n Email\\r\\n {{lockUser.email}}\\r\\n \\r\\n \\r\\n Phone\\r\\n {{lockUser.phone}}\\r\\n \\r\\n \\r\\n Company\\r\\n {{lockUser.company}}\\r\\n \\r\\n \\r\\n Group\\r\\n {{lockUser.groups}}\\r\\n \\r\\n \\r\\n {{appLabels.editUserDetails}}\\r\\n {{appLabels.clickToEdit}} >\\r\\n \\r\\n \\r\\n New Activation code \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n TOTAL RECORDS: {{nonAdminUsers?.length || 0}}\\r\\n \\r\\n \\r\\n \\r\\n No 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 {{col.header}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Lock ID\\r\\n {{userLock.unitIdNo}}\\r\\n \\r\\n \\r\\n Location\\r\\n {{userLock.location}}\\r\\n \\r\\n \\r\\n Unit Type\\r\\n {{userLock.unitType}}\\r\\n \\r\\n \\r\\n Code Type\\r\\n {{userLock.codeType}}\\r\\n \\r\\n \\r\\n Installed Date\\r\\n {{userLock.installedDate | date:'d/M/yyyy h:mm:ss a':currentTimeZoneName}}\\r\\n \\r\\n \\r\\n \\r\\n TOTAL RECORDS: {{userLocks?.length || 0}}\\r\\n \\r\\n \\r\\n \\r\\n No 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 {{col.header}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Lock ID\\r\\n {{userLock.lockSerialNumber}}\\r\\n \\r\\n \\r\\n Location\\r\\n {{userLock.lockLocation}}\\r\\n \\r\\n \\r\\n Assigned Date\\r\\n {{userLock.added | date:'d/M/yyyy h:mm:ss a':currentTimeZoneName}}\\r\\n \\r\\n \\r\\n \\r\\n TOTAL RECORDS: {{distinctUserLocks?.length || 0}}\\r\\n \\r\\n \\r\\n \\r\\n No 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

{{labelAddNonLockUser}}

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

{{appLabels.addLockUser}}

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

{{labelDeleteNonLockUser}}

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

{{appLabels.convertLockUser}}

\\r\\n
\\r\\n
\\r\\n
{{appLabels.convertLockUserDescription}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n

{{appLabels.deleteLockUser}}

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

{{appLabels.createLockUserGroup}}

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

{{appLabels.deleteLockUserGroup}}

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

{{appLabels.resendUserCode}}

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

{{appLabels.editUserDetails}}

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","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 { Injectable } from '@angular/core';\r\n\r\n/** Gets constants for special characters/symbols. */\r\nexport const SpecialChars = {\r\n /** , comma symbol */\r\n comma: ',',\r\n /** , comma symbol followed by single whitespace*/\r\n commaWhitespace: ', '\r\n};\r\n\r\n/** Gets constants for Toastr notfication properties. */\r\nexport const Toastr = {\r\n /** Position on the UI to display the success notification. */\r\n successPosition: 'toast-top-center',\r\n /** Timeout in milliseconds to display the success notification. */\r\n successTimeout: 3000,\r\n\r\n /** Position on the UI to display the info notification. */\r\n infoPosition: 'toast-top-center',\r\n /** Timeout in milliseconds to display the info notification. */\r\n infoTimeout: 10000,\r\n\r\n /** Position on the UI to display the warning notification. */\r\n warningPosition: 'toast-top-center',\r\n /** Timeout in milliseconds to display the warning notification. */\r\n warningTimeout: 10000,\r\n\r\n /** Position on the UI to display the error notification. */\r\n errorPosition: 'toast-top-center',\r\n /** Timeout in milliseconds to display the error notification. */\r\n errorTimeout: 10000\r\n};\r\n\r\n/** Gets constants for general purpose. */\r\nexport const Generic = {\r\n /** Shorter error string. */\r\n shortErrorString: 'Error occured',\r\n /** Phone. */\r\n phone: 'phone',\r\n /** eMail. */\r\n email: 'email',\r\n /** user. */\r\n user: 'User',\r\n /** Group. */\r\n group: 'Group',\r\n /** 'Code' as a type of message to be sent to the user. */\r\n messageTypeCode: 'code',\r\n /** 'Code' as a type of message to be sent to the user. */\r\n messageTypeArbitraryCode: 'arbitrarycode',\r\n /** Number of rows per page. */\r\n rowsPerPage: 10,\r\n /** Table height. */\r\n tableHeight: '200px',\r\n /** Count of locks to activate by GlobalAdmin user. */\r\n minCountOfLocksToActivateByAdmin: 1,\r\n /** Assigned locks. */\r\n AssignedLocks: 'AssignedLocks',\r\n single: 'Single',\r\n multiple: 'Multiple'\r\n};\r\n\r\n/** Gets constants for various types of Lock code. */\r\nexport const LockCodeType = {\r\n /** Arbitrary. */\r\n arbitrary: 'Arbitrary',\r\n /** Perpetual. */\r\n perpetual: 'Perpetual',\r\n /** Daily. */\r\n daily: 'Daily',\r\n /** Weekly. */\r\n weekly: 'Weekly'\r\n};\r\n\r\n/** Gets constants for various types of Lock code. */\r\nexport const LockCodeTypeDisplay = {\r\n /** Arbitrary. */\r\n arbitrary: 'Master Code User',\r\n /** Perpetual. */\r\n perpetual: 'Unit',\r\n /** Daily. */\r\n daily: 'Daily',\r\n /** Weekly. */\r\n weekly: 'Weekly'\r\n};\r\n\r\n/** Gets constants for various types of Lock Interface. */\r\nexport const LockInterface = {\r\n /** No. */\r\n no: 0,\r\n /** Undefined. */\r\n undefined: 1,\r\n /** Videofied. */\r\n videofied: 2,\r\n /** Ajax. */\r\n ajax: 3\r\n};\r\n\r\n/** Gets constants for various types of Lock Interface. */\r\nexport const LockInterfaceDisplay = {\r\n /** No. */\r\n no: 'No Interface',\r\n /** Undefined. */\r\n undefined: 'Interface',\r\n /** Videofied. */\r\n videofied: 'Videofied Alarm Interface',\r\n /** Ajax. */\r\n ajax: 'Ajax Ready Alarm Interface'\r\n};\r\n\r\n/** Gets constants for various types of Lock. */\r\nexport const LockType = {\r\n /** Ajax Ready External Alarm Keypad. */\r\n ajaxReadyExternalAlarmKeypad: 'Ajax Ready External Alarm Keypad',\r\n /** Block Lock. */\r\n blockLock: 'Block Lock',\r\n /** Block Lock Pro. */\r\n blockLockPro: 'Block Lock Pro',\r\n /** Face Fix Key Safe. */\r\n faceFix: 'Face Fix Key Safe',\r\n /** Face Fix Key Safe V2. */\r\n faceFixV2: 'Face Fix Key Safe V2',\r\n /** Face Fix Pro XL.**/\r\n faceFixProXl: 'Face Fix Pro XL',\r\n /** S-Trap Key Safe V2.**/\r\n sTrapV2: 'S-Trap Key Safe V2',\r\n /** Letterbox Key Safe. */\r\n letterbox: 'Letterbox Key Safe',\r\n /** Face Fix. */\r\n lockingBar: 'Locking Bar',\r\n /** Lock Converter. */\r\n lockConverter: 'Lock Converter',\r\n /** Security Door. */\r\n securityDoor: 'Security Door',\r\n /** Security Door V2. */\r\n securityDoorV2: 'Security Door V2',\r\n /** Key Cabinet. */\r\n keyCabinet: 'Key Cabinet',\r\n /** Key Cabinet V2. */\r\n keyCabinetV2: 'Key Cabinet V2',\r\n /** Security Door. */\r\n externalAlarmKeyPad: 'External/Alarm Key Pad',\r\n /** Videofied External Alarm Keypad. */\r\n videofiedExternalAlarmKeypad: 'Videofied External Alarm Keypad',\r\n /** Face Fix Pro Key Safe. */\r\n faceFixProKeySafe: 'Face Fix Pro Key Safe',\r\n /** Key Cabinet(Small). */\r\n keyCabinetSmall: 'Key Cabinet (Small)'\r\n};\r\n\r\n/** Gets display constants for various types of Lock. */\r\nexport const LockTypeDisplay = {\r\n /** Ajax Ready External Alarm Keypad. */\r\n ajaxReadyExternalAlarmKeypad: 'Ajax Ready External Alarm Keypad',\r\n /** Block Lock. */\r\n blockLock: 'Block Lock',\r\n /** Block Lock Pro. */\r\n blockLockPro: 'Block Lock Pro',\r\n /** Face Fix Key Safe. */\r\n faceFix: 'Face Fix Key Safe',\r\n /** Face Fix Key Safe V2. */\r\n faceFixV2: 'Face Fix Key Safe V2',\r\n /** Face Fix Pro XL.**/\r\n faceFixProXl: 'Face Fix Pro XL',\r\n /** S-Trap Key Safe V2.**/\r\n sTrapV2: 'S-Trap Key Safe V2',\r\n /** Letterbox Key Safe. */\r\n letterbox: 'Letterbox Key Safe',\r\n /** Face Fix. */\r\n lockingBar: 'Locking Bar',\r\n /** Lock Converter. */\r\n lockConverter: 'Lock Converter',\r\n /** Security Door. */\r\n securityDoor: 'Security Door',\r\n /** Security Door V2. */\r\n securityDoorV2: 'Security Door V2',\r\n /** Key Cabinet. */\r\n keyCabinet: 'Key Cabinet',\r\n /** Key Cabinet V2. */\r\n keyCabinetV2: 'Key Cabinet V2',\r\n /** Security Door. */\r\n externalAlarmKeyPad: 'External/Alarm Key Pad',\r\n /** Videofied External Alarm Keypad. */\r\n videofiedExternalAlarmKeypad: 'Videofied External Alarm Keypad',\r\n /** Face Fix Pro Key Safe. */\r\n faceFixProKeySafe: 'Face Fix Pro Key Safe',\r\n /** Key Cabinet(Small). */\r\n keyCabinetSmall: 'Key Cabinet (Small)'\r\n};\r\n\r\n/** Gets constants for various statusses of Lock. */\r\nexport const LockStatus = {\r\n stock: 'Stock',\r\n onsite: 'Onsite',\r\n installed: 'Installed',\r\n inRepair: 'In Repair'\r\n};\r\n\r\n/** Gets display constants for various statusses of Lock. */\r\nexport const LockStatusDisplay = {\r\n stock: 'Stock',\r\n onsite: 'Onsite',\r\n installed: 'Installed',\r\n inRepair: 'In Repair'\r\n};\r\n\r\n/** Gets the constants for title of various components/pages. */\r\nexport const PageTitle = {\r\n /** Lock units page title.*/\r\n units: 'LIST MY LOCKS',\r\n /** Assigned lock units page title.*/\r\n assignedUnits: 'LIST ASSIGNED LOCKS',\r\n /** Users page title.*/\r\n users: 'MANAGE USERS',\r\n /** Lock Accees Code page title.*/\r\n codes: 'MANAGE CODES FOR MY LOCKS',\r\n /** User Groups page title.*/\r\n groups: 'MANAGE GROUPS',\r\n /** Audits page title.*/\r\n audits: 'LOCK AUDITS',\r\n /** User Profile page title.*/\r\n userProfile: 'MY ACCOUNT',\r\n /** Help documents page title. */\r\n helpPage: 'HELP DOCUMENTS'\r\n};\r\n\r\n/** HTTP Response status codes */\r\nexport const StatusCode = {\r\n /** Ok/Success. */\r\n Ok: 200\r\n};\r\n\r\n/** Provides the text string as properties for labels, table headers, etc., in the application. */\r\n@Injectable({ providedIn: 'root' })\r\nexport class AppLabels {\r\n lockId = 'LOCK ID';\r\n activationCode = 'ACTIVATION CODE';\r\n seedCode = 'SEED CODE';\r\n location = 'LOCATION';\r\n audit = 'AUDIT';\r\n event = 'EVENT';\r\n auditEvent = 'AUDIT EVENT';\r\n dateTime = 'DATE/TIME';\r\n dateInstalled = 'INSTALLATION DATE';\r\n dateAssigned = 'ASSIGNED DATE';\r\n dateCreated = 'CREATED DATE';\r\n create = 'CREATE';\r\n dateDeleted = 'DELETED DATE';\r\n customer = 'CUSTOMER';\r\n locksRange = 'LOCKS RANGE';\r\n notes = 'NOTES';\r\n user = 'USER';\r\n users = 'USERS';\r\n code = 'CODE';\r\n codeType = 'CODE TYPE';\r\n lockType = 'LOCK TYPE';\r\n role = 'ROLE';\r\n status = 'STATUS';\r\n email = 'EMAIL';\r\n confirmEmail = 'CONFIRM EMAIL'\r\n phone = 'PHONE';\r\n company = 'COMPANY';\r\n group = 'GROUP';\r\n groups = 'GROUPS';\r\n password = 'PASSWORD';\r\n name = 'NAME';\r\n newName = 'NEW NAME';\r\n userName = 'USERNAME';\r\n firstName = 'FIRST NAME';\r\n lastName = 'LAST NAME';\r\n groupName = 'GROUP NAME';\r\n groupMembers = 'GROUP MEMBERS';\r\n arbitraryCode = 'USER KEYPAD CODE';\r\n serialNumber = 'SERIAL NUMBER';\r\n lockSerialNumber = 'LOCK SERIAL NUMBER';\r\n cloneFrom = 'CLONE FROM';\r\n cloneTo = 'CLONE TO';\r\n clonedBy = 'CLONED BY';\r\n cloneOf = 'CLONE OF';\r\n currentSeedCode = 'CURRENT SEED CODE';\r\n newSeedCode = 'NEW SEED CODE';\r\n newSeedCodePlaceHolder = '16 CHARACTER HEX STRING';\r\n count = 'COUNT';\r\n countOfLocks = 'LOCKS COUNT';\r\n owner = 'OWNER';\r\n ownerUser = 'OWNER USER';\r\n ownerUserName = 'OWNER USERNAME';\r\n singleUser = 'Single user';\r\n multipleUsers = 'Multiple users';\r\n startingRange = 'STARTING RANGE';\r\n numberOfUsers = 'NUMBER OF USERS';\r\n includeAuditLogs = 'INCLUDE LOGS';\r\n includeAuditSummary = 'INCLUDE SUMMARY';\r\n fileFormat = \"FILE FORMAT\";\r\n fileFormatCsv = \"CSV\";\r\n fileFormatPdf = \"PDF\";\r\n earliestDate = 'EARLIEST DATE'\r\n latestDate = 'LATEST DATE'\r\n\r\n selectedLocks = 'VIEW SELECTED LOCKS';\r\n selectLock = 'SELECT LOCK';\r\n selectRole = 'SELECT ROLE';\r\n selectUser = 'SELECT USER';\r\n selectOwner = 'SELECT OWNER';\r\n selectLockType = 'SELECT LOCK TYPE';\r\n selectGroup = 'SELECT GROUP';\r\n selectCodeType = 'SELECT CODE TYPE';\r\n selectStart = 'SELECT START';\r\n selectEnd = 'SELECT END';\r\n selectInterface = 'SELECT INTERFACE'\r\n select = 'SELECT';\r\n\r\n yes = 'YES';\r\n no = 'NO';\r\n to = 'TO';\r\n\r\n downloadAuditLog = 'DOWNLOAD AUDIT LOGS';\r\n resendUserCode = 'RESEND MASTER LOCK ACCESS CODE';\r\n lockSyncRequired = 'SYNC REQUIRED';\r\n interface = 'INTERFACE';\r\n noInterface = \"NO\"\r\n undefinedInterface = \"INTERFACE\"\r\n ajaxReadyInterface = 'AJAX READY';\r\n videofiedInterface = 'VIDEOFIED';\r\n genArbitraryCode = 'GENERATE MASTER LOCK ACCESS CODE';\r\n changeSeedCode = 'GENERATE SEED CODE';\r\n changePassword = 'CHANGE PASSWORD';\r\n cloneLock = 'CLONE LOCK';\r\n activateLock = 'ACTIVATE LOCK';\r\n deActivateLock = 'DEACTIVATE LOCK';\r\n activateMultiLocks = 'ACTIVATE MULTIPLE LOCKS';\r\n manageCodes = 'MANAGE CODES';\r\n manageLock = 'MANAGE LOCK';\r\n lockDetails = 'LOCK DETAILS';\r\n auditDetails = 'AUDIT DETAILS';\r\n userDetails = 'USER DETAILS';\r\n userLocks = 'LOCKS';\r\n editUserDetails = 'EDIT USER DETAILS';\r\n editLockDetails = 'EDIT LOCK DETAILS';\r\n newActivationCode = 'NEW ACTIVATION CODE';\r\n generateAccessCode = 'ASSIGN A CODE';\r\n removeAccessCode = 'REMOVE A CODE';\r\n addToGroup = 'ADD TO GROUP';\r\n removeFromGroup = 'REMOVE FROM GROUP';\r\n createLockUserGroup = 'CREATE LOCK USER GROUP';\r\n deleteLockUserGroup = 'DELETE LOCK USER GROUP';\r\n addArbitaryLockUserToGroup = 'ADD ARIBTRARY LOCK USER TO GROUP';\r\n deleteArbitaryLockUserFromGroup = 'DELETE ARIBTRARY LOCK USER FROM GROUP';\r\n addUserByOwnerUser = 'ADD MANAGER/AUDIT COLLECTOR';\r\n deleteUserByOwnerUser = 'DELETE MANAGER/AUDIT COLLECTOR';\r\n addUserByUser = 'ADD AUDIT COLLECTOR';\r\n deleteUserByUser = 'DELETE AUDIT COLLECTOR';\r\n addUserByGlobalAdmin = 'ADD OWNER USER/AUDIT COLLECTOR';\r\n deleteUserByGlobalAdmin = 'DELETE OWNER USER';\r\n addLockUser = 'ADD LOCK USER';\r\n deleteLockUser = 'DELETE LOCK USER';\r\n addUser = 'ADD USER';\r\n deleteUser = 'DELETE USER';\r\n convertLockUser = 'CONVERT LOCK USER';\r\n blockGlobalAdminAccess = 'BLOCK PROFILE ACCESS BY ADMIN';\r\n\r\n clickToView = 'CLICK TO VIEW';\r\n clickToAssign = 'CLICK TO ASSIGN';\r\n clickToAdd = 'CLICK TO ADD';\r\n clickToEdit = 'CLICK TO EDIT';\r\n clickToRemove = 'CLICK TO REMOVE';\r\n clickToManage = 'CLICK TO MANAGE';\r\n\r\n assign = 'ASSIGN';\r\n cancel = 'CANCEL';\r\n\r\n backToGroups = 'BACK TO GROUPS';\r\n backToAudits = 'BACK TO LOCK AUDITS';\r\n backToLocks = 'BACK TO LOCKS';\r\n\r\n globalSearchPlaceholder = 'SEARCH - LOCK ID / LOCATION / USER';\r\n sendCodeTo = 'SEND CODE TO';\r\n\r\n maxArbitraryCodes = 'USER CODES';\r\n maxPerpetualCodes = 'UNIT CODES';\r\n maxDailyCodes = 'DAILY CODES';\r\n maxWeeklyCodes = 'WEEKLY CODES';\r\n\r\n contactInfoTitle = 'CONTACT INFORMATION';\r\n profileInfoTitle = 'PROFILE INFORMATION';\r\n lockCodeCountTitle = 'LOCK ACCESS CODE LIMITS';\r\n lockCodeCountSubTitle = 'SET THE MAXIMUM NUMBER OF CODES PER LOCK.';\r\n convertLockUserDescription = 'CONVERT TEMPORARY USER TO REGULAR USER AND SEND A MASTER LOCK ACCESS CODE.';\r\n\r\n manageLocksCardSubTitle = 'Activate, list & clone my Locks';\r\n manageLocksCardSubTitleForAdmin = 'List & activate multiple Locks';\r\n manageUsersCardSubTitle = 'Add users and manage individual users';\r\n codesCardSubTitle = 'Search for locks & issue lock codes to users and groups';\r\n manageGroupsCardSubTitle = 'Create user groups and manage individual users';\r\n auditsCardSubTitle = 'Identify your locks and view audits';\r\n viewAssignedLocksSubTitle = 'View assigned locks';\r\n\r\n contactInfoEmail = \"g.white@loxalsecurity.com\";\r\n\r\n arbitraryUserInidicator = \"(P)\";\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport * as AppConstants from './app.constants';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AppNotification {\r\n\t/**\r\n\t * Creates an instance of ErrorNotification.\r\n\t * @param toastr\r\n\t */\r\n\tconstructor(private toastr: ToastrService) { }\r\n\r\n\t/**\r\n\t * Displays success notification.\r\n\t * @param message success message to be displayed.\r\n\t * @param title Title of the notification.\r\n\t * */\r\n\tsuccess(message: string, title = 'Success') {\r\n\t\tthis.toastr.success(message, title, {\r\n\t\t\tpositionClass: AppConstants.Toastr.successPosition,\r\n\t\t\ttimeOut: AppConstants.Toastr.successTimeout\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Displays error notification.\r\n\t * @param message Error message to be displayed.\r\n\t * @param title Title of the notification.\r\n\t * @param timeOut Toast time to live in milliseconds.\r\n\t * */\r\n\terror(message: string, title = 'Someting went wrong', timeOut = AppConstants.Toastr.errorTimeout) {\r\n\t\tthis.toastr.error(message, title, {\r\n\t\t\tpositionClass: AppConstants.Toastr.errorPosition,\r\n\t\t\ttimeOut: timeOut\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Displays Information notification.\r\n\t * @param message Information message to be displayed.\r\n\t * @param title Title of the notification.\r\n\t */\r\n\tinfo(message: string, title = 'Information') {\r\n\t\tthis.toastr.info(message, title, {\r\n\t\t\tpositionClass: AppConstants.Toastr.infoPosition,\r\n\t\t\ttimeOut: AppConstants.Toastr.infoTimeout\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Displays warning notification.\r\n\t * @param message Information message to be displayed.\r\n\t * @param title Title of the notification.\r\n\t */\r\n\twarning(message: string, title = 'Warning') {\r\n\t\tthis.toastr.warning(message, title, {\r\n\t\t\tpositionClass: AppConstants.Toastr.warningPosition,\r\n\t\t\ttimeOut: AppConstants.Toastr.warningTimeout\r\n\t\t});\r\n\t}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TableModule } from 'primeng/table';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { FieldsetModule } from 'primeng/fieldset';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { MessageModule } from 'primeng/message';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\r\nimport { ScrollPanelModule } from 'primeng/scrollpanel';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { InputMaskModule } from 'primeng/inputmask';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { ChartModule } from 'primeng/chart';\r\nimport { EditorModule } from 'primeng/editor';\r\nimport { KeyFilterModule } from 'primeng/keyfilter';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\n\r\nimport {\r\n PanelModule,\r\n AccordionModule,\r\n ButtonModule,\r\n RadioButtonModule,\r\n CardModule\r\n} from 'primeng/primeng';\r\n@NgModule({\r\n imports: [\r\n CommonModule, MessagesModule, MessageModule,\r\n PanelModule, EditorModule,\r\n KeyFilterModule,\r\n InputSwitchModule,\r\n SidebarModule,\r\n TooltipModule,\r\n AccordionModule,\r\n ButtonModule,\r\n RadioButtonModule,\r\n CardModule,\r\n TableModule,\r\n InputTextModule,\r\n PaginatorModule,\r\n CheckboxModule,\r\n CalendarModule,\r\n InputMaskModule,\r\n AutoCompleteModule,\r\n DropdownModule,\r\n FieldsetModule,\r\n TabViewModule,\r\n BreadcrumbModule,\r\n ScrollPanelModule,\r\n DialogModule,\r\n ConfirmDialogModule,\r\n MultiSelectModule,\r\n ChartModule\r\n ],\r\n exports: [CommonModule,\r\n InputMaskModule,\r\n PanelModule, MessagesModule, MessageModule, TooltipModule,\r\n AccordionModule, EditorModule,\r\n KeyFilterModule,\r\n InputSwitchModule,\r\n SidebarModule,\r\n ButtonModule,\r\n RadioButtonModule,\r\n CardModule,\r\n TableModule,\r\n InputTextModule,\r\n PaginatorModule,\r\n CheckboxModule,\r\n CalendarModule,\r\n AutoCompleteModule,\r\n DropdownModule,\r\n FieldsetModule,\r\n TabViewModule,\r\n BreadcrumbModule,\r\n ScrollPanelModule,\r\n DialogModule,\r\n ConfirmDialogModule,\r\n MultiSelectModule,\r\n ChartModule\r\n ],\r\n declarations: []\r\n})\r\nexport class AppPrimeNGModule { }\r\n","import { Component } from '@angular/core';\r\nimport { Repository } from './models/repository';\r\nimport { UserLocksModel } from './models/UserLocksModel.model';\r\nimport { DataService } from './shared/dataService';\r\nimport { UserGetRequest } from './models/UserGetRequest.model';\r\n\r\n@Component({\r\n\tselector: 'app-root',\r\n\ttemplateUrl: './app.component.html'\r\n})\r\nexport class AppComponent {\r\n\ttitle = 'app';\r\n\thideMenu = true;\r\n\r\n\tconstructor(private dataService: DataService, private repo: Repository) {\r\n\t\tlet userRole = '';\r\n\t\tconst token = dataService.getAccessToken();\r\n\t\tconst decodedToken = dataService.getDecodedAccessToken(token);\r\n\r\n\t\tif (decodedToken) {\r\n\t\t\tuserRole = decodedToken.Role;\r\n\t\t}\r\n\r\n\t\tif (userRole && userRole != 'GlobalAdmin') {\r\n\t\t\tif (decodedToken && this.repo.lockUserGroups && this.repo.lockUserGroups.length == 0) {\r\n\t\t\t\tthis.repo.readLockUserGroups();\r\n\t\t\t}\r\n\t\t\tif (decodedToken && this.repo.lockUsers && this.repo.lockUsers.length == 0) {\r\n\t\t\t\tthis.repo.getLockUsers(new UserLocksModel());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (decodedToken && this.repo.users && this.repo.users.length == 0) {\r\n\t\t\tconst userRequest: UserGetRequest = { userName: decodedToken.unique_name };\r\n\t\t\tthis.repo.getUser(userRequest);\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tconst context = this;\r\n\t\twindow.addEventListener('beforeunload', function (e) {\r\n\t\t\tcontext.logout();\r\n\t\t});\r\n\t}\r\n\r\n\ttoggleMenu() {\r\n\t\tthis.hideMenu = !this.hideMenu;\r\n\t}\r\n\r\n\tlogout() {\r\n\t\tthis.repo.logout();\r\n\t}\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ModelModule } from './models/model.module';\r\nimport { AppComponent } from './app.component';\r\nimport { NavMenuComponent } from './nav-menu/nav-menu.component';\r\nimport { HomeComponent } from './home/home.component';\r\nimport { Login } from './login/login.component';\r\nimport { AppFooterComponent } from './footer/app-footer.component';\r\nimport { DataService } from './shared/dataService';\r\nimport { User } from './users/user.component';\r\nimport { AuthenticatedGuard } from './shared/authenticated.guard';\r\nimport { NgxSpinnerModule } from 'ngx-spinner';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { TokenInterceptorService } from './interceptors/token.interceptor.service';\r\nimport { UnitsComponent } from './units/units.component';\r\nimport { AppPrimeNGModule } from './app-primeng/app-primeng.module';\r\nimport { GroupsComponent } from './groups/groups.component';\r\nimport { AuditsComponent } from './audits/audits.component';\r\nimport { UserProfileComponent } from './user-profile/user-profile.component';\r\nimport { HelpComponent } from './help/help.component';\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tAppComponent,\r\n\t\tNavMenuComponent,\r\n\t\tHomeComponent,\r\n\t\tUnitsComponent,\r\n\t\tGroupsComponent,\r\n\t\tAuditsComponent,\r\n\t\tAppFooterComponent,\r\n\t\tLogin,\r\n\t\tUser,\r\n\t\tUserProfileComponent,\r\n\t\tHelpComponent\r\n\t],\r\n\timports: [\r\n\t\tBrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),\r\n\t\tHttpClientModule,\r\n\t\tFormsModule,\r\n\t\tReactiveFormsModule,\r\n\t\tBrowserAnimationsModule,\r\n\t\tNgxSpinnerModule,\r\n\t\tAppPrimeNGModule,\r\n\t\tToastrModule.forRoot(),\r\n\t\tRouterModule.forRoot([\r\n\t\t\t{ path: '', redirectTo: '/home', pathMatch: 'full', canActivate: [AuthenticatedGuard] },\r\n\t\t\t{ path: 'home', component: HomeComponent, pathMatch: 'full', canActivate: [AuthenticatedGuard] },\r\n\t\t\t{ path: 'units', component: UnitsComponent, canActivate: [AuthenticatedGuard] },\r\n\t\t\t{ path: 'login', component: Login, canActivate: [AuthenticatedGuard] },\r\n\t\t\t{ path: 'user', component: User, canActivate: [AuthenticatedGuard] },\r\n\t\t\t{ path: 'groups', component: GroupsComponent, canActivate: [AuthenticatedGuard] },\r\n\t\t\t{ path: 'audits', component: AuditsComponent, canActivate: [AuthenticatedGuard] },\r\n\t\t\t{ path: 'user-profile', component: UserProfileComponent, canActivate: [AuthenticatedGuard] },\r\n\t\t\t{ path: 'help', component: HelpComponent, canActivate: [AuthenticatedGuard] }\r\n\t\t]),\r\n\t\tModelModule\r\n\t],\r\n\tproviders: [DataService, AuthenticatedGuard, {\r\n\t\tprovide: HTTP_INTERCEPTORS,\r\n\t\tuseClass: TokenInterceptorService,\r\n\t\tmulti: true\r\n\t}],\r\n\tbootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","module.exports = \".table th {\\n background-color: #DC0000 !important;\\n border: 2px solid #fff;\\n border-collapse: separate;\\n}\\n\\n.table td {\\n border: 2px solid #fff;\\n border-collapse: separate;\\n}\\n\\n.table {\\n overflow: scroll;\\n}\\n\\n::ng-deep body .ui-datepicker table td {\\n padding: 0 !important;\\n}\\n\\n::ng-deep body .ui-datepicker .ui-timepicker {\\n padding: 0 !important;\\n}\\n\\n::ng-deep body .ui-datepicker .ui-datepicker-header .ui-datepicker-title {\\n margin: 0;\\n padding: 0;\\n}\\n\\n::ng-deep .ui-timepicker {\\n padding: 0 !important;\\n}\\n\\n::ng-deep body .ui-datepicker {\\n padding: 0.5em !important;\\n}\\n\\n::ng-deep body .ui-datepicker table td > a, body .ui-datepicker table td > span {\\n padding: 0 !important;\\n}\\n\\n::ng-deep .ui-datepicker td > span, .ui-datepicker td > a {\\n padding: 0 !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYXVkaXRzL0M6XFxVc2Vyc1xcVml2ZWtcXHNvdXJjZVxccmVwb3NcXExveGFsIFNlY3VyaXR5XFxMb2Nrc1xcQ2xpZW50QXBwL3NyY1xcYXBwXFxhdWRpdHNcXGF1ZGl0cy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvYXVkaXRzL2F1ZGl0cy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLG9DQUFBO0VBQ0Esc0JBQUE7RUFDQSx5QkFBQTtBQ0NGOztBREVBO0VBQ0Usc0JBQUE7RUFDQSx5QkFBQTtBQ0NGOztBREVBO0VBQ0UsZ0JBQUE7QUNDRjs7QURFQTtFQUNFLHFCQUFBO0FDQ0Y7O0FERUE7RUFDRSxxQkFBQTtBQ0NGOztBREVBO0VBQ0UsU0FBQTtFQUNBLFVBQUE7QUNDRjs7QURFQTtFQUNFLHFCQUFBO0FDQ0Y7O0FERUE7RUFDRSx5QkFBQTtBQ0NGOztBREVBO0VBQ0UscUJBQUE7QUNDRjs7QURFQTtFQUNFLHFCQUFBO0FDQ0YiLCJmaWxlIjoic3JjL2FwcC9hdWRpdHMvYXVkaXRzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnRhYmxlIHRoIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjREMwMDAwICFpbXBvcnRhbnQ7XHJcbiAgYm9yZGVyOiAycHggc29saWQgI2ZmZjtcclxuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xyXG59XHJcblxyXG4udGFibGUgdGQge1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkICNmZmY7XHJcbiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcclxufVxyXG5cclxuLnRhYmxlIHtcclxuICBvdmVyZmxvdzogc2Nyb2xsO1xyXG59XHJcblxyXG46Om5nLWRlZXAgYm9keSAudWktZGF0ZXBpY2tlciB0YWJsZSB0ZCB7XHJcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG46Om5nLWRlZXAgYm9keSAudWktZGF0ZXBpY2tlciAudWktdGltZXBpY2tlciB7XHJcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG46Om5nLWRlZXAgYm9keSAudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1oZWFkZXIgLnVpLWRhdGVwaWNrZXItdGl0bGUge1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG46Om5nLWRlZXAgLnVpLXRpbWVwaWNrZXIge1xyXG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcclxufVxyXG5cclxuOjpuZy1kZWVwIGJvZHkgLnVpLWRhdGVwaWNrZXIge1xyXG4gIHBhZGRpbmc6IDAuNWVtICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbjo6bmctZGVlcCBib2R5IC51aS1kYXRlcGlja2VyIHRhYmxlIHRkID4gYSwgYm9keSAudWktZGF0ZXBpY2tlciB0YWJsZSB0ZCA+IHNwYW4ge1xyXG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcclxufVxyXG5cclxuOjpuZy1kZWVwIC51aS1kYXRlcGlja2VyIHRkID4gc3BhbiwgLnVpLWRhdGVwaWNrZXIgdGQgPiBhIHtcclxuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcbn1cclxuIiwiLnRhYmxlIHRoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0RDMDAwMCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDJweCBzb2xpZCAjZmZmO1xuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4udGFibGUgdGQge1xuICBib3JkZXI6IDJweCBzb2xpZCAjZmZmO1xuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4udGFibGUge1xuICBvdmVyZmxvdzogc2Nyb2xsO1xufVxuXG46Om5nLWRlZXAgYm9keSAudWktZGF0ZXBpY2tlciB0YWJsZSB0ZCB7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbn1cblxuOjpuZy1kZWVwIGJvZHkgLnVpLWRhdGVwaWNrZXIgLnVpLXRpbWVwaWNrZXIge1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG59XG5cbjo6bmctZGVlcCBib2R5IC51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWhlYWRlciAudWktZGF0ZXBpY2tlci10aXRsZSB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuOjpuZy1kZWVwIC51aS10aW1lcGlja2VyIHtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG46Om5nLWRlZXAgYm9keSAudWktZGF0ZXBpY2tlciB7XG4gIHBhZGRpbmc6IDAuNWVtICFpbXBvcnRhbnQ7XG59XG5cbjo6bmctZGVlcCBib2R5IC51aS1kYXRlcGlja2VyIHRhYmxlIHRkID4gYSwgYm9keSAudWktZGF0ZXBpY2tlciB0YWJsZSB0ZCA+IHNwYW4ge1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG59XG5cbjo6bmctZGVlcCAudWktZGF0ZXBpY2tlciB0ZCA+IHNwYW4sIC51aS1kYXRlcGlja2VyIHRkID4gYSB7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbn0iXX0= */\"","import { Component, HostListener } from '@angular/core';\r\nimport { DataService } from '../shared/dataService';\r\nimport { Router } from '@angular/router';\r\nimport { UserLocksModel } from '../models/UserLocksModel.model';\r\nimport { Repository } from '../models/repository';\r\nimport * as $ from 'jquery';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuditResponseRecord } from '../models/AuditResponseRecord.model';\r\nimport * as AppConstants from '../common/app.constants';\r\nimport { FilterUtils } from 'primeng/components/utils/filterutils';\r\nimport { AppNotification } from '../common/app.notification';\r\nimport * as AppHelper from '../common/app.helper';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'audits',\r\n templateUrl: './audits.component.html',\r\n styleUrls: ['./audits.component.scss']\r\n})\r\nexport class AuditsComponent {\r\n tblDheight = AppConstants.Generic.tableHeight;\r\n userRole: string;\r\n\r\n /** Gets or sets the number of rows per page to be displayed. */\r\n rowsPerPage = AppConstants.Generic.rowsPerPage;\r\n\r\n /** Gets or sets the title for the Units page.*/\r\n pageTitle = AppConstants.PageTitle.audits;\r\n\r\n viewUserLocks = false;\r\n showActivateLockDialog = false;\r\n showDownloadAuditLogsDialog = false;\r\n viewAudit = false;\r\n id = '';\r\n required = '';\r\n submitted = '';\r\n cols: any[];\r\n auditCols: any[];\r\n lockSerialNumbers = [];\r\n lockLocations = [];\r\n lockCustomers = [];\r\n lockInterface = [];\r\n lockStatuses = [];\r\n lockAuditEvents = [];\r\n\r\n fileFormats = [\r\n { label: this.appLabels.fileFormatCsv, value: this.appLabels.fileFormatCsv },\r\n { label: this.appLabels.fileFormatPdf, value: this.appLabels.fileFormatPdf }\r\n ];\r\n\r\n timeZone_dropDownValues = [\r\n { label: '(UTC-12:00) International Date Line West', value: 'Dateline Standard Time' },\r\n { label: '(UTC-11:00) Coordinated Universal Time-11', value: 'UTC-11' },\r\n { label: '(UTC-10:00) Aleutian Islands', value: 'Aleutian Standard Time' },\r\n { label: '(UTC-10:00) Hawaii', value: 'Hawaiian Standard Time' },\r\n { label: '(UTC-09:30) Marquesas Islands', value: 'Marquesas Standard Time' },\r\n { label: '(UTC-09:00) Alaska', value: 'Alaskan Standard Time' },\r\n { label: '(UTC-09:00) Coordinated Universal Time-09', value: 'UTC-09' },\r\n { label: '(UTC-08:00) Baja California', value: 'Pacific Standard Time (Mexico)' },\r\n { label: '(UTC-08:00) Coordinated Universal Time-08', value: 'UTC-08' },\r\n { label: '(UTC-08:00) Pacific Time (US & Canada)', value: 'Pacific Standard Time' },\r\n { label: '(UTC-07:00) Arizona', value: 'US Mountain Standard Time' },\r\n { label: '(UTC-07:00) Chihuahua, La Paz, Mazatlan', value: 'Mountain Standard Time (Mexico)' },\r\n { label: '(UTC-07:00) Mountain Time (US & Canada)', value: 'Mountain Standard Time' },\r\n { label: '(UTC-07:00) Yukon', value: 'Yukon Standard Time' },\r\n { label: '(UTC-06:00) Central America', value: 'Central America Standard Time' },\r\n { label: '(UTC-06:00) Central Time (US & Canada)', value: 'Central Standard Time' },\r\n { label: '(UTC-06:00) Easter Island', value: 'Easter Island Standard Time' },\r\n { label: '(UTC-06:00) Guadalajara, Mexico City, Monterrey', value: 'Central Standard Time (Mexico)' },\r\n { label: '(UTC-06:00) Saskatchewan', value: 'Canada Central Standard Time' },\r\n { label: '(UTC-05:00) Bogota, Lima, Quito, Rio Branco', value: 'SA Pacific Standard Time' },\r\n { label: '(UTC-05:00) Chetumal', value: 'Eastern Standard Time (Mexico)' },\r\n { label: '(UTC-05:00) Eastern Time (US & Canada)', value: 'Eastern Standard Time' },\r\n { label: '(UTC-05:00) Haiti', value: 'Haiti Standard Time' },\r\n { label: '(UTC-05:00) Havana', value: 'Cuba Standard Time' },\r\n { label: '(UTC-05:00) Indiana (East)', value: 'US Eastern Standard Time' },\r\n { label: '(UTC-05:00) Turks and Caicos', value: 'Turks and Caicos Standard Time' },\r\n { label: '(UTC-04:00) Asuncion', value: 'Paraguay Standard Time' },\r\n { label: '(UTC-04:00) Atlantic Time (Canada)', value: 'Atlantic Standard Time' },\r\n { label: '(UTC-04:00) Caracas', value: 'Venezuela Standard Time' },\r\n { label: '(UTC-04:00) Cuiaba', value: 'Central Brazilian Standard Time' },\r\n { label: '(UTC-04:00) Georgetown, La Paz, Manaus, San Juan', value: 'SA Western Standard Time' },\r\n { label: '(UTC-04:00) Santiago', value: 'Pacific SA Standard Time' },\r\n { label: '(UTC-03:30) Newfoundland', value: 'Newfoundland Standard Time' },\r\n { label: '(UTC-03:00) Araguaina', value: 'Tocantins Standard Time' },\r\n { label: '(UTC-03:00) Brasilia', value: 'E. South America Standard Time' },\r\n { label: '(UTC-03:00) Cayenne, Fortaleza', value: 'SA Eastern Standard Time' },\r\n { label: '(UTC-03:00) City of Buenos Aires', value: 'Argentina Standard Time' },\r\n { label: '(UTC-03:00) Greenland', value: 'Greenland Standard Time' },\r\n { label: '(UTC-03:00) Montevideo', value: 'Montevideo Standard Time' },\r\n { label: '(UTC-03:00) Punta Arenas', value: 'Magallanes Standard Time' },\r\n { label: '(UTC-03:00) Saint Pierre and Miquelon', value: 'Saint Pierre Standard Time' },\r\n { label: '(UTC-03:00) Salvador', value: 'Bahia Standard Time' },\r\n { label: '(UTC-02:00) Coordinated Universal Time-02', value: 'UTC-02' },\r\n { label: '(UTC-02:00) Mid-Atlantic - Old', value: 'Mid-Atlantic Standard Time' },\r\n { label: '(UTC-01:00) Azores', value: 'Azores Standard Time' },\r\n { label: '(UTC-01:00) Cabo Verde Is.', value: 'Cabo Verde Standard Time' },\r\n { label: '(UTC) Coordinated Universal Time', value: 'Coordinated Universal Time' },\r\n { label: '(UTC+00:00) Dublin, Edinburgh, Lisbon, London', value: 'GMT Standard Time' },\r\n { label: '(UTC+00:00) Monrovia, Reykjavik', value: 'Greenwich Standard Time' },\r\n { label: '(UTC+00:00) Sao Tome', value: 'Sao Tome Standard Time' },\r\n { label: '(UTC+01:00) Casablanca', value: 'Morocco Standard Time' },\r\n { label: '(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna', value: 'W. Europe Standard Time' },\r\n { label: '(UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague', value: 'Central Europe Standard Time' },\r\n { label: '(UTC+01:00) Brussels, Copenhagen, Madrid, Paris', value: 'Romance Standard Time' },\r\n { label: '(UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb', value: 'Central European Standard Time' },\r\n { label: '(UTC+01:00) West Central Africa', value: 'W. Central Africa Standard Time' },\r\n { label: '(UTC+02:00) Amman', value: 'Jordan Standard Time' },\r\n { label: '(UTC+02:00) Athens, Bucharest', value: 'GTB Standard Time' },\r\n { label: '(UTC+02:00) Beirut', value: 'Middle East Standard Time' },\r\n { label: '(UTC+02:00) Cairo', value: 'Egypt Standard Time' },\r\n { label: '(UTC+02:00) Chisinau', value: 'E. Europe Standard Time' },\r\n { label: '(UTC+02:00) Damascus', value: 'Syria Standard Time' },\r\n { label: '(UTC+02:00) Gaza, Hebron', value: 'West Bank Gaza Standard Time' },\r\n { label: '(UTC+02:00) Harare, Pretoria', value: 'South Africa Standard Time' },\r\n { label: '(UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius', value: 'FLE Standard Time' },\r\n { label: '(UTC+02:00) Jerusalem', value: 'Jerusalem Standard Time' },\r\n { label: '(UTC+02:00) Kaliningrad', value: 'Russia TZ 1 Standard Time' },\r\n { label: '(UTC+02:00) Khartoum', value: 'Sudan Standard Time' },\r\n { label: '(UTC+02:00) Tripoli', value: 'Libya Standard Time' },\r\n { label: '(UTC+02:00) Windhoek', value: 'Namibia Standard Time' },\r\n { label: '(UTC+03:00) Baghdad', value: 'Arabic Standard Time' },\r\n { label: '(UTC+03:00) Istanbul', value: 'Turkey Standard Time' },\r\n { label: '(UTC+03:00) Kuwait, Riyadh', value: 'Arab Standard Time' },\r\n { label: '(UTC+03:00) Minsk', value: 'Belarus Standard Time' },\r\n { label: '(UTC+03:00) Moscow, St. Petersburg', value: 'Russia TZ 2 Standard Time' },\r\n { label: '(UTC+03:00) Nairobi', value: 'E. Africa Standard Time' },\r\n { label: '(UTC+03:30) Tehran', value: 'Iran Standard Time' },\r\n { label: '(UTC+04:00) Abu Dhabi, Muscat', value: 'Arabian Standard Time' },\r\n { label: '(UTC+04:00) Astrakhan, Ulyanovsk', value: 'Astrakhan Standard Time' },\r\n { label: '(UTC+04:00) Baku', value: 'Azerbaijan Standard Time' },\r\n { label: '(UTC+04:00) Izhevsk, Samara', value: 'Russia TZ 3 Standard Time' },\r\n { label: '(UTC+04:00) Port Louis', value: 'Mauritius Standard Time' },\r\n { label: '(UTC+04:00) Saratov', value: 'Saratov Standard Time' },\r\n { label: '(UTC+04:00) Tbilisi', value: 'Georgian Standard Time' },\r\n { label: '(UTC+04:00) Volgograd', value: 'Volgograd Standard Time' },\r\n { label: '(UTC+04:00) Yerevan', value: 'Caucasus Standard Time' },\r\n { label: '(UTC+04:30) Kabul', value: 'Afghanistan Standard Time' },\r\n { label: '(UTC+05:00) Ashgabat, Tashkent', value: 'West Asia Standard Time' },\r\n { label: '(UTC+05:00) Ekaterinburg', value: 'Russia TZ 4 Standard Time' },\r\n { label: '(UTC+05:00) Islamabad, Karachi', value: 'Pakistan Standard Time' },\r\n { label: '(UTC+05:00) Qyzylorda', value: 'Qyzylorda Standard Time' },\r\n { label: '(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi', value: 'India Standard Time' },\r\n { label: '(UTC+05:30) Sri Jayawardenepura', value: 'Sri Lanka Standard Time' },\r\n { label: '(UTC+05:45) Kathmandu', value: 'Nepal Standard Time' },\r\n { label: '(UTC+06:00) Astana', value: 'Central Asia Standard Time' },\r\n { label: '(UTC+06:00) Dhaka', value: 'Bangladesh Standard Time' },\r\n { label: '(UTC+06:00) Omsk', value: 'Omsk Standard Time' },\r\n { label: '(UTC+06:30) Yangon (Rangoon)', value: 'Myanmar Standard Time' },\r\n { label: '(UTC+07:00) Bangkok, Hanoi, Jakarta', value: 'SE Asia Standard Time' },\r\n { label: '(UTC+07:00) Barnaul, Gorno-Altaysk', value: 'Altai Standard Time' },\r\n { label: '(UTC+07:00) Hovd', value: 'W. Mongolia Standard Time' },\r\n { label: '(UTC+07:00) Krasnoyarsk', value: 'Russia TZ 6 Standard Time' },\r\n { label: '(UTC+07:00) Novosibirsk', value: 'Novosibirsk Standard Time' },\r\n { label: '(UTC+07:00) Tomsk', value: 'Tomsk Standard Time' },\r\n { label: '(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi', value: 'China Standard Time' },\r\n { label: '(UTC+08:00) Irkutsk', value: 'Russia TZ 7 Standard Time' },\r\n { label: '(UTC+08:00) Kuala Lumpur, Singapore', value: 'Malay Peninsula Standard Time' },\r\n { label: '(UTC+08:00) Perth', value: 'W. Australia Standard Time' },\r\n { label: '(UTC+08:00) Taipei', value: 'Taipei Standard Time' },\r\n { label: '(UTC+08:00) Ulaanbaatar', value: 'Ulaanbaatar Standard Time' },\r\n { label: '(UTC+08:45) Eucla', value: 'Aus Central W. Standard Time' },\r\n { label: '(UTC+09:00) Chita', value: 'Transbaikal Standard Time' },\r\n { label: '(UTC+09:00) Osaka, Sapporo, Tokyo', value: 'Tokyo Standard Time' },\r\n { label: '(UTC+09:00) Pyongyang', value: 'North Korea Standard Time' },\r\n { label: '(UTC+09:00) Seoul', value: 'Korea Standard Time' },\r\n { label: '(UTC+09:00) Yakutsk', value: 'Russia TZ 8 Standard Time' },\r\n { label: '(UTC+09:30) Adelaide', value: 'Cen. Australia Standard Time' },\r\n { label: '(UTC+09:30) Darwin', value: 'AUS Central Standard Time' },\r\n { label: '(UTC+10:00) Brisbane', value: 'E. Australia Standard Time' },\r\n { label: '(UTC+10:00) Canberra, Melbourne, Sydney', value: 'AUS Eastern Standard Time' },\r\n { label: '(UTC+10:00) Guam, Port Moresby', value: 'West Pacific Standard Time' },\r\n { label: '(UTC+10:00) Hobart', value: 'Tasmania Standard Time' },\r\n { label: '(UTC+10:00) Vladivostok', value: 'Russia TZ 9 Standard Time' },\r\n { label: '(UTC+10:30) Lord Howe Island', value: 'Lord Howe Standard Time' },\r\n { label: '(UTC+11:00) Bougainville Island', value: 'Bougainville Standard Time' },\r\n { label: '(UTC+11:00) Chokurdakh', value: 'Russia TZ 10 Standard Time' },\r\n { label: '(UTC+11:00) Magadan', value: 'Magadan Standard Time' },\r\n { label: '(UTC+11:00) Norfolk Island', value: 'Norfolk Standard Time' },\r\n { label: '(UTC+11:00) Sakhalin', value: 'Sakhalin Standard Time' },\r\n { label: '(UTC+11:00) Solomon Is., New Caledonia', value: 'Central Pacific Standard Time' },\r\n { label: '(UTC+12:00) Anadyr, Petropavlovsk-Kamchatsky', value: 'Russia TZ 11 Standard Time' },\r\n { label: '(UTC+12:00) Auckland, Wellington', value: 'New Zealand Standard Time' },\r\n { label: '(UTC+12:00) Coordinated Universal Time+12', value: 'UTC+12' },\r\n { label: '(UTC+12:00) Fiji', value: 'Fiji Standard Time' },\r\n { label: '(UTC+12:00) Petropavlovsk-Kamchatsky - Old', value: 'Kamchatka Standard Time' },\r\n { label: '(UTC+12:45) Chatham Islands', value: 'Chatham Islands Standard Time' },\r\n { label: '(UTC+13:00) Coordinated Universal Time+13', value: 'UTC+13' },\r\n { label: '(UTC+13:00) Nukualofa', value: 'Tonga Standard Time' },\r\n { label: '(UTC+13:00) Samoa', value: 'Samoa Standard Time' },\r\n { label: '(UTC+14:00) Kiritimati Island', value: 'Line Islands Standard Time' }\r\n ];\r\n\r\n searchAuditForm: FormGroup;\r\n preferredTimeZoneForm: FormGroup;\r\n searchLockAuditsForm: FormGroup;\r\n downloadAuditLogForm: FormGroup;\r\n\r\n selViewAuditRec: UserLocksModel;\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event?) {\r\n this.tblDheight = $(window).height() - 260 + 'px';\r\n }\r\n\r\n constructor(private data: DataService, private router: Router, private repo: Repository,\r\n private formBuilder: FormBuilder, private spinner: NgxSpinnerService, private toastr: ToastrService,\r\n private appLabels: AppConstants.AppLabels, private appNotification: AppNotification,\r\n private apptimeZone: AppHelper.AppTimeZone, private appHelper: AppHelper.Helper) {\r\n this.viewAudit = false;\r\n this.selViewAuditRec = null;\r\n this.fetchLocks();\r\n this.tblDheight = $(window).height() - 260 + 'px';\r\n this.userRole = data.getLoginUserRole();\r\n\r\n this.searchAuditForm = this.formBuilder.group({\r\n lockUserName: [''],\r\n eventTypeDescription: [''],\r\n earliest: [''],\r\n latest: ['']\r\n });\r\n\r\n this.downloadAuditLogForm = this.getDownloadAuditLogForm();\r\n\r\n this.preferredTimeZoneForm = this.formBuilder.group({\r\n timeZone: [this.apptimeZone.currentTimeZoneName]\r\n });\r\n\r\n this.searchLockAuditsForm = this.formBuilder.group({\r\n searchText: ['']\r\n });\r\n\r\n FilterUtils['dateRangeFilter'] = (value, filter): boolean => {\r\n const startDateTime = this.searchAuditForm.controls['earliest'].value;\r\n const endDateTime = this.searchAuditForm.controls['latest'].value;\r\n\r\n if (this.appHelper.isNullOrUndefinedOrWhiteSpace(startDateTime)\r\n && this.appHelper.isNullOrUndefinedOrWhiteSpace(endDateTime)) {\r\n return true;\r\n }\r\n\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n\r\n if (!this.appHelper.isNullOrUndefinedOrWhiteSpace(startDateTime)\r\n && !this.appHelper.isNullOrUndefinedOrWhiteSpace(endDateTime)) {\r\n return new Date(value) >= new Date(startDateTime) && new Date(value) <= new Date(endDateTime);\r\n }\r\n else if (!this.appHelper.isNullOrUndefinedOrWhiteSpace(startDateTime)) {\r\n return new Date(value) >= new Date(startDateTime);\r\n }\r\n else if (!this.appHelper.isNullOrUndefinedOrWhiteSpace(endDateTime)) {\r\n return new Date(value) <= new Date(endDateTime);\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n\r\n FilterUtils['contains'] = (value, filter): boolean => {\r\n if (filter === undefined || filter === null || filter.trim() === '') {\r\n return true;\r\n }\r\n\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n\r\n return value.toString().toLowerCase().includes(filter.toString().toLowerCase());\r\n };\r\n\r\n this.cols = [\r\n { field: 'serialNumber', header: appLabels.lockId },\r\n { field: 'location', header: appLabels.location },\r\n { field: 'lastAuditCollection', header: appLabels.audit },\r\n { field: 'customer', header: appLabels.customer },\r\n { field: 'notes', header: appLabels.notes }\r\n ];\r\n\r\n this.auditCols = [\r\n { field: 'dateTime', header: this.appLabels.dateTime, filterMatchMode: 'dateRangeFilter' },\r\n { field: 'lockUserName', header: this.appLabels.user, filterMatchMode: 'contains' },\r\n { field: 'eventType', header: this.appLabels.event, filterMatchMode: 'contains' },\r\n ];\r\n }\r\n\r\n get auditDetails(): AuditResponseRecord[] {\r\n let auditRecords = this.repo.auditDetails;\r\n\r\n //Default sorting\r\n //if (auditRecords)\r\n // auditRecords = auditRecords.sort(function (a, b) {\r\n // return new Date(a.dateTime) > new Date(b.dateTime) ? -1 : 1;\r\n // });\r\n\r\n //auditRecords.forEach((auditDetail) => {\r\n // //auditDetail.dateTime = this.getDateBasedOnUserTimeZone(auditDetail.dateTime);\r\n // auditDetail.dateTime = new Date(auditDetail.dateTime).toLocaleString();\r\n //});\r\n return auditRecords;\r\n }\r\n\r\n get userLocks(): UserLocksModel[] {\r\n let userLocks = this.repo.locks;\r\n //userLocks.forEach((userLock) => {\r\n // userLock.lastAuditCollection = this.getValidDateOrEmtpyString(userLock.lastAuditCollection);\r\n //});\r\n\r\n const searchTextControl = this.searchLockAuditsForm.controls['searchText'];\r\n const searchText = searchTextControl ? searchTextControl.value.trim().toLowerCase() : '';\r\n\r\n userLocks = userLocks.filter(lock =>\r\n searchText === ''\r\n || (lock.serialNumber && lock.serialNumber.toLowerCase().includes(searchText))\r\n || (lock.location && lock.location.toLowerCase().includes(searchText))\r\n || (lock.customer && lock.customer.toLowerCase().includes(searchText))\r\n );\r\n\r\n return userLocks;\r\n }\r\n\r\n get currentTimeZoneOffset(): string {\r\n return this.apptimeZone.currentTimeZoneOffset;\r\n }\r\n\r\n get currentTimeZoneName(): string {\r\n return this.apptimeZone.currentTimeZoneName;\r\n }\r\n\r\n prepareAuditFilterData() {\r\n let userLocks = this.repo.locks;\r\n this.lockSerialNumbers = [];\r\n this.lockLocations = [];\r\n this.lockCustomers = [];\r\n this.lockInterface = [];\r\n this.lockStatuses = [];\r\n this.lockAuditEvents = [];\r\n\r\n let selectedLockSerialNumbers = [];\r\n let selectedLockLocations = [];\r\n let selectedLockCustomers = [];\r\n\r\n if (userLocks && userLocks.length > 0) {\r\n userLocks.forEach((userLock) => {\r\n if (!selectedLockSerialNumbers.includes(userLock.serialNumber) && userLock.serialNumber && userLock.serialNumber != '') {\r\n this.lockSerialNumbers.push(\r\n { label: userLock.serialNumber, value: userLock.serialNumber }\r\n );\r\n selectedLockSerialNumbers.push(userLock.serialNumber);\r\n }\r\n if (!selectedLockLocations.includes(userLock.location) && userLock.location && userLock.location.trim() != '') {\r\n this.lockLocations.push(\r\n { label: userLock.location, value: userLock.location }\r\n );\r\n selectedLockLocations.push(userLock.location);\r\n }\r\n if (!selectedLockCustomers.includes(userLock.customer) && userLock.customer && userLock.customer.trim() != '') {\r\n this.lockCustomers.push(\r\n { label: userLock.customer, value: userLock.customer }\r\n );\r\n selectedLockCustomers.push(userLock.customer);\r\n }\r\n });\r\n }\r\n this.lockInterface.push(\r\n { label: this.appLabels.yes, value: 1 },\r\n { label: this.appLabels.no, value: 0 }\r\n );\r\n\r\n this.lockStatuses.push(\r\n { label: AppConstants.LockStatusDisplay.stock, value: AppConstants.LockStatus.stock },\r\n { label: AppConstants.LockStatusDisplay.onsite, value: AppConstants.LockStatus.onsite },\r\n { label: AppConstants.LockStatusDisplay.installed, value: AppConstants.LockStatus.installed },\r\n { label: AppConstants.LockStatusDisplay.inRepair, value: AppConstants.LockStatus.inRepair }\r\n );\r\n\r\n this.lockAuditEvents.push(\r\n { label: 'ACCESS ALLOWED WITH DAILY CODE', value: 'Access allowed with daily code' },\r\n { label: 'ACCESS ALLOWED WITH UNIT CODE', value: 'Access allowed with unit code' },\r\n { label: 'ACCESS ALLOWED WITH USER CODE', value: 'Access allowed with user code' },\r\n { label: 'ACCESS ALLOWED WITH WEEKLY CODE', value: 'Access allowed with weekly code' },\r\n { label: 'ACCESS DENIED CANCELLED UNIT CODE', value: 'Access denied cancelled unit code' },\r\n { label: 'ACCESS DENIED EXPIRED DAILY CODE', value: 'Access denied expired daily code' },\r\n { label: 'ACCESS DENIED EXPIRED WEEKLY CODE', value: 'Access denied expired weekly code' },\r\n { label: 'ACCESS DENIED UNKNOWN CODE', value: 'Access denied unknown code' },\r\n { label: 'ALARM ARMED', value: 'Alarm armed' },\r\n { label: 'ALARM PAIRED', value: 'Alarm paired' },\r\n { label: 'AUDIT REQUESTED', value: 'Audit Requested' },\r\n { label: 'BATTERY VOLTAGE MEASURED', value: 'Battery voltage measured' },\r\n { label: 'DAILY CODE CANCELLATION FAIL ALREADY CANCELLED', value: 'Daily code cancellation fail already cancelled' },\r\n { label: 'DAILY CODE CANCELLATION FAIL ALREADY EXPIRED', value: 'Daily code cancellation fail already expired' },\r\n { label: 'DAILY CODE CANCELLATION FAIL DOES NOT EXIST', value: 'Daily code cancellation fail does not exist' },\r\n { label: 'DAILY CODE LIMIT SET', value: 'Daily code limit set' },\r\n { label: 'DAILY CODE LIMIT SET FAIL', value: 'Daily code limit set fail' },\r\n { label: 'DAILY CODE SUCCESSFULLY CANCELLED', value: 'Daily code successfully cancelled' },\r\n { label: 'DOOR CLOSED', value: 'Door Closed' },\r\n { label: 'DOOR OPENED ', value: 'Door Opened ' },\r\n { label: 'DOOR OPENED FROM INSIDE', value: 'Door Opened from inside' },\r\n { label: 'LAST RESORT CODE ENTERED', value: 'Last resort code entered' },\r\n { label: 'LATCH CLOSED', value: 'Latch Closed' },\r\n { label: 'RESET OCCURRED', value: 'Reset occurred' },\r\n { label: 'SEED CODE CHANGED', value: 'Seed code changed' },\r\n { label: 'SEED CODE CURRENT VALUE', value: 'Seed code current value' },\r\n { label: 'TAMPER SENSOR PAIRED', value: 'Tamper sensor paired' },\r\n { label: 'TIME SET', value: 'Time set' },\r\n { label: 'UNIT CODE CANCELLATION FAIL ALREADY CANCELLED', value: 'Unit code cancellation fail already cancelled' },\r\n { label: 'UNIT CODE CANCELLATION FAIL ALREADY EXPIRED', value: 'Unit code cancellation fail already expired' },\r\n { label: 'UNIT CODE CANCELLATION FAIL DOES NOT EXIST', value: 'Unit code cancellation fail does not exist' },\r\n { label: 'UNIT CODE LIMIT SET', value: 'Unit code limit set' },\r\n { label: 'UNIT CODE LIMIT SET FAIL', value: 'Unit code limit set fail' },\r\n { label: 'UNIT CODE SUCCESSFULLY CANCELLED', value: 'Unit code successfully cancelled' },\r\n { label: 'USER CODE ADDED', value: 'User code added' },\r\n { label: 'USER CODE ALREADY EXISTS', value: 'User code already exists' },\r\n { label: 'USER CODE DELETED', value: 'User code deleted' },\r\n { label: 'USER CODE LIMIT EXCEEDED', value: 'User code limit exceeded' },\r\n { label: 'USER CODE LIMIT SET', value: 'User code limit set' },\r\n { label: 'USER CODE LIMIT SET FAIL', value: 'User code limit set fail' },\r\n { label: 'USER CODE NOT ADDED NO SPACE', value: 'User code not added no space' },\r\n { label: 'USER CODE NOT DELETED DOES NOT EXIST', value: 'User code not deleted does not exist' },\r\n { label: 'WEEKLY CODE CANCELLATION FAIL ALREADY CANCELLED', value: 'Weekly code cancellation fail already cancelled' },\r\n { label: 'WEEKLY CODE CANCELLATION FAIL ALREADY EXPIRED', value: 'Weekly code cancellation fail already expired' },\r\n { label: 'WEEKLY CODE CANCELLATION FAIL DOES NOT EXIST', value: 'Weekly code cancellation fail does not exist' },\r\n { label: 'WEEKLY CODE LIMIT SET', value: 'Weekly code limit set' },\r\n { label: 'WEEKLY CODE LIMIT SET FAIL', value: 'Weekly code limit set fail' },\r\n { label: 'WEEKLY CODE SUCCESSFULLY CANCELLED', value: 'Weekly code successfully cancelled' }\r\n );\r\n\r\n this.downloadAuditLogForm.controls['lockSerialNumber'].setValue(selectedLockSerialNumbers);\r\n this.downloadAuditLogForm.controls['lockLocation'].setValue(selectedLockLocations);\r\n this.downloadAuditLogForm.controls['lockCustomer'].setValue(selectedLockCustomers);\r\n this.downloadAuditLogForm.controls['lockInterface'].setValue([1, 0]);\r\n this.downloadAuditLogForm.controls['lockStatus'].setValue([\r\n AppConstants.LockStatus.stock,\r\n AppConstants.LockStatus.onsite,\r\n AppConstants.LockStatus.installed,\r\n AppConstants.LockStatus.inRepair]\r\n );\r\n let selectedLockAuditEvents = [];\r\n this.lockAuditEvents.slice(0, 12).map((item) => selectedLockAuditEvents.push(item.value));\r\n this.downloadAuditLogForm.controls['eventTypeDescription'].setValue(selectedLockAuditEvents);\r\n }\r\n\r\n getDateBasedOnUserTimeZone(dateTime: string) {\r\n dateTime = this.getValidDateOrEmtpyString(dateTime);\r\n if (dateTime !== '') {\r\n const localDateTime = new Date(dateTime + 'Z');\r\n const localYear = localDateTime.getFullYear();\r\n const localMonth = localDateTime.getMonth() + 1;\r\n const localDate = localDateTime.getDate();\r\n const localDatePart = localYear + '-' + localMonth + '-' + localDate;\r\n const localHours = localDateTime.getHours();\r\n const localMinutes = localDateTime.getMinutes().toString().length == 1 ? '0' + localDateTime.getMinutes() : localDateTime.getMinutes();\r\n const localSeconds = localDateTime.getSeconds();\r\n const localTimePart = localHours + ':' + localMinutes + ':' + localSeconds;\r\n dateTime = localDatePart + ' ' + localTimePart;\r\n }\r\n return dateTime;\r\n }\r\n\r\n getValidDateOrEmtpyString(dateTime: string) {\r\n if (Date.parse(dateTime).toString() === 'NaN' || dateTime === '0001-01-01T00:00:00') {\r\n dateTime = '';\r\n }\r\n return dateTime.replace('T', ' ');\r\n }\r\n\r\n fetchLocks() {\r\n this.repo.getLocks();\r\n }\r\n\r\n viewLockAudit(lockRec: UserLocksModel) {\r\n const pageTitleSuffix = lockRec\r\n ? lockRec.location ? `${lockRec.serialNumber} - ${lockRec.location}` : lockRec.serialNumber\r\n : '';\r\n this.pageTitle = `Latest audit details for Lock : ${pageTitleSuffix}`;\r\n this.viewAudit = true;\r\n lockRec.lockSerialNumber = lockRec.serialNumber;\r\n this.selViewAuditRec = lockRec;\r\n lockRec.timeZoneId = this.apptimeZone.currentTimeZoneName;\r\n this.repo.getAuditDetails(lockRec);\r\n }\r\n\r\n getPreferredTimeZoneName(): string {\r\n const preferredTimeZone = this.preferredTimeZoneForm.controls['timeZone'];\r\n const preferredTimeZoneName = preferredTimeZone !== null && preferredTimeZone !== undefined && preferredTimeZone.value.trim() !== ''\r\n ? preferredTimeZone.value\r\n : this.apptimeZone.currentTimeZoneName;\r\n\r\n return preferredTimeZoneName;\r\n }\r\n\r\n backToLocks() {\r\n this.pageTitle = AppConstants.PageTitle.audits;\r\n this.viewAudit = false;\r\n this.selViewAuditRec = null;\r\n }\r\n\r\n openDownloadAuditLogsDialog() {\r\n this.prepareAuditFilterData();\r\n this.showDownloadAuditLogsDialog = true;\r\n }\r\n\r\n closeDownloadAuditLogsDialog() {\r\n this.showDownloadAuditLogsDialog = false;\r\n this.resetDownloadAuditLogForm();\r\n }\r\n\r\n resetDownloadAuditLogForm() {\r\n this.downloadAuditLogForm = this.getDownloadAuditLogForm();\r\n }\r\n\r\n getDownloadAuditLogForm() {\r\n return this.formBuilder.group({\r\n lockSerialNumber: [''],\r\n lockLocation: [''],\r\n lockCustomer: [''],\r\n //timeZoneId: [''],\r\n lockInterface: [],\r\n eventTypeDescription: [''],\r\n lockStatus: [],\r\n lockUserName: [''],\r\n reqSummary: [1],\r\n includeSummary: ['true'],\r\n inhibitTable: [0],\r\n includeAuditLogs: ['true'],\r\n returnCsv: [0],\r\n returnPdf: [0],\r\n mailCsv: [0],\r\n mailPdf: [0],\r\n earliest: [''],\r\n latest: [''],\r\n fileFormat: [this.appLabels.fileFormatCsv]\r\n });\r\n }\r\n\r\n downloadAuditLogs() {\r\n const separator = '|';\r\n const form = this.downloadAuditLogForm;\r\n const includeAuditLogs = form.controls['includeAuditLogs'].value;\r\n if (includeAuditLogs && (includeAuditLogs === 'true' || includeAuditLogs === true))\r\n form.controls['inhibitTable'].setValue(0);\r\n else\r\n form.controls['inhibitTable'].setValue(1);\r\n\r\n const includeSummary = form.controls['includeSummary'].value;\r\n if (includeSummary && (includeSummary === 'true' || includeSummary === true))\r\n form.controls['reqSummary'].setValue(1);\r\n else\r\n form.controls['reqSummary'].setValue(0);\r\n\r\n const lockLocation: [] = form.controls['lockLocation'].value;\r\n if (lockLocation && lockLocation.length > 0 && lockLocation.length !== this.lockLocations.length)\r\n form.controls['lockLocation'].setValue(lockLocation.join(separator));\r\n else\r\n form.controls['lockLocation'].setValue(null);\r\n\r\n const lockCustomer: [] = form.controls['lockCustomer'].value;\r\n if (lockCustomer && lockCustomer.length > 0 && lockCustomer.length !== this.lockCustomers.length)\r\n form.controls['lockCustomer'].setValue(lockCustomer.join(separator));\r\n else\r\n form.controls['lockCustomer'].setValue(null);\r\n\r\n const lockSerialNumber: [] = form.controls['lockSerialNumber'].value;\r\n if (lockSerialNumber && lockSerialNumber.length > 0 && lockSerialNumber.length !== this.lockSerialNumbers.length)\r\n form.controls['lockSerialNumber'].setValue(lockSerialNumber.join(separator));\r\n else\r\n form.controls['lockSerialNumber'].setValue(null);\r\n\r\n const eventTypeDescription: [] = form.controls['eventTypeDescription'].value;\r\n if (eventTypeDescription && eventTypeDescription.length > 0 && eventTypeDescription.length !== this.lockAuditEvents.length)\r\n form.controls['eventTypeDescription'].setValue(eventTypeDescription.join(separator));\r\n else\r\n form.controls['eventTypeDescription'].setValue(null);\r\n\r\n const lockStatus: [] = form.controls['lockStatus'].value;\r\n if (lockStatus && lockStatus.length > 0 && lockStatus.length !== this.lockStatuses.length)\r\n form.controls['lockStatus'].setValue(lockStatus.join(separator));\r\n else\r\n form.controls['lockStatus'].setValue(null);\r\n\r\n const lockInterface: [] = form.controls['lockInterface'].value;\r\n if (lockInterface && lockInterface.length > 0 && lockInterface.length !== this.lockInterface.length)\r\n form.controls['lockInterface'].setValue(parseInt(lockInterface.toString()));\r\n else\r\n form.controls['lockInterface'].setValue(null);\r\n\r\n const lockUserName = form.controls['lockUserName'].value;\r\n if (this.appHelper.isNullOrUndefinedOrWhiteSpace(lockUserName))\r\n form.controls['lockUserName'].setValue(null);\r\n\r\n if (form.controls['fileFormat'].value == this.appLabels.fileFormatPdf)\r\n form.controls['returnPdf'].setValue(1);\r\n else\r\n form.controls['returnPdf'].setValue(0);\r\n\r\n if (form.controls['fileFormat'].value == this.appLabels.fileFormatCsv)\r\n form.controls['returnCsv'].setValue(1);\r\n else\r\n form.controls['returnCsv'].setValue(0);\r\n\r\n const request = form.value;\r\n this.repo.downloadAudit(request).subscribe((data: BlobPart) => {\r\n //const blob = new Blob([data], { type: 'application/pdf' });\r\n if (data === null || data === undefined) {\r\n this.appNotification.info('No audits found for the given search paramters.')\r\n return true;\r\n }\r\n\r\n var downloadURL = window.URL.createObjectURL(data);\r\n var link = document.createElement('a');\r\n link.href = downloadURL;\r\n link.download = 'LoxalAuditReport' + new Date().toISOString().replace(/-/g, '').replace(/:/g, '').replace(/T/g, '').slice(0, 14) + '.' + form.controls['fileFormat'].value.toLowerCase();\r\n link.click();\r\n }, (err) => {\r\n this.toastr.error(\"Download failed.\", \"Something went wrong\");\r\n console.error('HTTP Error ', err);\r\n });\r\n\r\n this.closeDownloadAuditLogsDialog();\r\n this.appNotification.info('Audit report request submitted. File shall be downloaded once generated.');\r\n }\r\n\r\n emailAuditLogsCsv() {\r\n this.selViewAuditRec.mailCsv = 1;\r\n this.selViewAuditRec.mailPdf = 0;\r\n\r\n this.emailAuditLogs();\r\n }\r\n\r\n emailAuditLogsPdf() {\r\n this.selViewAuditRec.mailCsv = 0;\r\n this.selViewAuditRec.mailPdf = 1;\r\n\r\n this.emailAuditLogs();\r\n }\r\n\r\n emailAuditLogs() {\r\n const request = this.selViewAuditRec;\r\n \r\n request.lockUserName = this.searchAuditForm.controls['lockUserName'].value\r\n ? this.searchAuditForm.controls['lockUserName'].value\r\n : null;\r\n request.eventTypeDescription = this.searchAuditForm.controls['eventTypeDescription'].value\r\n ? this.searchAuditForm.controls['eventTypeDescription'].value\r\n : null;\r\n request.earliest = this.searchAuditForm.controls['earliest'].value\r\n ? this.searchAuditForm.controls['earliest'].value\r\n : null;\r\n request.latest = this.searchAuditForm.controls['latest'].value\r\n ? this.searchAuditForm.controls['latest'].value\r\n : null;\r\n\r\n request.timeZoneId = this.getPreferredTimeZoneName();\r\n\r\n this.repo.getAuditDetails(request);\r\n this.appNotification.success('Email request submitted.');\r\n }\r\n\r\n onPreferredTimeZoneChange(event) {\r\n if (event && event.value) {\r\n const request = this.selViewAuditRec;\r\n request.mailPdf = 0;\r\n request.timeZoneId = this.getPreferredTimeZoneName();\r\n\r\n this.repo.getAuditDetails(request);\r\n }\r\n }\r\n\r\n searchLockAudits() {\r\n this.userLocks;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n/** Gets constants for special characters/symbols. */\r\nexport const SpecialChars = {\r\n /** , comma symbol */\r\n comma: ',',\r\n /** , comma symbol followed by single whitespace*/\r\n commaWhitespace: ', '\r\n};\r\n\r\n/** Gets constants for Toastr notfication properties. */\r\nexport const Toastr = {\r\n /** Position on the UI to display the success notification. */\r\n successPosition: 'toast-top-center',\r\n /** Timeout in milliseconds to display the success notification. */\r\n successTimeout: 3000,\r\n\r\n /** Position on the UI to display the info notification. */\r\n infoPosition: 'toast-top-center',\r\n /** Timeout in milliseconds to display the info notification. */\r\n infoTimeout: 10000,\r\n\r\n /** Position on the UI to display the warning notification. */\r\n warningPosition: 'toast-top-center',\r\n /** Timeout in milliseconds to display the warning notification. */\r\n warningTimeout: 10000,\r\n\r\n /** Position on the UI to display the error notification. */\r\n errorPosition: 'toast-top-center',\r\n /** Timeout in milliseconds to display the error notification. */\r\n errorTimeout: 10000\r\n};\r\n\r\n/** Gets constants for general purpose. */\r\nexport const Generic = {\r\n /** Shorter error string. */\r\n shortErrorString: 'Error occured',\r\n /** Phone. */\r\n phone: 'phone',\r\n /** eMail. */\r\n email: 'email',\r\n /** user. */\r\n user: 'User',\r\n /** Group. */\r\n group: 'Group',\r\n /** 'Code' as a type of message to be sent to the user. */\r\n messageTypeCode: 'code',\r\n /** 'Code' as a type of message to be sent to the user. */\r\n messageTypeArbitraryCode: 'arbitrarycode',\r\n /** Number of rows per page. */\r\n rowsPerPage: 10,\r\n /** Table height. */\r\n tableHeight: '200px',\r\n /** Count of locks to activate by GlobalAdmin user. */\r\n minCountOfLocksToActivateByAdmin: 1,\r\n /** Assigned locks. */\r\n AssignedLocks: 'AssignedLocks',\r\n single: 'Single',\r\n multiple: 'Multiple'\r\n};\r\n\r\n/** Gets constants for various types of Lock code. */\r\nexport const LockCodeType = {\r\n /** Arbitrary. */\r\n arbitrary: 'Arbitrary',\r\n /** Perpetual. */\r\n perpetual: 'Perpetual',\r\n /** Daily. */\r\n daily: 'Daily',\r\n /** Weekly. */\r\n weekly: 'Weekly'\r\n};\r\n\r\n/** Gets constants for various types of Lock code. */\r\nexport const LockCodeTypeDisplay = {\r\n /** Arbitrary. */\r\n arbitrary: 'Master Code User',\r\n /** Perpetual. */\r\n perpetual: 'Unit',\r\n /** Daily. */\r\n daily: 'Daily',\r\n /** Weekly. */\r\n weekly: 'Weekly'\r\n};\r\n\r\n/** Gets constants for various types of Lock Interface. */\r\nexport const LockInterface = {\r\n /** No. */\r\n no: 0,\r\n /** Undefined. */\r\n undefined: 1,\r\n /** Videofied. */\r\n videofied: 2,\r\n /** Ajax. */\r\n ajax: 3\r\n};\r\n\r\n/** Gets constants for various types of Lock Interface. */\r\nexport const LockInterfaceDisplay = {\r\n /** No. */\r\n no: 'No Interface',\r\n /** Undefined. */\r\n undefined: 'Interface',\r\n /** Videofied. */\r\n videofied: 'Videofied Alarm Interface',\r\n /** Ajax. */\r\n ajax: 'Ajax Ready Alarm Interface'\r\n};\r\n\r\n/** Gets constants for various types of Lock. */\r\nexport const LockType = {\r\n /** Ajax Ready External Alarm Keypad. */\r\n ajaxReadyExternalAlarmKeypad: 'Ajax Ready External Alarm Keypad',\r\n /** Block Lock. */\r\n blockLock: 'Block Lock',\r\n /** Block Lock Pro. */\r\n blockLockPro: 'Block Lock Pro',\r\n /** Face Fix Key Safe. */\r\n faceFix: 'Face Fix Key Safe',\r\n /** Face Fix Key Safe V2. */\r\n faceFixV2: 'Face Fix Key Safe V2',\r\n /** Face Fix Pro XL.**/\r\n faceFixProXl: 'Face Fix Pro XL',\r\n /** S-Trap Key Safe V2.**/\r\n sTrapV2: 'S-Trap Key Safe V2',\r\n /** Letterbox Key Safe. */\r\n letterbox: 'Letterbox Key Safe',\r\n /** Face Fix. */\r\n lockingBar: 'Locking Bar',\r\n /** Lock Converter. */\r\n lockConverter: 'Lock Converter',\r\n /** Security Door. */\r\n securityDoor: 'Security Door',\r\n /** Security Door V2. */\r\n securityDoorV2: 'Security Door V2',\r\n /** Key Cabinet. */\r\n keyCabinet: 'Key Cabinet',\r\n /** Key Cabinet V2. */\r\n keyCabinetV2: 'Key Cabinet V2',\r\n /** Security Door. */\r\n externalAlarmKeyPad: 'External/Alarm Key Pad',\r\n /** Videofied External Alarm Keypad. */\r\n videofiedExternalAlarmKeypad: 'Videofied External Alarm Keypad',\r\n /** Face Fix Pro Key Safe. */\r\n faceFixProKeySafe: 'Face Fix Pro Key Safe',\r\n /** Key Cabinet(Small). */\r\n keyCabinetSmall: 'Key Cabinet (Small)'\r\n};\r\n\r\n/** Gets display constants for various types of Lock. */\r\nexport const LockTypeDisplay = {\r\n /** Ajax Ready External Alarm Keypad. */\r\n ajaxReadyExternalAlarmKeypad: 'Ajax Ready External Alarm Keypad',\r\n /** Block Lock. */\r\n blockLock: 'Block Lock',\r\n /** Block Lock Pro. */\r\n blockLockPro: 'Block Lock Pro',\r\n /** Face Fix Key Safe. */\r\n faceFix: 'Face Fix Key Safe',\r\n /** Face Fix Key Safe V2. */\r\n faceFixV2: 'Face Fix Key Safe V2',\r\n /** Face Fix Pro XL.**/\r\n faceFixProXl: 'Face Fix Pro XL',\r\n /** S-Trap Key Safe V2.**/\r\n sTrapV2: 'S-Trap Key Safe V2',\r\n /** Letterbox Key Safe. */\r\n letterbox: 'Letterbox Key Safe',\r\n /** Face Fix. */\r\n lockingBar: 'Locking Bar',\r\n /** Lock Converter. */\r\n lockConverter: 'Lock Converter',\r\n /** Security Door. */\r\n securityDoor: 'Security Door',\r\n /** Security Door V2. */\r\n securityDoorV2: 'Security Door V2',\r\n /** Key Cabinet. */\r\n keyCabinet: 'Key Cabinet',\r\n /** Key Cabinet V2. */\r\n keyCabinetV2: 'Key Cabinet V2',\r\n /** Security Door. */\r\n externalAlarmKeyPad: 'External/Alarm Key Pad',\r\n /** Videofied External Alarm Keypad. */\r\n videofiedExternalAlarmKeypad: 'Videofied External Alarm Keypad',\r\n /** Face Fix Pro Key Safe. */\r\n faceFixProKeySafe: 'Face Fix Pro Key Safe',\r\n /** Key Cabinet(Small). */\r\n keyCabinetSmall: 'Key Cabinet (Small)'\r\n};\r\n\r\n/** Gets constants for various statusses of Lock. */\r\nexport const LockStatus = {\r\n stock: 'Stock',\r\n onsite: 'Onsite',\r\n installed: 'Installed',\r\n inRepair: 'In Repair'\r\n};\r\n\r\n/** Gets display constants for various statusses of Lock. */\r\nexport const LockStatusDisplay = {\r\n stock: 'Stock',\r\n onsite: 'Onsite',\r\n installed: 'Installed',\r\n inRepair: 'In Repair'\r\n};\r\n\r\n/** Gets the constants for title of various components/pages. */\r\nexport const PageTitle = {\r\n /** Lock units page title.*/\r\n units: 'LIST MY LOCKS',\r\n /** Assigned lock units page title.*/\r\n assignedUnits: 'LIST ASSIGNED LOCKS',\r\n /** Users page title.*/\r\n users: 'MANAGE USERS',\r\n /** Lock Accees Code page title.*/\r\n codes: 'MANAGE CODES FOR MY LOCKS',\r\n /** User Groups page title.*/\r\n groups: 'MANAGE GROUPS',\r\n /** Audits page title.*/\r\n audits: 'LOCK AUDITS',\r\n /** User Profile page title.*/\r\n userProfile: 'MY ACCOUNT',\r\n /** Help documents page title. */\r\n helpPage: 'HELP DOCUMENTS'\r\n};\r\n\r\n/** HTTP Response status codes */\r\nexport const StatusCode = {\r\n /** Ok/Success. */\r\n Ok: 200\r\n};\r\n\r\n/** Provides the text string as properties for labels, table headers, etc., in the application. */\r\n@Injectable({ providedIn: 'root' })\r\nexport class AppLabels {\r\n lockId = 'LOCK ID';\r\n activationCode = 'ACTIVATION CODE';\r\n seedCode = 'SEED CODE';\r\n location = 'LOCATION';\r\n audit = 'AUDIT';\r\n event = 'EVENT';\r\n auditEvent = 'AUDIT EVENT';\r\n dateTime = 'DATE/TIME';\r\n dateInstalled = 'INSTALLATION DATE';\r\n dateAssigned = 'ASSIGNED DATE';\r\n dateCreated = 'CREATED DATE';\r\n create = 'CREATE';\r\n dateDeleted = 'DELETED DATE';\r\n customer = 'CUSTOMER';\r\n locksRange = 'LOCKS RANGE';\r\n notes = 'NOTES';\r\n user = 'USER';\r\n users = 'USERS';\r\n code = 'CODE';\r\n codeType = 'CODE TYPE';\r\n lockType = 'LOCK TYPE';\r\n role = 'ROLE';\r\n status = 'STATUS';\r\n email = 'EMAIL';\r\n confirmEmail = 'CONFIRM EMAIL'\r\n phone = 'PHONE';\r\n company = 'COMPANY';\r\n group = 'GROUP';\r\n groups = 'GROUPS';\r\n password = 'PASSWORD';\r\n name = 'NAME';\r\n newName = 'NEW NAME';\r\n userName = 'USERNAME';\r\n firstName = 'FIRST NAME';\r\n lastName = 'LAST NAME';\r\n groupName = 'GROUP NAME';\r\n groupMembers = 'GROUP MEMBERS';\r\n arbitraryCode = 'USER KEYPAD CODE';\r\n serialNumber = 'SERIAL NUMBER';\r\n lockSerialNumber = 'LOCK SERIAL NUMBER';\r\n cloneFrom = 'CLONE FROM';\r\n cloneTo = 'CLONE TO';\r\n clonedBy = 'CLONED BY';\r\n cloneOf = 'CLONE OF';\r\n currentSeedCode = 'CURRENT SEED CODE';\r\n newSeedCode = 'NEW SEED CODE';\r\n newSeedCodePlaceHolder = '16 CHARACTER HEX STRING';\r\n count = 'COUNT';\r\n countOfLocks = 'LOCKS COUNT';\r\n owner = 'OWNER';\r\n ownerUser = 'OWNER USER';\r\n ownerUserName = 'OWNER USERNAME';\r\n singleUser = 'Single user';\r\n multipleUsers = 'Multiple users';\r\n startingRange = 'STARTING RANGE';\r\n numberOfUsers = 'NUMBER OF USERS';\r\n includeAuditLogs = 'INCLUDE LOGS';\r\n includeAuditSummary = 'INCLUDE SUMMARY';\r\n fileFormat = \"FILE FORMAT\";\r\n fileFormatCsv = \"CSV\";\r\n fileFormatPdf = \"PDF\";\r\n earliestDate = 'EARLIEST DATE'\r\n latestDate = 'LATEST DATE'\r\n\r\n selectedLocks = 'VIEW SELECTED LOCKS';\r\n selectLock = 'SELECT LOCK';\r\n selectRole = 'SELECT ROLE';\r\n selectUser = 'SELECT USER';\r\n selectOwner = 'SELECT OWNER';\r\n selectLockType = 'SELECT LOCK TYPE';\r\n selectGroup = 'SELECT GROUP';\r\n selectCodeType = 'SELECT CODE TYPE';\r\n selectStart = 'SELECT START';\r\n selectEnd = 'SELECT END';\r\n selectInterface = 'SELECT INTERFACE'\r\n select = 'SELECT';\r\n\r\n yes = 'YES';\r\n no = 'NO';\r\n to = 'TO';\r\n\r\n downloadAuditLog = 'DOWNLOAD AUDIT LOGS';\r\n resendUserCode = 'RESEND MASTER LOCK ACCESS CODE';\r\n lockSyncRequired = 'SYNC REQUIRED';\r\n interface = 'INTERFACE';\r\n noInterface = \"NO\"\r\n undefinedInterface = \"INTERFACE\"\r\n ajaxReadyInterface = 'AJAX READY';\r\n videofiedInterface = 'VIDEOFIED';\r\n genArbitraryCode = 'GENERATE MASTER LOCK ACCESS CODE';\r\n changeSeedCode = 'GENERATE SEED CODE';\r\n changePassword = 'CHANGE PASSWORD';\r\n cloneLock = 'CLONE LOCK';\r\n activateLock = 'ACTIVATE LOCK';\r\n deActivateLock = 'DEACTIVATE LOCK';\r\n activateMultiLocks = 'ACTIVATE MULTIPLE LOCKS';\r\n manageCodes = 'MANAGE CODES';\r\n manageLock = 'MANAGE LOCK';\r\n lockDetails = 'LOCK DETAILS';\r\n auditDetails = 'AUDIT DETAILS';\r\n userDetails = 'USER DETAILS';\r\n userLocks = 'LOCKS';\r\n editUserDetails = 'EDIT USER DETAILS';\r\n editLockDetails = 'EDIT LOCK DETAILS';\r\n newActivationCode = 'NEW ACTIVATION CODE';\r\n generateAccessCode = 'ASSIGN A CODE';\r\n removeAccessCode = 'REMOVE A CODE';\r\n addToGroup = 'ADD TO GROUP';\r\n removeFromGroup = 'REMOVE FROM GROUP';\r\n createLockUserGroup = 'CREATE LOCK USER GROUP';\r\n deleteLockUserGroup = 'DELETE LOCK USER GROUP';\r\n addArbitaryLockUserToGroup = 'ADD ARIBTRARY LOCK USER TO GROUP';\r\n deleteArbitaryLockUserFromGroup = 'DELETE ARIBTRARY LOCK USER FROM GROUP';\r\n addUserByOwnerUser = 'ADD MANAGER/AUDIT COLLECTOR';\r\n deleteUserByOwnerUser = 'DELETE MANAGER/AUDIT COLLECTOR';\r\n addUserByUser = 'ADD AUDIT COLLECTOR';\r\n deleteUserByUser = 'DELETE AUDIT COLLECTOR';\r\n addUserByGlobalAdmin = 'ADD OWNER USER/AUDIT COLLECTOR';\r\n deleteUserByGlobalAdmin = 'DELETE OWNER USER';\r\n addLockUser = 'ADD LOCK USER';\r\n deleteLockUser = 'DELETE LOCK USER';\r\n addUser = 'ADD USER';\r\n deleteUser = 'DELETE USER';\r\n convertLockUser = 'CONVERT LOCK USER';\r\n blockGlobalAdminAccess = 'BLOCK PROFILE ACCESS BY ADMIN';\r\n\r\n clickToView = 'CLICK TO VIEW';\r\n clickToAssign = 'CLICK TO ASSIGN';\r\n clickToAdd = 'CLICK TO ADD';\r\n clickToEdit = 'CLICK TO EDIT';\r\n clickToRemove = 'CLICK TO REMOVE';\r\n clickToManage = 'CLICK TO MANAGE';\r\n\r\n assign = 'ASSIGN';\r\n cancel = 'CANCEL';\r\n\r\n backToGroups = 'BACK TO GROUPS';\r\n backToAudits = 'BACK TO LOCK AUDITS';\r\n backToLocks = 'BACK TO LOCKS';\r\n\r\n globalSearchPlaceholder = 'SEARCH - LOCK ID / LOCATION / USER';\r\n sendCodeTo = 'SEND CODE TO';\r\n\r\n maxArbitraryCodes = 'USER CODES';\r\n maxPerpetualCodes = 'UNIT CODES';\r\n maxDailyCodes = 'DAILY CODES';\r\n maxWeeklyCodes = 'WEEKLY CODES';\r\n\r\n contactInfoTitle = 'CONTACT INFORMATION';\r\n profileInfoTitle = 'PROFILE INFORMATION';\r\n lockCodeCountTitle = 'LOCK ACCESS CODE LIMITS';\r\n lockCodeCountSubTitle = 'SET THE MAXIMUM NUMBER OF CODES PER LOCK.';\r\n convertLockUserDescription = 'CONVERT TEMPORARY USER TO REGULAR USER AND SEND A MASTER LOCK ACCESS CODE.';\r\n\r\n manageLocksCardSubTitle = 'Activate, list & clone my Locks';\r\n manageLocksCardSubTitleForAdmin = 'List & activate multiple Locks';\r\n manageUsersCardSubTitle = 'Add users and manage individual users';\r\n codesCardSubTitle = 'Search for locks & issue lock codes to users and groups';\r\n manageGroupsCardSubTitle = 'Create user groups and manage individual users';\r\n auditsCardSubTitle = 'Identify your locks and view audits';\r\n viewAssignedLocksSubTitle = 'View assigned locks';\r\n\r\n contactInfoEmail = \"g.white@loxalsecurity.com\";\r\n\r\n arbitraryUserInidicator = \"(P)\";\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AppTimeZone {\r\n get currentTimeZoneOffset(): string {\r\n return this.getCurrentTimeZoneOffset();\r\n }\r\n\r\n get currentTimeZoneName(): string {\r\n return this.getCurrentTimeZoneName();\r\n }\r\n\r\n private getCurrentTimeZoneOffset(): string {\r\n return new Date().toString().match(/([-\\+][0-9]+)\\s/)[1];\r\n }\r\n\r\n private getCurrentTimeZoneName(): string {\r\n let currentTimeZoneName = new Date().toString().match(/\\(([A-Za-z\\s].*)\\)/)[1];\r\n currentTimeZoneName = currentTimeZoneName.toLowerCase() === 'british summer time'\r\n || currentTimeZoneName.toLowerCase() === 'gmt'\r\n ? 'GMT Standard Time'\r\n : currentTimeZoneName;\r\n return currentTimeZoneName;\r\n }\r\n\r\n //For \"GMT-0400 (EDT)\":\r\n // new Date().toString().match(/([A-Z]+[\\+-][0-9]+.*)/)[1]\r\n\r\n //For \"GMT-0400\" :\r\n // new Date().toString().match(/([A-Z]+[\\+-][0-9]+)/)[1]\r\n\r\n //For just \"EDT\" :\r\n // new Date().toString().match(/\\(([A-Za-z\\s].*)\\)/)[1]\r\n\r\n //For just \"-0400\":\r\n // new Date().toString().match(/([-\\+][0-9]+)\\s/)[1]\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class Helper {\r\n\r\n constSecretHidden = \"*******\";\r\n\r\n isNullOrUndefinedOrWhiteSpace(object: any) {\r\n return object === undefined || object === null || (typeof object === 'string' && String(object).trim() === '');\r\n }\r\n\r\n /**\r\n * Toggles the element to show/hide the secret value.\r\n * @param secretElementId Id of the element containing the secret value.\r\n * @param toggleElementId Id of the element that toggles the visibility of secret value.\r\n * @param secret A string representation of the secret value.\r\n */\r\n toggleSecretView(secretElementId, toggleElementId, secret) {\r\n if (!this.isNullOrUndefinedOrWhiteSpace(secretElementId) && !this.isNullOrUndefinedOrWhiteSpace(toggleElementId)) {\r\n const secretElement = document.getElementById(secretElementId);\r\n const toggleElement = document.getElementById(toggleElementId);\r\n\r\n if (!this.isNullOrUndefinedOrWhiteSpace(secretElement) && !this.isNullOrUndefinedOrWhiteSpace(toggleElement)) {\r\n if (secretElement.innerHTML.trim() === this.constSecretHidden && !this.isNullOrUndefinedOrWhiteSpace(secret)) {\r\n toggleElement.innerHTML = '';\r\n secretElement.innerHTML = secret;\r\n } else {\r\n toggleElement.innerHTML = '';\r\n secretElement.innerHTML = this.constSecretHidden;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport * as AppConstants from './app.constants';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AppNotification {\r\n\t/**\r\n\t * Creates an instance of ErrorNotification.\r\n\t * @param toastr\r\n\t */\r\n\tconstructor(private toastr: ToastrService) { }\r\n\r\n\t/**\r\n\t * Displays success notification.\r\n\t * @param message success message to be displayed.\r\n\t * @param title Title of the notification.\r\n\t * */\r\n\tsuccess(message: string, title = 'Success') {\r\n\t\tthis.toastr.success(message, title, {\r\n\t\t\tpositionClass: AppConstants.Toastr.successPosition,\r\n\t\t\ttimeOut: AppConstants.Toastr.successTimeout\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Displays error notification.\r\n\t * @param message Error message to be displayed.\r\n\t * @param title Title of the notification.\r\n\t * @param timeOut Toast time to live in milliseconds.\r\n\t * */\r\n\terror(message: string, title = 'Someting went wrong', timeOut = AppConstants.Toastr.errorTimeout) {\r\n\t\tthis.toastr.error(message, title, {\r\n\t\t\tpositionClass: AppConstants.Toastr.errorPosition,\r\n\t\t\ttimeOut: timeOut\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Displays Information notification.\r\n\t * @param message Information message to be displayed.\r\n\t * @param title Title of the notification.\r\n\t */\r\n\tinfo(message: string, title = 'Information') {\r\n\t\tthis.toastr.info(message, title, {\r\n\t\t\tpositionClass: AppConstants.Toastr.infoPosition,\r\n\t\t\ttimeOut: AppConstants.Toastr.infoTimeout\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Displays warning notification.\r\n\t * @param message Information message to be displayed.\r\n\t * @param title Title of the notification.\r\n\t */\r\n\twarning(message: string, title = 'Warning') {\r\n\t\tthis.toastr.warning(message, title, {\r\n\t\t\tpositionClass: AppConstants.Toastr.warningPosition,\r\n\t\t\ttimeOut: AppConstants.Toastr.warningTimeout\r\n\t\t});\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n/** Gets constants for various roles. */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AppRoles {\r\n\tlockUser = 'LockUser';\r\n\tuser = 'User';\r\n\tauditCollector = 'AuditCollector';\r\n\townerUser = 'OwnerUser';\r\n\tglobalAdmin = 'GlobalAdmin';\r\n\r\n\tlockUserLabel = 'Lock User';\r\n\tuserLabel = 'Manager';\r\n\tauditCollectorLabel = 'Audit Collector';\r\n\townerUserLabel = 'Owner User';\r\n\tglobalAdminLabel = 'Global Admin';\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2Zvb3Rlci9hcHAtZm9vdGVyLmNvbXBvbmVudC5jc3MifQ== */\"","import { Component } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n\tselector: 'app-footer',\r\n\ttemplateUrl: './app-footer.component.html',\r\n\tstyleUrls: ['./app-footer.component.css']\r\n})\r\nexport class AppFooterComponent {\r\n\tisValidSession = false;\r\n\r\n constructor(private router: Router) {}\r\n\r\n\tngOnInit() {\r\n\t\tconst session = localStorage.getItem('authenticationToken');\r\n\t\tif (session) {\r\n\t\t\tthis.isValidSession = true;\r\n\t\t} else {\r\n\t\t\tthis.isValidSession = false;\r\n }\r\n document.getElementById('copyrightYear').appendChild(document.createTextNode(new Date().getFullYear().toString()))\r\n }\r\n\r\n navUnits() {\r\n this.router.navigate(['units']);\r\n }\r\n}\r\n","module.exports = \".table th {\\n background-color: #DC0000 !important;\\n border: 2px solid #fff;\\n border-collapse: separate;\\n}\\n\\n.table td {\\n border: 2px solid #fff;\\n border-collapse: separate;\\n}\\n\\n.table {\\n overflow: scroll;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZ3JvdXBzL0M6XFxVc2Vyc1xcVml2ZWtcXHNvdXJjZVxccmVwb3NcXExveGFsIFNlY3VyaXR5XFxMb2Nrc1xcQ2xpZW50QXBwL3NyY1xcYXBwXFxncm91cHNcXGdyb3Vwcy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvZ3JvdXBzL2dyb3Vwcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLG9DQUFBO0VBQ0Esc0JBQUE7RUFDQSx5QkFBQTtBQ0NGOztBREVBO0VBQ0Usc0JBQUE7RUFDQSx5QkFBQTtBQ0NGOztBREVBO0VBQ0UsZ0JBQUE7QUNDRiIsImZpbGUiOiJzcmMvYXBwL2dyb3Vwcy9ncm91cHMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudGFibGUgdGgge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNEQzAwMDAgIWltcG9ydGFudDtcclxuICBib3JkZXI6IDJweCBzb2xpZCAjZmZmO1xyXG4gIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XHJcbn1cclxuXHJcbi50YWJsZSB0ZCB7XHJcbiAgYm9yZGVyOiAycHggc29saWQgI2ZmZjtcclxuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xyXG59XHJcblxyXG4udGFibGUge1xyXG4gIG92ZXJmbG93OiBzY3JvbGw7XHJcbn1cclxuIiwiLnRhYmxlIHRoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0RDMDAwMCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDJweCBzb2xpZCAjZmZmO1xuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4udGFibGUgdGQge1xuICBib3JkZXI6IDJweCBzb2xpZCAjZmZmO1xuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4udGFibGUge1xuICBvdmVyZmxvdzogc2Nyb2xsO1xufSJdfQ== */\"","import { Component, HostListener, AfterViewInit, OnInit } from '@angular/core';\r\nimport { DataService } from '../shared/dataService';\r\nimport { Router } from '@angular/router';\r\nimport { Repository } from '../models/repository';\r\nimport * as $ from 'jquery';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { LockUserGroup } from '../models/LockUserGroup.model';\r\nimport { LockUserGroupMems } from '../models/LockUserGroupMems.model';\r\nimport { LockUsers } from '../models/LockUsers.model';\r\nimport * as AppConstants from '../common/app.constants';\r\nimport { AddUserToGroupRequest } from '../models/AddUserToGroupRequest.model';\r\nimport * as AppHelper from '../common/app.helper';\r\n\r\n@Component({\r\n selector: 'groups',\r\n templateUrl: './groups.component.html',\r\n styleUrls: ['./groups.component.scss']\r\n})\r\nexport class GroupsComponent implements OnInit, AfterViewInit {\r\n tblDheight = AppConstants.Generic.tableHeight;\r\n userRole: string;\r\n\r\n id = '';\r\n required = '';\r\n submitted = '';\r\n cols: any[];\r\n cols1: any[];\r\n cols2: any[];\r\n\r\n /** Gets or sets the title for the Units page.*/\r\n pageTitle = AppConstants.PageTitle.groups;\r\n\r\n showCreateGroupDialog = false;\r\n showDeleteGroupDialog = false;\r\n\r\n constSecretHidden = this.appHelper.constSecretHidden;\r\n\r\n showAddUserToGroupDialog = false;\r\n showDeleteFromGroupDialog = false;\r\n\r\n lockUserGroupForm: FormGroup;\r\n lockUserDeleteGroupForm: FormGroup;\r\n\r\n deleteFromGroupForm: FormGroup;\r\n addToGroupForm: FormGroup;\r\n\r\n lockUserGroupCols: any[];\r\n lockUserGroupMemsCols: any[];\r\n\r\n viewLockUserGroups = false;\r\n\r\n selectedLockUserGroup: LockUserGroup;\r\n\r\n lockUsersArray: Array = this.repo.lockUsers;\r\n groupsArray: Array = this.repo.lockUserGroups;\r\n\r\n lockUsersDropDown: Array = [];\r\n\r\n groupsDropDown: Array = [];\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event?) {\r\n this.tblDheight = $(window).height() - 260 + 'px';\r\n }\r\n\r\n constructor(private data: DataService, private router: Router, private repo: Repository,\r\n private formBuilder: FormBuilder, private spinner: NgxSpinnerService, private toastr: ToastrService,\r\n private appLabels: AppConstants.AppLabels, private apptimeZone: AppHelper.AppTimeZone,\r\n private appHelper: AppHelper.Helper) {\r\n this.tblDheight = $(window).height() - 260 + 'px';\r\n this.userRole = data.getLoginUserRole();\r\n\r\n this.lockUserGroupForm = this.formBuilder.group({\r\n groupName: ['', Validators.required]\r\n });\r\n\r\n this.lockUserDeleteGroupForm = this.formBuilder.group({\r\n groupName: ['', Validators.required]\r\n });\r\n\r\n this.addToGroupForm = this.formBuilder.group({\r\n lockUsername: [''],\r\n lockUserId: ['', Validators.required],\r\n lockUserGroupName: ['', Validators.required]\r\n });\r\n\r\n this.deleteFromGroupForm = this.formBuilder.group({\r\n lockUserId: ['', Validators.required],\r\n groupName: ['', Validators.required]\r\n });\r\n\r\n this.viewLockUserGroups = false;\r\n\r\n this.lockUserGroupMemsCols = [\r\n { field: 'name', header: appLabels.user },\r\n { field: 'phone', header: appLabels.phone },\r\n { field: 'email', header: appLabels.email },\r\n { field: 'arbitraryKeypadCode', header: appLabels.arbitraryCode },\r\n { field: 'created', header: appLabels.dateCreated }\r\n ];\r\n\r\n this.lockUserGroupCols = [\r\n { field: 'groupName', header: appLabels.groupName },\r\n { field: 'created', header: appLabels.dateCreated }\r\n ];\r\n\r\n if (this.lockUsersArray && this.lockUsersArray.length > 0) {\r\n this.buildUsersDropDown();\r\n }\r\n }\r\n ngOnInit(): void {\r\n this.repo.getUpdatedLockUsers().subscribe((lockUsers: LockUsers[]) => {\r\n if (lockUsers && lockUsers.length > 0) {\r\n console.log('inside lockusers observable...');\r\n this.lockUsersArray = lockUsers;\r\n this.buildUsersDropDown();\r\n }\r\n });\r\n\r\n this.repo.getUpdatedLockUserGroups().subscribe((lockUserGroups: LockUserGroup[]) => {\r\n if (lockUserGroups && lockUserGroups.length > 0) {\r\n console.log('inside lockUserGroups observable...');\r\n this.groupsArray = lockUserGroups;\r\n this.buildGroupsDropDown();\r\n }\r\n });\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.lockUserGroups.length == 0) {\r\n this.manageGridDetails();\r\n }\r\n }\r\n\r\n get currentTimeZoneOffset(): string {\r\n return this.apptimeZone.currentTimeZoneOffset;\r\n }\r\n\r\n get currentTimeZoneName(): string {\r\n return this.apptimeZone.currentTimeZoneName;\r\n }\r\n\r\n get lockUserGroups(): LockUserGroup[] {\r\n return this.repo.lockUserGroups;\r\n }\r\n\r\n get lockUserGroupMems(): LockUserGroupMems[] {\r\n return this.repo.lockUserGroupMems;\r\n }\r\n\r\n viewSelLocksUserGroupMems(groupDetails: LockUserGroup) {\r\n this.pageTitle = `Users of Group : ${groupDetails.groupName}`;\r\n this.viewLockUserGroups = true;\r\n this.repo.getLockUserGroupMems(groupDetails);\r\n this.selectedLockUserGroup = groupDetails;\r\n }\r\n\r\n backToGroups() {\r\n this.pageTitle = AppConstants.PageTitle.groups;\r\n this.viewLockUserGroups = false;\r\n }\r\n\r\n showCreateGroup() {\r\n this.lockUserGroupForm.reset();\r\n this.showCreateGroupDialog = true;\r\n }\r\n\r\n showDeleteGroup() {\r\n this.lockUserDeleteGroupForm.reset();\r\n this.showDeleteGroupDialog = true;\r\n }\r\n\r\n showAddToGroup() {\r\n this.addToGroupForm.reset();\r\n this.showAddUserToGroupDialog = true;\r\n }\r\n\r\n showDeleteFromGroup() {\r\n this.deleteFromGroupForm.reset();\r\n this.showDeleteFromGroupDialog = true;\r\n }\r\n\r\n closeCreateGroupDialog() {\r\n this.showCreateGroupDialog = false;\r\n }\r\n\r\n closeDeleteGroupDialog() {\r\n this.showDeleteGroupDialog = false;\r\n }\r\n\r\n closeAddToGroupDialog() {\r\n this.showAddUserToGroupDialog = false;\r\n }\r\n\r\n closeRemoveFromGroupDialog() {\r\n this.showDeleteFromGroupDialog = false;\r\n }\r\n\r\n manageGridDetails() {\r\n this.repo.readLockUserGroups();\r\n }\r\n\r\n buildUsersDropDown() {\r\n if (this.lockUsersArray) {\r\n this.lockUsersDropDown = [];\r\n this.lockUsersArray.forEach((lockUser: LockUsers) => {\r\n if (lockUser.arbitraryKeypadCode && lockUser.arbitraryKeypadCode > 0) {\r\n this.lockUsersDropDown.push(\r\n { label: lockUser.name + \" \" + this.appLabels.arbitraryUserInidicator, value: lockUser.id }\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n buildGroupsDropDown() {\r\n if (this.groupsArray) {\r\n this.groupsDropDown = [];\r\n this.groupsArray.forEach((lockUserGroup: LockUserGroup) => {\r\n this.groupsDropDown.push(\r\n { label: lockUserGroup.groupName, value: lockUserGroup.groupName }\r\n );\r\n });\r\n }\r\n }\r\n\r\n createLockUserGroup() {\r\n const form = this.lockUserGroupForm;\r\n if (form.valid) {\r\n this.repo.createLockUserGroup(form.value).subscribe(createGroupRes => {\r\n this.repo.readLockUserGroups();\r\n this.spinner.hide();\r\n this.toastr.success('successfully created lock user group!', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n this.closeCreateGroupDialog();\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.closeCreateGroupDialog();\r\n });\r\n } else {\r\n this.toastr.error('Please Provide all the inputs', 'Input required', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n }\r\n }\r\n\r\n deleteLockUserGroup() {\r\n const form = this.lockUserDeleteGroupForm;\r\n if (form.valid) {\r\n this.repo.deleteLockUserGroup(form.value).subscribe(deleteGroupRes => {\r\n this.spinner.hide();\r\n if (!deleteGroupRes.message) {\r\n this.toastr.error(`Failed to delete lock user group`, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n } else if (deleteGroupRes.message && deleteGroupRes.message.indexOf('does not') > -1) {\r\n this.toastr.error(deleteGroupRes.message, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n } else {\r\n this.repo.readLockUserGroups();\r\n this.toastr.success(deleteGroupRes.message, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 5000\r\n });\r\n }\r\n this.closeDeleteGroupDialog();\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.toastr.error('Failed to delete lock user group', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n this.closeDeleteGroupDialog();\r\n });\r\n } else {\r\n this.toastr.error('Please Provide all the inputs', 'Input required', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n }\r\n }\r\n\r\n addUserToGroup() {\r\n const addGroupForm = this.addToGroupForm;\r\n if (addGroupForm.valid) {\r\n const lockUserGroupReq = new AddUserToGroupRequest();\r\n lockUserGroupReq.lockUserIds = addGroupForm.controls['lockUserId'].value;\r\n lockUserGroupReq.lockUserGroupName = addGroupForm.controls['lockUserGroupName'].value;\r\n\r\n this.repo.addLockUserToGroup(lockUserGroupReq).subscribe((addGroupRes: any) => {\r\n this.spinner.hide();\r\n this.closeAddToGroupDialog();\r\n if (!addGroupRes.message) {\r\n this.toastr.error(`Failed to add Arbitary lock user to Group ${lockUserGroupReq.lockUserGroupName}`, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n } else if (addGroupRes.message && addGroupRes.message.indexOf('does not') > -1) {\r\n this.toastr.error(addGroupRes.message, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 4000\r\n });\r\n } else {\r\n this.toastr.success('User(s) added to group.', 'Success', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 5000\r\n });\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.toastr.error(`Failed to add Arbitary lock user to Group ${lockUserGroupReq.lockUserGroupName}`, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n });\r\n } else {\r\n this.toastr.error('Please Provide all the inputs', 'Input required', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n }\r\n }\r\n\r\n deleteUserFromGroups() {\r\n const removeGroupForm = this.deleteFromGroupForm;\r\n if (removeGroupForm.valid) {\r\n const lockUserGroupReq = new LockUserGroup();\r\n lockUserGroupReq.lockUserId = Number(removeGroupForm.controls['lockUserId'].value);\r\n lockUserGroupReq.groupName = removeGroupForm.controls['groupName'].value;\r\n\r\n this.repo.deleteLockUserFromGroup(lockUserGroupReq).subscribe((deleteGroupRes: any) => {\r\n this.spinner.hide();\r\n this.closeRemoveFromGroupDialog();\r\n if (!deleteGroupRes.message) {\r\n this.toastr.error(`Failed to delete lock user from Groups`, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n } else {\r\n this.toastr.success(deleteGroupRes.message, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 5000\r\n });\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.toastr.error(`Failed to delete lock user from Groups`, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n });\r\n } else {\r\n this.toastr.error('Please Provide all the inputs', 'Input required', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the element to show/hide the secret value.\r\n * @param secretElementId Id of the element containing the secret value.\r\n * @param toggleElementId Id of the element that toggles the visibility of secret value.\r\n * @param secret A string representation of the secret value.\r\n */\r\n toggleSecret(secretElementId, toggleElementId, secret) {\r\n this.appHelper.toggleSecretView(secretElementId, toggleElementId, secret);\r\n }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2hlbHAvaGVscC5jb21wb25lbnQuY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\r\nimport * as AppConstants from '../common/app.constants';\r\n\r\n@Component({\r\n\tselector: 'app-help',\r\n\ttemplateUrl: './help.component.html',\r\n\tstyleUrls: ['./help.component.css']\r\n})\r\nexport class HelpComponent implements OnInit {\r\n\t/** Gets or sets the title for the Units page.*/\r\n\tpageTitle = AppConstants.PageTitle.helpPage;\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit() {\r\n\t}\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router, NavigationExtras } from '@angular/router';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { Subscription } from 'rxjs';\r\nimport { DataService } from '../shared/dataService';\r\nimport * as AppConstants from '../common/app.constants';\r\nimport { AppRoles } from '../common/app.roles';\r\n\r\n@Component({\r\n\tselector: 'app-home',\r\n\ttemplateUrl: './home.component.html',\r\n})\r\nexport class HomeComponent implements OnInit, OnDestroy {\r\n\tloginUser: string;\r\n\tuserRole: string;\r\n\tsubscriptions: Array = [];\r\n\tmanageLocksCardSubTitle: string;\r\n\r\n\tconstructor(private router: Router, private dataService: DataService, private spinner: NgxSpinnerService,\r\n\t\tprivate appLabels: AppConstants.AppLabels, private appRoles: AppRoles) {\r\n\t\tthis.setUserInfo();\r\n\t\tthis.manageLocksCardSubTitle = this.userRole.toUpperCase() == appRoles.globalAdmin.toUpperCase()\r\n\t\t\t? appLabels.manageLocksCardSubTitleForAdmin\r\n\t\t\t: appLabels.manageLocksCardSubTitle;\r\n\t}\r\n\r\n\tsetUserInfo() {\r\n\t\tconst token = this.dataService.getAccessToken();\r\n\t\tconst decodedToken = this.dataService.getDecodedAccessToken(token);\r\n\t\tif (decodedToken) {\r\n\t\t\tthis.loginUser = decodedToken.unique_name;\r\n\t\t\tthis.userRole = decodedToken.Role;\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.subscriptions.push(\r\n\t\t\tthis.dataService.checkIfAdminLoggedAsOwner().subscribe((isAdminAsOwner: boolean) => {\r\n\t\t\t\tif (isAdminAsOwner) {\r\n\t\t\t\t\tthis.setUserInfo();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tnavUser() {\r\n\t\tthis.router.navigate(['user']);\r\n\t}\r\n\r\n\tnavUnits() {\r\n\t\tthis.router.navigate(['units']);\r\n\t}\r\n\r\n\tnavAssignedUnits() {\r\n\t\tconst navExtras: NavigationExtras = {\r\n\t\t\tqueryParams: {\r\n\t\t\t\tdisplayAssignedLocks: true\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.router.navigate(['units'], {\r\n\t\t\tstate: { locks: navExtras }\r\n\t\t});\r\n\t}\r\n\r\n\tnavCodes() {\r\n\t\tthis.router.navigate(['codes']);\r\n\t}\r\n\r\n\tnavGroups() {\r\n\t\tthis.router.navigate(['groups']);\r\n\t}\r\n\r\n\tnavAudits() {\r\n\t\tthis.router.navigate(['audits']);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.subscriptions.forEach(sub => sub.unsubscribe());\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpResponse, HttpErrorResponse, HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport 'rxjs/add/operator/do';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport * as jwt_decode from 'jwt-decode';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Repository } from '../models/repository';\r\n\r\n@Injectable()\r\nexport class TokenInterceptorService implements HttpInterceptor {\r\n\tLOCALSTORAGE_AUTH_TOKEN = 'authenticationToken';\r\n\tLOCALSTORAGE_AUTH = 'Authorization';\r\n\r\n\tconstructor(private router: Router, private http: HttpClient, private spinner: NgxSpinnerService,\r\n\t\tprivate toastr: ToastrService, private repo: Repository) { }\r\n\r\n\tintercept(req: HttpRequest, next: HttpHandler) {\r\n\t\tlet authReq = req;\r\n\t\tconst accessToken = this.getAccessToken();\r\n\t\tif (accessToken != null) {\r\n\t\t\tauthReq = req.clone({\r\n\t\t\t\theaders: req.headers.append(this.LOCALSTORAGE_AUTH, 'Bearer ' + accessToken).\r\n\t\t\t\t\tappend('Content-Type', 'application/json')\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn next.handle(authReq).do(\r\n\t\t\tevent => {\r\n\t\t\t\tif (event instanceof HttpResponse) {\r\n\t\t\t\t\tconst isSessionValid: boolean = this.isValidSession();\r\n\t\t\t\t\tif (!isSessionValid) {\r\n\t\t\t\t\t\tthis.errorHandler('Session timedout');\r\n\t\t\t\t\t\tthis.logout();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terr => {\r\n\t\t\t\tif (err instanceof HttpErrorResponse) {\r\n\t\t\t\t\tconst isSessionValid: boolean = this.isValidSession();\r\n\t\t\t\t\tif (!isSessionValid) {\r\n\t\t\t\t\t\tthis.logout();\r\n\t\t\t\t\t}\r\n this.spinner.hide();\r\n const skipResponses = [\"OK\"]\r\n if (!skipResponses.includes(err.statusText)) {\r\n this.toastr.error(err.statusText, 'Error', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 5000\r\n });\r\n }\r\n\t\t\t\t\t// return Observable.throw(err);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t// Complete event\r\n\t\t\t() => {\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\terrorHandler(error): void {\r\n\t\tif (!this.isValidSession()) {\r\n\t\t\t// Added condition to igone multiple service calls when session timedout.\r\n\t\t\t// if(!this.errorHandled){\r\n\t\t\t// this.errorHandled = true;\r\n\r\n\t\t\t// this.toastr.error(\"Session is invalid or has timed out\",'Error',{\r\n\t\t\t// positionClass : 'toast-top-center',\r\n\t\t\t// timeOut: 7000\r\n\t\t\t// });\r\n\r\n\t\t\t// }\r\n\t\t} else {\r\n\t\t\tif (error && error.error && error.error.message) {\r\n\t\t\t\tthis.toastr.error(error.error.message, 'Error', {\r\n\t\t\t\t\tpositionClass: 'toast-top-center',\r\n\t\t\t\t\ttimeOut: 20000\r\n\t\t\t\t});\r\n\t\t\t} else if (error && error.message) {\r\n\t\t\t\tthis.toastr.error(error.message, 'Error', {\r\n\t\t\t\t\tpositionClass: 'toast-top-center',\r\n\t\t\t\t\ttimeOut: 20000\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.toastr.error('Something went wrong', 'Error', {\r\n\t\t\t\t\tpositionClass: 'toast-top-center',\r\n\t\t\t\t\ttimeOut: 5000\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.spinner.hide();\r\n\t}\r\n\r\n\tisValidSession(): boolean {\r\n\t\tconst accessToken = this.getAccessToken();\r\n\t\tconst tokenInfo = this.getDecodedAccessToken(accessToken);\r\n\t\tif (tokenInfo != null && tokenInfo != undefined) {\r\n\t\t\tconst current_time = Date.now() / 1000; // time in seconds\r\n\t\t\tconst expiryDate = tokenInfo.exp;\r\n\t\t\tconst timeDiffMins = (expiryDate - current_time) / 60;\r\n\t\t\tif ((expiryDate > current_time)) {\r\n\t\t\t\t// if (timeDiffMins >= 0 && timeDiffMins < 16) {\r\n\t\t\t\t// console.log(\"time diff::\" + timeDiffMins + \" mins..\");\r\n\t\t\t\t// this.refreshToken().subscribe((res) => {\r\n\t\t\t\t// let tokenInfo = res;\r\n\t\t\t\t// this.setToken(tokenInfo != undefined ? tokenInfo.token : '');\r\n\t\t\t\t// });\r\n\t\t\t\t// return true;\r\n\t\t\t\t// } else {\r\n\t\t\t\t// console.log(\"time diff::\" + timeDiffMins + \" mins..\");\r\n\t\t\t\t// return true;\r\n\t\t\t\t// }\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log('token expired...');\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tlogout() {\r\n\t\t// localStorage.removeItem(this.LOCALSTORAGE_AUTH_TOKEN);\r\n\t\t// this.router.navigate(['login']);\r\n\t\t// this.spinner.hide();\r\n\t\tthis.repo.logout();\r\n\t}\r\n\r\n\tgetAccessToken() {\r\n\t\treturn localStorage.getItem(this.LOCALSTORAGE_AUTH_TOKEN);\r\n\t}\r\n\r\n\tgetDecodedAccessToken(token: string): any {\r\n\t\ttry {\r\n\t\t\treturn jwt_decode(token);\r\n\t\t} catch (Error) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Repository } from '../models/repository';\r\nimport { UserGetResponseRecord } from '../models/userGetResponseRecord.model';\r\nimport { DataService } from '../shared/dataService';\r\nimport { finalize } from 'rxjs/operators';\r\nimport * as AppConstants from '../common/app.constants';\r\nimport { AppNotification } from '../common/app.notification';\r\n\r\n@Component({\r\n selector: 'login',\r\n templateUrl: './login.component.html'\r\n})\r\nexport class Login implements OnInit {\r\n\r\n constructor(private data: DataService, private router: Router,\r\n private spinner: NgxSpinnerService, private toastr: ToastrService,\r\n private repo: Repository, private formBuilder: FormBuilder,\r\n private route: ActivatedRoute, private appLabels: AppConstants.AppLabels, private appNotification: AppNotification) {\r\n this.forgotPasswordForm = this.formBuilder.group({\r\n username: ['', Validators.required]\r\n });\r\n\r\n this.resetPasswordForm = this.formBuilder.group({\r\n passwordResetCode: ['', Validators.required],\r\n userName: [''],\r\n password: ['', Validators.required],\r\n confirmPassword: ['', Validators.required]\r\n });\r\n\r\n this.ownerUserCreationForm = this.formBuilder.group({\r\n proposedOwnerUserName: ['', Validators.required],\r\n firstName: ['', Validators.required],\r\n lastName: ['', Validators.required],\r\n emailAddress: ['', Validators.required],\r\n confirmedEmailAddress: ['', Validators.required],\r\n phone: ['', Validators.required],\r\n lockSerialNumber: ['', Validators.required],\r\n activationCode: ['', Validators.required]\r\n })\r\n }\r\n\r\n forgotPasswordTitle = '';\r\n resetPasswordTitle = '';\r\n forgotPasswordForm: FormGroup;\r\n resetPasswordForm: FormGroup;\r\n ownerUserCreationForm: FormGroup;\r\n\r\n showForgotPasswordDialog = false;\r\n showResetPasswordDialog = false;\r\n showOwnerUserCreationDialog = false;\r\n\r\n LOCALSTORAGE_AUTH_TOKEN = 'authenticationToken';\r\n passwordChangePending = false;\r\n\r\n authToken = '';\r\n queryParam = '';\r\n\r\n errorMessage = '';\r\n public creds = {\r\n username: '',\r\n password: ''\r\n };\r\n\r\n ngOnInit(): void {\r\n this.route.queryParams.subscribe(params => {\r\n this.resetPasswordForm.controls['passwordResetCode'].reset();\r\n this.queryParam = params['resetCode'];\r\n if (this.queryParam) {\r\n this.resetPasswordForm.controls['passwordResetCode'].setValue(this.queryParam);\r\n // this.resetPasswordForm.controls['passwordResetCode'].disable();\r\n this.resetPasswordTitle = 'RESET PASSWORD';\r\n this.showResetPasswordDialog = true;\r\n }\r\n });\r\n }\r\n\r\n onLogin() {\r\n this.errorMessage = '';\r\n this.spinner.show();\r\n this.data.login(this.creds)\r\n .subscribe(success => {\r\n if (success) {\r\n const userReq = new UserGetResponseRecord();\r\n userReq.userName = this.creds.username;\r\n\r\n this.data.fetchLoggedInUserDetails(userReq).subscribe((loginUser) => {\r\n // let loggedInUser;\r\n // if(loginUser && Array.isArray(loginUser) && loginUser.length > 1) {\r\n // loggedInUser = loginUser.filter((user) => {\r\n // return (user.userName == userReq.userName)\r\n // });\r\n // }\r\n // if (loginUser && loginUser.userName) {\r\n // loggedInUser = (loginUser.userName == userReq.userName);\r\n // }\r\n\r\n // if(loggedInUser && loggedInUser.length > 0 && loggedInUser[0].passwordChangePending == 1){\r\n if (loginUser && loginUser.userName && loginUser.passwordChangePending == 1) {\r\n this.passwordChangePending = true;\r\n this.showResetPassword(userReq.userName, 'CHANGE DEFAULT PASSWORD');\r\n } else {\r\n this.afterSuccessfulLogin();\r\n }\r\n }, (err) => {\r\n this.toastr.error(err, 'Error', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n });\r\n } else {\r\n this.toastr.error('Login Failed!', 'Error', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n }\r\n this.spinner.hide();\r\n }, err => {\r\n this.spinner.hide();\r\n this.toastr.error('Login Failed!', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n });\r\n }\r\n\r\n afterSuccessfulLogin() {\r\n // this.toastr.success(\"successfully logged in!\",'',{\r\n // positionClass : 'toast-top-center',\r\n // timeOut: 2000\r\n // });\r\n this.router.navigate(['home']);\r\n this.repo.loadUsersGroups();\r\n // this.spinner.hide();\r\n }\r\n\r\n showForgotPassword(title?: string) {\r\n this.forgotPasswordTitle = title ? title : 'Find Account';\r\n this.forgotPasswordForm.reset();\r\n this.showForgotPasswordDialog = true;\r\n\r\n // if(this.passwordChangePending){\r\n // this.authToken = this.data.getAccessToken();\r\n // localStorage.removeItem(this.LOCALSTORAGE_AUTH_TOKEN);\r\n // }\r\n }\r\n\r\n hideForgotPassword() {\r\n this.forgotPasswordForm.reset();\r\n this.showForgotPasswordDialog = false;\r\n }\r\n\r\n showResetPassword(username?: string, title?: string) {\r\n this.resetPasswordTitle = title ? title : 'RESET PASSWORD';\r\n this.resetPasswordForm.reset();\r\n this.resetPasswordForm.controls['passwordResetCode'].enable();\r\n if (this.passwordChangePending) {\r\n this.resetPasswordForm.controls['userName'].setValue(username);\r\n }\r\n this.showResetPasswordDialog = true;\r\n\r\n if (this.passwordChangePending) {\r\n this.authToken = this.data.getAccessToken();\r\n localStorage.removeItem(this.LOCALSTORAGE_AUTH_TOKEN);\r\n }\r\n }\r\n\r\n hideResetPassword() {\r\n this.resetPasswordForm.reset();\r\n this.showResetPasswordDialog = false;\r\n localStorage.removeItem(this.LOCALSTORAGE_AUTH_TOKEN);\r\n }\r\n\r\n findAccount() {\r\n if (this.forgotPasswordForm.valid) {\r\n this.data.generatePasswordResetLink(this.forgotPasswordForm.value)\r\n .subscribe((resetInitiateRes: any) => {\r\n this.spinner.hide();\r\n if (!resetInitiateRes.message) {\r\n this.toastr.error(`Failed to find the Account`, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n } else if (resetInitiateRes.message && (resetInitiateRes.message.toLowerCase().indexOf('fail') > -1\r\n || resetInitiateRes.message.toLowerCase().indexOf('invalid') > -1)) {\r\n this.toastr.error(resetInitiateRes.message, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n } else {\r\n this.toastr.success('An email to reset the password has been sent to your email address. Please follow the instructions in it.', resetInitiateRes.message, {\r\n positionClass: 'toast-top-center',\r\n timeOut: 10000\r\n });\r\n this.hideForgotPassword();\r\n // this.showResetPassword();\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.toastr.error('Failed to find the Account', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n // this.hideForgotPassword();\r\n });\r\n } else {\r\n this.forgotPasswordForm.controls['username'].markAsTouched();\r\n }\r\n }\r\n\r\n resetPassword() {\r\n if (this.resetPasswordForm.valid) {\r\n const pass = this.resetPasswordForm.controls['password'].value;\r\n const confPass = this.resetPasswordForm.controls['confirmPassword'].value;\r\n if (pass != confPass) {\r\n this.toastr.error(`New password and confirm new password does not match`, 'Passwords mismatch', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 4000\r\n });\r\n } else {\r\n this.data.resetPassword(this.resetPasswordForm.value)\r\n .subscribe((resetPasswordRes: any) => {\r\n this.spinner.hide();\r\n if (!resetPasswordRes.message) {\r\n this.toastr.error(`Failed to reset the password`, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 10000\r\n });\r\n } else if (resetPasswordRes.message && resetPasswordRes.message.toLowerCase().indexOf('fail') > -1) {\r\n this.toastr.error(resetPasswordRes.message, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 10000\r\n });\r\n } else {\r\n this.toastr.success(resetPasswordRes.message, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 5000\r\n });\r\n if (this.passwordChangePending) {\r\n this.passwordChangePending = false;\r\n // this.data.setAccessToken(this.authToken);\r\n // this.afterSuccessfulLogin();\r\n // this.hideResetPassword();\r\n }\r\n this.hideResetPassword();\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.toastr.error('Failed to reset the password', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n // this.hideResetPassword();\r\n });\r\n }\r\n } else {\r\n this.forgotPasswordForm.controls['passwordResetCode'].markAsTouched();\r\n this.forgotPasswordForm.controls['password'].markAsTouched();\r\n this.forgotPasswordForm.controls['confirmPassword'].markAsTouched();\r\n }\r\n }\r\n\r\n initialPasswordChange() {\r\n if (this.passwordChangePending) {\r\n this.resetPasswordForm.controls['passwordResetCode'].disable();\r\n }\r\n if (this.resetPasswordForm.valid) {\r\n const pass = this.resetPasswordForm.controls['password'].value;\r\n const confPass = this.resetPasswordForm.controls['confirmPassword'].value;\r\n if (pass != confPass) {\r\n this.toastr.error(`New password and confirm new password does not match`, 'Passwords mismatch', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 10000\r\n });\r\n } else {\r\n window.localStorage.setItem('authenticationToken', this.authToken);\r\n this.data.updatePassword(this.resetPasswordForm.value)\r\n .pipe(finalize(() => {\r\n localStorage.removeItem(this.LOCALSTORAGE_AUTH_TOKEN);\r\n }))\r\n .subscribe((resetPasswordRes: any) => {\r\n this.spinner.hide();\r\n if (!resetPasswordRes.message) {\r\n this.toastr.error(`Failed to reset the password`, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 10000\r\n });\r\n } else if (resetPasswordRes.message && resetPasswordRes.message.toLowerCase().indexOf('fail') > -1) {\r\n this.toastr.error(resetPasswordRes.message, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 10000\r\n });\r\n } else {\r\n this.toastr.success('Password has been reset. Login now with new credentials.', 'Success', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 5000\r\n });\r\n if (this.passwordChangePending) {\r\n this.passwordChangePending = false;\r\n // this.data.setAccessToken(this.authToken);\r\n // this.afterSuccessfulLogin();\r\n // this.hideResetPassword();\r\n }\r\n this.hideResetPassword();\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.toastr.error('Failed to reset the password', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 10000\r\n });\r\n // this.hideResetPassword();\r\n }, () => {\r\n });\r\n }\r\n } else {\r\n if (!this.passwordChangePending) {\r\n this.forgotPasswordForm.controls['passwordResetCode'].markAsTouched();\r\n }\r\n this.forgotPasswordForm.controls['password'].markAsTouched();\r\n this.forgotPasswordForm.controls['confirmPassword'].markAsTouched();\r\n }\r\n }\r\n\r\n showOwnerUserCreation() {\r\n this.ownerUserCreationForm.reset();\r\n this.showOwnerUserCreationDialog = true;\r\n }\r\n\r\n hideOwnerUserCreation() {\r\n this.showOwnerUserCreationDialog = false;\r\n this.ownerUserCreationForm.reset();\r\n }\r\n\r\n createOwnerUser() {\r\n if (this.ownerUserCreationForm.valid) {\r\n this.repo.createOwnerUserAndActivateLock(this.ownerUserCreationForm.value).subscribe(response => {\r\n this.spinner.hide();\r\n if (response && response.statusCode === 200) {\r\n this.appNotification.success('Submited request to create owner user. Please check email for instructions to access portal.', 'Success');\r\n this.hideOwnerUserCreation();\r\n }\r\n else {\r\n const msg = response && response.message ? response.message : 'Something went wrong. Try again with valid inputs.'\r\n console.error(msg);\r\n this.appNotification.error(msg, 'Request failed');\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n console.error(err);\r\n this.appNotification.error(`Unable to create owner user. Try again after sometime. Details: ${err}`, 'Something went wrong');\r\n });\r\n }\r\n else {\r\n this.appNotification.error('Provide all inputs.', 'Input required');\r\n }\r\n }\r\n}\r\n","export class AddUserToGroupRequest {\r\n\tconstructor(\r\n\t\tpublic lockSerialNumber: string = '',\r\n\t\tpublic lockUserIds: number[] = [],\r\n\t\tpublic lockUserGroupName: string = '',\r\n\t\tpublic groupName: string = '',\r\n\t\tpublic created: string = ''\r\n\t) { }\r\n}\r\n","export class GenerateCode {\r\n constructor(\r\n public lockSerialNumber: string = '',\r\n public codeType: string = '',\r\n public lockUserId: number = null,\r\n public lockUserGroup: string = ''\r\n ) { }\r\n}\r\n","// import { NumberSymbol } from \"@angular/common\";\r\n\r\nexport class GetActiveLockUsersAndLocks {\r\n populateLockUsers: boolean = true;\r\n populateLocks: boolean = true;\r\n}\r\n","export class LockGetRequest {\r\n constructor(\r\n public serialNumber: string = null,\r\n public ownerUserId: number = null,\r\n public location: string = null,\r\n public customer: string = null,\r\n public notes: string = null,\r\n public offset: number = null,\r\n public limit: number = null,\r\n ) { }\r\n}\r\n","export class LockUpdateRequest {\r\n constructor(\r\n public serialNumber: string = '',\r\n public location: string = null,\r\n public lockType: string = '',\r\n public customer: string = null,\r\n public notes: string = null,\r\n public generateRandomSeedCode: number = 0,\r\n public newSeedCode: string = null,\r\n public Interface: number = 0,\r\n public cloneLockSerialNumber: string = null\r\n ) { }\r\n}\r\n","// import { NumberSymbol } from \"@angular/common\";\r\n\r\nexport class LockUserAccess {\r\n\taccessRecords: LockUsersDetails[];\r\n}\r\n\r\nexport class LockUsersDetails {\r\n\tserialNumber: string;\r\n\r\n\tlockSerialNumber: string;\r\n\tlockUserName: string;\r\n\tkeypadCode: string;\r\n\tcodeTypeDescription: string;\r\n\tlockLocation: string;\r\n\tlockUserId: number;\r\n\r\n\tlockUserGroup: string;\r\n\r\n\tadded: string;\r\n\tdeleted: string;\r\n\tdisabled: string;\r\n}\r\n","export class LockUserGroup {\r\n\tconstructor(\r\n\t\tpublic lockSerialNumber: string = '',\r\n\t\tpublic lockUserId: number = null,\r\n\t\tpublic lockUserGroupName: string = '',\r\n\r\n\t\tpublic groupName: string = '',\r\n\t\tpublic created: string = ''\r\n\t) { }\r\n}\r\n","export class LockUsers {\r\n\tconstructor(\r\n\t\tpublic id: number = null,\r\n\t\tpublic name: string = '',\r\n\t\tpublic newName: string = null,\r\n\t\tpublic phone: string = '',\r\n\t\tpublic email: string = '',\r\n\t\tpublic company: string = '',\r\n\t\tpublic generateArbitraryCode: number = null,\r\n\t\tpublic updateArbitraryCode: number = 0,\r\n public arbitraryKeypadCode: number = null,\r\n public countOfUsers: number = 0,\r\n public addUsersStartingRange: number = 0\r\n\t) { }\r\n}\r\n","export class LoginRequest {\r\n constructor(\r\n public username: string = '',\r\n public password: string = '',\r\n public option: string = ''\r\n ) { }\r\n}\r\n","export class SendMessage {\r\n constructor(\r\n public lockUserId: number = null,\r\n public lockSerialNumber: string = null,\r\n public medium: string = '',\r\n public messageType: string = ''\r\n ) { }\r\n}\r\n","export class UserGetRequest {\r\n constructor(\r\n public userName: string = ''\r\n ) { }\r\n}\r\n","export class UserLocksModel {\r\n constructor(\r\n public serialNumber: string = '',\r\n public activationCode: string = '',\r\n public customer: string = '',\r\n public location: string = '',\r\n public notes: string = '',\r\n public lastAuditCollection: string = '',\r\n public seedCode: string = null,\r\n public unitType: string = '',\r\n public codeType: string = '',\r\n public installedDate: string = '',\r\n public installationDate: string = '',\r\n public created: string = '',\r\n public needsToBeUpdated: number = 0,\r\n public hasInterface: number = 0,\r\n public lockSerialNumber: string = '',\r\n public lockUserName: string = '',\r\n public company: string = '',\r\n public lockUserId: number = null,\r\n public mailPdf: number = 0,\r\n public mailCsv: number = 0,\r\n public eventTypeDescription: string = null,\r\n public earliest: string = null,\r\n public latest: string = null,\r\n public searchText: string = null,\r\n public timeZoneId: string = null,\r\n public lockType: string = null,\r\n public status: string = null,\r\n public cloneOf: string = null\r\n ) { }\r\n}\r\n","export class UserUpdateRequest {\r\n\tconstructor(\r\n\t\tpublic userName: string = '',\r\n\t\tpublic firstName: string = '',\r\n\t\tpublic lastName: string = '',\r\n\t\tpublic phone: string = '',\r\n\t\tpublic email: string = '',\r\n\t\tpublic company: string = '',\r\n\t\tpublic password: string = '',\r\n\t\tpublic generateNewActivationCode: number = 0,\r\n\t\tpublic maxArbitraryCodes: number = null,\r\n\t\tpublic maxPerpetualCodes: number = null,\r\n\t\tpublic maxDailyCodes: number = null,\r\n\t\tpublic maxWeeklyCodes: number = null,\r\n\t\tpublic globalAdminBlock: number = 0\r\n\t) { }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Repository } from './repository';\r\nimport { HttpClientModule } from '@angular/common/http';\r\n\r\n@NgModule({\r\n imports: [HttpClientModule],\r\n providers: [Repository]\r\n})\r\nexport class ModelModule { }\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { AuditResponseRecord } from './AuditResponseRecord.model';\r\nimport { GenerateCode } from './GenerateCode.model';\r\nimport { LockUserAccess, LockUsersDetails } from './LockUserAccess.model';\r\nimport { ActiveLockUsersAndLocks } from './ActiveLockUsersAndLocks.model';\r\nimport { GetActiveLockUsersAndLocks } from './GetActiveLockUsersAndLocks.model';\r\nimport { LockUserGroup } from './LockUserGroup.model';\r\nimport { LockUserGroupMems } from './LockUserGroupMems.model';\r\nimport { LockUsers } from './LockUsers.model';\r\nimport { SendMessage } from './SendMessage.model';\r\nimport { UserGetResponseRecord } from './userGetResponseRecord.model';\r\nimport { UserLocksModel } from './UserLocksModel.model';\r\nimport * as jwt_decode from 'jwt-decode';\r\nimport { UserUpdateRequest } from './UserUpdateRequest.model';\r\nimport { LockUpdateRequest } from './LockUpdateRequest.model';\r\nimport { UserGetRequest } from './UserGetRequest.model';\r\nimport { LockGlobalAdmin } from './LockGlobalAdmin.model';\r\nimport { LockGetRequest } from './LockGetRequest.model';\r\nimport { AddUserToGroupRequest } from './AddUserToGroupRequest.model';\r\nimport { UserUpdatePasswordRequest } from './UserUpdatePasswordRequest.model';\r\n\r\n// const usersURL = \"/api/Get\";\r\nconst usersURL = '/api/user/getUsers';\r\nconst getUserURL = '/api/user/GetUserDetails';\r\nconst userLocksURL = '/api/lock/getLocks';\r\nconst assignedUserLocksURL = '/api/lock/getAssignedLocks';\r\nconst updateLockURL = '/api/lock/putLock';\r\nconst deActivateLockURL = '/api/lock/DeActivateLock';\r\nconst addNewUserURL = '/api/user/addUser';\r\nconst deleteUserURL = '/api/user/deleteUser';\r\nconst updateUserURL = '/api/user/updateUser';\r\nconst createOwnerUserAndActivateLock = '/api/AutoOwnerUserActivateLock/createOwnerUserAndActivateLock';\r\nconst addNewLockUserURL = '/api/lockUser/createLockUser';\r\nconst updateLockUserURL = '/api/lockUser/updateLockUser';\r\nconst updateLockUsersURL = '/api/lockUser/updateLockUsers';\r\nconst deleteLockUserURL = '/api/lockUser/deleteLockUser';\r\nconst getActivationCodeURL = '/api/lock/getActivationCode';\r\nconst getLockUserAccessURL = '/api/lockuseraccess/GetLockUserAccess';\r\nconst getActiveLockUsersAndLocksURL = '/api/lockuseraccess/GetActiveLockUsersAndLocks';\r\nconst lockUsersURL = '/api/lockUser/getLockUsers';\r\nconst activateLockURL = '/api/activateLock/activate';\r\nconst activateLocksURL = '/api/activateLocks/activate';\r\nconst generateCodeURL = '/api/lockuseraccess/getLockCode';\r\nconst generateCodesURL = '/api/lockuseraccess/getLockCodes';\r\nconst removeCodeURL = '/api/lockuseraccess/removeUserLockAccess';\r\nconst removeCodesURL = '/api/lockuseraccess/removeUserLockAccesses';\r\nconst sendMessageURL = '/api/message/sendMessage';\r\nconst auditURL = '/api/audit/getAudit';\r\nconst downloadAudit = '/api/audit/downloadAudit';\r\nconst createLockUserGroupURL = '/api/lockUserGroup/addLockUserGroup';\r\nconst readLockUserGroupsURL = '/api/lockUserGroup/GetLockUserGroups';\r\nconst deleteLockUserGroupURL = '/api/lockUserGroup/deleteLockUserGroup';\r\nconst getLockUserGroupMemsURL = '/api/lockUserGroupMembers/getLockUserGroupMembers';\r\nconst addToGroupURL = '/api/lockUserGroupMembers/addLockUserGroupMember';\r\nconst deleteFromGroupURL = '/api/lockUserGroupMembers/deleteLockUserGroupMember';\r\n\r\n@Injectable()\r\nexport class Repository {\r\n locks: UserLocksModel[] = [];\r\n assignedLocks: LockGlobalAdmin[] = [];\r\n lockUsersAccess: LockUsersDetails[] = [];\r\n user: UserGetResponseRecord;\r\n users: UserGetResponseRecord[] = [];\r\n userLocks: UserLocksModel[] = [];\r\n manageLocks: UserLocksModel[] = [];\r\n searchedLocks: UserLocksModel[] = [];\r\n lockUsers: LockUsers[] = [];\r\n lockUserGroups: LockUserGroup[] = [];\r\n lockUserGroupMems: LockUserGroupMems[] = [];\r\n auditDetails: AuditResponseRecord[] = [];\r\n\r\n usersObv = new BehaviorSubject([]);\r\n locksObv = new BehaviorSubject([]);\r\n lockUsersObv = new BehaviorSubject([]);\r\n lockUserGroupsObv = new BehaviorSubject([]);\r\n\r\n LOCALSTORAGE_AUTH_TOKEN = 'authenticationToken';\r\n\r\n constructor(private http: HttpClient, private spinner: NgxSpinnerService,\r\n private toastr: ToastrService, private router: Router) {\r\n // this.getUsers();\r\n }\r\n\r\n downloadAudit(lockRec) {\r\n const httpOptions = {\r\n responseType: 'blob' as 'json'\r\n };\r\n\r\n return this.http.post(`${downloadAudit}`, lockRec, httpOptions);\r\n }\r\n\r\n getAuditDetails(lockRec) {\r\n this.spinner.show();\r\n this.http.post(`${auditURL}`, lockRec)\r\n .subscribe((auditRes: any) => {\r\n this.auditDetails = [];\r\n this.auditDetails = auditRes ? auditRes.auditRecords : [];\r\n this.spinner.hide();\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.toastr.error('Failed to retrieve Audit details', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n });\r\n }\r\n\r\n sendMessage(mesReq: SendMessage) {\r\n this.spinner.show();\r\n return this.http.post(`${sendMessageURL}`, mesReq);\r\n }\r\n\r\n addLockUserToGroup(lockUserGroupRec: AddUserToGroupRequest) {\r\n this.spinner.show();\r\n return this.http.post(`${addToGroupURL}`, lockUserGroupRec);\r\n }\r\n\r\n deleteLockUserFromGroup(lockUserGroupRec: LockUserGroup) {\r\n this.spinner.show();\r\n return this.http.post(`${deleteFromGroupURL}`, lockUserGroupRec);\r\n }\r\n\r\n generateCode(lockUser: GenerateCode) {\r\n this.spinner.show();\r\n return this.http.post(`${generateCodeURL}`, lockUser);\r\n }\r\n\r\n generateCodes(lockUsers: GenerateCode[]) {\r\n this.spinner.show();\r\n return this.http.post(`${generateCodesURL}`, lockUsers);\r\n }\r\n\r\n removeCode(lockUser: GenerateCode) {\r\n this.spinner.show();\r\n return this.http.post(`${removeCodeURL}`, lockUser);\r\n }\r\n\r\n removeCodes(lockUsers: GenerateCode[]) {\r\n this.spinner.show();\r\n return this.http.post(`${removeCodesURL}`, lockUsers);\r\n }\r\n\r\n getLockUsers(lockUserRec: UserLocksModel) {\r\n this.spinner.show();\r\n this.http.post(`${lockUsersURL}`, lockUserRec)\r\n .subscribe((lockUsersRes: any) => {\r\n this.lockUsers = lockUsersRes ? lockUsersRes.lockUserRecords : [];\r\n this.storeLockUsers(this.lockUsers);\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n getLockUsersV2(lockUserRec: UserLocksModel) {\r\n //this.spinner.show();\r\n return this.http.post(`${lockUsersURL}`, lockUserRec);\r\n }\r\n\r\n storeLockUsers(lockUsers: LockUsers[]) {\r\n this.lockUsersObv.next(lockUsers);\r\n }\r\n\r\n getUpdatedLockUsers(): Observable {\r\n return this.lockUsersObv.asObservable();\r\n }\r\n\r\n getLockUserAccess(lockUserRec: UserLocksModel) {\r\n this.spinner.show();\r\n this.http.post(`${getLockUserAccessURL}`, lockUserRec)\r\n .subscribe((lockUsersRes: LockUserAccess) => {\r\n this.lockUsersAccess = lockUsersRes.accessRecords;\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n getLockUserAccesses(lockUserRec: UserLocksModel) {\r\n this.spinner.show();\r\n return this.http.post(`${getLockUserAccessURL}`, lockUserRec);\r\n }\r\n\r\n getActiveLockUsersAndLocks(getActiveLockUsersAndLocks: GetActiveLockUsersAndLocks = new GetActiveLockUsersAndLocks()) {\r\n this.spinner.show();\r\n return this.http.post(`${getActiveLockUsersAndLocksURL}`, getActiveLockUsersAndLocks);\r\n }\r\n\r\n getUserLocks(user: UserGetResponseRecord) {\r\n this.spinner.show();\r\n this.http.post(`${userLocksURL}`, user)\r\n .subscribe(userLocksRes => {\r\n this.userLocks = userLocksRes;\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n getManageLocks() {\r\n this.spinner.show();\r\n this.http.post(`${userLocksURL}`, {})\r\n .subscribe(userLocksRes => {\r\n this.manageLocks = userLocksRes;\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n getLocks() {\r\n this.spinner.show();\r\n this.http.post(`${userLocksURL}`, {})\r\n .subscribe(userLocksRes => {\r\n this.locks = userLocksRes;\r\n this.storeLocks(this.locks);\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n getAssignedLocks(lockGetRequest: LockGetRequest = null) {\r\n this.spinner.show();\r\n let request = {};\r\n if (lockGetRequest) { request = lockGetRequest; }\r\n this.http.post(`${assignedUserLocksURL}`, request)\r\n .subscribe(userLocksRes => {\r\n this.assignedLocks = userLocksRes;\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n getAssignedLocksAsync(lockGetRequest: LockGetRequest = null) {\r\n this.spinner.show();\r\n let request = {};\r\n if (lockGetRequest) { request = lockGetRequest; }\r\n return this.http.post(`${assignedUserLocksURL}`, request);\r\n }\r\n\r\n getSearchedLocks(lockReq: UserLocksModel) {\r\n this.spinner.show();\r\n this.http.post(`${userLocksURL}`, lockReq)\r\n .subscribe(userLocksRes => {\r\n this.searchedLocks = userLocksRes;\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n getActivationCode(unitId) {\r\n this.spinner.show();\r\n return this.http.post(`${getActivationCodeURL}`, { 'serialNumber': unitId });\r\n }\r\n\r\n getUsers() {\r\n this.spinner.show();\r\n this.http.post(`${usersURL}`, {})\r\n .subscribe(usersRes => {\r\n this.users = usersRes;\r\n this.storeUsers(this.users);\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n storeUsers(users: UserGetResponseRecord[]) {\r\n this.usersObv.next(users);\r\n }\r\n\r\n getUpdatedUsers(): Observable {\r\n return this.usersObv.asObservable();\r\n }\r\n\r\n storeLocks(locks: UserLocksModel[]) {\r\n this.locksObv.next(locks);\r\n }\r\n\r\n fetchUpdatedLocks(): Observable {\r\n return this.locksObv.asObservable();\r\n }\r\n\r\n getUser(user: UserGetRequest) {\r\n this.spinner.show();\r\n return this.http.post(`${getUserURL}`, user);\r\n }\r\n\r\n updateUser(payload: UserUpdateRequest) {\r\n this.spinner.show();\r\n return this.http.post(`${updateUserURL}`, payload);\r\n }\r\n\r\n createLockUserGroup(createGroupForm) {\r\n this.spinner.show();\r\n return this.http.post(`${createLockUserGroupURL}`, createGroupForm);\r\n }\r\n\r\n readLockUserGroups() {\r\n this.spinner.show();\r\n return this.http.post(`${readLockUserGroupsURL}`, {})\r\n .subscribe((lockUserGroupsRes: any) => {\r\n this.lockUserGroups = lockUserGroupsRes ? lockUserGroupsRes.lockUserGroupRecords : [];\r\n this.storeLockUserGroups(this.lockUserGroups);\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n getLockUserGroupMems(groupDetails) {\r\n this.spinner.show();\r\n this.http.post(`${getLockUserGroupMemsURL}`, groupDetails)\r\n .subscribe((lockUserGroupMemsRes: any) => {\r\n this.lockUserGroupMems = lockUserGroupMemsRes;\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n storeLockUserGroups(lockUserGroups: LockUserGroup[]) {\r\n this.lockUserGroupsObv.next(lockUserGroups);\r\n }\r\n\r\n getUpdatedLockUserGroups(): Observable {\r\n return this.lockUserGroupsObv.asObservable();\r\n }\r\n\r\n deleteLockUserGroup(deleteGroupForm) {\r\n this.spinner.show();\r\n return this.http.post(`${deleteLockUserGroupURL}`, deleteGroupForm);\r\n }\r\n\r\n addNewUser(newUserForm) {\r\n this.spinner.show();\r\n return this.http.post(`${addNewUserURL}`, newUserForm);\r\n }\r\n\r\n addNewLockUser(newUserForm: LockUsers) {\r\n this.spinner.show();\r\n return this.http.post(`${addNewLockUserURL}`, newUserForm);\r\n }\r\n\r\n updateLockUser(lockUser: LockUsers) {\r\n this.spinner.show();\r\n return this.http.post(`${updateLockUserURL}`, lockUser);\r\n }\r\n\r\n updateLockUsers(lockUsers: LockUsers[]) {\r\n this.spinner.show();\r\n return this.http.post(`${updateLockUsersURL}`, lockUsers);\r\n }\r\n\r\n deleteLockUser(lockUserForm) {\r\n this.spinner.show();\r\n return this.http.post(`${deleteLockUserURL}`, lockUserForm);\r\n }\r\n\r\n deleteUser(userForm) {\r\n this.spinner.show();\r\n return this.http.post(`${deleteUserURL}`, userForm);\r\n }\r\n\r\n createOwnerUserAndActivateLock(ownerUserForm) {\r\n this.spinner.show();\r\n return this.http.post(`${createOwnerUserAndActivateLock}`, ownerUserForm);\r\n }\r\n\r\n activateLock(activateLockForm) {\r\n this.spinner.show();\r\n return this.http.post(`${activateLockURL}`, activateLockForm);\r\n }\r\n\r\n activateMultiLocks(activateMultiLocks) {\r\n this.spinner.show();\r\n return this.http.post(`${activateLocksURL}`, activateMultiLocks);\r\n }\r\n\r\n deActivateLock(request) {\r\n this.spinner.show();\r\n return this.http.put(`${deActivateLockURL}`, request);\r\n }\r\n\r\n updateLock(cloneLockReq: LockUpdateRequest) {\r\n this.spinner.show();\r\n return this.http.post(`${updateLockURL}`, cloneLockReq);\r\n }\r\n\r\n logout() {\r\n localStorage.removeItem(this.LOCALSTORAGE_AUTH_TOKEN);\r\n this.router.navigate(['login']);\r\n this.spinner.hide();\r\n\r\n this.clearUserNGroupsData();\r\n }\r\n\r\n getAccessToken() {\r\n return localStorage.getItem(this.LOCALSTORAGE_AUTH_TOKEN);\r\n }\r\n\r\n getDecodedAccessToken(token: string): any {\r\n try {\r\n return jwt_decode(token);\r\n } catch (Error) {\r\n return null;\r\n }\r\n }\r\n\r\n loadUsersGroups() {\r\n let userRole = '';\r\n const token = this.getAccessToken();\r\n const decodedToken = this.getDecodedAccessToken(token);\r\n\r\n if (decodedToken) {\r\n userRole = decodedToken.Role;\r\n }\r\n\r\n if (userRole && userRole != 'GlobalAdmin') {\r\n if (decodedToken && this.lockUserGroups && this.lockUserGroups.length == 0) {\r\n this.readLockUserGroups();\r\n }\r\n if (decodedToken && this.lockUsers && this.lockUsers.length == 0) {\r\n this.getLockUsers(new UserLocksModel());\r\n }\r\n }\r\n\r\n if (decodedToken && this.users && this.users.length == 0) {\r\n this.getUsers();\r\n }\r\n }\r\n\r\n generateCodeForAuditCollector(payload: UserUpdateRequest) {\r\n this.spinner.show();\r\n return this.http.post(`${updateUserURL}`, payload);\r\n }\r\n\r\n clearUserNGroupsData() {\r\n this.lockUserGroups.length = 0;\r\n this.lockUsers.length = 0;\r\n this.users.length = 0;\r\n\r\n this.locks.length = 0;\r\n this.lockUsersAccess.length = 0;\r\n this.userLocks.length = 0;\r\n this.manageLocks.length = 0;\r\n this.searchedLocks.length = 0;\r\n this.lockUserGroupMems.length = 0;\r\n this.auditDetails.length = 0;\r\n }\r\n}\r\n","export class UserGetResponseRecord {\r\n\tconstructor(\r\n\t\tpublic id: number = null,\r\n\t\tpublic userName: string = '',\r\n\t\tpublic firstName: string = '',\r\n\t\tpublic lastName: string = '',\r\n\t\tpublic phone: string = '',\r\n\t\tpublic email: string = '',\r\n\t\tpublic passwordChangePending: number = null,\r\n\t\tpublic roles: string = '',\r\n public rolesToDisplay: string = '',\r\n\t\tpublic group: string = '',\r\n\t\tpublic company: string = '',\r\n\t\tpublic maxArbitraryCodes: number = null,\r\n\t\tpublic maxPerpetualCodes: number = null,\r\n\t\tpublic maxDailyCodes: number = null,\r\n\t\tpublic maxWeeklyCodes: number = null,\r\n\t\tpublic globalAdminBlock: number = 0\r\n\t) { }\r\n}\r\n","module.exports = \"a.navbar-brand {\\r\\n\\twhite-space: normal;\\r\\n\\ttext-align: center;\\r\\n\\tword-break: break-all;\\r\\n}\\r\\n\\r\\nhtml {\\r\\n\\tfont-size: 14px;\\r\\n}\\r\\n\\r\\n@media (min-width: 768px) {\\r\\n\\thtml {\\r\\n\\t\\tfont-size: 16px;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n.box-shadow {\\r\\n\\tbox-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbmF2LW1lbnUvbmF2LW1lbnUuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtDQUNDLG1CQUFtQjtDQUNuQixrQkFBa0I7Q0FDbEIscUJBQXFCO0FBQ3RCOztBQUVBO0NBQ0MsZUFBZTtBQUNoQjs7QUFFQTtDQUNDO0VBQ0MsZUFBZTtDQUNoQjtBQUNEOztBQUVBO0NBQ0MsOENBQThDO0FBQy9DIiwiZmlsZSI6InNyYy9hcHAvbmF2LW1lbnUvbmF2LW1lbnUuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbImEubmF2YmFyLWJyYW5kIHtcclxuXHR3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG5cdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHR3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbn1cclxuXHJcbmh0bWwge1xyXG5cdGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5cclxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XHJcblx0aHRtbCB7XHJcblx0XHRmb250LXNpemU6IDE2cHg7XHJcblx0fVxyXG59XHJcblxyXG4uYm94LXNoYWRvdyB7XHJcblx0Ym94LXNoYWRvdzogMCAuMjVyZW0gLjc1cmVtIHJnYmEoMCwgMCwgMCwgLjA1KTtcclxufVxyXG4iXX0= */\"","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Router, NavigationExtras } from '@angular/router';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription } from 'rxjs';\r\nimport { LoginRequest } from '../models/LoginRequest.model';\r\nimport { Repository } from '../models/repository';\r\nimport { UserGetResponseRecord } from '../models/userGetResponseRecord.model';\r\nimport { DataService } from '../shared/dataService';\r\nimport { AppLabels } from '../Common/app.constants';\r\nimport { AppRoles } from '../common/app.roles';\r\n\r\n@Component({\r\n selector: 'app-nav-menu',\r\n templateUrl: './nav-menu.component.html',\r\n styleUrls: ['./nav-menu.component.css']\r\n})\r\nexport class NavMenuComponent implements OnInit, OnDestroy {\r\n isExpanded = false;\r\n hideMenu = true;\r\n hideLogout = true;\r\n isValidSession = false;\r\n LOCALSTORAGE_AUTH_TOKEN = 'authenticationToken';\r\n\r\n subscriptions: Array = [];\r\n\r\n addUserForm: FormGroup;\r\n\r\n showLoginOwner = false;\r\n loginUser: string;\r\n userRole: string;\r\n\r\n usersArray: Array = this.repo.users;\r\n\r\n usersDropDown: Array = [];\r\n\r\n constructor(private router: Router, private dataService: DataService,\r\n private formBuilder: FormBuilder, private repo: Repository,\r\n private spinner: NgxSpinnerService, private toastr: ToastrService,\r\n private appLabels: AppLabels, private roles: AppRoles) {\r\n this.setUserInfo();\r\n\r\n this.addUserForm = this.formBuilder.group({\r\n username: ['', Validators.required],\r\n password: ['', Validators.required],\r\n option: ['', Validators.required]\r\n });\r\n\r\n this.repo.getUpdatedUsers().subscribe((users: UserGetResponseRecord[]) => {\r\n if (users && users.length > 0) {\r\n this.usersArray = users;\r\n this.buildUsersDropDown();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n const session = localStorage.getItem('authenticationToken');\r\n if (session) {\r\n this.isValidSession = true;\r\n } else {\r\n this.isValidSession = false;\r\n }\r\n this.subscriptions.push(\r\n this.dataService.checkIfAdminLoggedAsOwner().subscribe((isAdminAsOwner: boolean) => {\r\n if (isAdminAsOwner) {\r\n this.setUserInfo();\r\n }\r\n })\r\n );\r\n }\r\n\r\n setUserInfo() {\r\n const token = this.dataService.getAccessToken();\r\n const decodedToken = this.dataService.getDecodedAccessToken(token);\r\n if (decodedToken) {\r\n this.loginUser = decodedToken.unique_name;\r\n this.userRole = decodedToken.Role;\r\n }\r\n }\r\n\r\n collapse() {\r\n this.isExpanded = false;\r\n }\r\n\r\n toggleMenu() {\r\n this.hideMenu = !this.hideMenu;\r\n }\r\n\r\n toggleLogout() {\r\n this.hideLogout = !this.hideLogout;\r\n }\r\n\r\n navHome() {\r\n this.router.navigate(['home']);\r\n }\r\n\r\n navHelp() {\r\n this.router.navigate(['help']);\r\n }\r\n\r\n navUser() {\r\n this.router.navigate(['user']);\r\n }\r\n\r\n navUnits() {\r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() =>\r\n this.router.navigate(['units']));\r\n }\r\n\r\n navAssignedUnits() {\r\n const navExtras: NavigationExtras = {\r\n queryParams: {\r\n displayAssignedLocks: true\r\n }\r\n };\r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() =>\r\n this.router.navigate(['units'], {\r\n state: { locks: navExtras }\r\n }));\r\n }\r\n\r\n navCodes() {\r\n this.router.navigate(['codes']);\r\n }\r\n\r\n navGroups() {\r\n this.router.navigate(['groups']);\r\n }\r\n\r\n navAudits() {\r\n this.router.navigate(['audits']);\r\n }\r\n\r\n navUserProfile() {\r\n this.router.navigate(['user-profile']);\r\n }\r\n\r\n showLoginOwnerDialog() {\r\n this.showLoginOwner = true;\r\n }\r\n\r\n closeLoginUserDialog() {\r\n this.showLoginOwner = false;\r\n }\r\n\r\n loginAsOwner(userInfoForm: FormGroup) {\r\n if (this.addUserForm.valid) {\r\n const userLoginReq = new LoginRequest();\r\n Object.assign(userLoginReq, userInfoForm.value);\r\n this.spinner.show();\r\n this.dataService.login(userLoginReq).subscribe((status: any) => {\r\n this.spinner.hide();\r\n if (status) {\r\n // Clearing Users, LockUsers and LockUserGroups data\r\n this.repo.clearUserNGroupsData();\r\n\r\n this.repo.loadUsersGroups();\r\n this.closeLoginUserDialog();\r\n this.toastr.success(`Successfully logged in as Owner User: ${userLoginReq.option}`, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 5000\r\n });\r\n\r\n // Re-render the home page as Admin logged in as Owner\r\n this.dataService.loginAsOwner(true);\r\n this.navHome();\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.toastr.error('Failed to Login As Owner', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n });\r\n } else {\r\n this.toastr.error('Please Provide all the inputs', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n }\r\n }\r\n\r\n logout() {\r\n this.repo.logout();\r\n }\r\n\r\n buildUsersDropDown() {\r\n if (this.usersArray) {\r\n this.usersArray.sort((a, b) => a.userName.localeCompare(b.userName));\r\n this.usersDropDown = [];\r\n this.usersDropDown.push(\r\n { label: 'Select', value: null }\r\n );\r\n this.usersArray.forEach((lockUserGroup: UserGetResponseRecord) => {\r\n if (this.userRole == this.roles.globalAdmin && lockUserGroup.roles\r\n && lockUserGroup.roles.includes(this.roles.ownerUser))\r\n {\r\n this.usersDropDown.push(\r\n { label: lockUserGroup.userName, value: lockUserGroup.userName }\r\n );\r\n } else if (this.userRole == this.roles.ownerUser && lockUserGroup.roles && lockUserGroup.roles == this.roles.user) {\r\n this.usersDropDown.push(\r\n { label: lockUserGroup.userName, value: lockUserGroup.userName }\r\n );\r\n } else if (this.userRole == this.roles.user && lockUserGroup.roles && lockUserGroup.roles == this.roles.auditCollector) {\r\n this.usersDropDown.push(\r\n { label: lockUserGroup.userName, value: lockUserGroup.userName }\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n}\r\n","import { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { Injectable } from '@angular/core';\r\nimport * as jwt_decode from 'jwt-decode';\r\nimport { DataService } from './dataService';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { Repository } from '../models/repository';\r\nimport { AppNotification } from '../Common/app.notification';\r\n\r\n@Injectable()\r\nexport class AuthenticatedGuard implements CanActivate {\r\n\tLOCALSTORAGE_AUTH_TOKEN = 'authenticationToken';\r\n\r\n\tconstructor(private router: Router, private dataService: DataService,\r\n\t\tprivate spinner: NgxSpinnerService, private repo: Repository,\r\n\t\tprivate notify: AppNotification) { }\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n\t\tthis.spinner.hide();\r\n\t\tconst isSessionValid: boolean = this.isValidSession();\r\n\t\tif (isSessionValid) {\r\n\t\t\tif (route.routeConfig.path == 'login') {\r\n\t\t\t\tthis.router.navigate(['home']);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\tif (route.routeConfig.path == 'login') {\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\t// not logged in so logout user and redirect to login page\r\n\t\t\t\t// this.commonSB.errorHandler(\"Session timedout\");\r\n\r\n\t\t\t\t// return false & uncomment logout after fixing login issue.\r\n\t\t\t\tthis.logout(state);\r\n\t\t\t\treturn false;\r\n\t\t\t\t// return true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisValidSession(): boolean {\r\n\t\tconst accessToken = this.getAccessToken();\r\n\t\tconst tokenInfo = this.getDecodedAccessToken(accessToken);\r\n\t\tif (tokenInfo != null && tokenInfo != undefined) {\r\n\t\t\tconst current_time = Date.now() / 1000; // time in seconds\r\n\t\t\tconst expiryDate = tokenInfo.exp;\r\n\t\t\tconst timeDiffMins = (expiryDate - current_time) / 60;\r\n\t\t\tif ((expiryDate > current_time)) {\r\n\t\t\t\t// if (timeDiffMins >= 0 && timeDiffMins < 16) {\r\n\t\t\t\t// console.log(\"time diff::\" + timeDiffMins + \" mins..\");\r\n\t\t\t\t// this.refreshToken().subscribe((res) => {\r\n\t\t\t\t// let tokenInfo = res;\r\n\t\t\t\t// this.setToken(tokenInfo != undefined ? tokenInfo.token : '');\r\n\t\t\t\t// });\r\n\t\t\t\t// return true;\r\n\t\t\t\t// } else {\r\n\t\t\t\t// console.log(\"time diff::\" + timeDiffMins + \" mins..\");\r\n\t\t\t\t// return true;\r\n\t\t\t\t// }\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log('Token expired...');\r\n\t\t\t\tthis.notify.error('Login again to continue.', 'Session expired!');\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tlogout(state) {\r\n\t\t// localStorage.removeItem(this.LOCALSTORAGE_AUTH_TOKEN);\r\n\r\n\t\t// this.router.navigate([\"login\"]);\r\n\t\tthis.router.navigate(['login'], { queryParams: { returnUrl: state.url } });\r\n\t\tthis.repo.logout();\r\n\t}\r\n\r\n\tgetAccessToken() {\r\n\t\treturn localStorage.getItem(this.LOCALSTORAGE_AUTH_TOKEN);\r\n\t}\r\n\r\n\tgetDecodedAccessToken(token: string): any {\r\n\t\ttry {\r\n\t\t\treturn jwt_decode(token);\r\n\t\t} catch (Error) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n}\r\n","import { HttpClient, HttpBackend } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\r\nimport { catchError, map, tap } from 'rxjs/operators';\r\nimport * as jwt_decode from 'jwt-decode';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { UserGetResponseRecord } from '../models/userGetResponseRecord.model';\r\nimport { Router } from '@angular/router';\r\n\r\nconst resetInitiateURL = '/api/passwordReset/initiate';\r\nconst resetPasswordURL = '/api/passwordReset/reset';\r\nconst updateUserPasswordURL = '/api/user/UpdateUserPassword';\r\nconst getUserURL = '/api/user/GetUserDetails';\r\n\r\n@Injectable()\r\nexport class DataService {\r\n LOCALSTORAGE_AUTH_TOKEN = 'authenticationToken';\r\n public userData: UserData;\r\n private httpClient: HttpClient;\r\n\r\n private token = '';\r\n private tokenExpiration: Date = new Date();\r\n loggedInAsOwner = new BehaviorSubject(false);\r\n\r\n constructor(private http: HttpClient, handler: HttpBackend,\r\n private spinner: NgxSpinnerService, private toastr: ToastrService,\r\n private router: Router) {\r\n this.httpClient = new HttpClient(handler);\r\n }\r\n\r\n loginAsOwner(adminAsOwner: boolean) {\r\n this.loggedInAsOwner.next(adminAsOwner);\r\n }\r\n\r\n checkIfAdminLoggedAsOwner(): Observable {\r\n return this.loggedInAsOwner.asObservable();\r\n }\r\n\r\n public get loginRequired(): boolean {\r\n return this.token.length == 0 || this.tokenExpiration > new Date();\r\n }\r\n\r\n public getLock() {\r\n return this.http.get('/api/lock', { withCredentials: true })\r\n .pipe(\r\n map((response: any) => {\r\n console.log('Success');\r\n return true;\r\n }));\r\n }\r\n\r\n public login(creds) {\r\n return this.httpClient.post('/account/createtoken', creds)\r\n .pipe(\r\n map((response: any) => {\r\n const tokenInfo = response;\r\n if (tokenInfo && tokenInfo.token) {\r\n window.localStorage.setItem('authenticationToken', tokenInfo.token);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }),\r\n catchError((err: any) => {\r\n this.spinner.hide();\r\n return throwError(err);\r\n })\r\n );\r\n }\r\n\r\n fetchLoggedInUserDetails(payload) {\r\n this.spinner.show();\r\n return this.http.post(`${getUserURL}`, payload);\r\n }\r\n\r\n generatePasswordResetLink(payload) {\r\n this.spinner.show();\r\n return this.httpClient.post(`${resetInitiateURL}`, payload);\r\n }\r\n\r\n resetPassword(payload) {\r\n this.spinner.show();\r\n return this.httpClient.post(`${resetPasswordURL}`, payload);\r\n }\r\n\r\n updatePassword(request) {\r\n this.spinner.show();\r\n return this.http.post(`${updateUserPasswordURL}`, request);\r\n }\r\n\r\n setAccessToken(token) {\r\n window.localStorage.setItem('authenticationToken', token);\r\n }\r\n\r\n getAccessToken() {\r\n return localStorage.getItem(this.LOCALSTORAGE_AUTH_TOKEN);\r\n }\r\n\r\n getDecodedAccessToken(token: string): any {\r\n try {\r\n return jwt_decode(token);\r\n } catch (Error) {\r\n return null;\r\n }\r\n }\r\n getLoginUserRole() {\r\n let role = 'User';\r\n const token = this.getAccessToken();\r\n const decodedToken = this.getDecodedAccessToken(token);\r\n if (decodedToken) {\r\n role = decodedToken.Role;\r\n }\r\n return role;\r\n }\r\n}\r\n\r\nexport interface UserData {\r\n id: number;\r\n userName: string;\r\n firstName: string;\r\n lastName: string;\r\n phone: string;\r\n email: string;\r\n roles: string;\r\n}\r\n","module.exports = \".table th {\\n background-color: #DC0000 !important;\\n border: 2px solid #fff;\\n border-collapse: separate;\\n}\\n\\n.table td {\\n border: 2px solid #fff;\\n border-collapse: separate;\\n}\\n\\n.table {\\n overflow: scroll;\\n}\\n\\n.center-items {\\n align-items: center;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdW5pdHMvQzpcXFVzZXJzXFxWaXZla1xcc291cmNlXFxyZXBvc1xcTG94YWwgU2VjdXJpdHlcXExvY2tzXFxDbGllbnRBcHAvc3JjXFxhcHBcXHVuaXRzXFx1bml0cy5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvdW5pdHMvdW5pdHMuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDQyxvQ0FBQTtFQUNBLHNCQUFBO0VBQ0EseUJBQUE7QUNDRDs7QURFQTtFQUNDLHNCQUFBO0VBQ0EseUJBQUE7QUNDRDs7QURFQTtFQUNDLGdCQUFBO0FDQ0Q7O0FERUE7RUFDQyxtQkFBQTtBQ0NEIiwiZmlsZSI6InNyYy9hcHAvdW5pdHMvdW5pdHMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudGFibGUgdGgge1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNEQzAwMDAgIWltcG9ydGFudDtcclxuXHRib3JkZXI6IDJweCBzb2xpZCAjZmZmO1xyXG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XHJcbn1cclxuXHJcbi50YWJsZSB0ZCB7XHJcblx0Ym9yZGVyOiAycHggc29saWQgI2ZmZjtcclxuXHRib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xyXG59XHJcblxyXG4udGFibGUge1xyXG5cdG92ZXJmbG93OiBzY3JvbGw7XHJcbn1cclxuXHJcbi5jZW50ZXItaXRlbXMge1xyXG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuIiwiLnRhYmxlIHRoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0RDMDAwMCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDJweCBzb2xpZCAjZmZmO1xuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4udGFibGUgdGQge1xuICBib3JkZXI6IDJweCBzb2xpZCAjZmZmO1xuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4udGFibGUge1xuICBvdmVyZmxvdzogc2Nyb2xsO1xufVxuXG4uY2VudGVyLWl0ZW1zIHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn0iXX0= */\"","import { Component, HostListener } from '@angular/core';\r\nimport { DataService } from '../shared/dataService';\r\nimport { Router } from '@angular/router';\r\nimport { UserLocksModel } from '../models/UserLocksModel.model';\r\nimport { Repository } from '../models/repository';\r\nimport * as $ from 'jquery';\r\nimport { LockUsersDetails } from '../models/LockUserAccess.model';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuditResponseRecord } from '../models/AuditResponseRecord.model';\r\nimport { LockUpdateRequest } from '../models/LockUpdateRequest.model';\r\nimport * as AppConstants from '../common/app.constants';\r\nimport { AppRoles } from '../common/app.roles';\r\nimport { UserGetResponseRecord } from '../models/userGetResponseRecord.model';\r\nimport { Message } from 'primeng/components/common/api';\r\nimport { LockGetRequest } from '../models/LockGetRequest.model';\r\nimport { GenerateCode } from '../models/GenerateCode.model';\r\nimport { AppNotification } from '../common/app.notification';\r\nimport { LockUsers } from '../models/LockUsers.model';\r\nimport { concat, forkJoin, Observable } from 'rxjs';\r\nimport { SendMessage } from '../models/SendMessage.model';\r\nimport { LockUserGroup } from '../models/LockUserGroup.model';\r\nimport { LockGlobalAdmin } from '../models/LockGlobalAdmin.model';\r\nimport * as AppHelper from '../common/app.helper';\r\nimport { concatMap, tap } from 'rxjs/operators';\r\nimport { observable } from 'rxjs';\r\nimport { EMPTY } from 'rxjs';\r\nimport { ActiveLock, ActiveLockUser } from '../models/ActiveLockUsersAndLocks.model';\r\n\r\n@Component({\r\n selector: 'units',\r\n templateUrl: './units.component.html',\r\n styleUrls: ['./units.component.scss']\r\n})\r\nexport class UnitsComponent {\r\n tblDheight = AppConstants.Generic.tableHeight;\r\n userRole: string;\r\n today = new Date();\r\n viewUserLocks = false;\r\n showActivateLockDialog = false;\r\n showDeActivateLockDialog = false;\r\n showActivateMultiLocksDialog = false;\r\n showCloneLockDialog = false;\r\n showChangeSeedCodeDialog = false;\r\n showEditLockDetailsDialog = false;\r\n showResendUserCodeDialog = false;\r\n disableGenerate = true;\r\n msgs: Message[] = [];\r\n disableCloning = false;\r\n showGenerateCodeInputDialog = false;\r\n showRemoveCodeInputDialog = false;\r\n showConfirmationSection = false;\r\n isConvertingToArbitraryUser = false;\r\n isSearch = false;\r\n displayAssignedLocks = false;\r\n serNumReadOnly = true;\r\n viewAudit = false;\r\n id = '';\r\n required = '';\r\n submitted = '';\r\n cloneFromSelected = '';\r\n\r\n cols: any[];\r\n cols1: any[];\r\n cols2: any[];\r\n filteredUserLocks: any[];\r\n\r\n /** Gets or sets the title for the Units page.*/\r\n pageTitle = AppConstants.PageTitle.units;\r\n\r\n /** Gets or sets the number of rows per page to be displayed. */\r\n rowsPerPage = AppConstants.Generic.rowsPerPage;\r\n\r\n /** Boolean flag representing the current logged in user is GlobaAdmin or not. */\r\n isGlobalAdmin = false;\r\n\r\n /** Boolean flag representing the current logged in user is OwnerUser or not. */\r\n isOwnerUser = false;\r\n\r\n /** Boolean flag representing the current logged in user is Manager or not. */\r\n isManager = false;\r\n\r\n /** Array of seleceted locks. */\r\n selectedLocks: UserLocksModel[];\r\n\r\n /** Gets or sets the options menu width.*/\r\n optionsMenuWidth = '350px';\r\n\r\n constSecretHidden = this.appHelper.constSecretHidden;\r\n\r\n locksArray: Array = this.repo.locks;\r\n locksDropDown = [];\r\n locksFromDropdown = [];\r\n locksToDropdown = [];\r\n assignedLocksDropdown = [];\r\n assignedLocksArray: LockGlobalAdmin[] = [];\r\n ownerUsersDropDown = [];\r\n selViewAuditRec: LockUsersDetails;\r\n activateLockForm: FormGroup;\r\n activateMultiLocksForm: FormGroup;\r\n deActivateLockForm: FormGroup;\r\n cloneLockForm: FormGroup;\r\n changeSeedCodeForm: FormGroup;\r\n searchForm: FormGroup;\r\n generateCodeInputForm: FormGroup;\r\n removeCodeInputForm: FormGroup;\r\n editLockDetailsForm: FormGroup;\r\n resendUserCodeForm: FormGroup;\r\n lockUsersDetailsWithCode: LockUsersDetails[] = [];\r\n lockUsersArray: Array = this.repo.lockUsers;\r\n groupsArray: Array = this.repo.lockUserGroups;\r\n lockUsersDropDown: Array = [];\r\n activeLockUsersDropDown: Array = [];\r\n activeLocksDropDown: Array = [];\r\n groupLockUsersDropDown: Array = [];\r\n groupsDropDown: Array = [];\r\n\r\n lockTypeDropDown = [\r\n { label: AppConstants.LockTypeDisplay.ajaxReadyExternalAlarmKeypad, value: AppConstants.LockType.ajaxReadyExternalAlarmKeypad },\r\n { label: AppConstants.LockTypeDisplay.blockLock, value: AppConstants.LockType.blockLock },\r\n { label: AppConstants.LockTypeDisplay.blockLockPro, value: AppConstants.LockType.blockLockPro },\r\n { label: AppConstants.LockTypeDisplay.externalAlarmKeyPad, value: AppConstants.LockType.externalAlarmKeyPad },\r\n { label: AppConstants.LockTypeDisplay.faceFix, value: AppConstants.LockType.faceFix },\r\n { label: AppConstants.LockTypeDisplay.faceFixV2, value: AppConstants.LockType.faceFixV2 },\r\n { label: AppConstants.LockTypeDisplay.faceFixProKeySafe, value: AppConstants.LockType.faceFixProKeySafe },\r\n { label: AppConstants.LockTypeDisplay.faceFixProXl, value: AppConstants.LockType.faceFixProXl },\r\n { label: AppConstants.LockTypeDisplay.keyCabinet, value: AppConstants.LockType.keyCabinet },\r\n { label: AppConstants.LockTypeDisplay.keyCabinetV2, value: AppConstants.LockType.keyCabinetV2 },\r\n { label: AppConstants.LockTypeDisplay.keyCabinetSmall, value: AppConstants.LockType.keyCabinetSmall },\r\n { label: AppConstants.LockTypeDisplay.letterbox, value: AppConstants.LockType.letterbox },\r\n { label: AppConstants.LockTypeDisplay.lockConverter, value: AppConstants.LockType.lockConverter },\r\n { label: AppConstants.LockTypeDisplay.lockingBar, value: AppConstants.LockType.lockingBar },\r\n { label: AppConstants.LockTypeDisplay.securityDoor, value: AppConstants.LockType.securityDoor },\r\n { label: AppConstants.LockTypeDisplay.securityDoorV2, value: AppConstants.LockType.securityDoorV2 },\r\n { label: AppConstants.LockTypeDisplay.sTrapV2, value: AppConstants.LockType.sTrapV2 },\r\n { label: AppConstants.LockTypeDisplay.videofiedExternalAlarmKeypad, value: AppConstants.LockType.videofiedExternalAlarmKeypad }\r\n ];\r\n\r\n lockStatusDropDown = [\r\n { label: AppConstants.LockStatusDisplay.stock, value: AppConstants.LockStatus.stock },\r\n { label: AppConstants.LockStatusDisplay.onsite, value: AppConstants.LockStatus.onsite },\r\n { label: AppConstants.LockStatusDisplay.installed, value: AppConstants.LockStatus.installed },\r\n { label: AppConstants.LockStatusDisplay.inRepair, value: AppConstants.LockStatus.inRepair }\r\n ];\r\n\r\n codeTypeDropdown = [\r\n { label: AppConstants.LockCodeTypeDisplay.arbitrary, value: AppConstants.LockCodeType.arbitrary.toLowerCase() },\r\n { label: AppConstants.LockCodeTypeDisplay.perpetual, value: AppConstants.LockCodeType.perpetual.toLowerCase() },\r\n { label: AppConstants.LockCodeTypeDisplay.daily, value: AppConstants.LockCodeType.daily.toLowerCase() },\r\n { label: AppConstants.LockCodeTypeDisplay.weekly, value: AppConstants.LockCodeType.weekly.toLowerCase() }\r\n ];\r\n\r\n lockInterfaceDropDown = [\r\n { label: AppConstants.LockInterfaceDisplay.no, value: AppConstants.LockInterface.no },\r\n { label: AppConstants.LockInterfaceDisplay.undefined, value: AppConstants.LockInterface.undefined },\r\n { label: AppConstants.LockInterfaceDisplay.videofied, value: AppConstants.LockInterface.videofied },\r\n { label: AppConstants.LockInterfaceDisplay.ajax, value: AppConstants.LockInterface.ajax }\r\n ];\r\n\r\n /** Gets or sets the key-value pair of userId and accessCode for the lock. */\r\n lockUserIdAndAccessCode: { [key: string]: string } = {};\r\n\r\n genCodeForUserOrGroup: string;\r\n\r\n /** Gets selections/targets to which the generated access code to be sent for the user. */\r\n messageMediumSelection: string[] = [];\r\n constPhone = AppConstants.Generic.phone;\r\n constEmail = AppConstants.Generic.email;\r\n constUser = AppConstants.Generic.user;\r\n constGroup = AppConstants.Generic.group;\r\n constRange = 'range';\r\n constCount = 'count';\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event?) {\r\n this.tblDheight = $(window).height() - 260 + 'px';\r\n }\r\n\r\n constructor(private data: DataService, private router: Router, private repo: Repository,\r\n private formBuilder: FormBuilder, private spinner: NgxSpinnerService, private toastr: ToastrService,\r\n private appLabels: AppConstants.AppLabels, private appRoles: AppRoles, private appNotification: AppNotification,\r\n private apptimeZone: AppHelper.AppTimeZone, private appHelper: AppHelper.Helper) {\r\n this.viewUserLocks = false;\r\n this.viewAudit = false;\r\n this.selViewAuditRec = null;\r\n this.tblDheight = $(window).height() - 260 + 'px';\r\n this.userRole = data.getLoginUserRole();\r\n this.isGlobalAdmin = this.userRole.toLowerCase() == appRoles.globalAdmin.toLowerCase();\r\n this.isOwnerUser = this.userRole.toLowerCase() == appRoles.ownerUser.toLowerCase();\r\n this.isManager = this.userRole.toLowerCase() == appRoles.user.toLowerCase();\r\n this.genCodeForUserOrGroup = this.constUser.toLowerCase();\r\n\r\n const navigation = this.router.getCurrentNavigation();\r\n const state = navigation.extras.state;\r\n if (state && this.isGlobalAdmin) {\r\n this.displayAssignedLocks = state.locks.queryParams.displayAssignedLocks;\r\n if (this.displayAssignedLocks) {\r\n this.repo.getAssignedLocks();\r\n this.pageTitle = AppConstants.PageTitle.assignedUnits;\r\n }\r\n } else {\r\n this.viewLocks();\r\n this.pageTitle = AppConstants.PageTitle.units;\r\n }\r\n\r\n this.cols = [\r\n //{ field: 'serialNumber', header: appLabels.lockId + ' (TYPE)' },\r\n { field: 'status', header: appLabels.status },\r\n { field: 'hasInterface', header: appLabels.interface },\r\n { field: 'location', header: appLabels.location },\r\n { field: 'notes', header: appLabels.notes },\r\n { field: 'ownerUser', header: appLabels.owner + ' (' + appLabels.userName + ')' },\r\n //{ field: 'ownerUserName', header: appLabels.ownerUserName },\r\n { field: 'customer', header: appLabels.customer },\r\n { field: 'lastAuditCollection', header: appLabels.audit },\r\n { field: 'created', header: appLabels.dateCreated }\r\n ];\r\n\r\n this.cols1 = [\r\n { field: 'lockUserName', header: appLabels.user },\r\n { field: 'keypadCode', header: appLabels.code },\r\n { field: 'codeTypeDescription', header: appLabels.codeType },\r\n { field: 'added', header: appLabels.dateAssigned }\r\n ];\r\n\r\n this.cols2 = [\r\n { field: 'dateTime', header: 'Date/Time' },\r\n { field: 'lockUserName', header: 'User' },\r\n { field: 'eventType', header: 'Event' }\r\n ];\r\n\r\n this.searchForm = this.formBuilder.group({\r\n searchText: ['']\r\n });\r\n\r\n this.activateLockForm = this.formBuilder.group({\r\n serialNumber: ['', Validators.required],\r\n activationCode: ['', Validators.required]\r\n });\r\n\r\n this.activateMultiLocksForm = this.formBuilder.group({\r\n countOfLocksToActivate: [AppConstants.Generic.minCountOfLocksToActivateByAdmin, Validators.required],\r\n serialNumbers: ['', Validators.required],\r\n OwnerUserId: ['', Validators.required],\r\n lockType: [''],\r\n fromLock: [''],\r\n toLock: [''],\r\n isCountOrRange: [''],\r\n Interface: [0]\r\n });\r\n\r\n this.deActivateLockForm = this.formBuilder.group({\r\n serialNumber: ['', Validators.required],\r\n ownerUserId: ['', Validators.required],\r\n ownerUserName: [''],\r\n ownerUserFullName: ['-']\r\n });\r\n\r\n this.cloneLockForm = this.formBuilder.group({\r\n newSeedCode: ['', Validators.required],\r\n oldSeedCode: [''],\r\n serialNumber: ['', Validators.required]\r\n });\r\n\r\n this.changeSeedCodeForm = this.formBuilder.group({\r\n oldSeedCode: [''],\r\n newSeedCode: ['', Validators.required],\r\n serialNumber: ['', Validators.required]\r\n });\r\n\r\n this.resendUserCodeForm = this.formBuilder.group({\r\n lockSerialNumber: [''],\r\n lockUserId: [''],\r\n lockUser: ['', Validators.required],\r\n messageMedium: ['', Validators.required]\r\n });\r\n\r\n this.generateCodeInputForm = this.formBuilder.group({\r\n lockSerialNumber: ['', Validators.required],\r\n codeType: ['', Validators.required],\r\n lockUserId: [''],\r\n lockUser: [''],\r\n lockUserGroupName: [''],\r\n messageMedium: [''],\r\n isCodeForUserOrGroup: ['']\r\n });\r\n\r\n this.removeCodeInputForm = this.formBuilder.group({\r\n lockSerialNumber: ['', Validators.required],\r\n lockUser: ['', Validators.required],\r\n codeType: ['', Validators.required]\r\n });\r\n\r\n this.editLockDetailsForm = this.formBuilder.group({\r\n serialNumber: ['', Validators.required],\r\n location: [''],\r\n customer: [''],\r\n notes: [''],\r\n installationDate: [''],\r\n Interface: [0],\r\n LockType: [''],\r\n status: ['']\r\n });\r\n\r\n this.getAvailableLocks();\r\n\r\n this.resetGenerateCodeInputForm();\r\n this.activateMultiLocksForm.controls['isCountOrRange'].setValue(this.constRange);\r\n this.removeCodeInputForm.reset();\r\n this.buildOwnerUsersDropDown();\r\n this.enableOrDisableUserAndGroupControls();\r\n this.buildUsersDropDown();\r\n this.buildGroupsDropDown();\r\n }\r\n\r\n resetGenerateCodeInputForm() {\r\n this.generateCodeInputForm.reset();\r\n this.generateCodeInputForm.controls['isCodeForUserOrGroup'].setValue(this.constUser.toLowerCase());\r\n this.onUserOrGroupRadioClick(this.constUser);\r\n }\r\n\r\n getUpdatedLockUsersAndGroups() {\r\n //this.repo.getLockUsers(new UserLocksModel());\r\n //this.lockUsersArray = this.repo.lockUsers;\r\n\r\n this.repo.getLockUsersV2(new UserLocksModel())\r\n .subscribe((lockUsersRes: any) => {\r\n this.lockUsersArray = lockUsersRes ? lockUsersRes.lockUserRecords : [];\r\n });\r\n \r\n this.repo.getUpdatedLockUserGroups().subscribe((lockUserGroups: LockUserGroup[]) => {\r\n if (lockUserGroups && lockUserGroups.length > 0) {\r\n this.groupsArray = lockUserGroups;\r\n this.buildGroupsDropDown();\r\n }\r\n });\r\n }\r\n\r\n buildUsersDropDown() {\r\n if (this.lockUsersArray) {\r\n this.lockUsersDropDown = [];\r\n this.groupLockUsersDropDown = [];\r\n this.lockUsersArray.forEach((lockUser: LockUsers) => {\r\n let username = lockUser.name;\r\n if (lockUser.arbitraryKeypadCode && lockUser.arbitraryKeypadCode > 0) {\r\n username = username + \" \" + this.appLabels.arbitraryUserInidicator;\r\n this.groupLockUsersDropDown.push(\r\n { label: username, value: lockUser.id }\r\n );\r\n }\r\n this.lockUsersDropDown.push(\r\n { label: username, value: lockUser }\r\n );\r\n });\r\n }\r\n }\r\n\r\n buildGroupsDropDown() {\r\n if (this.groupsArray) {\r\n this.groupsDropDown = [];\r\n this.groupsArray.forEach((lockUserGroup: LockUserGroup) => {\r\n this.groupsDropDown.push(\r\n { label: lockUserGroup.groupName, value: lockUserGroup.groupName }\r\n );\r\n });\r\n }\r\n }\r\n\r\n get currentTimeZoneOffset(): string {\r\n return this.apptimeZone.currentTimeZoneOffset;\r\n }\r\n\r\n get currentTimeZoneName(): string {\r\n return this.apptimeZone.currentTimeZoneName;\r\n }\r\n\r\n get auditDetails(): AuditResponseRecord[] {\r\n return this.repo.auditDetails;\r\n }\r\n\r\n get userLocks(): any[] {\r\n\r\n if (this.isSearch && this.searchForm && this.searchForm.controls['searchText'].value) {\r\n //return this.searchedLocks;\r\n this.formSubmit();\r\n return this.filteredUserLocks === null || this.filteredUserLocks === undefined\r\n ? []\r\n : this.filteredUserLocks;\r\n }\r\n\r\n if (this.displayAssignedLocks && this.isGlobalAdmin) {\r\n if (this.isSearch && this.searchForm && this.searchForm.controls['searchText'].value) {\r\n this.isSearch = false;\r\n const request = new LockGetRequest();\r\n request.serialNumber = this.searchForm.controls['searchText'].value;\r\n this.repo.getAssignedLocks(request);\r\n }\r\n this.buildAssignedLocksDropdown(this.repo.assignedLocks);\r\n\r\n return this.repo.assignedLocks;\r\n }\r\n\r\n return this.repo.locks;\r\n }\r\n\r\n get lockUsers(): LockUsersDetails[] {\r\n const lockUsers = this.repo.lockUsersAccess;\r\n lockUsers.forEach((user) => {\r\n user.codeTypeDescription.toLowerCase() == AppConstants.LockCodeType.arbitrary.toLowerCase()\r\n ? user.codeTypeDescription = AppConstants.LockCodeTypeDisplay.arbitrary\r\n : user.codeTypeDescription.toLowerCase() == AppConstants.LockCodeType.perpetual.toLowerCase()\r\n ? user.codeTypeDescription = AppConstants.LockCodeTypeDisplay.perpetual\r\n : user.codeTypeDescription = user.codeTypeDescription;\r\n });\r\n return lockUsers;\r\n }\r\n\r\n buildAssignedLocksDropdown(assignedLocks: LockGlobalAdmin[]) {\r\n if (assignedLocks && assignedLocks.length > 0) {\r\n this.assignedLocksArray = assignedLocks;\r\n this.assignedLocksDropdown = [];\r\n assignedLocks.forEach((assignedLock) => {\r\n this.assignedLocksDropdown.push(\r\n { label: assignedLock.serialNumber, value: assignedLock.serialNumber }\r\n );\r\n });\r\n }\r\n }\r\n\r\n onAssignedLocksDropdownChange() {\r\n const form = this.deActivateLockForm;\r\n if (form && form.controls['serialNumber']) {\r\n const selectedAssignedLockId = form.controls['serialNumber'].value;\r\n const selectedAssignedLock = this.assignedLocksArray\r\n .find(assingedLock => assingedLock.serialNumber.toLowerCase() == selectedAssignedLockId.toLowerCase());\r\n if (selectedAssignedLock) {\r\n form.controls['ownerUserId'].setValue(selectedAssignedLock.ownerUserId);\r\n form.controls['ownerUserFullName'].setValue(selectedAssignedLock.ownerUser);\r\n }\r\n }\r\n }\r\n\r\n viewLocks() {\r\n this.repo.getLocks();\r\n }\r\n\r\n viewSelLockUsers(lockDetails: UserLocksModel) {\r\n this.viewUserLocks = true;\r\n this.pageTitle = `USERS OF LOCK : ${lockDetails.serialNumber}`;\r\n lockDetails.lockSerialNumber = lockDetails.serialNumber;\r\n this.repo.getLockUserAccess(lockDetails);\r\n }\r\n\r\n viewLockAudit(lockRec: LockUsersDetails) {\r\n this.viewUserLocks = false;\r\n this.viewAudit = true;\r\n this.selViewAuditRec = lockRec;\r\n this.repo.getAuditDetails(lockRec);\r\n }\r\n\r\n backToLocks() {\r\n this.viewUserLocks = false;\r\n this.pageTitle = AppConstants.PageTitle.units;\r\n }\r\n\r\n backToUserLocks() {\r\n this.viewUserLocks = true;\r\n this.viewAudit = false;\r\n this.selViewAuditRec = null;\r\n this.pageTitle = AppConstants.PageTitle.units;\r\n }\r\n\r\n /** Gets the list of users. */\r\n get users(): UserGetResponseRecord[] {\r\n return this.repo.users;\r\n }\r\n\r\n /** Gets the list of Owner users. */\r\n get ownerUsers(): UserGetResponseRecord[] {\r\n return this.users.filter(user => user.roles && user.roles.toLowerCase().includes(this.appRoles.ownerUser.toLowerCase()));\r\n }\r\n\r\n get searchedLocks(): UserLocksModel[] {\r\n return this.repo.searchedLocks;\r\n }\r\n\r\n formSubmit() {\r\n this.isSearch = true;\r\n const searchText = this.searchForm.controls['searchText'];\r\n if (searchText != null && searchText != undefined) {\r\n //this.getLocks(searchText.value.trim());\r\n const searchTextValue = searchText.value.trim();\r\n\r\n if (this.displayAssignedLocks && this.isGlobalAdmin) {\r\n this.filteredUserLocks = this.repo.assignedLocks.filter(lock =>\r\n (lock.serialNumber && lock.serialNumber.toLowerCase().includes(searchTextValue.toLowerCase()))\r\n || (lock.customer && lock.customer.toLowerCase().includes(searchTextValue.toLowerCase()))\r\n || (lock.location && lock.location.toLowerCase().includes(searchTextValue.toLowerCase()))\r\n );\r\n }\r\n else {\r\n this.filteredUserLocks = this.repo.locks.filter(lock =>\r\n (lock.serialNumber && lock.serialNumber.toLowerCase().includes(searchTextValue.toLowerCase()))\r\n || (lock.customer && lock.customer.toLowerCase().includes(searchTextValue.toLowerCase()))\r\n || (lock.location && lock.location.toLowerCase().includes(searchTextValue.toLowerCase()))\r\n );\r\n }\r\n\r\n } else {\r\n this.filteredUserLocks = [];\r\n this.clearSearchForm();\r\n }\r\n }\r\n\r\n /**\r\n * Get the active locks.\r\n * @param searchText Search string for the locks to be retrieved.\r\n */\r\n getLocks(searchText: string = null) {\r\n const lockReq: UserLocksModel = new UserLocksModel();\r\n lockReq.searchText = searchText;\r\n this.repo.getSearchedLocks(lockReq);\r\n }\r\n\r\n clearSearchForm() {\r\n this.isSearch = true;\r\n this.searchForm.reset();\r\n if (this.displayAssignedLocks && this.isGlobalAdmin) {\r\n this.repo.getAssignedLocks();\r\n } else {\r\n this.getLocks();\r\n }\r\n }\r\n\r\n activateLock() {\r\n const lockForm = this.activateLockForm;\r\n\r\n if (lockForm.valid) {\r\n this.repo.activateLock(lockForm.value).subscribe(activateLockRes => {\r\n this.spinner.hide();\r\n this.viewLocks();\r\n this.toastr.success('successfully Activated the Lock!', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n this.closeActivateLockDialog();\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.toastr.error('Failed to activate lock', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n });\r\n } else {\r\n this.toastr.error('Please Provide all the inputs', 'Input required', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n }\r\n }\r\n\r\n /** Activate multiple locks to a owner user. */\r\n activateMultiLocks() {\r\n const lockForm = this.activateMultiLocksForm;\r\n if (lockForm) {\r\n const lockType = lockForm.controls['lockType'];\r\n const lockTypeValue = this.appHelper.isNullOrUndefinedOrWhiteSpace(lockType.value) ? '' : lockType.value;\r\n lockForm.controls['lockType'].setValue(lockTypeValue);\r\n\r\n const countOfLocksToActivate = lockForm.controls['countOfLocksToActivate'].value;\r\n if (this.selectedLocks && this.selectedLocks.length >= AppConstants.Generic.minCountOfLocksToActivateByAdmin) {\r\n const locksToActivate = this.selectedLocks;\r\n const lockSerialNumbers = locksToActivate.map((lock) => lock.serialNumber);\r\n this.activateMultiLocksForm.controls['serialNumbers'].setValue(lockSerialNumbers);\r\n } else if (countOfLocksToActivate && countOfLocksToActivate >= AppConstants.Generic.minCountOfLocksToActivateByAdmin) {\r\n const locksToActivate = this.userLocks.slice(0, countOfLocksToActivate);\r\n const lockSerialNumbers = locksToActivate.map((lock) => lock.serialNumber);\r\n this.activateMultiLocksForm.controls['serialNumbers'].setValue(lockSerialNumbers);\r\n } else {\r\n this.toastr.error(`Count of locks to activate should be ${AppConstants.Generic.minCountOfLocksToActivateByAdmin} or more`, 'Warning', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n return false;\r\n }\r\n\r\n }\r\n\r\n if (lockForm.valid) {\r\n this.repo.activateMultiLocks(lockForm.value).subscribe(response => {\r\n this.spinner.hide();\r\n this.viewLocks();\r\n if (response.statusCode == 200) {\r\n this.getAvailableLocks();\r\n this.spinner.hide();\r\n this.toastr.success('Successfully activated locks', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n this.clearSelectedLocks();\r\n this.closeActivateMultiLocksDialog();\r\n } else {\r\n this.spinner.hide();\r\n this.toastr.error(response.message, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.toastr.error('Failed to activate locks', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n });\r\n } else {\r\n this.toastr.error('Please Provide all the inputs', 'Input required', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n }\r\n }\r\n\r\n cloneLock() {\r\n const cloneForm = this.cloneLockForm;\r\n\r\n if (cloneForm.valid) {\r\n const lockReq = new LockUpdateRequest();\r\n\r\n const lockSeedObj: UserLocksModel = cloneForm.controls['newSeedCode'].value;\r\n const lockSerialObj: UserLocksModel = cloneForm.controls['serialNumber'].value;\r\n\r\n //lockReq.newSeedCode = lockSeedObj.seedCode;\r\n lockReq.cloneLockSerialNumber = lockSeedObj.serialNumber;\r\n lockReq.serialNumber = lockSerialObj.serialNumber;\r\n\r\n this.repo.updateLock(lockReq).subscribe(cloneLockRes => {\r\n this.spinner.hide();\r\n if (!cloneLockRes.message) {\r\n this.toastr.error(`Failed to Clone the lock!`, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n } else if (cloneLockRes.message && cloneLockRes.message.indexOf('Lock updated') > -1) {\r\n this.toastr.success('successfully Cloned the Lock!', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 5000\r\n });\r\n this.viewLocks();\r\n this.closeCloneLockDialog();\r\n } else {\r\n this.toastr.error(cloneLockRes.message, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 5000\r\n });\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.toastr.error('Failed to clone the lock', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n });\r\n } else {\r\n this.toastr.error('Please Provide all the inputs', 'Input required', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n }\r\n }\r\n\r\n changeSeedCode() {\r\n const changeSeedForm = this.changeSeedCodeForm;\r\n\r\n if (changeSeedForm.valid) {\r\n const lockReq = new LockUpdateRequest();\r\n\r\n const newSeedCode: string = changeSeedForm.controls['newSeedCode'].value;\r\n const lockSerialObj: UserLocksModel = changeSeedForm.controls['serialNumber'].value;\r\n\r\n lockReq.newSeedCode = newSeedCode;\r\n lockReq.serialNumber = lockSerialObj.serialNumber;\r\n\r\n // Using clone lock method for updating the seed code.\r\n this.repo.updateLock(lockReq).subscribe(cloneLockRes => {\r\n this.spinner.hide();\r\n if (!cloneLockRes.message) {\r\n this.toastr.error(`Failed to change the seed code!`, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n } else if (cloneLockRes.message && cloneLockRes.message.indexOf('Lock updated') > -1) {\r\n this.toastr.success('successfully changed the seed code!', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 5000\r\n });\r\n this.viewLocks();\r\n this.closeChangeSeedCodeDialog();\r\n } else {\r\n this.toastr.error(cloneLockRes.message, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 5000\r\n });\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.toastr.error('Failed to change the seed code!', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n });\r\n } else {\r\n this.toastr.error('Please Provide all the inputs', 'Input required', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n }\r\n }\r\n\r\n buildOwnerUsersDropDown() {\r\n if (this.ownerUsers) {\r\n this.ownerUsersDropDown = [];\r\n this.ownerUsers.forEach((ownerUser) => {\r\n this.ownerUsersDropDown.push(\r\n { label: ownerUser.userName, value: ownerUser.id }\r\n );\r\n });\r\n }\r\n }\r\n\r\n buildLocksDropDown() {\r\n if (this.locksArray) {\r\n this.locksDropDown = [];\r\n this.locksArray.forEach((lock: UserLocksModel) => {\r\n if (lock && (this.isOwnerUser || this.isManager)) {\r\n this.locksDropDown.push(\r\n { label: lock.serialNumber, value: lock }\r\n );\r\n }\r\n\r\n if (lock && !this.disableGenerate && lock.serialNumber == this.cloneFromSelected) {\r\n this.cloneLockForm.controls['newSeedCode'].setValue(lock);\r\n this.cloneLockForm.controls['oldSeedCode'].setValue(lock.seedCode);\r\n this.cloneFromSelected = '';\r\n if (lock.seedCode != '0' && lock.seedCode.length > 1) {\r\n this.disableGenerate = true;\r\n }\r\n }\r\n\r\n this.locksFromDropdown.push(\r\n { label: lock.serialNumber, value: lock.serialNumber }\r\n );\r\n this.locksToDropdown.push(\r\n { label: lock.serialNumber, value: lock.serialNumber }\r\n );\r\n });\r\n }\r\n }\r\n\r\n closeActivateLockDialog() {\r\n this.showActivateLockDialog = false;\r\n }\r\n\r\n openActivateLockDialog() {\r\n this.activateLockForm.reset();\r\n this.showActivateLockDialog = true;\r\n }\r\n\r\n openDeActivateLockDialog() {\r\n this.deActivateLockForm.reset();\r\n this.showDeActivateLockDialog = true;\r\n }\r\n\r\n closeDeActivateLockDialog() {\r\n this.showDeActivateLockDialog = false;\r\n }\r\n\r\n openResendUserCodeDialog() {\r\n this.resendUserCodeForm.reset();\r\n this.showResendUserCodeDialog = true;\r\n this.buildUsersDropDown();\r\n this.buildLocksDropDown();\r\n }\r\n\r\n closeResendUserCodeDialog() {\r\n this.showResendUserCodeDialog = false;\r\n }\r\n\r\n closeActivateMultiLocksDialog() {\r\n this.showActivateMultiLocksDialog = false;\r\n }\r\n\r\n openActivateMultiLocksDialog() {\r\n this.buildLocksDropDown();\r\n this.activateMultiLocksForm.reset();\r\n\r\n if (this.selectedLocks && this.selectedLocks.length > 0) {\r\n this.activateMultiLocksForm.controls['countOfLocksToActivate'].setValue(this.selectedLocks.length);\r\n this.activateMultiLocksForm.controls['countOfLocksToActivate'].disable();\r\n this.activateMultiLocksForm.controls['fromLock'].disable();\r\n this.activateMultiLocksForm.controls['toLock'].disable();\r\n this.activateMultiLocksForm.controls['isCountOrRange'].disable();\r\n } else {\r\n this.clearSelectedLocks();\r\n }\r\n\r\n this.buildOwnerUsersDropDown();\r\n this.showActivateMultiLocksDialog = true;\r\n }\r\n\r\n clearSelectedLocks() {\r\n this.selectedLocks = [];\r\n this.activateMultiLocksForm.controls['countOfLocksToActivate'].reset();\r\n this.activateMultiLocksForm.controls['isCountOrRange'].enable();\r\n this.activateMultiLocksForm.controls['isCountOrRange'].setValue(this.constRange);\r\n this.onCountOrRangeRadioClick(this.constRange);\r\n }\r\n\r\n openCloneLockDialog() {\r\n this.msgs = [];\r\n this.cloneLockForm.reset();\r\n this.showCloneLockDialog = true;\r\n this.cloneFromSelected = '';\r\n this.disableGenerate = true;\r\n }\r\n\r\n openChangeSeedCodeDialog() {\r\n this.msgs = [];\r\n this.changeSeedCodeForm.reset();\r\n this.showChangeSeedCodeDialog = true;\r\n }\r\n\r\n closeCloneLockDialog() {\r\n this.msgs = [];\r\n this.showCloneLockDialog = false;\r\n }\r\n\r\n closeChangeSeedCodeDialog() {\r\n this.msgs = [];\r\n this.showChangeSeedCodeDialog = false;\r\n }\r\n\r\n onCloneFromChange(event) {\r\n const cloneForm = this.cloneLockForm;\r\n const lockSeedObj: UserLocksModel = cloneForm.controls['newSeedCode'].value;\r\n this.msgs = [];\r\n cloneForm.controls['oldSeedCode'].reset();\r\n\r\n if (lockSeedObj && lockSeedObj.seedCode && lockSeedObj.seedCode == '0') {\r\n this.msgs.push({ severity: 'error', summary: 'Attention!', detail: 'Selected lock does not have a seed code. Generate it and try cloning.' });\r\n this.disableCloning = true;\r\n return false;\r\n }\r\n this.disableCloning = false;\r\n\r\n const lockObj: UserLocksModel = event.value;\r\n if (event && lockObj && lockObj.seedCode) {\r\n cloneForm.controls['oldSeedCode'].setValue(lockObj.seedCode);\r\n } else {\r\n cloneForm.controls['oldSeedCode'].setValue('');\r\n }\r\n if (lockObj && lockObj.seedCode == '0') {\r\n this.disableGenerate = false;\r\n } else {\r\n this.disableGenerate = true;\r\n }\r\n }\r\n\r\n onLockSelectionChange(event) {\r\n const changeSeedCodeForm = this.changeSeedCodeForm;\r\n const lockObj: UserLocksModel = event.value;\r\n if (event && lockObj && lockObj.seedCode) {\r\n changeSeedCodeForm.controls['oldSeedCode'].setValue(lockObj.seedCode);\r\n }\r\n }\r\n\r\n generateRandomSeed() {\r\n const changeSeedCodeForm = this.changeSeedCodeForm;\r\n const selectedLock = changeSeedCodeForm.controls['serialNumber'].value;\r\n if (selectedLock && selectedLock.serialNumber) {\r\n const lockReq = new LockUpdateRequest();\r\n\r\n lockReq.serialNumber = selectedLock.serialNumber;\r\n lockReq.generateRandomSeedCode = 1;\r\n\r\n this.repo.updateLock(lockReq).subscribe(cloneLockRes => {\r\n this.spinner.hide();\r\n if (!cloneLockRes.message) {\r\n this.toastr.error(`Failed to Generate the Random SeedCode!`, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n } else if (cloneLockRes.message && cloneLockRes.message.indexOf('Lock updated') > -1) {\r\n this.getLocks();\r\n this.toastr.success('Successfully Generated the Random SeedCode!', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 5000\r\n });\r\n this.viewLocks();\r\n } else {\r\n this.toastr.error(cloneLockRes.message, '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 5000\r\n });\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.toastr.error('Failed to Generate the Random SeedCode!', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n });\r\n } else {\r\n this.toastr.error('Select lock to proceed', '', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n }\r\n }\r\n\r\n showGenerateDialog(userLock: UserLocksModel = null) {\r\n this.showGenerateCodeInputDialog = true;\r\n this.resetGenerateCodeInputForm();\r\n this.buildUsersDropDown();\r\n\r\n if (userLock) {\r\n let locks: UserLocksModel[] = [userLock];\r\n this.generateCodeInputForm.controls['lockSerialNumber'].setValue(locks);\r\n }\r\n }\r\n\r\n showRemoveCodeDialog(userLock: UserLocksModel = null) {\r\n // SHOW FLYOUT\r\n this.showRemoveCodeInputDialog = true;\r\n\r\n // SELECT LOCKS IN DROPDOWN\r\n let locks: UserLocksModel[] = [userLock];\r\n this.removeCodeInputForm.controls['lockSerialNumber'].setValue(locks);\r\n\r\n // POPULATE LOCKS DROPDOWN AND LOCK-USERS DROPDOWN\r\n this.activeLocksDropDown = [];\r\n this.activeLockUsersDropDown = [];\r\n this.repo.getActiveLockUsersAndLocks().subscribe((activeLockUsersAndLocks) => {\r\n this.spinner.hide();\r\n\r\n let activeLockSerialNumbers = [];\r\n activeLockUsersAndLocks.activeLocks.forEach((activeLock: ActiveLock) => { activeLockSerialNumbers.push(activeLock.lockSerialNumber) });\r\n this.activeLocksDropDown = this.locksDropDown.filter(lock => activeLockSerialNumbers.includes(lock.label));\r\n\r\n activeLockUsersAndLocks.activeLockUsers.forEach((activeLockUser: ActiveLockUser) => {\r\n this.activeLockUsersDropDown.push(\r\n { label: activeLockUser.lockUserName, value: activeLockUser.lockUserId }\r\n );\r\n });\r\n });\r\n }\r\n\r\n removeAccessCodes() {\r\n const form = this.removeCodeInputForm;\r\n if (form.valid) {\r\n const locks: UserLocksModel[] = form.controls['lockSerialNumber'].value;\r\n const lockUsers: LockUsers[] = form.controls['lockUser'].value ? form.controls['lockUser'].value : [];\r\n let rmCodesRequest: GenerateCode[] = [];\r\n\r\n locks.forEach((lock) => {\r\n lockUsers.forEach((lockUser) => {\r\n const lockUserReq: GenerateCode = {\r\n lockSerialNumber: lock.serialNumber,\r\n codeType: form.controls['codeType'].value.toLowerCase(),\r\n lockUserId: Number(lockUser),\r\n lockUserGroup: null\r\n };\r\n rmCodesRequest.push(lockUserReq);\r\n });\r\n });\r\n\r\n if (rmCodesRequest.length) {\r\n this.repo.removeCodes(rmCodesRequest).subscribe((lockUsersRes: any) => {\r\n this.spinner.hide();\r\n this.closeRemoveCodeInputDialog();\r\n if (!lockUsersRes.message) {\r\n this.appNotification.error('Failed to remove Access codes');\r\n } else {\r\n this.appNotification.success(lockUsersRes.message + '. Removed lock access codes.');\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.appNotification.error('Failed to remove Access codes');\r\n });\r\n } else {\r\n this.appNotification.error('Please Provide all the inputs', 'Input required');\r\n }\r\n }\r\n else {\r\n this.appNotification.error('Please Provide all the inputs', 'Input required');\r\n //this.appNotification.error('Something went wrong! Close the flyout and try again.', '');\r\n }\r\n }\r\n\r\n removeAccessCode() {\r\n const form = this.removeCodeInputForm;\r\n if (form.valid) {\r\n const lockUserReq = new GenerateCode();\r\n\r\n let lockUserId = 0;\r\n lockUserId = Number(form.controls['lockUser'].value.lockUserId);\r\n lockUserReq.lockSerialNumber = form.controls['lockSerialNumber'].value;\r\n lockUserReq.lockUserId = lockUserId;\r\n\r\n const codeType = form.controls['codeType'].value;\r\n if (codeType && codeType != '') {\r\n lockUserReq.codeType = codeType;\r\n }\r\n\r\n this.repo.removeCode(lockUserReq).subscribe((lockUsersRes: any) => {\r\n this.spinner.hide();\r\n this.closeRemoveCodeInputDialog();\r\n if (!lockUsersRes.message) {\r\n this.appNotification.error('Failed to remove Access codes');\r\n } else {\r\n this.appNotification.success(lockUsersRes.message);\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.appNotification.error('Failed to remove Access codes');\r\n });\r\n } else {\r\n this.appNotification.error('Please Provide all the inputs', 'Input required');\r\n }\r\n }\r\n\r\n verifyAndGenerateAccessCode() {\r\n if (this.isConvertingToArbitraryUser) {\r\n this.showConfirmationSection = true;\r\n } else {\r\n this.showConfirmationSection = false;\r\n this.generateAccessCode();\r\n }\r\n }\r\n\r\n generateCode(genCodeRequest: GenerateCode[], messageType = \"\", sendMessage = false): Observable {\r\n if (genCodeRequest.length) {\r\n this.lockUsersDetailsWithCode = [];\r\n this.repo.generateCodes(genCodeRequest).subscribe((results: any[]) => {\r\n results.forEach(result => {\r\n if (result && result.keypadCode) {\r\n const lockUsersDetails: LockUsersDetails[] = [];\r\n\r\n if ((!result.lockUserId || result.lockUserId < 1)\r\n && result.lockUserGroup) {\r\n // BELOW CODES FETCHES THE USERS OF THE SELECTED GROUPS - MAY BE USED IN THE FUTURE - VC\r\n\r\n // this.repo.getLockUserGroupMems(result.lockUserGroup);\r\n // const lockUsers: LockUserGroupMems[] = this.repo.lockUserGroupMems;\r\n // lockUsers.forEach(lockUser => {\r\n // const lockUserDetails: LockUsersDetails = {\r\n // lockSerialNumber: generateInputForm.controls['lockSerialNumber'].value,\r\n // serialNumber: generateInputForm.controls['lockSerialNumber'].value,\r\n // codeTypeDescription: generateInputForm.controls['codeType'].value.toLowerCase(),\r\n // lockUserGroup: result.lockUserGroup,\r\n // lockUserName: lockUser.name,\r\n // lockUserId: lockUser.id,\r\n // keypadCode: result.keypadCode,\r\n // lockLocation: null, added: null, deleted: null, disabled: null\r\n // };\r\n // lockUsersDetails.push(lockUserDetails);\r\n // });\r\n } else {\r\n this.lockUserIdAndAccessCode[result.lockUserName] = result.keypadCode;\r\n lockUsersDetails.push(result);\r\n }\r\n\r\n lockUsersDetails.forEach(lockUser => this.lockUsersDetailsWithCode.push(lockUser));\r\n } else if (result && (result == 'No more generated codes available'\r\n || result == 'Max user code limit already reached for lock'\r\n || result == 'Lock user does not have a user code')) {\r\n this.spinner.hide();\r\n this.appNotification.error(`Unable to assign code! ${result}.`);\r\n\r\n this.resetConvertingToArbitraryUserWarnings();\r\n this.closeGenerateCodeInputDialog();\r\n return false;\r\n }\r\n });\r\n\r\n this.closeGenerateCodeInputDialog();\r\n this.closeConfirmationSection();\r\n if (sendMessage) {\r\n //const messageType = this.generateCodeInputForm.controls['codeType'].value.toLowerCase() == AppConstants.LockCodeType.arbitrary.toLowerCase()\r\n // ? AppConstants.Generic.messageTypeArbitraryCode\r\n // : AppConstants.Generic.messageTypeCode;\r\n this.sendMessage(messageType);\r\n }\r\n this.spinner.hide();\r\n this.appNotification.success('Successfully assigned access code.');\r\n }, (err) => { // TODO: handle error for individual requests\r\n this.spinner.hide();\r\n console.error('Error while assigning access code! ', err);\r\n if (err.error.text.toLowerCase() == 'no more generated codes available'\r\n || err.error.text.toLowerCase() == 'max user code limit already reached for lock'\r\n || err.error.text.toLowerCase() == 'lock user does not have a user code') {\r\n this.toastr.error(`${err.error.text}.`, 'Unable to assign code', {\r\n positionClass: 'toast-top-center',\r\n timeOut: 3000\r\n });\r\n\r\n this.resetConvertingToArbitraryUserWarnings();\r\n this.closeGenerateCodeInputDialog();\r\n } else {\r\n this.appNotification.error('Error! Something went wrong while assigning access code. Try again or contact administrator.');\r\n }\r\n });\r\n }\r\n return EMPTY;\r\n }\r\n\r\n generateAccessCode() {\r\n const generateInputForm = this.generateCodeInputForm;\r\n if (generateInputForm.valid) {\r\n const locks: UserLocksModel[] = generateInputForm.controls['lockSerialNumber'].value;\r\n let lockSerialNumbers = [];\r\n locks.forEach((lock) => lockSerialNumbers.push(lock.serialNumber));\r\n const lockUsers: LockUsers[] = generateInputForm.controls['lockUser'].value ? generateInputForm.controls['lockUser'].value : [];\r\n const lockUserGroupNames = String(generateInputForm.controls['lockUserGroupName'].value).split(AppConstants.SpecialChars.comma);\r\n \r\n const lockUserRequest: LockUsers[] = [];\r\n const genCodeRequest: GenerateCode[] = [];\r\n\r\n // PREPARE DETAILS TO SEND MESSAGE\r\n const messageType = generateInputForm.controls['codeType'].value.toLowerCase() == AppConstants.LockCodeType.arbitrary.toLowerCase()\r\n ? AppConstants.Generic.messageTypeArbitraryCode\r\n : AppConstants.Generic.messageTypeCode;\r\n this.messageMediumSelection = generateInputForm.controls['messageMedium'].value;\r\n\r\n lockUsers.forEach((lockUser) => {\r\n const lockUsersDetails = new LockUsersDetails();\r\n lockUsersDetails.lockUserId = lockUser.id;\r\n lockSerialNumbers.forEach((lockSerialNumber) => {\r\n lockUsersDetails.lockSerialNumber = lockSerialNumber;\r\n this.lockUsersDetailsWithCode.push(lockUsersDetails);\r\n });\r\n });\r\n // END PREPARE\r\n\r\n let eitherUserOrGroupSelected = (lockUsers.length + lockUserGroupNames.filter((group) => group != 'null').length) > 0;\r\n if (!eitherUserOrGroupSelected) {\r\n this.appNotification.error('Please select user(s) or group(s).', 'Input required');\r\n }\r\n\r\n lockUsers.forEach((lockUser) => {\r\n if (lockUser.id && lockUser.id > 0) {\r\n\r\n if (generateInputForm.controls['codeType'].value.toLowerCase() === AppConstants.LockCodeType.arbitrary.toLowerCase()\r\n && (!lockUser.arbitraryKeypadCode || lockUser.arbitraryKeypadCode < 1)) {\r\n const lockUserUpdateReq: LockUsers = {\r\n id: lockUser.id,\r\n name: lockUser.name,\r\n phone: lockUser.phone,\r\n email: lockUser.email,\r\n company: lockUser.company,\r\n updateArbitraryCode: 1,\r\n generateArbitraryCode: 0,\r\n arbitraryKeypadCode: lockUser.arbitraryKeypadCode,\r\n newName: null,\r\n countOfUsers: 1,\r\n addUsersStartingRange: 0\r\n };\r\n lockUserRequest.push(lockUserUpdateReq);\r\n }\r\n\r\n lockSerialNumbers.forEach((lockSerialNumber) => {\r\n const lockUserReq: GenerateCode = {\r\n lockSerialNumber: lockSerialNumber,\r\n codeType: generateInputForm.controls['codeType'].value.toLowerCase(),\r\n lockUserId: Number(lockUser.id),\r\n lockUserGroup: null\r\n };\r\n genCodeRequest.push(lockUserReq);\r\n });\r\n }\r\n });\r\n\r\n lockUserGroupNames.forEach((lockUserGroupName) => {\r\n lockSerialNumbers.forEach((lockSerialNumber) => {\r\n if (lockUserGroupName && lockUserGroupName !== 'null' && lockUserGroupName !== '') {\r\n const lockUserGroupReq: GenerateCode = {\r\n lockSerialNumber: lockSerialNumber,\r\n codeType: AppConstants.LockCodeType.arbitrary.toLowerCase(),\r\n lockUserGroup: lockUserGroupName,\r\n lockUserId: 0\r\n };\r\n genCodeRequest.push(lockUserGroupReq);\r\n }\r\n });\r\n });\r\n\r\n // Convert user to lock user and then assign/retrieve ARBITRARY Code to lock users\r\n if (lockUserRequest && lockUserRequest.length) {\r\n this.repo.updateLockUsers(lockUserRequest)\r\n .pipe(\r\n tap(response => {\r\n this.sendMessage(messageType);\r\n console.log('UpdateLockUsers response :', response);\r\n }),\r\n concatMap(() => this.generateCode(genCodeRequest)),\r\n tap(generateCodeRes => console.log('generateCode response :', generateCodeRes))\r\n )\r\n .subscribe(res => console.log(res));\r\n }\r\n else { // assign/retrieve ARBITRARY Code to lock users\r\n this.generateCode(genCodeRequest, messageType, true);\r\n }\r\n\r\n //this.closeGenerateCodeInputDialog();\r\n //this.closeConfirmationSection();\r\n }\r\n else {\r\n this.appNotification.error('Please provide all the inputs.', 'Input required');\r\n }\r\n }\r\n\r\n closeRemoveCodeInputDialog() {\r\n this.showRemoveCodeInputDialog = false;\r\n this.removeCodeInputForm.reset();\r\n }\r\n\r\n closeGenerateCodeInputDialog() {\r\n this.showGenerateCodeInputDialog = false;\r\n this.resetGenerateCodeInputForm();\r\n this.getUpdatedLockUsersAndGroups();\r\n this.buildUsersDropDown();\r\n }\r\n\r\n sendMessage(messageType: string, messageMedium?: string) {\r\n const genCodeRes = this.lockUsersDetailsWithCode;\r\n if (!genCodeRes.length) {\r\n this.spinner.hide();\r\n return true;\r\n }\r\n\r\n const observables = [];\r\n if (this.messageMediumSelection && this.messageMediumSelection.length) {\r\n if (this.messageMediumSelection.includes(this.constPhone)) {\r\n messageMedium = this.constPhone;\r\n\r\n genCodeRes.forEach(userDetail => {\r\n if (userDetail) {\r\n const mesReq = new SendMessage();\r\n mesReq.lockUserId = userDetail.lockUserId;\r\n mesReq.medium = messageMedium;\r\n mesReq.messageType = messageType;\r\n if (messageType != AppConstants.Generic.messageTypeArbitraryCode) {\r\n mesReq.lockSerialNumber = userDetail.lockSerialNumber;\r\n }\r\n\r\n observables.push(this.repo.sendMessage(mesReq));\r\n }\r\n });\r\n }\r\n if (this.messageMediumSelection.includes(this.constEmail)) {\r\n messageMedium = this.constEmail;\r\n\r\n genCodeRes.forEach(userDetail => {\r\n if (userDetail) {\r\n const mesReq = new SendMessage();\r\n mesReq.lockUserId = userDetail.lockUserId;\r\n mesReq.medium = messageMedium;\r\n mesReq.messageType = messageType;\r\n if (messageType != AppConstants.Generic.messageTypeArbitraryCode) {\r\n mesReq.lockSerialNumber = userDetail.lockSerialNumber;\r\n }\r\n\r\n observables.push(this.repo.sendMessage(mesReq));\r\n }\r\n });\r\n }\r\n } else if (messageMedium && messageMedium != '') {\r\n genCodeRes.forEach(userDetail => {\r\n if (userDetail) {\r\n const mesReq: SendMessage = {\r\n lockUserId: userDetail.lockUserId,\r\n lockSerialNumber: userDetail.lockSerialNumber,\r\n medium: messageMedium,\r\n messageType: AppConstants.Generic.messageTypeCode\r\n };\r\n\r\n observables.push(this.repo.sendMessage(mesReq));\r\n }\r\n });\r\n }\r\n\r\n if (observables.length) {\r\n forkJoin(observables).subscribe(\r\n results => {\r\n this.spinner.hide();\r\n this.appNotification.success('Successfully sent message to the user(s).');\r\n },\r\n (err) => { // TODO: handle error for individual requests\r\n this.spinner.hide();\r\n this.appNotification.error('Error! Something went wrong while sending message to the user(s).');\r\n });\r\n } else {\r\n this.spinner.hide();\r\n }\r\n }\r\n\r\n onUserOrGroupRadioClick(value: string) {\r\n this.genCodeForUserOrGroup = value = value.toLowerCase();\r\n if (value === this.constUser.toLowerCase()) {\r\n this.generateCodeInputForm.controls['codeType'].reset();\r\n this.generateCodeInputForm.controls['codeType'].enable();\r\n } else {\r\n this.generateCodeInputForm.controls['codeType'].setValue(AppConstants.LockCodeType.arbitrary.toLowerCase());\r\n this.generateCodeInputForm.controls['codeType'].disable();\r\n }\r\n this.generateCodeInputForm.controls['lockUserId'].reset();\r\n this.generateCodeInputForm.controls['lockUser'].reset();\r\n this.generateCodeInputForm.controls['lockUserGroupName'].reset();\r\n\r\n this.enableOrDisableUserAndGroupControls();\r\n this.resetConvertingToArbitraryUserWarnings();\r\n }\r\n\r\n checkNonArbitraryUser() {\r\n this.msgs = [];\r\n this.isConvertingToArbitraryUser = false;\r\n const selectedCodeType = String(this.generateCodeInputForm.controls['codeType'].value);\r\n const selectedLockUsers: LockUsers[] = this.generateCodeInputForm.controls['lockUser'].value;\r\n const nonArbitraryUser = [];\r\n\r\n if (selectedLockUsers && selectedLockUsers.length) {\r\n selectedLockUsers.forEach((lockUser) => {\r\n if (lockUser.arbitraryKeypadCode < 1) {\r\n nonArbitraryUser.push(lockUser.name);\r\n }\r\n });\r\n }\r\n\r\n if (nonArbitraryUser.length > 0 && selectedCodeType.toLowerCase() == AppConstants.LockCodeType.arbitrary.toLowerCase()) {\r\n this.msgs.push({ severity: 'warn', summary: 'Warning!', detail: `Your selection includes temporary user(s) (${nonArbitraryUser.join(AppConstants.SpecialChars.commaWhitespace)}) who will be converted to the user and User code will be assigned.` });\r\n this.isConvertingToArbitraryUser = true;\r\n }\r\n }\r\n\r\n closeConfirmationSection() {\r\n this.showConfirmationSection = false;\r\n }\r\n\r\n resetConvertingToArbitraryUserWarnings() {\r\n this.isConvertingToArbitraryUser = false;\r\n this.msgs = [];\r\n this.closeConfirmationSection();\r\n }\r\n\r\n enableOrDisableUserAndGroupControls() {\r\n if (this.generateCodeInputForm\r\n && this.generateCodeInputForm.controls['lockUserId']\r\n && this.generateCodeInputForm.controls['lockUserGroupName']) {\r\n if (this.genCodeForUserOrGroup.toLowerCase() == this.constUser.toLowerCase()) {\r\n this.generateCodeInputForm.controls['lockUser'].enable();\r\n this.generateCodeInputForm.controls['messageMedium'].enable();\r\n this.generateCodeInputForm.controls['messageMedium'].reset();\r\n this.generateCodeInputForm.controls['lockUserGroupName'].disable();\r\n } else if (this.genCodeForUserOrGroup.toLowerCase() == this.constGroup.toLowerCase()) {\r\n this.generateCodeInputForm.controls['lockUser'].disable();\r\n this.generateCodeInputForm.controls['messageMedium'].disable();\r\n this.generateCodeInputForm.controls['messageMedium'].reset();\r\n this.generateCodeInputForm.controls['lockUserGroupName'].enable();\r\n }\r\n }\r\n }\r\n\r\n ShowEditLockDetails(userLock: UserLocksModel) {\r\n this.editLockDetailsForm.controls['serialNumber'].setValue(userLock.serialNumber);\r\n this.editLockDetailsForm.controls['location'].setValue(userLock.location);\r\n this.editLockDetailsForm.controls['customer'].setValue(userLock.customer);\r\n this.editLockDetailsForm.controls['notes'].setValue(userLock.notes);\r\n this.editLockDetailsForm.controls['Interface'].setValue(userLock.hasInterface);\r\n this.editLockDetailsForm.controls['LockType'].setValue(userLock.lockType);\r\n this.editLockDetailsForm.controls['status'].setValue(userLock.status);\r\n if (!this.appHelper.isNullOrUndefinedOrWhiteSpace(userLock.installationDate)) {\r\n this.editLockDetailsForm.controls['installationDate'].setValue(new Date(userLock.installationDate));\r\n }\r\n this.showEditLockDetailsDialog = true;\r\n }\r\n\r\n closeEditLockDetailsDialog() {\r\n this.showEditLockDetailsDialog = false;\r\n this.editLockDetailsForm.reset();\r\n }\r\n\r\n editLockDetails() {\r\n const form = this.editLockDetailsForm;\r\n if (form.valid) {\r\n\r\n\r\n const lockType = form.controls['LockType'];\r\n const lockTypeValue = this.appHelper.isNullOrUndefinedOrWhiteSpace(lockType.value) ? '' : lockType.value;\r\n form.controls['LockType'].setValue(lockTypeValue);\r\n\r\n const lockStatus = form.controls['status'];\r\n const lockStatusValue = this.appHelper.isNullOrUndefinedOrWhiteSpace(lockStatus.value) ? '' : lockStatus.value;\r\n form.controls['status'].setValue(lockStatusValue);\r\n\r\n const installationDate = form.controls['installationDate'];\r\n const installationDateValue = this.appHelper.isNullOrUndefinedOrWhiteSpace(installationDate.value) ? null : installationDate.value;\r\n form.controls['installationDate'].setValue(installationDateValue);\r\n\r\n this.repo.updateLock(form.value).subscribe((response) => {\r\n this.spinner.hide();\r\n if (!response.message) {\r\n this.appNotification.error('Something went wrong! Failed to update.');\r\n } else if (response.message && response.message.indexOf('Lock updated') > -1) {\r\n this.appNotification.success('Successfully updated!');\r\n this.viewLocks();\r\n this.closeEditLockDetailsDialog();\r\n } else {\r\n this.appNotification.error(response.message);\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.appNotification.error('Something went wrong! Failed to update.');\r\n });\r\n } else {\r\n this.appNotification.error('Please Provide all the inputs', 'Input required');\r\n }\r\n }\r\n\r\n checkSeedCodeAvailability() {\r\n this.msgs = [];\r\n const form = this.changeSeedCodeForm;\r\n const lock: UserLocksModel = form.controls['serialNumber'].value;\r\n if (lock && lock.seedCode && lock.seedCode != '' && lock.seedCode != '0' && lock.seedCode.length > 1) {\r\n this.msgs = [];\r\n this.msgs.push({ severity: 'warn', summary: 'Warning!', detail: `Changing seed code will remove all previous data/codes from this lock. Are you sure you want to proceed?.` });\r\n }\r\n }\r\n\r\n deActivateLock() {\r\n const form = this.deActivateLockForm;\r\n if (form.valid) {\r\n const ownerUserId = form.controls['ownerUserId'].value;\r\n if (ownerUserId && ownerUserId > 0) {\r\n form.controls['ownerUserId'].setValue(ownerUserId);\r\n } else {\r\n this.appNotification.error('User name not found.', 'Invalid input');\r\n return false;\r\n }\r\n\r\n this.repo.deActivateLock(this.deActivateLockForm.value)\r\n .subscribe((response) => {\r\n this.spinner.hide();\r\n if (response.statusCode == 200) {\r\n this.appNotification.success(response.message);\r\n this.closeDeActivateLockDialog();\r\n } else {\r\n this.appNotification.error(response.message, 'Unable to deactivate lock');\r\n }\r\n });\r\n } else {\r\n this.appNotification.error('Please provide all inputs.', 'Input required');\r\n }\r\n }\r\n\r\n resendUserCode() {\r\n const form = this.resendUserCodeForm;\r\n if (form.valid) {\r\n this.lockUsersDetailsWithCode = [];\r\n const lockUserIds: any[] = form.controls['lockUser'].value ? form.controls['lockUser'].value : [];\r\n this.messageMediumSelection = form.controls['messageMedium'].value;\r\n\r\n lockUserIds.forEach((lockUserId) => {\r\n const lockUsersDetails = new LockUsersDetails();\r\n lockUsersDetails.lockUserId = lockUserId;\r\n this.lockUsersDetailsWithCode.push(lockUsersDetails);\r\n });\r\n this.sendMessage(AppConstants.Generic.messageTypeArbitraryCode);\r\n this.closeResendUserCodeDialog();\r\n } else {\r\n this.appNotification.error('Please provide all inputs.', 'Input required');\r\n }\r\n }\r\n\r\n onLocksFromDropdownChange() {\r\n const form = this.activateMultiLocksForm;\r\n form.controls['toLock'].reset();\r\n this.selectedLocks = [];\r\n this.activateMultiLocksForm.controls['countOfLocksToActivate'].reset();\r\n\r\n this.activateMultiLocksForm.controls['countOfLocksToActivate'].disable();\r\n\r\n if (form && form.controls['fromLock'].value && form.controls['fromLock'].value != '') {\r\n const selectedStartRangeLock = form.controls['fromLock'].value;\r\n this.locksToDropdown.splice(0, this.locksToDropdown.findIndex(lock => lock.value == selectedStartRangeLock));\r\n form.controls['toLock'].enable();\r\n } else {\r\n form.controls['toLock'].disable();\r\n }\r\n }\r\n\r\n onLocksToDropdownChange() {\r\n const form = this.activateMultiLocksForm;\r\n\r\n if (form\r\n && form.controls['fromLock'].value && form.controls['fromLock'].value != ''\r\n && form.controls['toLock'].value && form.controls['toLock'].value != ''\r\n ) {\r\n const selectedStartRangeLockId = form.controls['fromLock'].value;\r\n const selectedEndRangeLockId = form.controls['toLock'].value;\r\n const startRangeLockIndex = this.userLocks.findIndex(lock => lock.serialNumber == selectedStartRangeLockId);\r\n const endRangeLockIndex = this.userLocks.findIndex(lock => lock.serialNumber == selectedEndRangeLockId);\r\n this.selectedLocks = this.userLocks.slice(startRangeLockIndex, endRangeLockIndex + 1);\r\n this.activateMultiLocksForm.controls['countOfLocksToActivate'].setValue(this.selectedLocks.length);\r\n } else {\r\n this.selectedLocks = [];\r\n this.activateMultiLocksForm.controls['countOfLocksToActivate'].reset();\r\n this.activateMultiLocksForm.controls['countOfLocksToActivate'].disable();\r\n }\r\n }\r\n\r\n onCountOrRangeRadioClick(value: string) {\r\n const form = this.activateMultiLocksForm;\r\n\r\n if (value === this.constCount) {\r\n form.controls['countOfLocksToActivate'].reset();\r\n form.controls['countOfLocksToActivate'].enable();\r\n form.controls['fromLock'].reset();\r\n form.controls['fromLock'].disable();\r\n form.controls['toLock'].reset();\r\n form.controls['toLock'].disable();\r\n } else {\r\n this.activateMultiLocksForm.controls['countOfLocksToActivate'].disable();\r\n form.controls['fromLock'].reset();\r\n form.controls['fromLock'].enable();\r\n form.controls['toLock'].reset();\r\n form.controls['toLock'].disable();\r\n }\r\n }\r\n\r\n getAvailableLocks() {\r\n this.repo.fetchUpdatedLocks().subscribe((locks: UserLocksModel[]) => {\r\n if (locks && locks.length > 0) {\r\n this.locksArray = locks;\r\n this.buildLocksDropDown();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Toggles the element to show/hide the secret value.\r\n * @param secretElementId Id of the element containing the secret value.\r\n * @param toggleElementId Id of the element that toggles the visibility of secret value.\r\n * @param secret A string representation of the secret value.\r\n */\r\n toggleSecret(secretElementId, toggleElementId, secret) {\r\n this.appHelper.toggleSecretView(secretElementId, toggleElementId, secret);\r\n }\r\n}\r\n","module.exports = \"p-header {\\n font-size: initial;\\n color: grey;\\n}\\n\\n.row {\\n margin-bottom: 5px;\\n}\\n\\n.account-panel {\\n width: 850px;\\n}\\n\\nlabel {\\n font-weight: 600;\\n}\\n\\n.footer-buttons {\\n text-align: right;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdXNlci1wcm9maWxlL0M6XFxVc2Vyc1xcVml2ZWtcXHNvdXJjZVxccmVwb3NcXExveGFsIFNlY3VyaXR5XFxMb2Nrc1xcQ2xpZW50QXBwL3NyY1xcYXBwXFx1c2VyLXByb2ZpbGVcXHVzZXItcHJvZmlsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvdXNlci1wcm9maWxlL3VzZXItcHJvZmlsZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNDLGtCQUFBO0VBQ0EsV0FBQTtBQ0NEOztBREVBO0VBQ0Msa0JBQUE7QUNDRDs7QURFQTtFQUNDLFlBQUE7QUNDRDs7QURFQTtFQUNDLGdCQUFBO0FDQ0Q7O0FERUE7RUFDQyxpQkFBQTtBQ0NEIiwiZmlsZSI6InNyYy9hcHAvdXNlci1wcm9maWxlL3VzZXItcHJvZmlsZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbInAtaGVhZGVyIHtcclxuXHRmb250LXNpemU6IGluaXRpYWw7XHJcblx0Y29sb3I6IGdyZXk7XHJcbn1cclxuXHJcbi5yb3cge1xyXG5cdG1hcmdpbi1ib3R0b206IDVweDtcclxufVxyXG5cclxuLmFjY291bnQtcGFuZWwge1xyXG5cdHdpZHRoOiA4NTBweDtcclxufVxyXG5cclxubGFiZWwge1xyXG5cdGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi5mb290ZXItYnV0dG9ucyB7XHJcblx0dGV4dC1hbGlnbjogcmlnaHQ7XHJcbn1cclxuIiwicC1oZWFkZXIge1xuICBmb250LXNpemU6IGluaXRpYWw7XG4gIGNvbG9yOiBncmV5O1xufVxuXG4ucm93IHtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4uYWNjb3VudC1wYW5lbCB7XG4gIHdpZHRoOiA4NTBweDtcbn1cblxubGFiZWwge1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4uZm9vdGVyLWJ1dHRvbnMge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\r\nimport * as AppConstants from '../common/app.constants';\r\nimport { AppRoles } from '../common/app.roles';\r\nimport { DataService } from '../shared/dataService';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Repository } from '../models/repository';\r\nimport { UserGetResponseRecord } from '../models/userGetResponseRecord.model';\r\nimport { UserGetRequest } from '../models/UserGetRequest.model';\r\nimport { AppNotification } from '../common/app.notification';\r\nimport { UserUpdateRequest } from '../models/UserUpdateRequest.model';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\n\r\n@Component({\r\n selector: 'user-profile',\r\n templateUrl: './user-profile.component.html',\r\n styleUrls: ['./user-profile.component.scss']\r\n})\r\nexport class UserProfileComponent implements OnInit {\r\n /** Gets or sets the title for the Units page.*/\r\n pageTitle = AppConstants.PageTitle.userProfile;\r\n\r\n /** Gets or sets the logged in user name.*/\r\n loggedInUserName: string;\r\n\r\n /** Gets or sets the logged in user role.*/\r\n loggedInUserRole: string;\r\n\r\n /** Gets or sets the logged in user is Global Admin or not.*/\r\n isGlobalAdmin = false;\r\n\r\n /** Gets or sets the logged in user is Owner User or not.*/\r\n isOwnerUser = false;\r\n\r\n enableValidation = true;\r\n\r\n userForm: FormGroup;\r\n\r\n constructor(private roles: AppRoles\r\n , private dataService: DataService\r\n , private appLabels: AppConstants.AppLabels\r\n , private formBuilder: FormBuilder\r\n , private repo: Repository\r\n , private appNotification: AppNotification\r\n , private spinner: NgxSpinnerService) {\r\n this.userForm = this.formBuilder.group({\r\n userName: ['', Validators.required],\r\n firstName: ['', Validators.required],\r\n lastName: ['', Validators.required],\r\n phone: ['', Validators.required],\r\n email: ['', Validators.required],\r\n company: [''],\r\n maxArbitraryCodes: [''],\r\n maxPerpetualCodes: [''],\r\n maxDailyCodes: [''],\r\n maxWeeklyCodes: [''],\r\n globalAdminBlock: [false]\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.getLoggedInUserInfo();\r\n }\r\n\r\n /** Gets the currently logged-in user's details. */\r\n getLoggedInUserInfo() {\r\n const token = this.dataService.getAccessToken();\r\n const decodedToken = this.dataService.getDecodedAccessToken(token);\r\n if (decodedToken) {\r\n this.loggedInUserName = decodedToken.unique_name;\r\n this.loggedInUserRole = decodedToken.Role;\r\n this.isGlobalAdmin = this.loggedInUserRole.toLowerCase() == this.roles.globalAdmin.toLowerCase();\r\n this.isOwnerUser = this.loggedInUserRole.toLowerCase() == this.roles.ownerUser.toLowerCase();\r\n const userRequest: UserGetRequest = { userName: this.loggedInUserName };\r\n\r\n this.repo.getUser(userRequest).subscribe((user: UserGetResponseRecord) => {\r\n if (user) {\r\n this.userForm.controls['userName'].setValue(user.userName);\r\n this.userForm.controls['userName'].disable();\r\n this.userForm.controls['firstName'].setValue(user.firstName);\r\n this.userForm.controls['lastName'].setValue(user.lastName);\r\n this.userForm.controls['phone'].setValue(user.phone);\r\n this.userForm.controls['email'].setValue(user.email);\r\n this.userForm.controls['company'].setValue(user.company);\r\n this.userForm.controls['maxArbitraryCodes'].setValue(user.maxArbitraryCodes);\r\n this.userForm.controls['maxPerpetualCodes'].setValue(user.maxPerpetualCodes);\r\n this.userForm.controls['maxDailyCodes'].setValue(user.maxDailyCodes);\r\n this.userForm.controls['maxWeeklyCodes'].setValue(user.maxWeeklyCodes);\r\n this.userForm.controls['globalAdminBlock'].setValue(user.globalAdminBlock);\r\n }\r\n if (this.isGlobalAdmin) {\r\n this.enableValidation = false;\r\n this.userForm.controls['firstName'].disable();\r\n this.userForm.controls['lastName'].disable();\r\n this.userForm.controls['phone'].disable();\r\n this.userForm.controls['email'].disable();\r\n this.userForm.controls['company'].disable();\r\n } else {\r\n this.enableValidation = true;\r\n this.userForm.controls['firstName'].enable();\r\n this.userForm.controls['lastName'].enable();\r\n this.userForm.controls['phone'].enable();\r\n this.userForm.controls['email'].enable();\r\n this.userForm.controls['company'].enable();\r\n }\r\n this.spinner.hide();\r\n }, (err) => {\r\n console.error(err);\r\n this.spinner.hide();\r\n this.appNotification.error('Failed to retrieve user information!');\r\n });\r\n }\r\n }\r\n\r\n /** Updates the user information. */\r\n updateUser() {\r\n this.spinner.show();\r\n const updateRequest = new UserUpdateRequest();\r\n updateRequest.userName = this.loggedInUserName;\r\n updateRequest.firstName = this.userForm.controls['firstName'].value;\r\n updateRequest.lastName = this.userForm.controls['lastName'].value;\r\n updateRequest.phone = this.userForm.controls['phone'].value;\r\n updateRequest.email = this.userForm.controls['email'].value;\r\n updateRequest.company = this.userForm.controls['company'].value;\r\n updateRequest.globalAdminBlock = Number(this.userForm.controls['globalAdminBlock'].value);\r\n\r\n if (this.isOwnerUser) {\r\n updateRequest.maxArbitraryCodes = this.userForm.controls['maxArbitraryCodes'].value;\r\n updateRequest.maxPerpetualCodes = this.userForm.controls['maxPerpetualCodes'].value;\r\n updateRequest.maxDailyCodes = this.userForm.controls['maxDailyCodes'].value;\r\n updateRequest.maxWeeklyCodes = this.userForm.controls['maxWeeklyCodes'].value;\r\n }\r\n\r\n this.repo.updateUser(updateRequest).subscribe((response: any) => {\r\n this.spinner.hide();\r\n if (response.statusCode == AppConstants.StatusCode.Ok) {\r\n this.appNotification.success(`Updated details for the user ${this.loggedInUserName}`);\r\n } else {\r\n console.error('StatusCode : ', response.StatusCode, '. Message : ', response.Message);\r\n this.appNotification.error('Failed to update. Something went wrong!');\r\n }\r\n }, (err) => {\r\n console.error(err);\r\n this.spinner.hide();\r\n this.appNotification.error('Failed to update. Something went wrong!');\r\n });\r\n }\r\n\r\n /** Dicards changes to the user form. */\r\n discardChanges() {\r\n this.getLoggedInUserInfo();\r\n }\r\n}\r\n","module.exports = \".users th {\\n background-color: #DC0000 !important;\\n border: 2px solid #fff;\\n border-collapse: separate;\\n}\\n\\n.table th {\\n border: 2px solid #fff;\\n border-collapse: separate;\\n}\\n\\n.table td {\\n border: 2px solid #fff;\\n border-collapse: separate;\\n}\\n\\n.table {\\n overflow: scroll;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdXNlcnMvQzpcXFVzZXJzXFxWaXZla1xcc291cmNlXFxyZXBvc1xcTG94YWwgU2VjdXJpdHlcXExvY2tzXFxDbGllbnRBcHAvc3JjXFxhcHBcXHVzZXJzXFx1c2VyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC91c2Vycy91c2VyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Msb0NBQUE7RUFDQSxzQkFBQTtFQUNBLHlCQUFBO0FDQ0Q7O0FERUE7RUFDQyxzQkFBQTtFQUNBLHlCQUFBO0FDQ0Q7O0FERUE7RUFDQyxzQkFBQTtFQUNBLHlCQUFBO0FDQ0Q7O0FERUE7RUFDQyxnQkFBQTtBQ0NEIiwiZmlsZSI6InNyYy9hcHAvdXNlcnMvdXNlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi51c2VycyB0aCB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogI0RDMDAwMCAhaW1wb3J0YW50O1xyXG5cdGJvcmRlcjogMnB4IHNvbGlkICNmZmY7XHJcblx0Ym9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcclxufVxyXG5cclxuLnRhYmxlIHRoIHtcclxuXHRib3JkZXI6IDJweCBzb2xpZCAjZmZmO1xyXG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XHJcbn1cclxuXHJcbi50YWJsZSB0ZCB7XHJcblx0Ym9yZGVyOiAycHggc29saWQgI2ZmZjtcclxuXHRib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xyXG59XHJcblxyXG4udGFibGUge1xyXG5cdG92ZXJmbG93OiBzY3JvbGw7XHJcbn1cclxuIiwiLnVzZXJzIHRoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0RDMDAwMCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDJweCBzb2xpZCAjZmZmO1xuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4udGFibGUgdGgge1xuICBib3JkZXI6IDJweCBzb2xpZCAjZmZmO1xuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4udGFibGUgdGQge1xuICBib3JkZXI6IDJweCBzb2xpZCAjZmZmO1xuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4udGFibGUge1xuICBvdmVyZmxvdzogc2Nyb2xsO1xufSJdfQ== */\"","import { Component, HostListener, ViewChild } from '@angular/core';\r\nimport { NavigationExtras, Router } from '@angular/router';\r\nimport { DataService } from '../shared/dataService';\r\nimport { Repository } from '../models/repository';\r\nimport { UserGetResponseRecord } from '../models/userGetResponseRecord.model';\r\nimport { UserLocksModel } from '../models/UserLocksModel.model';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport * as $ from 'jquery';\r\nimport { LockUsersDetails } from '../models/LockUserAccess.model';\r\nimport { LockUsers } from '../models/LockUsers.model';\r\nimport { LockUserGroup } from '../models/LockUserGroup.model';\r\nimport { Table } from 'primeng/table';\r\nimport { UserUpdateRequest } from '../models/UserUpdateRequest.model';\r\nimport * as AppConstants from '../common/app.constants';\r\nimport { AppRoles } from '../common/app.roles';\r\nimport { forkJoin } from 'rxjs';\r\nimport { AppNotification } from '../common/app.notification';\r\nimport { LockGetRequest } from '../models/LockGetRequest.model';\r\nimport { UserGetRequest } from '../models/UserGetRequest.model';\r\nimport * as AppHelper from '../common/app.helper';\r\nimport { SendMessage } from '../models/SendMessage.model';\r\n\r\n@Component({\r\n selector: 'user',\r\n templateUrl: './user.component.html',\r\n styleUrls: ['./user.component.scss']\r\n})\r\nexport class User {\r\n viewUserLocks = false;\r\n viewLockUsers = false;\r\n\r\n showAddUserDialog = false;\r\n showAddLockUserDialog = false;\r\n showDeleteUserDialog = false;\r\n showDeleteLockUserDialog = false;\r\n showConvertLockUserDialog = false;\r\n showConfirmationSection = false;\r\n showEditContactDetailsDialog = false;\r\n showResendUserCodeDialog = false;\r\n id = '';\r\n usersCols: any[];\r\n lockUsersCols: any[];\r\n lockUsersCols_lockUser: any[];\r\n lockUsersCols_user: any[];\r\n lockUsersCols_auditCollector: any[];\r\n userLocksCols: any[];\r\n OwnerUserLocksCols: any[];\r\n roleForDropdown: any[];\r\n rolesForDelete: any[];\r\n selectedUser: UserGetResponseRecord;\r\n selectedLockUser: LockUsers;\r\n\r\n addUserForm: FormGroup;\r\n deleteUserForm: FormGroup;\r\n addLockUserForm: FormGroup;\r\n convertLockUserForm: FormGroup;\r\n deleteLockUserForm: FormGroup;\r\n lockUserGroupForm: FormGroup;\r\n lockUserDeleteGroupForm: FormGroup;\r\n userRolesForm: FormGroup;\r\n editContactDetailsForm: FormGroup;\r\n searchUsersForm: FormGroup;\r\n resendUserCodeForm: FormGroup;\r\n\r\n tblDheight = AppConstants.Generic.tableHeight;\r\n userRole: string;\r\n selectedUserRole = this.roles.lockUser;\r\n roleOfUserBeingDeleted = '';\r\n role_user_auditCollector = this.roles.user + \",\" + this.roles.auditCollector;\r\n constSingle = AppConstants.Generic.single;\r\n constMultiple = AppConstants.Generic.multiple;\r\n labelUsername = this.appLabels.userName;\r\n isSingleUserCreation = true;\r\n\r\n groupsArray: Array = this.repo.lockUserGroups;\r\n usersArray: Array = this.repo.users;\r\n lockUsersArray: Array = this.repo.lockUsers;\r\n lockUsersDropDown: Array = [];\r\n\r\n /** Gets or sets the number of rows per page to be displayed. */\r\n rowsPerPage = AppConstants.Generic.rowsPerPage;\r\n /** Gets or sets the title for the Units page.*/\r\n pageTitle = AppConstants.PageTitle.users;\r\n\r\n /** Gets or sets the label for add user element.*/\r\n labelAddNonLockUser = this.appLabels.addUser;\r\n\r\n /** Gets or sets the label for delete user element.*/\r\n labelDeleteNonLockUser = this.appLabels.deleteUser;\r\n\r\n /** Gets or sets the options menu width.*/\r\n optionsMenuWidth = '360px';\r\n\r\n groupsDropDown: Array = [];\r\n\r\n usersDropDown: Array = [];\r\n\r\n nonArbitraryLockUsers: Array = [];\r\n\r\n arbitaryCodeDropdown = [\r\n { label: this.appLabels.yes, value: 1 },\r\n { label: this.appLabels.no, value: 0 }\r\n ];\r\n\r\n ownerRolesDropdown = [\r\n { label: this.roles.lockUserLabel, value: this.roles.lockUser },\r\n { label: this.roles.userLabel, value: this.roles.user },\r\n { label: this.roles.auditCollectorLabel, value: this.roles.auditCollector }\r\n ];\r\n\r\n userRolesDropdown = [\r\n { label: this.roles.lockUserLabel, value: this.roles.lockUser },\r\n { label: this.roles.auditCollectorLabel, value: this.roles.auditCollector }\r\n ];\r\n\r\n @ViewChild('usersTable', { static: false })\r\n private usersTable: Table;\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event?) {\r\n this.tblDheight = $(window).height() - 260 + 'px';\r\n }\r\n\r\n constructor(private repo: Repository, private router: Router, private formBuilder: FormBuilder, private roles: AppRoles,\r\n private spinner: NgxSpinnerService, private dataService: DataService,\r\n private appLabels: AppConstants.AppLabels, private appNotification: AppNotification,\r\n private apptimeZone: AppHelper.AppTimeZone) {\r\n this.tblDheight = $(window).height() - 260 + 'px';\r\n\r\n this.viewUserLocks = false;\r\n this.viewLockUsers = false;\r\n\r\n const token = dataService.getAccessToken();\r\n const decodedToken = dataService.getDecodedAccessToken(token);\r\n if (decodedToken) {\r\n this.userRole = decodedToken.Role;\r\n\r\n if (this.userRole && this.userRole.toLowerCase() == this.roles.ownerUser.toLowerCase()) {\r\n this.labelAddNonLockUser = this.appLabels.addUserByOwnerUser;\r\n this.labelDeleteNonLockUser = this.appLabels.deleteUserByOwnerUser;\r\n this.optionsMenuWidth = '375px';\r\n this.roleForDropdown = [\r\n { label: this.roles.userLabel, value: this.roles.user },\r\n { label: this.roles.auditCollectorLabel, value: this.roles.auditCollector }\r\n ];\r\n this.rolesForDelete = [\r\n { label: this.roles.userLabel, value: this.roles.user },\r\n { label: this.roles.auditCollectorLabel, value: this.roles.auditCollector },\r\n { label: this.roles.userLabel + ' + ' + this.roles.auditCollectorLabel, value: this.role_user_auditCollector }\r\n ];\r\n } else if (this.userRole && this.userRole.toLowerCase() == this.roles.globalAdmin.toLowerCase()) {\r\n this.optionsMenuWidth = '385px';\r\n this.labelAddNonLockUser = this.appLabels.addUserByGlobalAdmin;\r\n this.labelDeleteNonLockUser = this.appLabels.deleteUserByGlobalAdmin;\r\n this.roleForDropdown = [\r\n { label: this.roles.ownerUserLabel, value: this.roles.ownerUser },\r\n { label: this.roles.auditCollectorLabel, value: this.roles.auditCollector }\r\n ];\r\n } else if (this.userRole && this.userRole.toLowerCase() == this.roles.user.toLowerCase()) {\r\n this.labelAddNonLockUser = this.appLabels.addUserByUser;\r\n this.labelDeleteNonLockUser = this.appLabels.deleteUserByUser;\r\n }\r\n }\r\n\r\n this.getManageGridDetails();\r\n\r\n this.usersCols = [\r\n { field: 'userName', header: appLabels.userName },\r\n { field: 'firstName', header: appLabels.firstName },\r\n { field: 'lastName', header: appLabels.lastName },\r\n { field: 'roles', header: appLabels.role },\r\n { field: 'email', header: appLabels.email },\r\n { field: 'phone', header: appLabels.phone },\r\n { field: 'company', header: appLabels.company },\r\n { field: 'group', header: appLabels.group }\r\n ];\r\n\r\n this.lockUsersCols = this.lockUsersCols_lockUser = [\r\n { field: 'name', header: appLabels.userName },\r\n { field: 'selectedUserRole', header: appLabels.role },\r\n { field: 'email', header: appLabels.email },\r\n { field: 'phone', header: appLabels.phone },\r\n { field: 'company', header: appLabels.company },\r\n { field: 'groups', header: appLabels.group }\r\n ];\r\n\r\n this.lockUsersCols_user = [\r\n { field: 'userName', header: appLabels.userName },\r\n { field: 'firstName', header: appLabels.firstName },\r\n { field: 'lastName', header: appLabels.lastName },\r\n { field: 'roles', header: appLabels.role },\r\n { field: 'email', header: appLabels.email },\r\n { field: 'phone', header: appLabels.phone },\r\n { field: 'company', header: appLabels.company },\r\n { field: 'groups', header: appLabels.group }\r\n ];\r\n\r\n this.lockUsersCols_auditCollector = [\r\n { field: 'userName', header: appLabels.userName },\r\n { field: 'firstName', header: appLabels.firstName },\r\n { field: 'lastName', header: appLabels.lastName },\r\n { field: 'roles', header: appLabels.role },\r\n { field: 'email', header: appLabels.email },\r\n { field: 'phone', header: appLabels.phone },\r\n { field: 'company', header: appLabels.company },\r\n { field: 'groups', header: appLabels.group }\r\n ];\r\n\r\n this.userLocksCols = [\r\n { field: 'unitIdNo', header: appLabels.lockId },\r\n { field: 'location', header: appLabels.location },\r\n { field: 'unitType', header: appLabels.lockType },\r\n { field: 'codeType', header: appLabels.codeType },\r\n { field: 'installedDate', header: appLabels.dateInstalled }\r\n ];\r\n\r\n this.OwnerUserLocksCols = [\r\n { field: 'lockSerialNumber', header: appLabels.lockId },\r\n { field: 'lockLocation', header: appLabels.location },\r\n { field: 'added', header: appLabels.dateInstalled }\r\n ];\r\n\r\n this.repo.getUpdatedLockUserGroups().subscribe((lockUserGroups: LockUserGroup[]) => {\r\n if (lockUserGroups && lockUserGroups.length > 0) {\r\n this.groupsArray = lockUserGroups;\r\n this.buildGroupsDropDown();\r\n }\r\n });\r\n\r\n this.repo.getUpdatedUsers().subscribe((users: UserGetResponseRecord[]) => {\r\n if (users && users.length > 0) {\r\n this.usersArray = users;\r\n this.buildUsersDropDown();\r\n }\r\n });\r\n\r\n this.addUserForm = this.formBuilder.group({\r\n userName: ['', Validators.required],\r\n firstName: ['', Validators.required],\r\n lastName: ['', Validators.required],\r\n phone: ['', Validators.required],\r\n email: ['', Validators.required],\r\n password: ['', Validators.required],\r\n roleForUser: ['', Validators.required],\r\n company: ['']\r\n });\r\n\r\n this.editContactDetailsForm = this.formBuilder.group({\r\n name: ['', Validators.required],\r\n userName: ['', Validators.required],\r\n email: ['', Validators.required],\r\n phone: ['', Validators.required],\r\n newName: [''],\r\n company: ['']\r\n });\r\n\r\n this.searchUsersForm = this.formBuilder.group({\r\n searchText: ['']\r\n });\r\n\r\n this.addLockUserForm = this.formBuilder.group({\r\n name: ['', Validators.required],\r\n phone: [''],\r\n email: [''],\r\n generateArbitraryCode: [0, Validators.required],\r\n company: [''],\r\n countOfUsers: [0],\r\n addUsersStartingRange: [0],\r\n isSingleOrMultiUsers: [this.constSingle.toLowerCase()]\r\n });\r\n\r\n this.convertLockUserForm = this.formBuilder.group({\r\n nonArbitraryLockUser: ['', Validators.required]\r\n });\r\n\r\n this.lockUserGroupForm = this.formBuilder.group({\r\n groupName: ['', Validators.required]\r\n });\r\n\r\n this.lockUserDeleteGroupForm = this.formBuilder.group({\r\n groupName: ['', Validators.required]\r\n });\r\n\r\n this.deleteUserForm = this.formBuilder.group({\r\n userName: ['', Validators.required],\r\n roleToDelete: [this.roles.user, Validators.required]\r\n });\r\n\r\n this.deleteLockUserForm = this.formBuilder.group({\r\n name: ['', Validators.required]\r\n });\r\n\r\n this.userRolesForm = this.formBuilder.group({\r\n userRole: [this.roles.lockUser]\r\n });\r\n\r\n this.resendUserCodeForm = this.formBuilder.group({\r\n lockSerialNumber: [''],\r\n lockUserId: [''],\r\n lockUser: ['', Validators.required],\r\n messageMedium: ['', Validators.required]\r\n });\r\n }\r\n\r\n switchUsers() {\r\n if (this.userRolesForm.valid) {\r\n this.spinner.show();\r\n setTimeout(() => {\r\n this.spinner.hide();\r\n this.selectedUserRole = this.userRolesForm.controls['userRole'].value;\r\n }, 1000);\r\n } else {\r\n this.appNotification.error('Please select a value');\r\n }\r\n }\r\n\r\n buildGroupsDropDown() {\r\n if (this.groupsArray) {\r\n this.groupsDropDown = [];\r\n this.groupsArray.forEach((lockUserGroup: LockUserGroup) => {\r\n this.groupsDropDown.push(\r\n { label: lockUserGroup.groupName, value: lockUserGroup.groupName }\r\n );\r\n });\r\n }\r\n }\r\n\r\n buildUsersDropDown(userRoleToBuild: string = null) {\r\n if (this.usersArray) {\r\n this.usersDropDown = [];\r\n this.usersArray.forEach((lockUserGroup: UserGetResponseRecord) => {\r\n if (userRoleToBuild && userRoleToBuild == this.roles.auditCollector && lockUserGroup.roles && lockUserGroup.roles == this.roles.auditCollector) {\r\n this.usersDropDown.push(\r\n { label: lockUserGroup.userName, value: lockUserGroup.userName }\r\n );\r\n }\r\n else if (!userRoleToBuild || userRoleToBuild == this.roles.user) {\r\n if (this.userRole == this.roles.globalAdmin && lockUserGroup.roles && lockUserGroup.roles.toLowerCase().includes(this.roles.ownerUser.toLowerCase())) {\r\n this.usersDropDown.push(\r\n { label: lockUserGroup.userName, value: lockUserGroup.userName }\r\n );\r\n } else if (this.userRole == this.roles.ownerUser && lockUserGroup.roles && lockUserGroup.roles == this.roles.user) {\r\n this.usersDropDown.push(\r\n { label: lockUserGroup.userName, value: lockUserGroup.userName }\r\n );\r\n } else if (this.userRole == this.roles.user && lockUserGroup.roles && lockUserGroup.roles == this.roles.auditCollector) {\r\n this.usersDropDown.push(\r\n { label: lockUserGroup.userName, value: lockUserGroup.userName }\r\n );\r\n }\r\n }\r\n else if (userRoleToBuild && userRoleToBuild == this.role_user_auditCollector && lockUserGroup.roles && lockUserGroup.roles == this.role_user_auditCollector) {\r\n this.usersDropDown.push(\r\n { label: lockUserGroup.userName, value: lockUserGroup.userName }\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n buildNonArbitraryLockUsersDropDown() {\r\n if (this.lockUsers) {\r\n this.nonArbitraryLockUsers = [];\r\n this.lockUsers.filter(lockUser => lockUser.arbitraryKeypadCode == 0 || lockUser.arbitraryKeypadCode == null).forEach((lockUser: LockUsers) => {\r\n this.nonArbitraryLockUsers.push(\r\n { label: lockUser.name, value: lockUser }\r\n );\r\n });\r\n }\r\n }\r\n\r\n searchUsers() {\r\n this.nonAdminUsers;\r\n }\r\n\r\n clearSearchUsersForm() {\r\n this.nonAdminUsers;\r\n }\r\n\r\n confirmAndConvertLockUser() {\r\n if (this.convertLockUserForm.valid) {\r\n this.showConfirmationSection = true;\r\n } else {\r\n this.appNotification.error('Select atleast one user to convert.');\r\n }\r\n }\r\n\r\n closeConfirmationSection() {\r\n this.showConfirmationSection = false;\r\n }\r\n\r\n convertLockUser() {\r\n const convertLockUserForm = this.convertLockUserForm;\r\n if (convertLockUserForm.valid) {\r\n const lockUsers: LockUsers[] = convertLockUserForm.controls['nonArbitraryLockUser'].value ? convertLockUserForm.controls['nonArbitraryLockUser'].value : [];\r\n const observables = [];\r\n\r\n lockUsers.forEach((lockUser) => {\r\n if (lockUser.id && lockUser.id > 0\r\n && (!lockUser.arbitraryKeypadCode || lockUser.arbitraryKeypadCode < 1)) {\r\n const lockUserUpdateReq = new LockUsers();\r\n lockUserUpdateReq.id = lockUser.id;\r\n lockUserUpdateReq.name = lockUser.name;\r\n lockUserUpdateReq.phone = lockUser.phone;\r\n lockUserUpdateReq.email = lockUser.email;\r\n lockUserUpdateReq.generateArbitraryCode = 0;\r\n lockUserUpdateReq.updateArbitraryCode = 1;\r\n observables.push(this.repo.updateLockUser(lockUserUpdateReq));\r\n }\r\n });\r\n\r\n if (observables.length) {\r\n forkJoin(observables).subscribe((results: LockUsersDetails[]) => {\r\n results.forEach(result => {\r\n if (result && result.keypadCode) {\r\n }\r\n });\r\n this.closeConvertLockUserDialog();\r\n this.closeConfirmationSection();\r\n this.spinner.hide();\r\n this.appNotification.success('Successfully converted user(s).');\r\n this.repo.getLockUsers(new UserLocksModel());\r\n }, (err) => { // TODO: handle error for individual requests\r\n this.spinner.hide();\r\n this.appNotification.error('Error! Something went wrong while converting user(s).');\r\n console.error(err);\r\n });\r\n }\r\n } else {\r\n this.appNotification.error('Select atleast one user to convert.');\r\n }\r\n }\r\n\r\n getManageGridDetails() {\r\n if (this.userRole && this.userRole == this.roles.globalAdmin) {\r\n this.repo.getUsers();\r\n } else if (this.userRole && (this.userRole == this.roles.ownerUser || this.userRole == this.roles.user)) {\r\n this.repo.getLockUsers(new UserLocksModel());\r\n } else {\r\n this.repo.getLockUsers(new UserLocksModel());\r\n }\r\n }\r\n\r\n get currentTimeZoneOffset(): string {\r\n return this.apptimeZone.currentTimeZoneOffset;\r\n }\r\n\r\n get currentTimeZoneName(): string {\r\n return this.apptimeZone.currentTimeZoneName;\r\n }\r\n\r\n get users(): UserGetResponseRecord[] {\r\n return this.repo.users;\r\n }\r\n\r\n get lockUsers(): LockUsers[] {\r\n return this.repo.lockUsers;\r\n }\r\n\r\n\r\n /** Gets the list of Owner users and Audit Collectors. */\r\n get ownerUsersAuditCollectors(): any[] {\r\n let usersData = this.users.filter(user => user.roles\r\n && user.roles.toLowerCase().split(\",\").filter(role => role == this.roles.ownerUser.toLowerCase()\r\n || role == this.roles.auditCollector.toLowerCase()).length > 0\r\n );\r\n\r\n usersData = usersData.map(this.setRolesToDisplay);\r\n return usersData;\r\n }\r\n\r\n /** Gets the list of non-admin users. */\r\n get nonAdminUsers(): any[] {\r\n const userSearchText = this.searchUsersForm.controls['searchText'];\r\n const userSearchTextValue = userSearchText ? userSearchText.value.trim() : '';\r\n\r\n const lockUsers = this.lockUsers.filter(user => user.name.includes(userSearchTextValue)\r\n || userSearchTextValue === '');\r\n\r\n const users = this.users.filter(user => user.userName.includes(userSearchTextValue)\r\n || user.firstName.includes(userSearchTextValue)\r\n || user.lastName.includes(userSearchTextValue) || userSearchTextValue === '');\r\n\r\n let userData = [];\r\n\r\n if (this.selectedUserRole === this.roles.lockUser) {\r\n userData = lockUsers;\r\n this.lockUsersCols = this.lockUsersCols_lockUser;\r\n }\r\n else if (this.selectedUserRole === this.roles.user) {\r\n userData = users.filter(user => user.roles === this.roles.user\r\n || user.roles.toLowerCase().split(\",\").filter(role => role == this.roles.user.toLowerCase()).length > 0);\r\n this.lockUsersCols = this.lockUsersCols_user;\r\n }\r\n else if (this.selectedUserRole === this.roles.auditCollector) {\r\n userData = users.filter(user => user.roles === this.roles.auditCollector\r\n || user.roles.toLowerCase().split(\",\").filter(role => role == this.roles.auditCollector.toLowerCase()).length > 0);\r\n this.lockUsersCols = this.lockUsersCols_auditCollector;\r\n }\r\n\r\n userData = userData.map(this.setRolesToDisplay)\r\n return userData;\r\n\r\n // return this.selectedUserRole === this.roles.lockUser\r\n // ? lockUsers\r\n // : this.selectedUserRole == this.roles.user\r\n // ? users.filter(user => user.roles == this.roles.user)\r\n // : this.selectedUserRole == this.roles.auditCollector\r\n // ? users.filter(user => user.roles == this.roles.auditCollector)\r\n // : [];\r\n }\r\n\r\n get userLocks(): LockUsersDetails[] {\r\n return this.repo.lockUsersAccess;\r\n }\r\n\r\n get distinctUserLocks(): LockUsersDetails[] {\r\n return this.userLocks.sort().filter(function (item, pos, ary) {\r\n return !pos || item.lockSerialNumber != ary[pos - 1].lockSerialNumber;\r\n });\r\n }\r\n\r\n get manageOwnerUserLocks(): UserLocksModel[] {\r\n return this.repo.manageLocks;\r\n }\r\n\r\n setRolesToDisplay(role: UserGetResponseRecord) {\r\n let rolesMasterData = new AppRoles();\r\n if (role.roles) {\r\n role.rolesToDisplay = role.roles\r\n .replace(\",\", \", \")\r\n .replace(rolesMasterData.auditCollector, rolesMasterData.auditCollectorLabel)\r\n .replace(rolesMasterData.globalAdmin, rolesMasterData.globalAdminLabel)\r\n .replace(rolesMasterData.lockUser, rolesMasterData.lockUserLabel)\r\n .replace(rolesMasterData.ownerUser, rolesMasterData.ownerUserLabel)\r\n .replace(rolesMasterData.user, rolesMasterData.userLabel)\r\n }\r\n\r\n return role;\r\n }\r\n\r\n viewSelUserLocks(user) {\r\n this.viewUserLocks = true;\r\n this.repo.getUserLocks(user);\r\n this.selectedUser = user;\r\n }\r\n\r\n viewSelLocksUserAccess(user: LockUsers) {\r\n this.viewLockUsers = true;\r\n const reqObj: UserLocksModel = new UserLocksModel();\r\n reqObj.lockUserName = user.name;\r\n reqObj.lockUserId = user.id;\r\n this.repo.getLockUserAccess(reqObj);\r\n this.selectedLockUser = user;\r\n }\r\n\r\n backToUsers() {\r\n this.viewUserLocks = false;\r\n }\r\n\r\n backToLockUsers() {\r\n this.viewLockUsers = false;\r\n }\r\n\r\n editContactDetails() {\r\n const editForm = this.editContactDetailsForm;\r\n let isFormValid = (editForm.controls['name'].valid || editForm.controls['userName'].valid)\r\n && editForm.controls['email'].valid && editForm.controls['phone'].valid && editForm.controls['phone'].value != 'phone';\r\n\r\n if (this.selectedUserRole == this.roles.lockUser) {\r\n isFormValid = (editForm.controls['name'].valid || editForm.controls['userName'].valid);\r\n editForm.controls['phone'].setValue(editForm.controls['phone'].value && editForm.controls['phone'].value != 'phone' ? editForm.controls['phone'].value : '');\r\n }\r\n\r\n const newName = editForm.controls['newName'].value;\r\n const newNameValue = newName ? newName.trim() : newName;\r\n editForm.controls['newName'].setValue(newNameValue == '' ? null : newNameValue);\r\n\r\n if (isFormValid) {\r\n editForm.controls['phone'].setValue(String(editForm.controls['phone'].value));\r\n if (this.selectedUserRole == this.roles.lockUser) {\r\n this.repo.updateLockUser(editForm.value).subscribe((response: any) => {\r\n this.spinner.hide();\r\n if (response.statusCode == AppConstants.StatusCode.Ok) {\r\n this.closeEditContactDetailsDialog();\r\n this.appNotification.success('Updated the user information.');\r\n this.repo.getLockUsers(new UserLocksModel());\r\n } else {\r\n console.error('StatusCode : ', response.statusCode, '. Message : ', response.message);\r\n this.appNotification.error(`Failed to update. ${response.message}`);\r\n }\r\n }, (err) => {\r\n console.error(err);\r\n this.spinner.hide();\r\n this.appNotification.error('Failed to update. Something went wrong!');\r\n });\r\n } else if (this.selectedUserRole == this.roles.auditCollector) {\r\n this.repo.updateUser(editForm.value).subscribe((response: any) => {\r\n this.spinner.hide();\r\n if (response.statusCode == AppConstants.StatusCode.Ok) {\r\n this.closeEditContactDetailsDialog();\r\n this.appNotification.success('Updated the user information.');\r\n this.repo.getUsers();\r\n } else {\r\n console.error('StatusCode : ', response.statusCode, '. Message : ', response.message);\r\n this.appNotification.error(`Failed to update. ${response.message}`);\r\n }\r\n }, (err) => {\r\n console.error(err);\r\n this.spinner.hide();\r\n this.appNotification.error('Failed to update. Something went wrong!');\r\n });\r\n }\r\n } else {\r\n if (!editForm.controls['email'].valid && !editForm.controls['phone'].valid) {\r\n this.appNotification.error('Please provide all the inputs.', 'Input required');\r\n } else if (!editForm.controls['email'].valid) {\r\n this.appNotification.error('Provide a valid email address.', 'Invalid input');\r\n } else if (!editForm.controls['phone'].valid || editForm.controls['phone'].value == 'phone') {\r\n this.appNotification.error('Provide a valid phone number.', 'Invalid input');\r\n }\r\n }\r\n }\r\n\r\n openEditContactDetailsDialog(user: any) {\r\n this.editContactDetailsForm.reset();\r\n if (user) {\r\n if (user.name) { this.editContactDetailsForm.controls['name'].setValue(user.name); } else if (user.userName) { this.editContactDetailsForm.controls['userName'].setValue(user.userName); }\r\n\r\n if (user.email) { this.editContactDetailsForm.controls['email'].setValue(user.email); }\r\n if (user.phone) { this.editContactDetailsForm.controls['phone'].setValue(user.phone); }\r\n if (user.company) { this.editContactDetailsForm.controls['company'].setValue(user.company); }\r\n }\r\n this.showEditContactDetailsDialog = true;\r\n }\r\n\r\n showAddUser() {\r\n this.addUserForm.reset();\r\n this.showAddUserDialog = true;\r\n }\r\n\r\n showAddLockUser() {\r\n this.resetAddLockUser();\r\n this.showAddLockUserDialog = true;\r\n }\r\n\r\n resetAddLockUser() {\r\n this.addLockUserForm.reset();\r\n this.addLockUserForm.controls['isSingleOrMultiUsers'].setValue(this.constSingle.toLowerCase());\r\n this.isSingleUserCreation = true;\r\n this.labelUsername = this.appLabels.userName;\r\n }\r\n\r\n showConvertLockUser() {\r\n this.convertLockUserForm.reset();\r\n this.buildNonArbitraryLockUsersDropDown();\r\n this.showConvertLockUserDialog = true;\r\n }\r\n\r\n showDeleteLockUser() {\r\n this.deleteLockUserForm.reset();\r\n this.showDeleteLockUserDialog = true;\r\n }\r\n\r\n showDeleteUser() {\r\n this.deleteUserForm.reset();\r\n this.deleteUserForm.controls['roleToDelete'].setValue(this.roles.user);\r\n this.showDeleteUserDialog = true;\r\n }\r\n\r\n closeEditContactDetailsDialog() {\r\n this.showEditContactDetailsDialog = false;\r\n }\r\n\r\n closeAddUserDialog() {\r\n this.showAddUserDialog = false;\r\n this.resetAddLockUser();\r\n }\r\n\r\n closeConvertLockUserDialog() {\r\n this.showConvertLockUserDialog = false;\r\n }\r\n\r\n closeAddLockUserDialog() {\r\n this.showAddLockUserDialog = false;\r\n }\r\n\r\n closeDeleteLockUserDialog() {\r\n this.showDeleteLockUserDialog = false;\r\n }\r\n\r\n closeDeleteUserDialog() {\r\n this.showDeleteUserDialog = false;\r\n }\r\n\r\n addNewUser() {\r\n const addUserRolesInContext = this.addUserForm.controls['roleForUser'].value;\r\n const form = this.addUserForm;\r\n //if (this.userRole == this.roles.globalAdmin) {\r\n // form.controls['roleForUser'].setValue(this.roles.ownerUser);\r\n //}\r\n if (this.userRole == this.roles.user) {\r\n form.controls['roleForUser'].setValue([this.roles.auditCollector]);\r\n }\r\n if (form.valid) {\r\n const rolesSelected: [] = form.controls['roleForUser'].value ? form.controls['roleForUser'].value : [];\r\n let roles = rolesSelected.length > 0 ? rolesSelected.join(\"|\") : rolesSelected;\r\n form.controls['roleForUser'].setValue(roles);\r\n\r\n let input = form.value\r\n form.controls['roleForUser'].setValue(addUserRolesInContext);\r\n\r\n this.repo.addNewUser(input).subscribe(addUserRes => {\r\n this.spinner.hide();\r\n if (addUserRes.statusCode != AppConstants.StatusCode.Ok) {\r\n this.appNotification.error(addUserRes.message);\r\n } else if (!addUserRes.message) {\r\n this.appNotification.error('Failed to add new user (or) User already exists.');\r\n } else {\r\n this.repo.getUsers();\r\n this.appNotification.success(addUserRes.message);\r\n this.closeAddUserDialog();\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.appNotification.error('Failed to add new user');\r\n this.closeAddUserDialog();\r\n });\r\n } else {\r\n this.appNotification.error('Please Provide all the inputs.', 'Input required');\r\n }\r\n }\r\n\r\n addNewLockUser() {\r\n const form = this.addLockUserForm;\r\n\r\n if (!form.controls['countOfUsers'].value) {\r\n form.controls['countOfUsers'].setValue(1);\r\n }\r\n if (!form.controls['addUsersStartingRange'].value) {\r\n form.controls['addUsersStartingRange'].setValue(0);\r\n }\r\n\r\n if (form.valid) {\r\n this.repo.addNewLockUser(form.value).subscribe(addLockUserRes => {\r\n this.repo.getLockUsers(new UserLocksModel());\r\n this.spinner.hide();\r\n let response = addLockUserRes.message;\r\n if (String(response).toLowerCase().includes('fail')) {\r\n var messageTitle = 'Failed adding users';\r\n if (String(response).toLowerCase().includes('success'))\r\n messageTitle = 'Failed adding some users';\r\n this.appNotification.error(response, messageTitle, 20000);\r\n }\r\n else\r\n this.appNotification.success(response);\r\n this.closeAddLockUserDialog();\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.appNotification.error('Failed to add new user.');\r\n this.closeAddLockUserDialog();\r\n });\r\n } else {\r\n this.appNotification.error('Please Provide all the inputs.', 'Input required');\r\n }\r\n }\r\n\r\n deleteLockUser() {\r\n const form = this.deleteLockUserForm;\r\n if (form.valid) {\r\n this.repo.deleteLockUser(form.value).subscribe(deleteLockUserRes => {\r\n this.spinner.hide();\r\n this.repo.getLockUsers(new UserLocksModel());\r\n this.appNotification.success(`Deleted the ${this.roles.lockUserLabel} successfully`, 'Success');\r\n this.closeDeleteLockUserDialog();\r\n }, (err) => {\r\n this.spinner.hide();\r\n console.error(err);\r\n this.appNotification.error(`Failed deleting the ${this.roles.lockUserLabel}`, 'Something went wrong');\r\n });\r\n } else {\r\n this.appNotification.error('Please Provide all the inputs.', 'Input required');\r\n }\r\n }\r\n\r\n deleteUser() {\r\n const form = this.deleteUserForm;\r\n\r\n if (this.userRole == this.roles.globalAdmin) {\r\n form.controls['roleToDelete'].setValue(this.roles.ownerUser);\r\n this.roleOfUserBeingDeleted = this.roles.ownerUserLabel;\r\n }\r\n if (this.userRole == this.roles.user) {\r\n form.controls['roleToDelete'].setValue(this.roles.auditCollector);\r\n this.roleOfUserBeingDeleted = this.roles.auditCollectorLabel;\r\n }\r\n\r\n if (form.valid) {\r\n this.roleOfUserBeingDeleted = this.roleOfUserBeingDeleted != null && this.roleOfUserBeingDeleted != undefined && this.roleOfUserBeingDeleted != ''\r\n ? this.roleOfUserBeingDeleted\r\n : this.roles.userLabel;\r\n const userDetails = new UserGetRequest();\r\n userDetails.userName = form.controls['userName'].value;\r\n this.repo.getUser(userDetails).subscribe(user => {\r\n if (user && user.id && user.id > 0) {\r\n const lockGetRequest = new LockGetRequest();\r\n lockGetRequest.ownerUserId = user.id;\r\n this.repo.getAssignedLocksAsync(lockGetRequest).subscribe(locks => {\r\n if (locks && locks.length > 0) {\r\n this.spinner.hide();\r\n this.appNotification.error(`The selected ${this.roleOfUserBeingDeleted}, ${form.controls['userName'].value}, have locks assigned. Please make sure the owner does not have any locks and then delete.`, 'Cannot delete the owner');\r\n } else {\r\n this.repo.deleteUser(form.value).subscribe(deleteUserRes => {\r\n this.spinner.hide();\r\n this.repo.getUsers();\r\n if (!deleteUserRes.message) {\r\n this.appNotification.error(`Failed deleting ${this.roleOfUserBeingDeleted}`, 'Something went wrong');\r\n } else {\r\n this.appNotification.success(`Deleted the ${this.roleOfUserBeingDeleted} successfully`, 'Success');\r\n }\r\n this.closeDeleteUserDialog();\r\n }, (err) => {\r\n this.spinner.hide();\r\n console.error(err);\r\n this.appNotification.error(`Failed deleting ${this.roleOfUserBeingDeleted}`, 'Something went wrong');\r\n });\r\n }\r\n });\r\n } else {\r\n this.spinner.hide();\r\n this.appNotification.error('User not found.', 'Not Found!');\r\n }\r\n });\r\n } else {\r\n this.appNotification.error('Please Provide all the inputs', 'Input required');\r\n }\r\n }\r\n\r\n viewManageUnits(userLockDetails: LockUsersDetails) {\r\n const navExtras: NavigationExtras = {\r\n queryParams: {\r\n serialNumber: userLockDetails.serialNumber,\r\n lockUserName: this.selectedLockUser.name,\r\n lockUserId: this.selectedLockUser.id\r\n }\r\n };\r\n this.router.navigate(['/codes'], {\r\n state: { selectedLockDetails: navExtras }\r\n });\r\n }\r\n\r\n generateNewActivationCode(username: string) {\r\n const updatePayload = new UserUpdateRequest();\r\n\r\n updatePayload.userName = username;\r\n updatePayload.generateNewActivationCode = 1;\r\n\r\n this.spinner.show();\r\n this.repo.generateCodeForAuditCollector(updatePayload).subscribe(generateCodeRes => {\r\n this.spinner.hide();\r\n if (!generateCodeRes.message) {\r\n this.appNotification.error('Failed to Generate Activation Code');\r\n } else {\r\n this.appNotification.success('Successfully generated new Activation code');\r\n }\r\n }, (err) => {\r\n this.spinner.hide();\r\n this.appNotification.error('Failed to Generate Activation Code');\r\n });\r\n }\r\n\r\n onUserTypeChange(event) {\r\n if (event && event.value) {\r\n this.switchUsers();\r\n }\r\n }\r\n\r\n onDeleteUserDropdownChange() {\r\n this.roleOfUserBeingDeleted = this.deleteUserForm.controls['roleToDelete'].value;\r\n if (this.roleOfUserBeingDeleted) {\r\n this.buildUsersDropDown(this.roleOfUserBeingDeleted);\r\n }\r\n }\r\n\r\n onChangeSingleOrMultipleUsers(selection) {\r\n if (selection && selection.toLowerCase() == this.constMultiple.toLowerCase()) {\r\n this.isSingleUserCreation = false;\r\n this.labelUsername = this.appLabels.userName + ' PREFIX';\r\n }\r\n else {\r\n this.isSingleUserCreation = true;\r\n this.labelUsername = this.appLabels.userName;\r\n }\r\n }\r\n\r\n openResendUserCodeDialog() {\r\n this.resendUserCodeForm.reset();\r\n this.showResendUserCodeDialog = true;\r\n this.buildLockUsersDropDown();\r\n }\r\n\r\n closeResendUserCodeDialog() {\r\n this.showResendUserCodeDialog = false;\r\n }\r\n\r\n resendUserCode() {\r\n const form = this.resendUserCodeForm;\r\n if (form.valid) {\r\n let lockUsersDetailsWithCode = [];\r\n const lockUserIds: any[] = form.controls['lockUser'].value ? form.controls['lockUser'].value : [];\r\n const messageMedium = form.controls['messageMedium'].value;\r\n\r\n lockUserIds.forEach((lockUserId) => {\r\n const lockUsersDetails = new LockUsersDetails();\r\n lockUsersDetails.lockUserId = lockUserId;\r\n lockUsersDetailsWithCode.push(lockUsersDetails);\r\n });\r\n this.sendMessage(AppConstants.Generic.messageTypeArbitraryCode, lockUsersDetailsWithCode, messageMedium);\r\n this.closeResendUserCodeDialog();\r\n } else {\r\n this.appNotification.error('Please provide all inputs.', 'Input required');\r\n }\r\n }\r\n\r\n sendMessage(messageType: string, lockUsersDetailsWithCode: any[], messageMedium?: string) {\r\n const genCodeRes = lockUsersDetailsWithCode;\r\n if (!genCodeRes.length) {\r\n this.spinner.hide();\r\n return true;\r\n }\r\n\r\n const observables = [];\r\n if (messageMedium && messageMedium.length) {\r\n if (messageMedium.includes(AppConstants.Generic.phone)) {\r\n\r\n genCodeRes.forEach(userDetail => {\r\n if (userDetail) {\r\n const mesReq = new SendMessage();\r\n mesReq.lockUserId = userDetail.lockUserId;\r\n mesReq.medium = AppConstants.Generic.phone;\r\n mesReq.messageType = messageType;\r\n if (messageType != AppConstants.Generic.messageTypeArbitraryCode) {\r\n mesReq.lockSerialNumber = userDetail.lockSerialNumber;\r\n }\r\n\r\n observables.push(this.repo.sendMessage(mesReq));\r\n }\r\n });\r\n }\r\n if (messageMedium.includes(AppConstants.Generic.email)) {\r\n\r\n genCodeRes.forEach(userDetail => {\r\n if (userDetail) {\r\n const mesReq = new SendMessage();\r\n mesReq.lockUserId = userDetail.lockUserId;\r\n mesReq.medium = AppConstants.Generic.email;\r\n mesReq.messageType = messageType;\r\n if (messageType != AppConstants.Generic.messageTypeArbitraryCode) {\r\n mesReq.lockSerialNumber = userDetail.lockSerialNumber;\r\n }\r\n\r\n observables.push(this.repo.sendMessage(mesReq));\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (observables.length) {\r\n forkJoin(observables).subscribe(\r\n results => {\r\n this.spinner.hide();\r\n this.appNotification.success('Successfully sent message to the user(s).');\r\n },\r\n (err) => { // TODO: handle error for individual requests\r\n this.spinner.hide();\r\n this.appNotification.error('Error! Something went wrong while sending message to the user(s).');\r\n });\r\n } else {\r\n this.spinner.hide();\r\n }\r\n }\r\n\r\n buildLockUsersDropDown() {\r\n if (this.lockUsersArray) {\r\n this.lockUsersDropDown = [];\r\n this.lockUsersArray.forEach((lockUser: LockUsers) => {\r\n if (lockUser.arbitraryKeypadCode && lockUser.arbitraryKeypadCode > 0) {\r\n this.lockUsersDropDown.push(\r\n { label: lockUser.name, value: lockUser.id }\r\n );\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\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\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\nplatformBrowserDynamic(providers).bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n"],"sourceRoot":""}