@tuki-io/tuki-widgets 0.0.32 → 0.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/widgets.component.mjs +22 -22
  3. package/esm2020/lib/widgets.module.mjs +21 -21
  4. package/esm2020/lib/widgets.service.mjs +14 -14
  5. package/esm2020/public-api.mjs +7 -7
  6. package/esm2020/tuki-io-tuki-widgets.mjs +4 -4
  7. package/esm2020/user-device-manage/public-api.mjs +9 -9
  8. package/esm2020/user-device-manage/src/app.constants.mjs +95 -95
  9. package/esm2020/user-device-manage/src/classes/device.mjs +85 -85
  10. package/esm2020/user-device-manage/src/classes/line-association-interface.mjs +2 -2
  11. package/esm2020/user-device-manage/src/classes/line-association.mjs +121 -121
  12. package/esm2020/user-device-manage/src/classes/line-call-info-display.mjs +10 -10
  13. package/esm2020/user-device-manage/src/classes/line-directory.mjs +27 -27
  14. package/esm2020/user-device-manage/src/classes/line.mjs +18 -18
  15. package/esm2020/user-device-manage/src/classes/notification.mjs +32 -32
  16. package/esm2020/user-device-manage/src/classes/recording-options.mjs +7 -7
  17. package/esm2020/user-device-manage/src/classes/simplified-user.mjs +111 -111
  18. package/esm2020/user-device-manage/src/classes/site-defaults.mjs +21 -21
  19. package/esm2020/user-device-manage/src/classes/translation-pattern.mjs +32 -32
  20. package/esm2020/user-device-manage/src/classes/types.mjs +24 -24
  21. package/esm2020/user-device-manage/src/common-functions.mjs +19 -19
  22. package/esm2020/user-device-manage/src/confirm-dialog/info-dialog.component.mjs +34 -34
  23. package/esm2020/user-device-manage/src/device-associated-line/associated-line-row/associated-line-row.component.mjs +31 -31
  24. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.mjs +16 -16
  25. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.mjs +64 -64
  26. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line.component.mjs +179 -179
  27. package/esm2020/user-device-manage/src/device-list/device-list.component.mjs +24 -24
  28. package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +335 -335
  29. package/esm2020/user-device-manage/src/environments/environment.mjs +11 -11
  30. package/esm2020/user-device-manage/src/interseptors/auth.interceptor.mjs +36 -36
  31. package/esm2020/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +74 -74
  32. package/esm2020/user-device-manage/src/material.module.mjs +192 -192
  33. package/esm2020/user-device-manage/src/notifications/notification.component.mjs +35 -35
  34. package/esm2020/user-device-manage/src/services/api.service.mjs +79 -79
  35. package/esm2020/user-device-manage/src/services/device.service.mjs +83 -83
  36. package/esm2020/user-device-manage/src/services/dns.service.mjs +104 -104
  37. package/esm2020/user-device-manage/src/services/line.service.mjs +76 -76
  38. package/esm2020/user-device-manage/src/services/notification.service.mjs +62 -62
  39. package/esm2020/user-device-manage/src/services/removeKynFromIBM.service.mjs +25 -25
  40. package/esm2020/user-device-manage/src/services/site-settings.service.mjs +70 -70
  41. package/esm2020/user-device-manage/src/services/sorting-utils.service.mjs +197 -197
  42. package/esm2020/user-device-manage/src/services/user.service.mjs +243 -243
  43. package/esm2020/user-device-manage/src/services/utils.service.mjs +87 -87
  44. package/esm2020/user-device-manage/src/services/validation.service.mjs +760 -760
  45. package/esm2020/user-device-manage/src/user-device-manage.module.mjs +107 -107
  46. package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +14 -14
  47. package/esm2020/user-device-manage/tuki-io-tuki-widgets-user-device-manage.mjs +4 -4
  48. package/esm2020/user-manage/public-api.mjs +7 -7
  49. package/esm2020/user-manage/src/app.constants.mjs +50 -50
  50. package/esm2020/user-manage/src/classes/device.mjs +37 -37
  51. package/esm2020/user-manage/src/classes/line-association-interface.mjs +2 -2
  52. package/esm2020/user-manage/src/classes/line-association.mjs +110 -110
  53. package/esm2020/user-manage/src/classes/line-call-info-display.mjs +10 -10
  54. package/esm2020/user-manage/src/classes/line-directory.mjs +27 -27
  55. package/esm2020/user-manage/src/classes/line.mjs +18 -18
  56. package/esm2020/user-manage/src/classes/notification.mjs +32 -32
  57. package/esm2020/user-manage/src/classes/pagination.mjs +8 -8
  58. package/esm2020/user-manage/src/classes/recording-options.mjs +7 -7
  59. package/esm2020/user-manage/src/classes/simplified-user.mjs +109 -109
  60. package/esm2020/user-manage/src/classes/table-data.mjs +2 -2
  61. package/esm2020/user-manage/src/classes/translation-pattern.mjs +32 -32
  62. package/esm2020/user-manage/src/classes/user-list.mjs +10 -10
  63. package/esm2020/user-manage/src/common-functions.mjs +19 -19
  64. package/esm2020/user-manage/src/device-list/device-list.component.mjs +24 -24
  65. package/esm2020/user-manage/src/environments/environment.mjs +11 -11
  66. package/esm2020/user-manage/src/interseptors/auth.interceptor.mjs +36 -36
  67. package/esm2020/user-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +74 -74
  68. package/esm2020/user-manage/src/material.module.mjs +188 -188
  69. package/esm2020/user-manage/src/notifications/notification.component.mjs +35 -35
  70. package/esm2020/user-manage/src/removeKynFromIBM.service.mjs +25 -25
  71. package/esm2020/user-manage/src/services/api.service.mjs +79 -79
  72. package/esm2020/user-manage/src/services/dns.service.mjs +110 -110
  73. package/esm2020/user-manage/src/services/line.service.mjs +34 -34
  74. package/esm2020/user-manage/src/services/notification.service.mjs +62 -62
  75. package/esm2020/user-manage/src/services/removeKynFromIBM.service.mjs +25 -25
  76. package/esm2020/user-manage/src/services/site-settings.service.mjs +36 -36
  77. package/esm2020/user-manage/src/services/sorting-utils.service.mjs +197 -197
  78. package/esm2020/user-manage/src/services/user.service.mjs +207 -207
  79. package/esm2020/user-manage/src/services/users-search.service.mjs +49 -49
  80. package/esm2020/user-manage/src/services/utils.service.mjs +73 -73
  81. package/esm2020/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.mjs +65 -65
  82. package/esm2020/user-manage/src/user-calling/user-calling.component.mjs +78 -78
  83. package/esm2020/user-manage/src/user-info/user-info.component.mjs +20 -20
  84. package/esm2020/user-manage/src/user-manage-widget.component.mjs +208 -208
  85. package/esm2020/user-manage/src/user-manage.module.mjs +99 -99
  86. package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +14 -14
  87. package/esm2020/user-manage/src/utils/pagination/pagination.component.mjs +43 -43
  88. package/esm2020/user-manage/tuki-io-tuki-widgets-user-manage.mjs +4 -4
  89. package/esm2020/users-list/public-api.mjs +9 -9
  90. package/esm2020/users-list/src/app.constants.mjs +50 -50
  91. package/esm2020/users-list/src/classes/device.mjs +7 -7
  92. package/esm2020/users-list/src/classes/line.mjs +18 -18
  93. package/esm2020/users-list/src/classes/notification.mjs +31 -31
  94. package/esm2020/users-list/src/classes/pagination.mjs +8 -8
  95. package/esm2020/users-list/src/classes/simlified-user.mjs +50 -50
  96. package/esm2020/users-list/src/classes/table-data.mjs +2 -2
  97. package/esm2020/users-list/src/classes/user-list.mjs +13 -13
  98. package/esm2020/users-list/src/material.module.mjs +209 -209
  99. package/esm2020/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.mjs +95 -95
  100. package/esm2020/users-list/src/move-user-wizard/move-user-wizard.component.mjs +35 -35
  101. package/esm2020/users-list/src/services/api-webex.service.mjs +17 -17
  102. package/esm2020/users-list/src/services/api.service.mjs +78 -78
  103. package/esm2020/users-list/src/services/dns.service.mjs +120 -120
  104. package/esm2020/users-list/src/services/events-communication.service.mjs +14 -14
  105. package/esm2020/users-list/src/services/notification.service.mjs +62 -62
  106. package/esm2020/users-list/src/services/removeKynFromIBM.service.mjs +25 -25
  107. package/esm2020/users-list/src/services/user.service.mjs +150 -150
  108. package/esm2020/users-list/src/services/users-search.service.mjs +120 -120
  109. package/esm2020/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.mjs +34 -34
  110. package/esm2020/users-list/src/users-list.component.mjs +260 -259
  111. package/esm2020/users-list/src/users-list.module.mjs +80 -80
  112. package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +14 -14
  113. package/esm2020/users-list/src/utils/common-functions.mjs +19 -19
  114. package/esm2020/users-list/src/utils/pagination/pagination.component.mjs +43 -43
  115. package/esm2020/users-list/src/utils/utils.service.mjs +73 -73
  116. package/esm2020/users-list/tuki-io-tuki-widgets-users-list.mjs +4 -4
  117. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +3277 -3277
  118. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  119. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +2004 -2004
  120. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  121. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +1429 -1428
  122. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  123. package/fesm2015/tuki-io-tuki-widgets.mjs +48 -48
  124. package/fesm2015/tuki-io-tuki-widgets.mjs.map +1 -1
  125. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +3239 -3239
  126. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  127. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +1987 -1987
  128. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  129. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +1418 -1417
  130. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  131. package/fesm2020/tuki-io-tuki-widgets.mjs +48 -48
  132. package/fesm2020/tuki-io-tuki-widgets.mjs.map +1 -1
  133. package/index.d.ts +5 -5
  134. package/lib/widgets.component.d.ts +8 -8
  135. package/lib/widgets.module.d.ts +7 -7
  136. package/lib/widgets.service.d.ts +6 -6
  137. package/package.json +1 -1
  138. package/public-api.d.ts +3 -3
  139. package/user-device-manage/index.d.ts +5 -5
  140. package/user-device-manage/public-api.d.ts +8 -8
  141. package/user-device-manage/src/app.constants.d.ts +74 -74
  142. package/user-device-manage/src/classes/device.d.ts +233 -233
  143. package/user-device-manage/src/classes/line-association-interface.d.ts +45 -45
  144. package/user-device-manage/src/classes/line-association.d.ts +62 -62
  145. package/user-device-manage/src/classes/line-call-info-display.d.ts +11 -11
  146. package/user-device-manage/src/classes/line-directory.d.ts +15 -15
  147. package/user-device-manage/src/classes/line.d.ts +140 -140
  148. package/user-device-manage/src/classes/notification.d.ts +18 -18
  149. package/user-device-manage/src/classes/recording-options.d.ts +5 -5
  150. package/user-device-manage/src/classes/simplified-user.d.ts +52 -52
  151. package/user-device-manage/src/classes/site-defaults.d.ts +146 -146
  152. package/user-device-manage/src/classes/translation-pattern.d.ts +19 -19
  153. package/user-device-manage/src/classes/types.d.ts +19 -19
  154. package/user-device-manage/src/common-functions.d.ts +1 -1
  155. package/user-device-manage/src/confirm-dialog/info-dialog.component.d.ts +20 -20
  156. package/user-device-manage/src/device-associated-line/associated-line-row/associated-line-row.component.d.ts +15 -15
  157. package/user-device-manage/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.d.ts +7 -7
  158. package/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.d.ts +24 -24
  159. package/user-device-manage/src/device-associated-line/device-associated-line.component.d.ts +89 -89
  160. package/user-device-manage/src/device-list/device-list.component.d.ts +11 -11
  161. package/user-device-manage/src/device-manage-widget.component.d.ts +71 -71
  162. package/user-device-manage/src/environments/environment.d.ts +9 -9
  163. package/user-device-manage/src/interseptors/auth.interceptor.d.ts +9 -9
  164. package/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.d.ts +35 -35
  165. package/user-device-manage/src/material.module.d.ts +29 -29
  166. package/user-device-manage/src/notifications/notification.component.d.ts +19 -19
  167. package/user-device-manage/src/services/api.service.d.ts +20 -20
  168. package/user-device-manage/src/services/device.service.d.ts +21 -21
  169. package/user-device-manage/src/services/dns.service.d.ts +14 -14
  170. package/user-device-manage/src/services/line.service.d.ts +33 -33
  171. package/user-device-manage/src/services/notification.service.d.ts +18 -18
  172. package/user-device-manage/src/services/removeKynFromIBM.service.d.ts +8 -8
  173. package/user-device-manage/src/services/site-settings.service.d.ts +25 -25
  174. package/user-device-manage/src/services/sorting-utils.service.d.ts +26 -26
  175. package/user-device-manage/src/services/user.service.d.ts +51 -51
  176. package/user-device-manage/src/services/utils.service.d.ts +10 -10
  177. package/user-device-manage/src/services/validation.service.d.ts +165 -165
  178. package/user-device-manage/src/user-device-manage.module.d.ts +22 -22
  179. package/user-device-manage/src/utils/app-loader/app-loader.d.ts +6 -6
  180. package/user-manage/index.d.ts +5 -5
  181. package/user-manage/public-api.d.ts +6 -6
  182. package/user-manage/src/app.constants.d.ts +29 -29
  183. package/user-manage/src/classes/device.d.ts +203 -203
  184. package/user-manage/src/classes/line-association-interface.d.ts +40 -40
  185. package/user-manage/src/classes/line-association.d.ts +55 -55
  186. package/user-manage/src/classes/line-call-info-display.d.ts +11 -11
  187. package/user-manage/src/classes/line-directory.d.ts +16 -16
  188. package/user-manage/src/classes/line.d.ts +140 -140
  189. package/user-manage/src/classes/notification.d.ts +18 -18
  190. package/user-manage/src/classes/pagination.d.ts +13 -13
  191. package/user-manage/src/classes/recording-options.d.ts +5 -5
  192. package/user-manage/src/classes/simplified-user.d.ts +50 -50
  193. package/user-manage/src/classes/table-data.d.ts +5 -5
  194. package/user-manage/src/classes/translation-pattern.d.ts +18 -18
  195. package/user-manage/src/classes/user-list.d.ts +34 -34
  196. package/user-manage/src/common-functions.d.ts +1 -1
  197. package/user-manage/src/device-list/device-list.component.d.ts +11 -11
  198. package/user-manage/src/environments/environment.d.ts +9 -9
  199. package/user-manage/src/interseptors/auth.interceptor.d.ts +9 -9
  200. package/user-manage/src/lazy-loading-select/lazy-loading-select.component.d.ts +35 -35
  201. package/user-manage/src/material.module.d.ts +28 -28
  202. package/user-manage/src/notifications/notification.component.d.ts +19 -19
  203. package/user-manage/src/removeKynFromIBM.service.d.ts +8 -8
  204. package/user-manage/src/services/api.service.d.ts +21 -21
  205. package/user-manage/src/services/dns.service.d.ts +14 -14
  206. package/user-manage/src/services/line.service.d.ts +17 -17
  207. package/user-manage/src/services/notification.service.d.ts +18 -18
  208. package/user-manage/src/services/removeKynFromIBM.service.d.ts +8 -8
  209. package/user-manage/src/services/site-settings.service.d.ts +9 -9
  210. package/user-manage/src/services/sorting-utils.service.d.ts +26 -26
  211. package/user-manage/src/services/user.service.d.ts +43 -43
  212. package/user-manage/src/services/users-search.service.d.ts +25 -25
  213. package/user-manage/src/services/utils.service.d.ts +9 -9
  214. package/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.d.ts +24 -24
  215. package/user-manage/src/user-calling/user-calling.component.d.ts +30 -30
  216. package/user-manage/src/user-info/user-info.component.d.ts +9 -9
  217. package/user-manage/src/user-manage-widget.component.d.ts +45 -45
  218. package/user-manage/src/user-manage.module.d.ts +21 -21
  219. package/user-manage/src/utils/app-loader/app-loader.d.ts +6 -6
  220. package/user-manage/src/utils/pagination/pagination.component.d.ts +18 -18
  221. package/users-list/index.d.ts +5 -5
  222. package/users-list/public-api.d.ts +8 -8
  223. package/users-list/src/app.constants.d.ts +32 -32
  224. package/users-list/src/classes/device.d.ts +224 -224
  225. package/users-list/src/classes/line.d.ts +140 -140
  226. package/users-list/src/classes/notification.d.ts +18 -18
  227. package/users-list/src/classes/pagination.d.ts +13 -13
  228. package/users-list/src/classes/simlified-user.d.ts +25 -25
  229. package/users-list/src/classes/table-data.d.ts +5 -5
  230. package/users-list/src/classes/user-list.d.ts +36 -36
  231. package/users-list/src/material.module.d.ts +31 -31
  232. package/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.d.ts +25 -25
  233. package/users-list/src/move-user-wizard/move-user-wizard.component.d.ts +16 -16
  234. package/users-list/src/services/api-webex.service.d.ts +8 -8
  235. package/users-list/src/services/api.service.d.ts +21 -21
  236. package/users-list/src/services/dns.service.d.ts +18 -18
  237. package/users-list/src/services/events-communication.service.d.ts +8 -8
  238. package/users-list/src/services/notification.service.d.ts +18 -18
  239. package/users-list/src/services/removeKynFromIBM.service.d.ts +8 -8
  240. package/users-list/src/services/user.service.d.ts +34 -34
  241. package/users-list/src/services/users-search.service.d.ts +34 -34
  242. package/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.d.ts +20 -20
  243. package/users-list/src/users-list.component.d.ts +59 -59
  244. package/users-list/src/users-list.module.d.ts +16 -16
  245. package/users-list/src/utils/app-loader/app-loader.d.ts +6 -6
  246. package/users-list/src/utils/common-functions.d.ts +1 -1
  247. package/users-list/src/utils/pagination/pagination.component.d.ts +18 -18
  248. package/users-list/src/utils/utils.service.d.ts +9 -9
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component, ViewEncapsulation, Inject, Injectable, EventEmitter, Input, Output, NgModule } from '@angular/core';
3
- import * as i10 from '@angular/material/table';
3
+ import * as i10$1 from '@angular/material/table';
4
4
  import { MatTableDataSource, MatTableModule } from '@angular/material/table';
5
5
  import * as i1 from '@angular/material/dialog';
6
6
  import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
@@ -15,7 +15,7 @@ import * as i4$1 from '@angular/material/button';
15
15
  import { MatButtonModule } from '@angular/material/button';
16
16
  import * as i3$1 from '@angular/material/progress-spinner';
17
17
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
18
- import * as i11$1 from '@angular/material/menu';
18
+ import * as i11 from '@angular/material/menu';
19
19
  import { MatMenuModule } from '@angular/material/menu';
20
20
  import * as i4 from '@angular/material/core';
21
21
  import { MatNativeDateModule } from '@angular/material/core';
@@ -30,7 +30,9 @@ import * as i7 from '@angular/material/input';
30
30
  import { MatInputModule } from '@angular/material/input';
31
31
  import * as i9 from '@angular/material/stepper';
32
32
  import { MatStepperModule } from '@angular/material/stepper';
33
- import * as i11 from '@angular/material/radio';
33
+ import * as i10 from '@angular/material/checkbox';
34
+ import { MatCheckboxModule } from '@angular/material/checkbox';
35
+ import * as i12 from '@angular/material/radio';
34
36
  import { MatRadioModule } from '@angular/material/radio';
35
37
  import { BrowserModule } from '@angular/platform-browser';
36
38
  import { MatExpansionModule } from '@angular/material/expansion';
@@ -44,1479 +46,1478 @@ import { DragDropModule } from '@angular/cdk/drag-drop';
44
46
  import { MatTooltipModule } from '@angular/material/tooltip';
45
47
  import { MatTabsModule } from '@angular/material/tabs';
46
48
  import { MatCardModule } from '@angular/material/card';
47
- import { MatCheckboxModule } from '@angular/material/checkbox';
48
49
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
49
50
 
50
- class UserListConfirmDialogComponent {
51
- constructor(dialogRef, data) {
52
- this.dialogRef = dialogRef;
53
- this.data = data;
54
- this.confirmButtonText = 'OK';
55
- this.message = '';
56
- this.title = '';
57
- }
58
- ngOnInit() {
59
- this.confirmButtonText = this.data.confirmButtonText || '';
60
- this.message = this.data.message || '';
61
- this.title = this.data.title || '';
62
- }
63
- onClose(val) {
64
- this.dialogRef.close(val);
65
- }
66
- }
67
- UserListConfirmDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserListConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
68
- UserListConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UserListConfirmDialogComponent, selector: "app-info-dialog", ngImport: i0, template: "<div id=\"info-dialog\" class=\"app-dialog\" aria-labelledby=\"info-dialog-label\" role=\"dialog\">\n <h3 *ngIf=\"title\" class=\"app-dialog-title\">{{title}}</h3>\n <div mat-dialog-content *ngIf=\"message\" class=\"app-dialog-content\">\n <div [innerHTML]=\"message\"></div>\n </div>\n <div mat-dialog-actions class=\"flex-gap-container\">\n <button class=\"app-dialog-button app-dialog-cancel-button\" (click)=\"onClose(false)\">\n Cancel\n </button>\n <button class=\"app-dialog-button app-dialog-confirm-button\" (click)=\"onClose(true)\">\n {{confirmButtonText}}\n </button>\n </div>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";#info-dialog{min-height:150px;width:400px;box-sizing:border-box;position:relative}#info-dialog .fa{font-size:35px;margin:0 auto 20px;display:block;text-align:center;color:#009fdb;cursor:default}.scroll-content{overflow-y:auto;margin:auto;max-height:150px;width:100%}.app-dialog{font-family:Inter,Inter,sans-serif}.app-dialog .app-dialog-title{text-align:center;font-weight:600;font-size:16px;font-family:Inter,Inter,sans-serif;margin:0 0 24px}.app-dialog .flex-gap-container{gap:16px;position:absolute;right:0;bottom:0;gap:15px;display:flex}.app-dialog .app-dialog-content{color:#000000b3;font-size:14px}.app-dialog-button{height:32px;padding:10px 12px;text-align:center;border-radius:50px;box-shadow:none;line-height:11px;border:none;font-size:14px;font-family:Inter,Inter,sans-serif;cursor:pointer}.app-dialog-cancel-button{border:1px solid rgba(0,0,0,.5);color:#000}.app-dialog-confirm-button{background:#F23933;color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }], encapsulation: i0.ViewEncapsulation.None });
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserListConfirmDialogComponent, decorators: [{
70
- type: Component,
71
- args: [{ selector: 'app-info-dialog', encapsulation: ViewEncapsulation.None, template: "<div id=\"info-dialog\" class=\"app-dialog\" aria-labelledby=\"info-dialog-label\" role=\"dialog\">\n <h3 *ngIf=\"title\" class=\"app-dialog-title\">{{title}}</h3>\n <div mat-dialog-content *ngIf=\"message\" class=\"app-dialog-content\">\n <div [innerHTML]=\"message\"></div>\n </div>\n <div mat-dialog-actions class=\"flex-gap-container\">\n <button class=\"app-dialog-button app-dialog-cancel-button\" (click)=\"onClose(false)\">\n Cancel\n </button>\n <button class=\"app-dialog-button app-dialog-confirm-button\" (click)=\"onClose(true)\">\n {{confirmButtonText}}\n </button>\n </div>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";#info-dialog{min-height:150px;width:400px;box-sizing:border-box;position:relative}#info-dialog .fa{font-size:35px;margin:0 auto 20px;display:block;text-align:center;color:#009fdb;cursor:default}.scroll-content{overflow-y:auto;margin:auto;max-height:150px;width:100%}.app-dialog{font-family:Inter,Inter,sans-serif}.app-dialog .app-dialog-title{text-align:center;font-weight:600;font-size:16px;font-family:Inter,Inter,sans-serif;margin:0 0 24px}.app-dialog .flex-gap-container{gap:16px;position:absolute;right:0;bottom:0;gap:15px;display:flex}.app-dialog .app-dialog-content{color:#000000b3;font-size:14px}.app-dialog-button{height:32px;padding:10px 12px;text-align:center;border-radius:50px;box-shadow:none;line-height:11px;border:none;font-size:14px;font-family:Inter,Inter,sans-serif;cursor:pointer}.app-dialog-cancel-button{border:1px solid rgba(0,0,0,.5);color:#000}.app-dialog-confirm-button{background:#F23933;color:#fff}\n"] }]
72
- }], ctorParameters: function () {
73
- return [{ type: i1.MatDialogRef }, { type: InfoDialogConfig, decorators: [{
74
- type: Inject,
75
- args: [MAT_DIALOG_DATA]
76
- }] }];
77
- } });
78
- class InfoDialogConfig {
51
+ class UserListConfirmDialogComponent {
52
+ constructor(dialogRef, data) {
53
+ this.dialogRef = dialogRef;
54
+ this.data = data;
55
+ this.confirmButtonText = 'OK';
56
+ this.message = '';
57
+ this.title = '';
58
+ }
59
+ ngOnInit() {
60
+ this.confirmButtonText = this.data.confirmButtonText || '';
61
+ this.message = this.data.message || '';
62
+ this.title = this.data.title || '';
63
+ }
64
+ onClose(val) {
65
+ this.dialogRef.close(val);
66
+ }
67
+ }
68
+ UserListConfirmDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserListConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
69
+ UserListConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UserListConfirmDialogComponent, selector: "app-info-dialog", ngImport: i0, template: "<div id=\"info-dialog\" class=\"app-dialog\" aria-labelledby=\"info-dialog-label\" role=\"dialog\">\r\n <h3 *ngIf=\"title\" class=\"app-dialog-title\">{{title}}</h3>\r\n <div mat-dialog-content *ngIf=\"message\" class=\"app-dialog-content\">\r\n <div [innerHTML]=\"message\"></div>\r\n </div>\r\n <div mat-dialog-actions class=\"flex-gap-container\">\r\n <button class=\"app-dialog-button app-dialog-cancel-button\" (click)=\"onClose(false)\">\r\n Cancel\r\n </button>\r\n <button class=\"app-dialog-button app-dialog-confirm-button\" (click)=\"onClose(true)\">\r\n {{confirmButtonText}}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";#info-dialog{min-height:150px;width:400px;box-sizing:border-box;position:relative}#info-dialog .fa{font-size:35px;margin:0 auto 20px;display:block;text-align:center;color:#009fdb;cursor:default}.scroll-content{overflow-y:auto;margin:auto;max-height:150px;width:100%}.app-dialog{font-family:Inter,Inter,sans-serif}.app-dialog .app-dialog-title{text-align:center;font-weight:600;font-size:16px;font-family:Inter,Inter,sans-serif;margin:0 0 24px}.app-dialog .flex-gap-container{gap:16px;position:absolute;right:0;bottom:0;gap:15px;display:flex}.app-dialog .app-dialog-content{color:#000000b3;font-size:14px}.app-dialog-button{height:32px;padding:10px 12px;text-align:center;border-radius:50px;box-shadow:none;line-height:11px;border:none;font-size:14px;font-family:Inter,Inter,sans-serif;cursor:pointer}.app-dialog-cancel-button{border:1px solid rgba(0,0,0,.5);color:#000}.app-dialog-confirm-button{background:#F23933;color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }], encapsulation: i0.ViewEncapsulation.None });
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserListConfirmDialogComponent, decorators: [{
71
+ type: Component,
72
+ args: [{ selector: 'app-info-dialog', encapsulation: ViewEncapsulation.None, template: "<div id=\"info-dialog\" class=\"app-dialog\" aria-labelledby=\"info-dialog-label\" role=\"dialog\">\r\n <h3 *ngIf=\"title\" class=\"app-dialog-title\">{{title}}</h3>\r\n <div mat-dialog-content *ngIf=\"message\" class=\"app-dialog-content\">\r\n <div [innerHTML]=\"message\"></div>\r\n </div>\r\n <div mat-dialog-actions class=\"flex-gap-container\">\r\n <button class=\"app-dialog-button app-dialog-cancel-button\" (click)=\"onClose(false)\">\r\n Cancel\r\n </button>\r\n <button class=\"app-dialog-button app-dialog-confirm-button\" (click)=\"onClose(true)\">\r\n {{confirmButtonText}}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";#info-dialog{min-height:150px;width:400px;box-sizing:border-box;position:relative}#info-dialog .fa{font-size:35px;margin:0 auto 20px;display:block;text-align:center;color:#009fdb;cursor:default}.scroll-content{overflow-y:auto;margin:auto;max-height:150px;width:100%}.app-dialog{font-family:Inter,Inter,sans-serif}.app-dialog .app-dialog-title{text-align:center;font-weight:600;font-size:16px;font-family:Inter,Inter,sans-serif;margin:0 0 24px}.app-dialog .flex-gap-container{gap:16px;position:absolute;right:0;bottom:0;gap:15px;display:flex}.app-dialog .app-dialog-content{color:#000000b3;font-size:14px}.app-dialog-button{height:32px;padding:10px 12px;text-align:center;border-radius:50px;box-shadow:none;line-height:11px;border:none;font-size:14px;font-family:Inter,Inter,sans-serif;cursor:pointer}.app-dialog-cancel-button{border:1px solid rgba(0,0,0,.5);color:#000}.app-dialog-confirm-button{background:#F23933;color:#fff}\n"] }]
73
+ }], ctorParameters: function () {
74
+ return [{ type: i1.MatDialogRef }, { type: InfoDialogConfig, decorators: [{
75
+ type: Inject,
76
+ args: [MAT_DIALOG_DATA]
77
+ }] }];
78
+ } });
79
+ class InfoDialogConfig {
79
80
  }
80
81
 
81
- const getSavableData = (model, exclude) => {
82
- let result = Object.keys(model);
83
- if (exclude && exclude.length) {
84
- result = result.filter(key => !exclude.some(item => item === key));
85
- }
86
- return result.reduce((result, key) => {
87
- if (model[key] instanceof Array && model[key].length && model[key][0].getSavableData) {
88
- result[key] = model[key].map((item) => item.getSavableData());
89
- }
90
- else if (model[key] instanceof Object && model[key].getSavableData) {
91
- result[key] = model[key].getSavableData();
92
- }
93
- else {
94
- result[key] = model[key];
95
- }
96
- return result;
97
- }, {});
82
+ const getSavableData = (model, exclude) => {
83
+ let result = Object.keys(model);
84
+ if (exclude && exclude.length) {
85
+ result = result.filter(key => !exclude.some(item => item === key));
86
+ }
87
+ return result.reduce((result, key) => {
88
+ if (model[key] instanceof Array && model[key].length && model[key][0].getSavableData) {
89
+ result[key] = model[key].map((item) => item.getSavableData());
90
+ }
91
+ else if (model[key] instanceof Object && model[key].getSavableData) {
92
+ result[key] = model[key].getSavableData();
93
+ }
94
+ else {
95
+ result[key] = model[key];
96
+ }
97
+ return result;
98
+ }, {});
98
99
  };
99
100
 
100
- const API = {
101
- USER_TOKEN: '/api/provision/:siteId/users/:userId/token',
102
- UPDATE_USER_FIELDS: '/api/provision/:siteId/userFields/:token',
103
- PERSIST_USER_CACHE: '/api/provision/:siteId/saveUser/:token',
104
- USER_BY_ID: '/api/provision/:siteId/users/:userId',
105
- QUICK_USERS_SEARCH: "/api/search/quickusers",
106
- DELETE_USER: "/api/search/quickusers",
107
- MOVE_USER: "/api/migration/webex/singlemigration/features/PERSON",
108
- AVAILABLE_DN_IN_RANGES: "/api/sites/:siteId/available-dn-in-ranges",
109
- DELETE_LINE: "/api/provision/:siteId/deleteLine/:pkid/:token",
110
- DISASSOCIATE_LINE: "/api/provision/:siteId/:deviceName/deleteLineAssociation/:linePkid/:token",
111
- CHECK_DELETE_LINE: "/api/provision/:siteId/checklinedeletion",
112
- ASSOCIATE_LINE: "/api/provision/:siteId/:deviceName/createLineAssociation/:token",
113
- CHECK_DESTINATION_NUMBER: "/api/provision/:siteId/check-dn",
114
- UPDATE_LINE_FIELDS: "/api/provision/:siteId/lineFields/:pkid/:token",
115
- UPDATE_DEVICE_FIELDS: "/api/provision/:siteId/deviceFields/:deviceName/:token",
116
- WEBEX_USERS: "/api/webex/provisioning/customers/:customerId/users",
117
- MIGRATED_USERS: "/api/search/migratedusers",
118
- REVERT_WEBEX_USER: "/api/webex/provisioning/customers/:customerId/persons/:webexUUID/removecallinglicense",
119
- PHONE_NUMBERS: "/api/search/webex/customers/:customerId/locations/:locationId/phonenumbers"
120
- };
121
- const REGEX_PATTERN = {
122
- EMAIL: '^(([^<>()\\[\\]\\\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@"]+)*)|(".+"))' +
123
- '@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])' +
124
- '?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])?)*$'
125
- };
126
- const PAGINATION_DEFAULTS = {
127
- SIZE: 10,
128
- INDEX: 0
129
- };
130
- const PAGINATION_SIZE_OPTIONS = [
131
- 10,
132
- 50,
133
- 100,
134
- 500
135
- ];
136
- const CUCS_TO_IGNORE = [
137
- 189,
138
- 194,
139
- 191,
140
- 190
141
- ];
142
- const CUCMS_TO_IGNORE = [
143
- 249,
144
- 255,
145
- 251,
146
- 250
147
- ];
101
+ const API = {
102
+ USER_TOKEN: '/api/provision/:siteId/users/:userId/token',
103
+ UPDATE_USER_FIELDS: '/api/provision/:siteId/userFields/:token',
104
+ PERSIST_USER_CACHE: '/api/provision/:siteId/saveUser/:token',
105
+ USER_BY_ID: '/api/provision/:siteId/users/:userId',
106
+ QUICK_USERS_SEARCH: "/api/search/quickusers",
107
+ DELETE_USER: "/api/search/quickusers",
108
+ MOVE_USER: "/api/migration/webex/singlemigration/features/PERSON",
109
+ AVAILABLE_DN_IN_RANGES: "/api/sites/:siteId/available-dn-in-ranges",
110
+ DELETE_LINE: "/api/provision/:siteId/deleteLine/:pkid/:token",
111
+ DISASSOCIATE_LINE: "/api/provision/:siteId/:deviceName/deleteLineAssociation/:linePkid/:token",
112
+ CHECK_DELETE_LINE: "/api/provision/:siteId/checklinedeletion",
113
+ ASSOCIATE_LINE: "/api/provision/:siteId/:deviceName/createLineAssociation/:token",
114
+ CHECK_DESTINATION_NUMBER: "/api/provision/:siteId/check-dn",
115
+ UPDATE_LINE_FIELDS: "/api/provision/:siteId/lineFields/:pkid/:token",
116
+ UPDATE_DEVICE_FIELDS: "/api/provision/:siteId/deviceFields/:deviceName/:token",
117
+ WEBEX_USERS: "/api/webex/provisioning/customers/:customerId/users",
118
+ MIGRATED_USERS: "/api/search/migratedusers",
119
+ REVERT_WEBEX_USER: "/api/webex/provisioning/customers/:customerId/persons/:webexUUID/removecallinglicense",
120
+ PHONE_NUMBERS: "/api/search/webex/customers/:customerId/locations/:locationId/phonenumbers"
121
+ };
122
+ const REGEX_PATTERN = {
123
+ EMAIL: '^(([^<>()\\[\\]\\\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@"]+)*)|(".+"))' +
124
+ '@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])' +
125
+ '?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])?)*$'
126
+ };
127
+ const PAGINATION_DEFAULTS = {
128
+ SIZE: 10,
129
+ INDEX: 0
130
+ };
131
+ const PAGINATION_SIZE_OPTIONS = [
132
+ 10,
133
+ 50,
134
+ 100,
135
+ 500
136
+ ];
137
+ const CUCS_TO_IGNORE = [
138
+ 189,
139
+ 194,
140
+ 191,
141
+ 190
142
+ ];
143
+ const CUCMS_TO_IGNORE = [
144
+ 249,
145
+ 255,
146
+ 251,
147
+ 250
148
+ ];
148
149
  const MAX_INTEGER = 2147483647;
149
150
 
150
- class SimplifiedUser {
151
- constructor(user) {
152
- if (user) {
153
- this.userid = user.userid;
154
- this.email = user.email;
155
- this.firstName = user.firstName;
156
- this.lastName = user.lastName;
157
- this.token = user.token;
158
- }
159
- this.initForm();
160
- }
161
- initForm() {
162
- const formBuilder = new FormBuilder();
163
- const formSettings = {
164
- userid: [{ value: this.userid || '', disabled: true }, [Validators.required, Validators.maxLength(128)]],
165
- email: [{ value: this.email || '', disabled: true }, [
166
- Validators.pattern(REGEX_PATTERN.EMAIL),
167
- Validators.required
168
- ]],
169
- firstName: [{ value: this.firstName || '', disabled: true }],
170
- lastName: [{ value: this.lastName || '', disabled: true }, Validators.required],
171
- };
172
- this.form = formBuilder.group(formSettings);
173
- }
174
- toggleEditMode() {
175
- this.editMode = !this.editMode;
176
- ['userid', 'email', 'firstName', 'lastName'].forEach(token => {
177
- var _a, _b;
178
- if (this.editMode) {
179
- (_a = this.form.get(token)) === null || _a === void 0 ? void 0 : _a.enable();
180
- }
181
- else {
182
- (_b = this.form.get(token)) === null || _b === void 0 ? void 0 : _b.disable();
183
- }
184
- });
185
- }
186
- getSavableData() {
187
- const excludedFields = ['form', 'editMode', 'viewMode', 'token', 'hasModifiedCache'];
188
- return getSavableData(this, excludedFields);
189
- }
190
- equal(userToCompare) {
191
- if (!userToCompare) {
192
- return false;
193
- }
194
- return JSON.stringify(this.getSavableData()) === JSON.stringify(userToCompare.getSavableData());
195
- }
151
+ class SimplifiedUser {
152
+ constructor(user) {
153
+ if (user) {
154
+ this.userid = user.userid;
155
+ this.email = user.email;
156
+ this.firstName = user.firstName;
157
+ this.lastName = user.lastName;
158
+ this.token = user.token;
159
+ }
160
+ this.initForm();
161
+ }
162
+ initForm() {
163
+ const formBuilder = new FormBuilder();
164
+ const formSettings = {
165
+ userid: [{ value: this.userid || '', disabled: true }, [Validators.required, Validators.maxLength(128)]],
166
+ email: [{ value: this.email || '', disabled: true }, [
167
+ Validators.pattern(REGEX_PATTERN.EMAIL),
168
+ Validators.required
169
+ ]],
170
+ firstName: [{ value: this.firstName || '', disabled: true }],
171
+ lastName: [{ value: this.lastName || '', disabled: true }, Validators.required],
172
+ };
173
+ this.form = formBuilder.group(formSettings);
174
+ }
175
+ toggleEditMode() {
176
+ this.editMode = !this.editMode;
177
+ ['userid', 'email', 'firstName', 'lastName'].forEach(token => {
178
+ var _a, _b;
179
+ if (this.editMode) {
180
+ (_a = this.form.get(token)) === null || _a === void 0 ? void 0 : _a.enable();
181
+ }
182
+ else {
183
+ (_b = this.form.get(token)) === null || _b === void 0 ? void 0 : _b.disable();
184
+ }
185
+ });
186
+ }
187
+ getSavableData() {
188
+ const excludedFields = ['form', 'editMode', 'viewMode', 'token', 'hasModifiedCache'];
189
+ return getSavableData(this, excludedFields);
190
+ }
191
+ equal(userToCompare) {
192
+ if (!userToCompare) {
193
+ return false;
194
+ }
195
+ return JSON.stringify(this.getSavableData()) === JSON.stringify(userToCompare.getSavableData());
196
+ }
196
197
  }
197
198
 
198
- class UtilsService {
199
- static sortSortArrayByProperty(array, sortBy) {
200
- if (!array) {
201
- return null;
202
- }
203
- return array.sort((a, b) => {
204
- if (!a[sortBy] && !b[sortBy]) {
205
- return 0;
206
- }
207
- if (a[sortBy] && !b[sortBy]) {
208
- return 1;
209
- }
210
- if (!a[sortBy] && b[sortBy]) {
211
- return -1;
212
- }
213
- const positionA = a[sortBy];
214
- const positionB = b[sortBy];
215
- return (positionA < positionB) ? -1 : (positionA > positionB) ? 1 : 0;
216
- });
217
- }
218
- static diff(origObject, updatedObj, path, keysToIgnore) {
219
- let result = [];
220
- if (Object.is(origObject, updatedObj)) {
221
- return undefined;
222
- }
223
- if (!updatedObj || typeof updatedObj !== 'object') {
224
- return updatedObj;
225
- }
226
- const concat = Array.from(new Set([...Object.keys(origObject || {}), ...Object.keys(updatedObj || {})]));
227
- const filter = keysToIgnore ? concat.filter(key => !keysToIgnore.includes(key)) : concat;
228
- filter
229
- .forEach(key => {
230
- if (typeof updatedObj[key] === 'object' && typeof origObject[key] === 'object') {
231
- if (UtilsService.differs(updatedObj[key], origObject[key])) {
232
- const newPath = `${path}${path ? '.' : ''}${key}`;
233
- const values = UtilsService.diff(origObject[key], updatedObj[key], newPath, keysToIgnore);
234
- if (values !== undefined) {
235
- result = [...result, ...values];
236
- }
237
- }
238
- }
239
- else if (updatedObj && !origObject || updatedObj[key] !== origObject[key] && !Object.is(origObject[key], updatedObj[key])) {
240
- const value = updatedObj ? UtilsService.formatIfEmpty(updatedObj[key]) : null;
241
- result.push(`${path}${path ? '.' : ''}${key}=${value}`);
242
- }
243
- });
244
- return result;
245
- }
246
- static formatIfEmpty(value) {
247
- if (value) {
248
- return value;
249
- }
250
- switch (typeof value) {
251
- case 'boolean':
252
- return value;
253
- case 'string':
254
- return '';
255
- default:
256
- return null;
257
- }
258
- }
259
- static differs(obj1, obj2) {
260
- return JSON.stringify(obj1) !== JSON.stringify(obj2);
261
- }
262
- }
263
- UtilsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
264
- UtilsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UtilsService });
265
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UtilsService, decorators: [{
266
- type: Injectable
199
+ class UtilsService {
200
+ static sortSortArrayByProperty(array, sortBy) {
201
+ if (!array) {
202
+ return null;
203
+ }
204
+ return array.sort((a, b) => {
205
+ if (!a[sortBy] && !b[sortBy]) {
206
+ return 0;
207
+ }
208
+ if (a[sortBy] && !b[sortBy]) {
209
+ return 1;
210
+ }
211
+ if (!a[sortBy] && b[sortBy]) {
212
+ return -1;
213
+ }
214
+ const positionA = a[sortBy];
215
+ const positionB = b[sortBy];
216
+ return (positionA < positionB) ? -1 : (positionA > positionB) ? 1 : 0;
217
+ });
218
+ }
219
+ static diff(origObject, updatedObj, path, keysToIgnore) {
220
+ let result = [];
221
+ if (Object.is(origObject, updatedObj)) {
222
+ return undefined;
223
+ }
224
+ if (!updatedObj || typeof updatedObj !== 'object') {
225
+ return updatedObj;
226
+ }
227
+ const concat = Array.from(new Set([...Object.keys(origObject || {}), ...Object.keys(updatedObj || {})]));
228
+ const filter = keysToIgnore ? concat.filter(key => !keysToIgnore.includes(key)) : concat;
229
+ filter
230
+ .forEach(key => {
231
+ if (typeof updatedObj[key] === 'object' && typeof origObject[key] === 'object') {
232
+ if (UtilsService.differs(updatedObj[key], origObject[key])) {
233
+ const newPath = `${path}${path ? '.' : ''}${key}`;
234
+ const values = UtilsService.diff(origObject[key], updatedObj[key], newPath, keysToIgnore);
235
+ if (values !== undefined) {
236
+ result = [...result, ...values];
237
+ }
238
+ }
239
+ }
240
+ else if (updatedObj && !origObject || updatedObj[key] !== origObject[key] && !Object.is(origObject[key], updatedObj[key])) {
241
+ const value = updatedObj ? UtilsService.formatIfEmpty(updatedObj[key]) : null;
242
+ result.push(`${path}${path ? '.' : ''}${key}=${value}`);
243
+ }
244
+ });
245
+ return result;
246
+ }
247
+ static formatIfEmpty(value) {
248
+ if (value) {
249
+ return value;
250
+ }
251
+ switch (typeof value) {
252
+ case 'boolean':
253
+ return value;
254
+ case 'string':
255
+ return '';
256
+ default:
257
+ return null;
258
+ }
259
+ }
260
+ static differs(obj1, obj2) {
261
+ return JSON.stringify(obj1) !== JSON.stringify(obj2);
262
+ }
263
+ }
264
+ UtilsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
265
+ UtilsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UtilsService });
266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UtilsService, decorators: [{
267
+ type: Injectable
267
268
  }] });
268
269
 
269
- class APIService {
270
- constructor(httpClient) {
271
- this.httpClient = httpClient;
272
- this.apiUrl = window.location.protocol + '//' + window.location.hostname + '/dcp';
273
- }
274
- fetch(url, params = {}, cache) {
275
- const headers = this.getHeaders(cache);
276
- return this.httpClient.get(this.apiUrl + url, { params: this.prepareEncodedParams(params), headers });
277
- }
278
- post(url, body, params = {}) {
279
- body = body || null;
280
- const headers = this.getHeaders();
281
- return this.httpClient.post(this.apiUrl + url, body, { params: this.prepareEncodedParams(params), headers });
282
- }
283
- // use when response extended data is necessary:
284
- postExtended(url, body = null, params = {}, headers = {}) {
285
- headers = headers || this.getHeaders();
286
- return this.httpClient.post(this.apiUrl + url, body, {
287
- headers,
288
- observe: 'response',
289
- params: this.prepareEncodedParams(params)
290
- });
291
- }
292
- put(url, body = null, params = {}) {
293
- const headers = this.getHeaders();
294
- return this.httpClient.put(this.apiUrl + url, body, { headers, params: this.prepareEncodedParams(params) });
295
- }
296
- delete(url, params = {}) {
297
- const headers = this.getHeaders();
298
- return this.httpClient.delete(this.apiUrl + url, { headers, params: this.prepareEncodedParams(params) });
299
- }
300
- fetchPagination(url, pageSize, pageNumber, additionalParams = {}, cache) {
301
- const copyAdditionalParams = JSON.parse(JSON.stringify(additionalParams));
302
- const params = Object.assign(copyAdditionalParams, { size: pageSize.toString(), page: pageNumber.toString() });
303
- return this.fetch(url, params, cache);
304
- }
305
- prepareEncodedParams(params) {
306
- const result = {};
307
- if (!params) {
308
- return {};
309
- }
310
- for (const key of Object.keys(params)) {
311
- if (params[key]) {
312
- const stringParam = params[key].toString();
313
- result[key] = stringParam.includes('+') ? encodeURIComponent(stringParam) : stringParam;
314
- }
315
- }
316
- return result;
317
- }
318
- getHeaders(cache) {
319
- let headers = new HttpHeaders();
320
- if (cache) {
321
- headers = headers.append('_Cache', 'true ');
322
- }
323
- const token = this.token || this.getParameterByName('token');
324
- headers = headers.append('Authorization', 'Bearer ' + token);
325
- return headers;
326
- }
327
- getParameterByName(name, url = window.location.href) {
328
- name = name.replace(/[\[\]]/g, '\\$&');
329
- var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), results = regex.exec(url);
330
- if (!results)
331
- return null;
332
- if (!results[2])
333
- return '';
334
- return decodeURIComponent(results[2].replace(/\+/g, ' '));
335
- }
336
- }
337
- APIService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
338
- APIService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService });
339
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService, decorators: [{
340
- type: Injectable
270
+ class APIService {
271
+ constructor(httpClient) {
272
+ this.httpClient = httpClient;
273
+ this.apiUrl = window.location.protocol + '//' + window.location.hostname + '/dcp';
274
+ }
275
+ fetch(url, params = {}, cache) {
276
+ const headers = this.getHeaders(cache);
277
+ return this.httpClient.get(this.apiUrl + url, { params: this.prepareEncodedParams(params), headers });
278
+ }
279
+ post(url, body, params = {}) {
280
+ body = body || null;
281
+ const headers = this.getHeaders();
282
+ return this.httpClient.post(this.apiUrl + url, body, { params: this.prepareEncodedParams(params), headers });
283
+ }
284
+ // use when response extended data is necessary:
285
+ postExtended(url, body = null, params = {}, headers = {}) {
286
+ headers = headers || this.getHeaders();
287
+ return this.httpClient.post(this.apiUrl + url, body, {
288
+ headers,
289
+ observe: 'response',
290
+ params: this.prepareEncodedParams(params)
291
+ });
292
+ }
293
+ put(url, body = null, params = {}) {
294
+ const headers = this.getHeaders();
295
+ return this.httpClient.put(this.apiUrl + url, body, { headers, params: this.prepareEncodedParams(params) });
296
+ }
297
+ delete(url, params = {}) {
298
+ const headers = this.getHeaders();
299
+ return this.httpClient.delete(this.apiUrl + url, { headers, params: this.prepareEncodedParams(params) });
300
+ }
301
+ fetchPagination(url, pageSize, pageNumber, additionalParams = {}, cache) {
302
+ const copyAdditionalParams = JSON.parse(JSON.stringify(additionalParams));
303
+ const params = Object.assign(copyAdditionalParams, { size: pageSize.toString(), page: pageNumber.toString() });
304
+ return this.fetch(url, params, cache);
305
+ }
306
+ prepareEncodedParams(params) {
307
+ const result = {};
308
+ if (!params) {
309
+ return {};
310
+ }
311
+ for (const key of Object.keys(params)) {
312
+ if (params[key]) {
313
+ const stringParam = params[key].toString();
314
+ result[key] = stringParam.includes('+') ? encodeURIComponent(stringParam) : stringParam;
315
+ }
316
+ }
317
+ return result;
318
+ }
319
+ getHeaders(cache) {
320
+ let headers = new HttpHeaders();
321
+ if (cache) {
322
+ headers = headers.append('_Cache', 'true ');
323
+ }
324
+ const token = this.token || this.getParameterByName('token');
325
+ headers = headers.append('Authorization', 'Bearer ' + token);
326
+ return headers;
327
+ }
328
+ getParameterByName(name, url = window.location.href) {
329
+ name = name.replace(/[\[\]]/g, '\\$&');
330
+ var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), results = regex.exec(url);
331
+ if (!results)
332
+ return null;
333
+ if (!results[2])
334
+ return '';
335
+ return decodeURIComponent(results[2].replace(/\+/g, ' '));
336
+ }
337
+ }
338
+ APIService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
339
+ APIService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService });
340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService, decorators: [{
341
+ type: Injectable
341
342
  }], ctorParameters: function () { return [{ type: i1$1.HttpClient }]; } });
342
343
 
343
- class ApiWebexService extends APIService {
344
- constructor(httpClient) {
345
- super(httpClient);
346
- //this.apiUrl = window.location.protocol + "//"+ window.location.hostname + environment.apiAuthUrl;
347
- this.apiUrl = 'https://webex.car-west.net/webex';
348
- }
349
- }
350
- ApiWebexService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiWebexService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
351
- ApiWebexService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiWebexService });
352
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiWebexService, decorators: [{
353
- type: Injectable
344
+ class ApiWebexService extends APIService {
345
+ constructor(httpClient) {
346
+ super(httpClient);
347
+ //this.apiUrl = window.location.protocol + "//"+ window.location.hostname + environment.apiAuthUrl;
348
+ this.apiUrl = 'https://webex.car-west.net/webex';
349
+ }
350
+ }
351
+ ApiWebexService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiWebexService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
352
+ ApiWebexService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiWebexService });
353
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiWebexService, decorators: [{
354
+ type: Injectable
354
355
  }], ctorParameters: function () { return [{ type: i1$1.HttpClient }]; } });
355
356
 
356
- class UserService {
357
- constructor(apiService, apiWebexService) {
358
- this.apiService = apiService;
359
- this.apiWebexService = apiWebexService;
360
- this.siteId = -1;
361
- this.userId = '';
362
- this.userIdExistPending = false;
363
- this.hasExistedUserId = false;
364
- }
365
- ngOnInit() {
366
- console.log(this.siteId);
367
- }
368
- fetchUserToken(siteId, userId) {
369
- this.siteId = siteId;
370
- this.userId = userId;
371
- return this.apiService.fetch(API.USER_TOKEN.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))))
372
- .pipe(map((result) => {
373
- const token = Object.keys(result)[0];
374
- this.setSimplifiedUser(Object.values(result)[0], token);
375
- }));
376
- // .pipe(this.handleError(false, true));
377
- }
378
- updateUserFields(body) {
379
- var _a;
380
- if (!this.userId || !this.siteId || !((_a = this.user) === null || _a === void 0 ? void 0 : _a.token)) {
381
- return;
382
- }
383
- return this.apiService.post(API.UPDATE_USER_FIELDS.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), body);
384
- // .pipe(this.handleError(false, true));
385
- }
386
- moveUser(customerId, user) {
387
- // return new Observable<boolean>(observer => {
388
- // setTimeout(() => {
389
- // observer.next(true);
390
- //
391
- // }, 80000);
392
- // });
393
- return this.apiWebexService.post(API.MOVE_USER, this.getMoveUserBody(customerId, user));
394
- // .pipe(this.handleError(true, true));
395
- }
396
- moveUserToMT(customerId, user) {
397
- // return new Observable<boolean>(observer => {
398
- // setTimeout(() => {
399
- // observer.next(true);
400
- //
401
- // }, 80000);
402
- // });
403
- return this.apiWebexService.post(API.MOVE_USER, this.getMoveUserBody(customerId, user));
404
- // .pipe(this.handleError(true, true));
405
- }
406
- moveUserToDI(customerId, user) {
407
- // return new Observable<boolean>(observer => {
408
- // setTimeout(() => {
409
- // observer.next(true);
410
- //
411
- // }, 80000);
412
- // });
413
- const URL = API.REVERT_WEBEX_USER.replace(':customerId', customerId).replace(':webexUUID', String(user.webexUUID));
414
- return this.apiWebexService.post(URL, this.getMoveUserBody(customerId, user));
415
- // .pipe(this.handleError(true, true));
416
- }
417
- getMoveUserBody(customerId, user) {
418
- return {
419
- customerId: customerId,
420
- entities: {
421
- PERSON: [{ cucmId: user.cucmId, entityId: user.userid }]
422
- }
423
- };
424
- }
425
- deleteUser(siteId, userId) {
426
- return this.apiService.delete(API.DELETE_USER.replace(':siteId', String(siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))));
427
- // .pipe(this.handleError(true, true));
428
- }
429
- fetchUserById(id) {
430
- this.userIdExistPending = true;
431
- return this.apiService.fetch(API.USER_BY_ID.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(id))))
432
- .pipe(map(result => {
433
- this.userIdExistPending = false;
434
- return result;
435
- }));
436
- }
437
- persistCacheChanges() {
438
- const params = {
439
- excludeDeviceExtraOptions: true
440
- };
441
- return this.processUserChangesToCache()
442
- .pipe(map((result) => {
443
- return this.apiService.post(API.PERSIST_USER_CACHE.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), {}, params)
444
- .subscribe(() => {
445
- });
446
- // .pipe(map((user) => {
447
- // // this.setUser(user, false, this.user.token);
448
- // this.user.hasModifiedCache = false;
449
- // }))
450
- // .pipe(this.handleError(true, true));
451
- }));
452
- }
453
- processUserChangesToCache() {
454
- const calls = [];
455
- const body = UtilsService.diff(this.originUser.getSavableData(), this.user.getSavableData(), 'user');
456
- if (body) {
457
- calls.push(this.updateUserFields(body));
458
- }
459
- if (!(calls === null || calls === void 0 ? void 0 : calls.length)) {
460
- return of(this.user);
461
- }
462
- return forkJoin(calls)
463
- .pipe(map((responses) => {
464
- // ApiUserResponse
465
- this.handleSaveUserResponse(responses);
466
- }));
467
- // .pipe(this.handleError(false, true));
468
- }
469
- hasUnsavedChanges() {
470
- return !this.user.equal(this.originUser);
471
- }
472
- setSimplifiedUser(user, token) {
473
- this.user = new SimplifiedUser(user);
474
- const copiedUser = JSON.parse(JSON.stringify(user));
475
- this.originUser = new SimplifiedUser(copiedUser);
476
- this.user.token = this.user.token || token;
477
- this.originUser.token = this.originUser.token || token;
478
- }
479
- handleSaveUserResponse(responses) {
480
- if (!(responses === null || responses === void 0 ? void 0 : responses.length)) {
481
- return;
482
- }
483
- for (let len = responses.length, i = len - 1; i >= 0; i--) {
484
- if (responses[i] && responses[i].currentUpdatedUser) {
485
- // this.setUser(responses[i].currentUpdatedUser, false, this.user.token);
486
- this.user.hasModifiedCache = true;
487
- return;
488
- }
489
- }
490
- }
491
- }
492
- UserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserService, deps: [{ token: APIService }, { token: ApiWebexService }], target: i0.ɵɵFactoryTarget.Injectable });
493
- UserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserService });
494
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserService, decorators: [{
495
- type: Injectable
357
+ class UserService {
358
+ constructor(apiService, apiWebexService) {
359
+ this.apiService = apiService;
360
+ this.apiWebexService = apiWebexService;
361
+ this.siteId = -1;
362
+ this.userId = '';
363
+ this.userIdExistPending = false;
364
+ this.hasExistedUserId = false;
365
+ }
366
+ ngOnInit() {
367
+ console.log(this.siteId);
368
+ }
369
+ fetchUserToken(siteId, userId) {
370
+ this.siteId = siteId;
371
+ this.userId = userId;
372
+ return this.apiService.fetch(API.USER_TOKEN.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))))
373
+ .pipe(map((result) => {
374
+ const token = Object.keys(result)[0];
375
+ this.setSimplifiedUser(Object.values(result)[0], token);
376
+ }));
377
+ // .pipe(this.handleError(false, true));
378
+ }
379
+ updateUserFields(body) {
380
+ var _a;
381
+ if (!this.userId || !this.siteId || !((_a = this.user) === null || _a === void 0 ? void 0 : _a.token)) {
382
+ return;
383
+ }
384
+ return this.apiService.post(API.UPDATE_USER_FIELDS.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), body);
385
+ // .pipe(this.handleError(false, true));
386
+ }
387
+ moveUser(customerId, user) {
388
+ // return new Observable<boolean>(observer => {
389
+ // setTimeout(() => {
390
+ // observer.next(true);
391
+ //
392
+ // }, 80000);
393
+ // });
394
+ return this.apiWebexService.post(API.MOVE_USER, this.getMoveUserBody(customerId, user));
395
+ // .pipe(this.handleError(true, true));
396
+ }
397
+ moveUserToMT(customerId, user) {
398
+ // return new Observable<boolean>(observer => {
399
+ // setTimeout(() => {
400
+ // observer.next(true);
401
+ //
402
+ // }, 80000);
403
+ // });
404
+ return this.apiWebexService.post(API.MOVE_USER, this.getMoveUserBody(customerId, user));
405
+ // .pipe(this.handleError(true, true));
406
+ }
407
+ moveUserToDI(customerId, user) {
408
+ // return new Observable<boolean>(observer => {
409
+ // setTimeout(() => {
410
+ // observer.next(true);
411
+ //
412
+ // }, 80000);
413
+ // });
414
+ const URL = API.REVERT_WEBEX_USER.replace(':customerId', customerId).replace(':webexUUID', String(user.webexUUID));
415
+ return this.apiWebexService.post(URL, this.getMoveUserBody(customerId, user));
416
+ // .pipe(this.handleError(true, true));
417
+ }
418
+ getMoveUserBody(customerId, user) {
419
+ return {
420
+ customerId: customerId,
421
+ entities: {
422
+ PERSON: [{ cucmId: user.cucmId, entityId: user.userid }]
423
+ }
424
+ };
425
+ }
426
+ deleteUser(siteId, userId) {
427
+ return this.apiService.delete(API.DELETE_USER.replace(':siteId', String(siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))));
428
+ // .pipe(this.handleError(true, true));
429
+ }
430
+ fetchUserById(id) {
431
+ this.userIdExistPending = true;
432
+ return this.apiService.fetch(API.USER_BY_ID.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(id))))
433
+ .pipe(map(result => {
434
+ this.userIdExistPending = false;
435
+ return result;
436
+ }));
437
+ }
438
+ persistCacheChanges() {
439
+ const params = {
440
+ excludeDeviceExtraOptions: true
441
+ };
442
+ return this.processUserChangesToCache()
443
+ .pipe(map((result) => {
444
+ return this.apiService.post(API.PERSIST_USER_CACHE.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), {}, params)
445
+ .subscribe(() => {
446
+ });
447
+ // .pipe(map((user) => {
448
+ // // this.setUser(user, false, this.user.token);
449
+ // this.user.hasModifiedCache = false;
450
+ // }))
451
+ // .pipe(this.handleError(true, true));
452
+ }));
453
+ }
454
+ processUserChangesToCache() {
455
+ const calls = [];
456
+ const body = UtilsService.diff(this.originUser.getSavableData(), this.user.getSavableData(), 'user');
457
+ if (body) {
458
+ calls.push(this.updateUserFields(body));
459
+ }
460
+ if (!(calls === null || calls === void 0 ? void 0 : calls.length)) {
461
+ return of(this.user);
462
+ }
463
+ return forkJoin(calls)
464
+ .pipe(map((responses) => {
465
+ // ApiUserResponse
466
+ this.handleSaveUserResponse(responses);
467
+ }));
468
+ // .pipe(this.handleError(false, true));
469
+ }
470
+ hasUnsavedChanges() {
471
+ return !this.user.equal(this.originUser);
472
+ }
473
+ setSimplifiedUser(user, token) {
474
+ this.user = new SimplifiedUser(user);
475
+ const copiedUser = JSON.parse(JSON.stringify(user));
476
+ this.originUser = new SimplifiedUser(copiedUser);
477
+ this.user.token = this.user.token || token;
478
+ this.originUser.token = this.originUser.token || token;
479
+ }
480
+ handleSaveUserResponse(responses) {
481
+ if (!(responses === null || responses === void 0 ? void 0 : responses.length)) {
482
+ return;
483
+ }
484
+ for (let len = responses.length, i = len - 1; i >= 0; i--) {
485
+ if (responses[i] && responses[i].currentUpdatedUser) {
486
+ // this.setUser(responses[i].currentUpdatedUser, false, this.user.token);
487
+ this.user.hasModifiedCache = true;
488
+ return;
489
+ }
490
+ }
491
+ }
492
+ }
493
+ UserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserService, deps: [{ token: APIService }, { token: ApiWebexService }], target: i0.ɵɵFactoryTarget.Injectable });
494
+ UserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserService });
495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserService, decorators: [{
496
+ type: Injectable
496
497
  }], ctorParameters: function () { return [{ type: APIService }, { type: ApiWebexService }]; } });
497
498
 
498
- const TTL_DEFAULT = 30000;
499
- const TTL_LONG_DEFAULT = 45000;
500
- var NotificationType;
501
- (function (NotificationType) {
502
- NotificationType["info"] = "info";
503
- NotificationType["error"] = "error";
504
- NotificationType["success"] = "success";
505
- NotificationType["warning"] = "warning";
506
- })(NotificationType || (NotificationType = {}));
507
- class Notification {
508
- constructor(data) {
509
- this.ttl = TTL_DEFAULT;
510
- Object.assign(this, data || {});
511
- if (this.ttl === undefined) {
512
- this.ttl = this.message && this.message.length && this.message.length < 80 ? TTL_DEFAULT : TTL_LONG_DEFAULT;
513
- }
514
- }
515
- isInfo() {
516
- return this.type === NotificationType.info;
517
- }
518
- isError() {
519
- return this.type === NotificationType.error;
520
- }
521
- isSuccess() {
522
- return this.type === NotificationType.success;
523
- }
524
- isWarning() {
525
- return this.type === NotificationType.warning;
526
- }
499
+ const TTL_DEFAULT = 30000;
500
+ const TTL_LONG_DEFAULT = 45000;
501
+ var NotificationType;
502
+ (function (NotificationType) {
503
+ NotificationType["info"] = "info";
504
+ NotificationType["error"] = "error";
505
+ NotificationType["success"] = "success";
506
+ NotificationType["warning"] = "warning";
507
+ })(NotificationType || (NotificationType = {}));
508
+ class Notification {
509
+ constructor(data) {
510
+ this.ttl = TTL_DEFAULT;
511
+ Object.assign(this, data || {});
512
+ if (this.ttl === undefined) {
513
+ this.ttl = this.message && this.message.length && this.message.length < 80 ? TTL_DEFAULT : TTL_LONG_DEFAULT;
514
+ }
515
+ }
516
+ isInfo() {
517
+ return this.type === NotificationType.info;
518
+ }
519
+ isError() {
520
+ return this.type === NotificationType.error;
521
+ }
522
+ isSuccess() {
523
+ return this.type === NotificationType.success;
524
+ }
525
+ isWarning() {
526
+ return this.type === NotificationType.warning;
527
+ }
527
528
  }
528
529
 
529
- const SUCCESS_TIME = 5000;
530
- const INACTIVE_SESSION_MESSAGE = 'Your session was lost due to inactivity. Please login again';
531
- const INACTIVE_SESSION = 'SESSION_INACTIVE';
532
- class NotificationService {
533
- constructor() {
534
- this.listChange = new Subject();
535
- this.max = 0;
536
- this.list = [];
537
- }
538
- error(message, ttl) {
539
- this.notify('error', message, ttl);
540
- }
541
- success(message, ttl) {
542
- this.notify('success', message, (!ttl) ? SUCCESS_TIME : ttl);
543
- }
544
- warning(message, ttl) {
545
- this.notify('warning', message, ttl);
546
- }
547
- info(message, ttl) {
548
- this.notify('info', message, ttl);
549
- }
550
- notify(type, message, ttl) {
551
- const found = this.list.find((n) => n.message === message);
552
- if (found) {
553
- this.remove(found);
554
- }
555
- const notification = new Notification({
556
- id: ++this.max,
557
- type, message, ttl
558
- });
559
- if (notification.ttl > 0) {
560
- notification.timerId = setTimeout(() => this.remove(notification, true), notification.ttl);
561
- }
562
- this.list.push(notification);
563
- this.listChange.next(this.list);
564
- }
565
- remove(notification, auto) {
566
- if (!auto && notification.timerId) {
567
- // clear timeout in case of manual remove
568
- clearInterval(notification.timerId);
569
- }
570
- this.list = this.list.filter(n => n.id !== notification.id);
571
- this.listChange.next(this.list);
572
- }
573
- removeInactiveSessionError() {
574
- if (!this.list || !this.list.length) {
575
- return;
576
- }
577
- this.list = this.list.filter(n => n.message !== INACTIVE_SESSION_MESSAGE && n.message !== INACTIVE_SESSION);
578
- this.listChange.next(this.list);
579
- }
580
- }
581
- NotificationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
582
- NotificationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NotificationService });
583
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NotificationService, decorators: [{
584
- type: Injectable
530
+ const SUCCESS_TIME = 5000;
531
+ const INACTIVE_SESSION_MESSAGE = 'Your session was lost due to inactivity. Please login again';
532
+ const INACTIVE_SESSION = 'SESSION_INACTIVE';
533
+ class NotificationService {
534
+ constructor() {
535
+ this.listChange = new Subject();
536
+ this.max = 0;
537
+ this.list = [];
538
+ }
539
+ error(message, ttl) {
540
+ this.notify('error', message, ttl);
541
+ }
542
+ success(message, ttl) {
543
+ this.notify('success', message, (!ttl) ? SUCCESS_TIME : ttl);
544
+ }
545
+ warning(message, ttl) {
546
+ this.notify('warning', message, ttl);
547
+ }
548
+ info(message, ttl) {
549
+ this.notify('info', message, ttl);
550
+ }
551
+ notify(type, message, ttl) {
552
+ const found = this.list.find((n) => n.message === message);
553
+ if (found) {
554
+ this.remove(found);
555
+ }
556
+ const notification = new Notification({
557
+ id: ++this.max,
558
+ type, message, ttl
559
+ });
560
+ if (notification.ttl > 0) {
561
+ notification.timerId = setTimeout(() => this.remove(notification, true), notification.ttl);
562
+ }
563
+ this.list.push(notification);
564
+ this.listChange.next(this.list);
565
+ }
566
+ remove(notification, auto) {
567
+ if (!auto && notification.timerId) {
568
+ // clear timeout in case of manual remove
569
+ clearInterval(notification.timerId);
570
+ }
571
+ this.list = this.list.filter(n => n.id !== notification.id);
572
+ this.listChange.next(this.list);
573
+ }
574
+ removeInactiveSessionError() {
575
+ if (!this.list || !this.list.length) {
576
+ return;
577
+ }
578
+ this.list = this.list.filter(n => n.message !== INACTIVE_SESSION_MESSAGE && n.message !== INACTIVE_SESSION);
579
+ this.listChange.next(this.list);
580
+ }
581
+ }
582
+ NotificationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
583
+ NotificationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NotificationService });
584
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NotificationService, decorators: [{
585
+ type: Injectable
585
586
  }], ctorParameters: function () { return []; } });
586
587
 
587
- class ListUser {
588
- constructor(user, roleName) {
589
- this.devices = [];
590
- this.deviceProfiles = [];
591
- if (user) {
592
- Object.assign(this, user);
593
- }
594
- if (roleName) {
595
- this.roleName = roleName;
596
- }
597
- }
588
+ class ListUser {
589
+ constructor(user, roleName) {
590
+ this.devices = [];
591
+ this.deviceProfiles = [];
592
+ if (user) {
593
+ Object.assign(this, user);
594
+ }
595
+ if (roleName) {
596
+ this.roleName = roleName;
597
+ }
598
+ }
598
599
  }
599
600
 
600
- class RemoveKynFromIBMService {
601
- constructor() {
602
- }
603
- removeCUCMS(date, customerId) {
604
- if (customerId === 8) {
605
- return date.filter((val) => !CUCMS_TO_IGNORE.includes(Math.round(val.cucmId)));
606
- }
607
- return date;
608
- }
609
- removeCUCS(date, customerId) {
610
- if (customerId === 8) {
611
- return date.filter((val) => !CUCS_TO_IGNORE.includes(Math.round(val.cucId)));
612
- }
613
- return date;
614
- }
615
- }
616
- RemoveKynFromIBMService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RemoveKynFromIBMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
617
- RemoveKynFromIBMService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RemoveKynFromIBMService });
618
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RemoveKynFromIBMService, decorators: [{
619
- type: Injectable
601
+ class RemoveKynFromIBMService {
602
+ constructor() {
603
+ }
604
+ removeCUCMS(date, customerId) {
605
+ if (customerId === 8) {
606
+ return date.filter((val) => !CUCMS_TO_IGNORE.includes(Math.round(val.cucmId)));
607
+ }
608
+ return date;
609
+ }
610
+ removeCUCS(date, customerId) {
611
+ if (customerId === 8) {
612
+ return date.filter((val) => !CUCS_TO_IGNORE.includes(Math.round(val.cucId)));
613
+ }
614
+ return date;
615
+ }
616
+ }
617
+ RemoveKynFromIBMService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RemoveKynFromIBMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
618
+ RemoveKynFromIBMService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RemoveKynFromIBMService });
619
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RemoveKynFromIBMService, decorators: [{
620
+ type: Injectable
620
621
  }], ctorParameters: function () { return []; } });
621
622
 
622
- class UsersSearchService {
623
- constructor(apiService, webexApiService, removeKynFromIBMService) {
624
- this.apiService = apiService;
625
- this.webexApiService = webexApiService;
626
- this.removeKynFromIBMService = removeKynFromIBMService;
627
- this.siteId = -1;
628
- this.userId = '';
629
- this.userIdExistPending = false;
630
- this.hasExistedUserId = false;
631
- this.pageSize = PAGINATION_DEFAULTS.SIZE;
632
- this.pageIndex = PAGINATION_DEFAULTS.SIZE;
633
- this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;
634
- this.foundUsers$ = new BehaviorSubject(null);
635
- }
636
- getPagination() {
637
- return {
638
- total: this.total,
639
- pageSizeOptions: this.pageSizeOptions,
640
- pageSize: this.pageSize,
641
- pageIndex: this.pageIndex
642
- };
643
- }
644
- setDefaultValues() {
645
- this.total = 0;
646
- this.pageSize = PAGINATION_DEFAULTS.SIZE;
647
- this.pageIndex = PAGINATION_DEFAULTS.INDEX;
648
- this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;
649
- }
650
- quickRegularUsersSearch(searchParams, isMigratedUsersOnly, pageSize) {
651
- console.log('searchParams = ', searchParams);
652
- this.searchParams = searchParams || { customerid: this.customerId, siteid: this.siteId };
653
- return this.apiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize || this.pageIndex, this.searchParams)
654
- .pipe(map((res) => {
655
- var _a;
656
- // this.totals = this.totals || {};
657
- // this.totals['users'] = res.total;
658
- // this.foundUsers$.next(this.removeKynFromIBMService.removeCUCMS(users, this.customerId));
659
- if (!isMigratedUsersOnly) {
660
- const users = res.pageData && res.pageData.length ? res.pageData
661
- .map(user => new ListUser(user, 'Dedicated Instance Calling user')) : [];
662
- if ((_a = this.migratedUsersIds) === null || _a === void 0 ? void 0 : _a.length) {
663
- this.setMigratedPropToUsers(users);
664
- }
665
- this.total = res.total;
666
- this.foundUsers$.next(users);
667
- }
668
- else {
669
- this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData
670
- .map(user => user.userid) : [];
671
- }
672
- }));
673
- // .pipe(this.handleError(true));
674
- }
675
- quickWebexUsersSearch(searchParams, isMigratedUsersOnly, pageSize) {
676
- this.searchParams = searchParams || { customerid: this.customerId, siteid: this.siteId };
677
- return this.webexApiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize || this.pageIndex, this.searchParams)
678
- .pipe(map((res) => {
679
- var _a;
680
- if (!isMigratedUsersOnly) {
681
- const users = res.pageData && res.pageData.length ? res.pageData
682
- .map(user => new ListUser(user, 'Dedicated Instance Calling user')) : [];
683
- if ((_a = this.migratedUsersIds) === null || _a === void 0 ? void 0 : _a.length) {
684
- this.setMigratedPropToUsers(users);
685
- }
686
- this.total = res.total;
687
- this.foundUsers$.next(users);
688
- }
689
- else {
690
- this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData
691
- .map(user => user.userid) : [];
692
- }
693
- }));
694
- // .pipe(this.handleError(true));
695
- }
696
- getMigratedUsers(customerId) {
697
- return this.webexApiService.fetch(API.WEBEX_USERS.replace(':customerId', String(customerId)), {})
698
- .pipe(map((result) => {
699
- if (result && result.length) {
700
- this.migratedUsers = result.filter((user) => user.webexUUID && user.devices && user.devices.length);
701
- }
702
- }));
703
- }
704
- getMigratedWebexUsers(customerId) {
705
- const params = { customerid: customerId, type: 'PERSON' };
706
- return this.webexApiService.fetch(API.MIGRATED_USERS.replace(':customerId', String(customerId)), params, true)
707
- .pipe(map((result) => {
708
- }));
709
- }
710
- setMigratedPropToUsers(users) {
711
- users.forEach((user) => {
712
- const migratedUser = this.migratedUsers.filter((migratedUser) => migratedUser.userid === user.email);
713
- if (migratedUser && migratedUser[0]) {
714
- user.roleName = '';
715
- user.isMigrated = true;
716
- user.status = 'Migrated';
717
- user.webexUUID = migratedUser[0].webexUUID;
718
- }
719
- else {
720
- user.roleName = 'Dedicated Instance Calling user';
721
- user.isMigrated = false;
722
- user.status = 'Active';
723
- user.webexUUID = '';
724
- }
725
- });
726
- console.log('users ttt', users);
727
- }
728
- }
729
- UsersSearchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersSearchService, deps: [{ token: APIService }, { token: ApiWebexService }, { token: RemoveKynFromIBMService }], target: i0.ɵɵFactoryTarget.Injectable });
730
- UsersSearchService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersSearchService });
731
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersSearchService, decorators: [{
732
- type: Injectable
623
+ class UsersSearchService {
624
+ constructor(apiService, webexApiService, removeKynFromIBMService) {
625
+ this.apiService = apiService;
626
+ this.webexApiService = webexApiService;
627
+ this.removeKynFromIBMService = removeKynFromIBMService;
628
+ this.siteId = -1;
629
+ this.userId = '';
630
+ this.userIdExistPending = false;
631
+ this.hasExistedUserId = false;
632
+ this.pageSize = PAGINATION_DEFAULTS.SIZE;
633
+ this.pageIndex = PAGINATION_DEFAULTS.SIZE;
634
+ this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;
635
+ this.foundUsers$ = new BehaviorSubject(null);
636
+ }
637
+ getPagination() {
638
+ return {
639
+ total: this.total,
640
+ pageSizeOptions: this.pageSizeOptions,
641
+ pageSize: this.pageSize,
642
+ pageIndex: this.pageIndex
643
+ };
644
+ }
645
+ setDefaultValues() {
646
+ this.total = 0;
647
+ this.pageSize = PAGINATION_DEFAULTS.SIZE;
648
+ this.pageIndex = PAGINATION_DEFAULTS.INDEX;
649
+ this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;
650
+ }
651
+ quickRegularUsersSearch(searchParams, isMigratedUsersOnly, pageSize) {
652
+ console.log('searchParams = ', searchParams);
653
+ this.searchParams = searchParams || { customerid: this.customerId, siteid: this.siteId };
654
+ return this.apiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize || this.pageIndex, this.searchParams)
655
+ .pipe(map((res) => {
656
+ var _a;
657
+ // this.totals = this.totals || {};
658
+ // this.totals['users'] = res.total;
659
+ // this.foundUsers$.next(this.removeKynFromIBMService.removeCUCMS(users, this.customerId));
660
+ if (!isMigratedUsersOnly) {
661
+ const users = res.pageData && res.pageData.length ? res.pageData
662
+ .map(user => new ListUser(user, 'Dedicated Instance Calling user')) : [];
663
+ if ((_a = this.migratedUsersIds) === null || _a === void 0 ? void 0 : _a.length) {
664
+ this.setMigratedPropToUsers(users);
665
+ }
666
+ this.total = res.total;
667
+ this.foundUsers$.next(users);
668
+ }
669
+ else {
670
+ this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData
671
+ .map(user => user.userid) : [];
672
+ }
673
+ }));
674
+ // .pipe(this.handleError(true));
675
+ }
676
+ quickWebexUsersSearch(searchParams, isMigratedUsersOnly, pageSize) {
677
+ this.searchParams = searchParams || { customerid: this.customerId, siteid: this.siteId };
678
+ return this.webexApiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize || this.pageIndex, this.searchParams)
679
+ .pipe(map((res) => {
680
+ var _a;
681
+ if (!isMigratedUsersOnly) {
682
+ const users = res.pageData && res.pageData.length ? res.pageData
683
+ .map(user => new ListUser(user, 'Dedicated Instance Calling user')) : [];
684
+ if ((_a = this.migratedUsersIds) === null || _a === void 0 ? void 0 : _a.length) {
685
+ this.setMigratedPropToUsers(users);
686
+ }
687
+ this.total = res.total;
688
+ this.foundUsers$.next(users);
689
+ }
690
+ else {
691
+ this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData
692
+ .map(user => user.userid) : [];
693
+ }
694
+ }));
695
+ // .pipe(this.handleError(true));
696
+ }
697
+ getMigratedUsers(customerId) {
698
+ return this.webexApiService.fetch(API.WEBEX_USERS.replace(':customerId', String(customerId)), {})
699
+ .pipe(map((result) => {
700
+ if (result && result.length) {
701
+ this.migratedUsers = result.filter((user) => user.webexUUID && user.devices && user.devices.length);
702
+ }
703
+ }));
704
+ }
705
+ getMigratedWebexUsers(customerId) {
706
+ const params = { customerid: customerId, type: 'PERSON' };
707
+ return this.webexApiService.fetch(API.MIGRATED_USERS.replace(':customerId', String(customerId)), params, true)
708
+ .pipe(map((result) => {
709
+ }));
710
+ }
711
+ setMigratedPropToUsers(users) {
712
+ users.forEach((user) => {
713
+ const migratedUser = this.migratedUsers.filter((migratedUser) => migratedUser.userid === user.email);
714
+ if (migratedUser && migratedUser[0]) {
715
+ user.roleName = '';
716
+ user.isMigrated = true;
717
+ user.status = 'Migrated';
718
+ user.webexUUID = migratedUser[0].webexUUID;
719
+ }
720
+ else {
721
+ user.roleName = 'Dedicated Instance Calling user';
722
+ user.isMigrated = false;
723
+ user.status = 'Active';
724
+ user.webexUUID = '';
725
+ }
726
+ });
727
+ console.log('users ttt', users);
728
+ }
729
+ }
730
+ UsersSearchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersSearchService, deps: [{ token: APIService }, { token: ApiWebexService }, { token: RemoveKynFromIBMService }], target: i0.ɵɵFactoryTarget.Injectable });
731
+ UsersSearchService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersSearchService });
732
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersSearchService, decorators: [{
733
+ type: Injectable
733
734
  }], ctorParameters: function () { return [{ type: APIService }, { type: ApiWebexService }, { type: RemoveKynFromIBMService }]; } });
734
735
 
735
- class PaginationComponent {
736
- constructor() {
737
- this.pageEmitter = new EventEmitter();
738
- this.pageNumberChangeEmitter = new EventEmitter();
739
- this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;
740
- }
741
- ngOnInit() {
742
- }
743
- pageEvent(event) {
744
- this.pageEmitter.emit(event);
745
- }
746
- changePerPageNumber(event) {
747
- this.pageNumberChangeEmitter.emit(event.value);
748
- }
749
- }
750
- PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
751
- PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PaginationComponent, selector: "app-pagination", inputs: { pagination: "pagination", showPageSizeOptions: "showPageSizeOptions", showRefreshButton: "showRefreshButton", lengthPending: "lengthPending" }, outputs: { pageEmitter: "pageEmitter", pageNumberChangeEmitter: "pageNumberChangeEmitter" }, ngImport: i0, template: "<div class=\"flex-box pagination\">\n <div class=\"page-indexes-box\">\n <mat-paginator\n [id]=\"'commonPagination'\"\n [hidePageSize]=\"true\"\n [length]=\"pagination.total\"\n [pageIndex]=\"pagination.pageIndex\"\n [pageSize]=\"pagination.pageSize\"\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\n (page)=\"pageEvent($event)\">\n </mat-paginator>\n <mat-spinner class=\"length-spinner\" [diameter]=\"20\" mode=\"indeterminate\" *ngIf=\"lengthPending\">\n </mat-spinner>\n </div>\n\n <div class=\"flex-box per-page-block\" *ngIf=\"showPageSizeOptions\">\n <div class=\"item_per_page\">Items per page:</div>\n <div class=\"select-box select-page-size\">\n <mat-select [(ngModel)]=\"pagination.pageSize\" (selectionChange)=\"changePerPageNumber($event)\" #page\n [id]=\"'commonPaginationSelect'\">\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\n </mat-select>\n </div>\n\n </div>\n</div>\n", styles: [".search-header-refresh-icon{align-items:center;line-height:54px;margin-left:10px}button[mat-icon-button] i{font-size:18px}mat-spinner.length-spinner{position:absolute;right:120px}h3,.search-header-refresh-icon{float:left}.page-options,.mat-paginator{float:right}.per-page-block mat-form-field{width:70px!important}.per-page-block span{margin-right:20px}.pagination{display:flex;justify-content:flex-end}.select-page-size{width:60px;margin:0 0 0 15px;padding:0 10px}.item_per_page{line-height:35px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }] });
752
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PaginationComponent, decorators: [{
753
- type: Component,
754
- args: [{ selector: 'app-pagination', template: "<div class=\"flex-box pagination\">\n <div class=\"page-indexes-box\">\n <mat-paginator\n [id]=\"'commonPagination'\"\n [hidePageSize]=\"true\"\n [length]=\"pagination.total\"\n [pageIndex]=\"pagination.pageIndex\"\n [pageSize]=\"pagination.pageSize\"\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\n (page)=\"pageEvent($event)\">\n </mat-paginator>\n <mat-spinner class=\"length-spinner\" [diameter]=\"20\" mode=\"indeterminate\" *ngIf=\"lengthPending\">\n </mat-spinner>\n </div>\n\n <div class=\"flex-box per-page-block\" *ngIf=\"showPageSizeOptions\">\n <div class=\"item_per_page\">Items per page:</div>\n <div class=\"select-box select-page-size\">\n <mat-select [(ngModel)]=\"pagination.pageSize\" (selectionChange)=\"changePerPageNumber($event)\" #page\n [id]=\"'commonPaginationSelect'\">\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\n </mat-select>\n </div>\n\n </div>\n</div>\n", styles: [".search-header-refresh-icon{align-items:center;line-height:54px;margin-left:10px}button[mat-icon-button] i{font-size:18px}mat-spinner.length-spinner{position:absolute;right:120px}h3,.search-header-refresh-icon{float:left}.page-options,.mat-paginator{float:right}.per-page-block mat-form-field{width:70px!important}.per-page-block span{margin-right:20px}.pagination{display:flex;justify-content:flex-end}.select-page-size{width:60px;margin:0 0 0 15px;padding:0 10px}.item_per_page{line-height:35px}\n"] }]
755
- }], ctorParameters: function () { return []; }, propDecorators: { pagination: [{
756
- type: Input
757
- }], showPageSizeOptions: [{
758
- type: Input
759
- }], showRefreshButton: [{
760
- type: Input
761
- }], lengthPending: [{
762
- type: Input
763
- }], pageEmitter: [{
764
- type: Output
765
- }], pageNumberChangeEmitter: [{
766
- type: Output
736
+ class PaginationComponent {
737
+ constructor() {
738
+ this.pageEmitter = new EventEmitter();
739
+ this.pageNumberChangeEmitter = new EventEmitter();
740
+ this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;
741
+ }
742
+ ngOnInit() {
743
+ }
744
+ pageEvent(event) {
745
+ this.pageEmitter.emit(event);
746
+ }
747
+ changePerPageNumber(event) {
748
+ this.pageNumberChangeEmitter.emit(event.value);
749
+ }
750
+ }
751
+ PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
752
+ PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PaginationComponent, selector: "app-pagination", inputs: { pagination: "pagination", showPageSizeOptions: "showPageSizeOptions", showRefreshButton: "showRefreshButton", lengthPending: "lengthPending" }, outputs: { pageEmitter: "pageEmitter", pageNumberChangeEmitter: "pageNumberChangeEmitter" }, ngImport: i0, template: "<div class=\"flex-box pagination\">\r\n <div class=\"page-indexes-box\">\r\n <mat-paginator\r\n [id]=\"'commonPagination'\"\r\n [hidePageSize]=\"true\"\r\n [length]=\"pagination.total\"\r\n [pageIndex]=\"pagination.pageIndex\"\r\n [pageSize]=\"pagination.pageSize\"\r\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\r\n (page)=\"pageEvent($event)\">\r\n </mat-paginator>\r\n <mat-spinner class=\"length-spinner\" [diameter]=\"20\" mode=\"indeterminate\" *ngIf=\"lengthPending\">\r\n </mat-spinner>\r\n </div>\r\n\r\n <div class=\"flex-box per-page-block\" *ngIf=\"showPageSizeOptions\">\r\n <div class=\"item_per_page\">Items per page:</div>\r\n <div class=\"select-box select-page-size\">\r\n <mat-select [(ngModel)]=\"pagination.pageSize\" (selectionChange)=\"changePerPageNumber($event)\" #page\r\n [id]=\"'commonPaginationSelect'\">\r\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n", styles: [".search-header-refresh-icon{align-items:center;line-height:54px;margin-left:10px}button[mat-icon-button] i{font-size:18px}mat-spinner.length-spinner{position:absolute;right:120px}h3,.search-header-refresh-icon{float:left}.page-options,.mat-paginator{float:right}.per-page-block mat-form-field{width:70px!important}.per-page-block span{margin-right:20px}.pagination{display:flex;justify-content:flex-end}.select-page-size{width:60px;margin:0 0 0 15px;padding:0 10px}.item_per_page{line-height:35px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }] });
753
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PaginationComponent, decorators: [{
754
+ type: Component,
755
+ args: [{ selector: 'app-pagination', template: "<div class=\"flex-box pagination\">\r\n <div class=\"page-indexes-box\">\r\n <mat-paginator\r\n [id]=\"'commonPagination'\"\r\n [hidePageSize]=\"true\"\r\n [length]=\"pagination.total\"\r\n [pageIndex]=\"pagination.pageIndex\"\r\n [pageSize]=\"pagination.pageSize\"\r\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\r\n (page)=\"pageEvent($event)\">\r\n </mat-paginator>\r\n <mat-spinner class=\"length-spinner\" [diameter]=\"20\" mode=\"indeterminate\" *ngIf=\"lengthPending\">\r\n </mat-spinner>\r\n </div>\r\n\r\n <div class=\"flex-box per-page-block\" *ngIf=\"showPageSizeOptions\">\r\n <div class=\"item_per_page\">Items per page:</div>\r\n <div class=\"select-box select-page-size\">\r\n <mat-select [(ngModel)]=\"pagination.pageSize\" (selectionChange)=\"changePerPageNumber($event)\" #page\r\n [id]=\"'commonPaginationSelect'\">\r\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n", styles: [".search-header-refresh-icon{align-items:center;line-height:54px;margin-left:10px}button[mat-icon-button] i{font-size:18px}mat-spinner.length-spinner{position:absolute;right:120px}h3,.search-header-refresh-icon{float:left}.page-options,.mat-paginator{float:right}.per-page-block mat-form-field{width:70px!important}.per-page-block span{margin-right:20px}.pagination{display:flex;justify-content:flex-end}.select-page-size{width:60px;margin:0 0 0 15px;padding:0 10px}.item_per_page{line-height:35px}\n"] }]
756
+ }], ctorParameters: function () { return []; }, propDecorators: { pagination: [{
757
+ type: Input
758
+ }], showPageSizeOptions: [{
759
+ type: Input
760
+ }], showRefreshButton: [{
761
+ type: Input
762
+ }], lengthPending: [{
763
+ type: Input
764
+ }], pageEmitter: [{
765
+ type: Output
766
+ }], pageNumberChangeEmitter: [{
767
+ type: Output
767
768
  }] } });
768
769
 
769
- class AppLoaderComponent {
770
- constructor() {
771
- }
772
- }
773
- AppLoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
774
- AppLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AppLoaderComponent, selector: "app-loader", ngImport: i0, template: "<div class=\"overlay\">\n <mat-progress-spinner\n class=\"page-spinner\"\n mode=\"indeterminate\"\n [diameter]=\"120\"></mat-progress-spinner>\n</div>\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}\n"], dependencies: [{ kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None });
775
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppLoaderComponent, decorators: [{
776
- type: Component,
777
- args: [{ selector: 'app-loader', encapsulation: ViewEncapsulation.None, template: "<div class=\"overlay\">\n <mat-progress-spinner\n class=\"page-spinner\"\n mode=\"indeterminate\"\n [diameter]=\"120\"></mat-progress-spinner>\n</div>\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}\n"] }]
770
+ class AppLoaderComponent {
771
+ constructor() {
772
+ }
773
+ }
774
+ AppLoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
775
+ AppLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AppLoaderComponent, selector: "app-loader", ngImport: i0, template: "<div class=\"overlay\">\r\n <mat-progress-spinner\r\n class=\"page-spinner\"\r\n mode=\"indeterminate\"\r\n [diameter]=\"120\"></mat-progress-spinner>\r\n</div>\r\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}\n"], dependencies: [{ kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None });
776
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppLoaderComponent, decorators: [{
777
+ type: Component,
778
+ args: [{ selector: 'app-loader', encapsulation: ViewEncapsulation.None, template: "<div class=\"overlay\">\r\n <mat-progress-spinner\r\n class=\"page-spinner\"\r\n mode=\"indeterminate\"\r\n [diameter]=\"120\"></mat-progress-spinner>\r\n</div>\r\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}\n"] }]
778
779
  }], ctorParameters: function () { return []; } });
779
780
 
780
- var EntityChangeType;
781
- (function (EntityChangeType) {
782
- EntityChangeType["added"] = "added";
783
- EntityChangeType["updated"] = "updated";
784
- EntityChangeType["existing"] = "existing";
785
- EntityChangeType["removed"] = "removed";
786
- EntityChangeType["unassociated"] = "unassociated";
787
- })(EntityChangeType || (EntityChangeType = {}));
788
- var DnRangeType;
789
- (function (DnRangeType) {
790
- DnRangeType["extension"] = "EXTENSION";
791
- DnRangeType["cpg"] = "CPG";
792
- DnRangeType["callpark"] = "CALLPARK";
793
- DnRangeType["huntgroup"] = "HUNTGROUP";
794
- DnRangeType["meetme"] = "MEETME";
795
- DnRangeType["did"] = "DID";
781
+ var EntityChangeType;
782
+ (function (EntityChangeType) {
783
+ EntityChangeType["added"] = "added";
784
+ EntityChangeType["updated"] = "updated";
785
+ EntityChangeType["existing"] = "existing";
786
+ EntityChangeType["removed"] = "removed";
787
+ EntityChangeType["unassociated"] = "unassociated";
788
+ })(EntityChangeType || (EntityChangeType = {}));
789
+ var DnRangeType;
790
+ (function (DnRangeType) {
791
+ DnRangeType["extension"] = "EXTENSION";
792
+ DnRangeType["cpg"] = "CPG";
793
+ DnRangeType["callpark"] = "CALLPARK";
794
+ DnRangeType["huntgroup"] = "HUNTGROUP";
795
+ DnRangeType["meetme"] = "MEETME";
796
+ DnRangeType["did"] = "DID";
796
797
  })(DnRangeType || (DnRangeType = {}));
797
798
 
798
- class DnsService {
799
- constructor(apiService, apiWebexService) {
800
- this.apiService = apiService;
801
- this.apiWebexService = apiWebexService;
802
- this.availableNumbers = {};
803
- this.phoneNumbers = [];
804
- }
805
- getNumberRange(siteId, routePartition, withdids, from, pageSize) {
806
- var _a;
807
- // @ts-ignore
808
- if ((_a = this.availableNumbers[routePartition]) === null || _a === void 0 ? void 0 : _a.length) {
809
- return new Observable(observer => {
810
- // @ts-ignore
811
- observer.next(this.availableNumbers[routePartition]);
812
- });
813
- }
814
- this.availableDidPatternsMappedToDn = {};
815
- pageSize = pageSize ? pageSize : 20;
816
- const params = { dntype: DnRangeType.extension, routepartition: routePartition, size: pageSize, page: 0 };
817
- if (withdids) {
818
- // @ts-ignore
819
- params['withdids'] = 'true';
820
- }
821
- if (from) {
822
- // @ts-ignore
823
- params['from'] = from;
824
- }
825
- // @ts-ignore
826
- this.availableNumbers[routePartition] = this.availableNumbers[routePartition] || [];
827
- return this.apiService.fetch(API.AVAILABLE_DN_IN_RANGES.replace(':siteId', siteId), params)
828
- .pipe(map((res) => {
829
- res.availableNumberList.forEach((availableNumber) => {
830
- this.setAvailableDidMappedToDn(availableNumber);
831
- // @ts-ignore
832
- this.availableNumbers[routePartition] = [...this.availableNumbers[routePartition], ...this.getUnwrapNumberRange(availableNumber)];
833
- });
834
- }));
835
- // .pipe(this.handleError(true, false));
836
- }
837
- setAvailableDidMappedToDn(availableNumber) {
838
- if (availableNumber.unUsedNumbersWithDids && availableNumber.unUsedNumbersWithDids.length) {
839
- availableNumber.unUsedNumbersWithDids.forEach((numberWithDids) => {
840
- const dn = numberWithDids['unUsedNumber'];
841
- this.availableDidPatternsMappedToDn[dn] = [{}];
842
- if (numberWithDids['translationPatternList'] && numberWithDids['translationPatternList'].length > 0) {
843
- this.availableDidPatternsMappedToDn[dn] = numberWithDids['translationPatternList'];
844
- this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = [{}];
845
- if (numberWithDids['mappedDids'] && numberWithDids['mappedDids'].length > 0) {
846
- this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = numberWithDids['mappedDids'];
847
- }
848
- }
849
- this.availableDidPatternsMappedToDn[dn][0]['vm'] = numberWithDids['vm'];
850
- });
851
- }
852
- }
853
- getUnwrapNumberRange(availableNumber) {
854
- let unwrapNumberRange = this.unwrapNumberRange(availableNumber.phoneNumberRange.from, availableNumber.phoneNumberRange.to)
855
- .map((unwrappedNumber) => {
856
- const dn = availableNumber.phoneNumberRange.prefix + unwrappedNumber;
857
- let str = dn;
858
- if (this.availableDidPatternsMappedToDn[dn] && this.availableDidPatternsMappedToDn[dn].length > 0) {
859
- if (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] && this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 0) {
860
- str += ' DID: ' + (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 1 ? 'multiple' :
861
- this.availableDidPatternsMappedToDn[dn][0]['mappedDids'][0]);
862
- }
863
- if (this.availableDidPatternsMappedToDn[dn][0]['vm']) {
864
- str += ' In Use - VM';
865
- }
866
- }
867
- return str;
868
- });
869
- unwrapNumberRange = unwrapNumberRange.filter((unwrappedNumber) => !availableNumber.usedNumbers.includes(unwrappedNumber));
870
- return unwrapNumberRange;
871
- }
872
- unwrapNumberRange(start, end) {
873
- const regExp = /(^0+)/;
874
- let leadingZeros = '';
875
- const matches = start.match(regExp);
876
- if (matches) {
877
- leadingZeros = matches[1];
878
- }
879
- const startNumeric = new Big(start);
880
- const endNumeric = new Big(end);
881
- // @ts-ignore
882
- return Array.from({ length: (endNumeric.minus(startNumeric).plus(new Big(1)).toFixed(0)) }, (v, k) => {
883
- const number = String(startNumeric.plus(new Big(k)).toFixed(0));
884
- if ((leadingZeros + number).length > start.length) {
885
- leadingZeros = leadingZeros.substr(1);
886
- }
887
- return leadingZeros + number;
888
- });
889
- }
890
- fetchPhoneNumbers(customerId, locationId) {
891
- const params = {
892
- available: true,
893
- numberType: 'NUMBER'
894
- };
895
- return this.apiWebexService.fetch(API.PHONE_NUMBERS.replace(':customerId', String(customerId)).replace(':locationId', locationId), params)
896
- .pipe(map((result) => {
897
- if (result === null || result === void 0 ? void 0 : result.length) {
898
- this.phoneNumbers = result.map((item) => item.phoneNumber);
899
- }
900
- return result;
901
- }));
902
- }
903
- }
904
- DnsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DnsService, deps: [{ token: APIService }, { token: ApiWebexService }], target: i0.ɵɵFactoryTarget.Injectable });
905
- DnsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DnsService });
906
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DnsService, decorators: [{
907
- type: Injectable
799
+ class DnsService {
800
+ constructor(apiService, apiWebexService) {
801
+ this.apiService = apiService;
802
+ this.apiWebexService = apiWebexService;
803
+ this.availableNumbers = {};
804
+ this.phoneNumbers = [];
805
+ }
806
+ getNumberRange(siteId, routePartition, withdids, from, pageSize) {
807
+ var _a;
808
+ // @ts-ignore
809
+ if ((_a = this.availableNumbers[routePartition]) === null || _a === void 0 ? void 0 : _a.length) {
810
+ return new Observable(observer => {
811
+ // @ts-ignore
812
+ observer.next(this.availableNumbers[routePartition]);
813
+ });
814
+ }
815
+ this.availableDidPatternsMappedToDn = {};
816
+ pageSize = pageSize ? pageSize : 20;
817
+ const params = { dntype: DnRangeType.extension, routepartition: routePartition, size: pageSize, page: 0 };
818
+ if (withdids) {
819
+ // @ts-ignore
820
+ params['withdids'] = 'true';
821
+ }
822
+ if (from) {
823
+ // @ts-ignore
824
+ params['from'] = from;
825
+ }
826
+ // @ts-ignore
827
+ this.availableNumbers[routePartition] = this.availableNumbers[routePartition] || [];
828
+ return this.apiService.fetch(API.AVAILABLE_DN_IN_RANGES.replace(':siteId', siteId), params)
829
+ .pipe(map((res) => {
830
+ res.availableNumberList.forEach((availableNumber) => {
831
+ this.setAvailableDidMappedToDn(availableNumber);
832
+ // @ts-ignore
833
+ this.availableNumbers[routePartition] = [...this.availableNumbers[routePartition], ...this.getUnwrapNumberRange(availableNumber)];
834
+ });
835
+ }));
836
+ // .pipe(this.handleError(true, false));
837
+ }
838
+ setAvailableDidMappedToDn(availableNumber) {
839
+ if (availableNumber.unUsedNumbersWithDids && availableNumber.unUsedNumbersWithDids.length) {
840
+ availableNumber.unUsedNumbersWithDids.forEach((numberWithDids) => {
841
+ const dn = numberWithDids['unUsedNumber'];
842
+ this.availableDidPatternsMappedToDn[dn] = [{}];
843
+ if (numberWithDids['translationPatternList'] && numberWithDids['translationPatternList'].length > 0) {
844
+ this.availableDidPatternsMappedToDn[dn] = numberWithDids['translationPatternList'];
845
+ this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = [{}];
846
+ if (numberWithDids['mappedDids'] && numberWithDids['mappedDids'].length > 0) {
847
+ this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = numberWithDids['mappedDids'];
848
+ }
849
+ }
850
+ this.availableDidPatternsMappedToDn[dn][0]['vm'] = numberWithDids['vm'];
851
+ });
852
+ }
853
+ }
854
+ getUnwrapNumberRange(availableNumber) {
855
+ let unwrapNumberRange = this.unwrapNumberRange(availableNumber.phoneNumberRange.from, availableNumber.phoneNumberRange.to)
856
+ .map((unwrappedNumber) => {
857
+ const dn = availableNumber.phoneNumberRange.prefix + unwrappedNumber;
858
+ let str = dn;
859
+ if (this.availableDidPatternsMappedToDn[dn] && this.availableDidPatternsMappedToDn[dn].length > 0) {
860
+ if (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] && this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 0) {
861
+ str += ' DID: ' + (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 1 ? 'multiple' :
862
+ this.availableDidPatternsMappedToDn[dn][0]['mappedDids'][0]);
863
+ }
864
+ if (this.availableDidPatternsMappedToDn[dn][0]['vm']) {
865
+ str += ' In Use - VM';
866
+ }
867
+ }
868
+ return str;
869
+ });
870
+ unwrapNumberRange = unwrapNumberRange.filter((unwrappedNumber) => !availableNumber.usedNumbers.includes(unwrappedNumber));
871
+ return unwrapNumberRange;
872
+ }
873
+ unwrapNumberRange(start, end) {
874
+ const regExp = /(^0+)/;
875
+ let leadingZeros = '';
876
+ const matches = start.match(regExp);
877
+ if (matches) {
878
+ leadingZeros = matches[1];
879
+ }
880
+ const startNumeric = new Big(start);
881
+ const endNumeric = new Big(end);
882
+ // @ts-ignore
883
+ return Array.from({ length: (endNumeric.minus(startNumeric).plus(new Big(1)).toFixed(0)) }, (v, k) => {
884
+ const number = String(startNumeric.plus(new Big(k)).toFixed(0));
885
+ if ((leadingZeros + number).length > start.length) {
886
+ leadingZeros = leadingZeros.substr(1);
887
+ }
888
+ return leadingZeros + number;
889
+ });
890
+ }
891
+ fetchPhoneNumbers(customerId, locationId) {
892
+ const params = {
893
+ available: true,
894
+ numberType: 'NUMBER'
895
+ };
896
+ return this.apiWebexService.fetch(API.PHONE_NUMBERS.replace(':customerId', String(customerId)).replace(':locationId', locationId), params)
897
+ .pipe(map((result) => {
898
+ if (result === null || result === void 0 ? void 0 : result.length) {
899
+ this.phoneNumbers = result.map((item) => item.phoneNumber);
900
+ }
901
+ return result;
902
+ }));
903
+ }
904
+ }
905
+ DnsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DnsService, deps: [{ token: APIService }, { token: ApiWebexService }], target: i0.ɵɵFactoryTarget.Injectable });
906
+ DnsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DnsService });
907
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DnsService, decorators: [{
908
+ type: Injectable
908
909
  }], ctorParameters: function () { return [{ type: APIService }, { type: ApiWebexService }]; } });
909
910
 
910
- // for test only
911
- const LOCATION = 'Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzE2YjY0NjljLTBjZmQtNDJjMS1iOWJjLTUyN2FlZTNhN2RlOQ';
912
- class MoveUserStepperComponent {
913
- get currentNumber() {
914
- var _a, _b, _c;
915
- if (((_b = (_a = this.user) === null || _a === void 0 ? void 0 : _a.devices) === null || _b === void 0 ? void 0 : _b.length) && ((_c = this.user.devices[0]) === null || _c === void 0 ? void 0 : _c.lineAssociations) && this.user.devices[0].lineAssociations[0]) {
916
- return this.user.devices[0].lineAssociations[0].directoryNumber.directoryNumber;
917
- }
918
- return '';
919
- }
920
- constructor(dnsService) {
921
- this.dnsService = dnsService;
922
- this.runMoveUser = new EventEmitter();
923
- this.cancel = new EventEmitter();
924
- this.isLinear = true;
925
- this.phoneNumberPending = false;
926
- }
927
- ngOnInit() {
928
- if (this.user) {
929
- this.user.moveType = {
930
- phoneNumber: '1',
931
- extension: '1'
932
- };
933
- }
934
- }
935
- onStepChange(event) {
936
- // alert('step change ' + event.selectedIndex);
937
- /*if (event.selectedIndex === 4) {
938
- this.runMoveUser.emit();
939
- }*/
940
- }
941
- selectPhoneNumberMigrationType(event) {
942
- if (event.value && event.value === '2') {
943
- this.getPhoneNumbers();
944
- }
945
- }
946
- onPhoneNumberChange(event) {
947
- this.user.newNumber;
948
- }
949
- onExtensionCHange(event) {
950
- this.user.newExtension;
951
- }
952
- isFieldAvailable(type, value) {
953
- var _a;
954
- if ((_a = this.user) === null || _a === void 0 ? void 0 : _a.moveType) {
955
- return this.user.moveType[type] && this.user.moveType[type] === value;
956
- }
957
- return false;
958
- }
959
- getPhoneNumbers() {
960
- this.phoneNumberPending = true;
961
- this.dnsService.fetchPhoneNumbers(this.customerId, LOCATION)
962
- .subscribe(() => {
963
- this.phoneNumberPending = false;
964
- }, () => this.phoneNumberPending = false);
965
- }
966
- goNextStep(stepper) {
967
- /*const currentStep = stepper.selectedIndex;
968
-
969
- if (currentStep === 1) { stepper.selectedIndex = 3; }
970
- // else if (currentStep === 3) { stepper.selectedIndex = 0; }
971
-
972
- [
973
- stepper.steps.get(1),
974
- stepper.steps.get(2)
975
-
976
- ].map(step => step ? step.completed = true : undefined);*/
977
- }
978
- }
979
- MoveUserStepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserStepperComponent, deps: [{ token: DnsService }], target: i0.ɵɵFactoryTarget.Component });
980
- MoveUserStepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MoveUserStepperComponent, selector: "app-move-user-stepper", inputs: { user: "user", customerId: "customerId" }, outputs: { runMoveUser: "runMoveUser", cancel: "cancel" }, ngImport: i0, template: "<mat-stepper *ngIf=\"user?.moveType\" (selectionChange)=\"onStepChange($event)\" [linear]=\"isLinear\" labelPosition=\"bottom\" #stepper>\n <mat-step>\n <div class=\"step-title\">Step 1: Select location</div>\n<!-- <form>-->\n <ng-template matStepLabel>Select location</ng-template>\n <mat-label class=\"mat-label\">Phone number</mat-label>\n <mat-radio-group\n class=\"radio-group\"\n [(ngModel)]=\"user.moveType.phoneNumber\"\n name=\"phoneNumber\" (change)=\"selectPhoneNumberMigrationType($event)\">\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current number {{currentNumber}}</mat-radio-button>\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new number</mat-radio-button>\n\n <div *ngIf=\"user.moveType.phoneNumber === '2'\" class=\"select-container\">\n <mat-progress-spinner *ngIf=\"phoneNumberPending\"\n class=\"field-spinner\" mode=\"indeterminate\"\n [diameter]=\"30\"></mat-progress-spinner>\n\n <mat-select class=\"select\" placeholder=\"Select number\" [(ngModel)]=\"user.newNumber\"\n (selectionChange)=\"onPhoneNumberChange($event)\">\n <mat-option *ngFor=\"let option of dnsService.phoneNumbers\" value=\"option\">{{option}}</mat-option>\n </mat-select>\n </div>\n\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove number</mat-radio-button>\n </mat-radio-group>\n <mat-label class=\"mat-label\">Extension</mat-label>\n <mat-radio-group class=\"radio-group\" name=\"extension\"\n [(ngModel)]=\"user.moveType.extension\">\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current extension</mat-radio-button>\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new extension</mat-radio-button>\n <mat-form-field *ngIf=\"user.moveType.extension === '2'\" appearance=\"outline\">\n <input matInput type=\"text\" (change)=\"onExtensionCHange($event)\"\n [(ngModel)]=\"user.newExtension\"\n [placeholder]=\"'Enter extension'\" />\n </mat-form-field>\n\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove extension</mat-radio-button>\n </mat-radio-group>\n<!-- </form>-->\n <div class=\"step-actions\">\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\n <button mat-button class=\"webex-btn btn-cancel\" (click)=\"cancel.emit()\">Cancel</button>\n </div>\n </mat-step>\n <!--<mat-step [aria-labelledby]=\"true ? 'disabled_af' : null\">\n <div class=\"step-title\">Step 2: Device eligibility check</div>\n <ng-template matStepLabel>Device eligibility check</ng-template>\n <form></form>\n <div class=\"step-actions\">\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\n </div>\n </mat-step>-->\n <!--<mat-step [aria-labelledby]=\"true ? 'disabled_af' : null\">\n <div class=\"step-title\">Step 3: Validation</div>\n <form>\n <ng-template matStepLabel>Validation</ng-template>\n <mat-label class=\"mat-label\">Validation Success!</mat-label>\n <p class=\"validation-text\">There is no issue for moving this user to the new location, $MTlocationname. Please be aware of the changes below once the user is being moved to the new location.</p>\n <mat-label class=\"mat-label\">Expected changes</mat-label>\n <ul>\n <li>Tablet device (TABAVICK) needs to be reconfigured with Webex App. User will receive an email with link to download.</li>\n <li>Cisco 8875 (SEP751FC9BAB854) will not be migrated.</li>\n <li>The user will be removed from Call Park Group.</li>\n <li>If the device is using the location level device settings, the device will pick up the new location device settings once the user is moved. If some of the device settings are overwritten at the user level, these user level settings will be retained and the rest of the settings will be picked up at the higher level (organization or location) settings.</li>\n <li>If the current location has a different recording service from the one of the new location, the recording of this user may be lost after moving location.</li>\n </ul>\n <div>\n <mat-checkbox class=\"checkbox\" checked=\"true\" color=\"primary\">I confirm that I understand these conditions. I acknowledge the changes.</mat-checkbox>\n </div>\n </form>\n <div class=\"step-actions\">\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\n </div>\n </mat-step>-->\n <mat-step>\n <div class=\"step-title\">Step 2: Result</div>\n <ng-template matStepLabel>Result</ng-template>\n <form>\n <mat-label class=\"mat-label\">Moving user has been successfully initiated!</mat-label>\n <p class=\"validation-text\">\n The user will be moved to the new location, $MTlocationname.\n <br>\n For the progress of move, please visit the <a class=\"form-link\" href=\"#\">user details</a>.\n </p>\n </form>\n <div class=\"step-actions\">\n <button mat-button class=\"webex-btn btn-done\" matStepperNext (click)=\"runMoveUser.emit()\">Done</button>\n </div>\n </mat-step>\n </mat-stepper>\n", styles: [".mat-stepper-horizontal{height:-moz-fit-content;height:fit-content;max-height:750px;margin:0 auto;width:70%;background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container{margin:0 auto;width:800px}.mat-stepper-horizontal .mat-step-icon{width:18px;height:18px;border:3px solid hsl(0,0%,50.2%)}.mat-stepper-horizontal .mat-step-icon-selected{background-color:#c6c6c6!important;border-color:#19487d}.mat-stepper-horizontal .mat-step-icon-state-number{background-color:#fff}.mat-stepper-horizontal .mat-step-icon-state-edit,.mat-stepper-horizontal .mat-step-header .mat-step-icon-state-done{background-color:#1170cf;border-color:#1170cf}.mat-stepper-horizontal .mat-step-icon-content{display:none}.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):before,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):before,.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):after,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):after{border-top-width:3px!important}.mat-stepper-horizontal .mat-horizontal-stepper-header:before,.mat-stepper-horizontal .mat-horizontal-stepper-header:after,.mat-stepper-horizontal .mat-stepper-horizontal-line{border-top-width:3px!important;background-color:#7b7b7b}::ng-deep .mat-step-header[aria-labelledby=disabled_af]{pointer-events:none!important;cursor:not-allowed}::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-icon,::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-label{cursor:not-allowed;opacity:.6}.mat-mdc-form-field{margin-top:16px}.mat-label{font-size:16px;font-weight:600;margin:1rem 0}.step-title{font-size:28px;font-weight:700;margin:.5rem 0 1.5rem 2rem}.validation-text{margin-top:.5rem;margin-bottom:2rem}ul{padding:.5rem 2rem;margin-top:.5rem;margin-bottom:2rem}form{background-color:#fff;padding:2.5rem;height:350px;max-height:700px;border-radius:.5rem}.form-link{text-decoration:none;color:#007bff}.radio-group{display:flex;flex-direction:column;margin:15px 0;align-items:flex-start}.radio-button{margin:.5rem 0}.select{width:350px;padding:.5rem;margin:.5rem 0;border:1px solid #a0a0a0;border-radius:.5rem}.step-actions{display:flex;flex-flow:row-reverse;margin-top:2rem;gap:1rem}.webex-btn{border:1px solid black;border-radius:1rem;cursor:pointer;gap:1rem}.btn-next{background-color:#000;color:#fff}.btn-cancel,.btn-done{background-color:#fff;color:#000}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center}.icon-close{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M12.0005 13.0538L6.92737 18.1269C6.78892 18.2654 6.61489 18.3362 6.40527 18.3394C6.19567 18.3426 6.01844 18.2718 5.87357 18.1269C5.72869 17.982 5.65625 17.8064 5.65625 17.6C5.65625 17.3936 5.72869 17.218 5.87357 17.0731L10.9466 12L5.87357 6.92689C5.73511 6.78844 5.66427 6.6144 5.66107 6.40479C5.65786 6.19519 5.72869 6.01795 5.87357 5.87309C6.01844 5.7282 6.19407 5.65576 6.40047 5.65576C6.60687 5.65576 6.78251 5.7282 6.92737 5.87309L12.0005 10.9462L17.0736 5.87309C17.212 5.73462 17.3861 5.66379 17.5957 5.66059C17.8053 5.65737 17.9825 5.7282 18.1274 5.87309C18.2723 6.01795 18.3447 6.19359 18.3447 6.39999C18.3447 6.60639 18.2723 6.78202 18.1274 6.92689L13.0543 12L18.1274 17.0731C18.2658 17.2115 18.3367 17.3856 18.3399 17.5952C18.3431 17.8048 18.2723 17.982 18.1274 18.1269C17.9825 18.2718 17.8069 18.3442 17.6005 18.3442C17.3941 18.3442 17.2184 18.2718 17.0736 18.1269L12.0005 13.0538Z%22 fill%3D%22%23333333%22%2F%3E%3C%2Fsvg%3E\")}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i6$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i9.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i9.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i9.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i9.MatStepperNext, selector: "button[matStepperNext]", inputs: ["type"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "directive", type: i11.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i11.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }] });
981
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserStepperComponent, decorators: [{
982
- type: Component,
983
- args: [{ selector: 'app-move-user-stepper', template: "<mat-stepper *ngIf=\"user?.moveType\" (selectionChange)=\"onStepChange($event)\" [linear]=\"isLinear\" labelPosition=\"bottom\" #stepper>\n <mat-step>\n <div class=\"step-title\">Step 1: Select location</div>\n<!-- <form>-->\n <ng-template matStepLabel>Select location</ng-template>\n <mat-label class=\"mat-label\">Phone number</mat-label>\n <mat-radio-group\n class=\"radio-group\"\n [(ngModel)]=\"user.moveType.phoneNumber\"\n name=\"phoneNumber\" (change)=\"selectPhoneNumberMigrationType($event)\">\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current number {{currentNumber}}</mat-radio-button>\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new number</mat-radio-button>\n\n <div *ngIf=\"user.moveType.phoneNumber === '2'\" class=\"select-container\">\n <mat-progress-spinner *ngIf=\"phoneNumberPending\"\n class=\"field-spinner\" mode=\"indeterminate\"\n [diameter]=\"30\"></mat-progress-spinner>\n\n <mat-select class=\"select\" placeholder=\"Select number\" [(ngModel)]=\"user.newNumber\"\n (selectionChange)=\"onPhoneNumberChange($event)\">\n <mat-option *ngFor=\"let option of dnsService.phoneNumbers\" value=\"option\">{{option}}</mat-option>\n </mat-select>\n </div>\n\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove number</mat-radio-button>\n </mat-radio-group>\n <mat-label class=\"mat-label\">Extension</mat-label>\n <mat-radio-group class=\"radio-group\" name=\"extension\"\n [(ngModel)]=\"user.moveType.extension\">\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current extension</mat-radio-button>\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new extension</mat-radio-button>\n <mat-form-field *ngIf=\"user.moveType.extension === '2'\" appearance=\"outline\">\n <input matInput type=\"text\" (change)=\"onExtensionCHange($event)\"\n [(ngModel)]=\"user.newExtension\"\n [placeholder]=\"'Enter extension'\" />\n </mat-form-field>\n\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove extension</mat-radio-button>\n </mat-radio-group>\n<!-- </form>-->\n <div class=\"step-actions\">\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\n <button mat-button class=\"webex-btn btn-cancel\" (click)=\"cancel.emit()\">Cancel</button>\n </div>\n </mat-step>\n <!--<mat-step [aria-labelledby]=\"true ? 'disabled_af' : null\">\n <div class=\"step-title\">Step 2: Device eligibility check</div>\n <ng-template matStepLabel>Device eligibility check</ng-template>\n <form></form>\n <div class=\"step-actions\">\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\n </div>\n </mat-step>-->\n <!--<mat-step [aria-labelledby]=\"true ? 'disabled_af' : null\">\n <div class=\"step-title\">Step 3: Validation</div>\n <form>\n <ng-template matStepLabel>Validation</ng-template>\n <mat-label class=\"mat-label\">Validation Success!</mat-label>\n <p class=\"validation-text\">There is no issue for moving this user to the new location, $MTlocationname. Please be aware of the changes below once the user is being moved to the new location.</p>\n <mat-label class=\"mat-label\">Expected changes</mat-label>\n <ul>\n <li>Tablet device (TABAVICK) needs to be reconfigured with Webex App. User will receive an email with link to download.</li>\n <li>Cisco 8875 (SEP751FC9BAB854) will not be migrated.</li>\n <li>The user will be removed from Call Park Group.</li>\n <li>If the device is using the location level device settings, the device will pick up the new location device settings once the user is moved. If some of the device settings are overwritten at the user level, these user level settings will be retained and the rest of the settings will be picked up at the higher level (organization or location) settings.</li>\n <li>If the current location has a different recording service from the one of the new location, the recording of this user may be lost after moving location.</li>\n </ul>\n <div>\n <mat-checkbox class=\"checkbox\" checked=\"true\" color=\"primary\">I confirm that I understand these conditions. I acknowledge the changes.</mat-checkbox>\n </div>\n </form>\n <div class=\"step-actions\">\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\n </div>\n </mat-step>-->\n <mat-step>\n <div class=\"step-title\">Step 2: Result</div>\n <ng-template matStepLabel>Result</ng-template>\n <form>\n <mat-label class=\"mat-label\">Moving user has been successfully initiated!</mat-label>\n <p class=\"validation-text\">\n The user will be moved to the new location, $MTlocationname.\n <br>\n For the progress of move, please visit the <a class=\"form-link\" href=\"#\">user details</a>.\n </p>\n </form>\n <div class=\"step-actions\">\n <button mat-button class=\"webex-btn btn-done\" matStepperNext (click)=\"runMoveUser.emit()\">Done</button>\n </div>\n </mat-step>\n </mat-stepper>\n", styles: [".mat-stepper-horizontal{height:-moz-fit-content;height:fit-content;max-height:750px;margin:0 auto;width:70%;background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container{margin:0 auto;width:800px}.mat-stepper-horizontal .mat-step-icon{width:18px;height:18px;border:3px solid hsl(0,0%,50.2%)}.mat-stepper-horizontal .mat-step-icon-selected{background-color:#c6c6c6!important;border-color:#19487d}.mat-stepper-horizontal .mat-step-icon-state-number{background-color:#fff}.mat-stepper-horizontal .mat-step-icon-state-edit,.mat-stepper-horizontal .mat-step-header .mat-step-icon-state-done{background-color:#1170cf;border-color:#1170cf}.mat-stepper-horizontal .mat-step-icon-content{display:none}.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):before,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):before,.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):after,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):after{border-top-width:3px!important}.mat-stepper-horizontal .mat-horizontal-stepper-header:before,.mat-stepper-horizontal .mat-horizontal-stepper-header:after,.mat-stepper-horizontal .mat-stepper-horizontal-line{border-top-width:3px!important;background-color:#7b7b7b}::ng-deep .mat-step-header[aria-labelledby=disabled_af]{pointer-events:none!important;cursor:not-allowed}::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-icon,::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-label{cursor:not-allowed;opacity:.6}.mat-mdc-form-field{margin-top:16px}.mat-label{font-size:16px;font-weight:600;margin:1rem 0}.step-title{font-size:28px;font-weight:700;margin:.5rem 0 1.5rem 2rem}.validation-text{margin-top:.5rem;margin-bottom:2rem}ul{padding:.5rem 2rem;margin-top:.5rem;margin-bottom:2rem}form{background-color:#fff;padding:2.5rem;height:350px;max-height:700px;border-radius:.5rem}.form-link{text-decoration:none;color:#007bff}.radio-group{display:flex;flex-direction:column;margin:15px 0;align-items:flex-start}.radio-button{margin:.5rem 0}.select{width:350px;padding:.5rem;margin:.5rem 0;border:1px solid #a0a0a0;border-radius:.5rem}.step-actions{display:flex;flex-flow:row-reverse;margin-top:2rem;gap:1rem}.webex-btn{border:1px solid black;border-radius:1rem;cursor:pointer;gap:1rem}.btn-next{background-color:#000;color:#fff}.btn-cancel,.btn-done{background-color:#fff;color:#000}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center}.icon-close{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M12.0005 13.0538L6.92737 18.1269C6.78892 18.2654 6.61489 18.3362 6.40527 18.3394C6.19567 18.3426 6.01844 18.2718 5.87357 18.1269C5.72869 17.982 5.65625 17.8064 5.65625 17.6C5.65625 17.3936 5.72869 17.218 5.87357 17.0731L10.9466 12L5.87357 6.92689C5.73511 6.78844 5.66427 6.6144 5.66107 6.40479C5.65786 6.19519 5.72869 6.01795 5.87357 5.87309C6.01844 5.7282 6.19407 5.65576 6.40047 5.65576C6.60687 5.65576 6.78251 5.7282 6.92737 5.87309L12.0005 10.9462L17.0736 5.87309C17.212 5.73462 17.3861 5.66379 17.5957 5.66059C17.8053 5.65737 17.9825 5.7282 18.1274 5.87309C18.2723 6.01795 18.3447 6.19359 18.3447 6.39999C18.3447 6.60639 18.2723 6.78202 18.1274 6.92689L13.0543 12L18.1274 17.0731C18.2658 17.2115 18.3367 17.3856 18.3399 17.5952C18.3431 17.8048 18.2723 17.982 18.1274 18.1269C17.9825 18.2718 17.8069 18.3442 17.6005 18.3442C17.3941 18.3442 17.2184 18.2718 17.0736 18.1269L12.0005 13.0538Z%22 fill%3D%22%23333333%22%2F%3E%3C%2Fsvg%3E\")}\n"] }]
984
- }], ctorParameters: function () { return [{ type: DnsService }]; }, propDecorators: { user: [{
985
- type: Input
986
- }], customerId: [{
987
- type: Input
988
- }], runMoveUser: [{
989
- type: Output
990
- }], cancel: [{
991
- type: Output
911
+ // for test only
912
+ const LOCATION = 'Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzE2YjY0NjljLTBjZmQtNDJjMS1iOWJjLTUyN2FlZTNhN2RlOQ';
913
+ class MoveUserStepperComponent {
914
+ get currentNumber() {
915
+ var _a, _b, _c;
916
+ if (((_b = (_a = this.user) === null || _a === void 0 ? void 0 : _a.devices) === null || _b === void 0 ? void 0 : _b.length) && ((_c = this.user.devices[0]) === null || _c === void 0 ? void 0 : _c.lineAssociations) && this.user.devices[0].lineAssociations[0]) {
917
+ return this.user.devices[0].lineAssociations[0].directoryNumber.directoryNumber;
918
+ }
919
+ return '';
920
+ }
921
+ constructor(dnsService) {
922
+ this.dnsService = dnsService;
923
+ this.runMoveUser = new EventEmitter();
924
+ this.cancel = new EventEmitter();
925
+ this.isLinear = false;
926
+ this.phoneNumberPending = false;
927
+ }
928
+ ngOnInit() {
929
+ if (this.user) {
930
+ this.user.moveType = {
931
+ phoneNumber: '1',
932
+ extension: '1'
933
+ };
934
+ }
935
+ }
936
+ onStepChange(event) {
937
+ // alert('step change ' + event.selectedIndex);
938
+ /*if (event.selectedIndex === 4) {
939
+ this.runMoveUser.emit();
940
+ }*/
941
+ }
942
+ selectPhoneNumberMigrationType(event) {
943
+ if (event.value && event.value === '2') {
944
+ this.getPhoneNumbers();
945
+ }
946
+ }
947
+ onPhoneNumberChange(event) {
948
+ this.user.newNumber;
949
+ }
950
+ onExtensionCHange(event) {
951
+ this.user.newExtension;
952
+ }
953
+ isFieldAvailable(type, value) {
954
+ var _a;
955
+ if ((_a = this.user) === null || _a === void 0 ? void 0 : _a.moveType) {
956
+ return this.user.moveType[type] && this.user.moveType[type] === value;
957
+ }
958
+ return false;
959
+ }
960
+ getPhoneNumbers() {
961
+ this.phoneNumberPending = true;
962
+ this.dnsService.fetchPhoneNumbers(this.customerId, LOCATION)
963
+ .subscribe(() => {
964
+ this.phoneNumberPending = false;
965
+ }, () => this.phoneNumberPending = false);
966
+ }
967
+ goNextStep(stepper) {
968
+ const currentStep = stepper.selectedIndex;
969
+ if (currentStep === 1) {
970
+ stepper.selectedIndex = 3;
971
+ }
972
+ // else if (currentStep === 3) { stepper.selectedIndex = 0; }
973
+ [
974
+ stepper.steps.get(1),
975
+ stepper.steps.get(2)
976
+ ].map(step => step ? step.completed = true : undefined);
977
+ }
978
+ }
979
+ MoveUserStepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserStepperComponent, deps: [{ token: DnsService }], target: i0.ɵɵFactoryTarget.Component });
980
+ MoveUserStepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MoveUserStepperComponent, selector: "app-move-user-stepper", inputs: { user: "user", customerId: "customerId" }, outputs: { runMoveUser: "runMoveUser", cancel: "cancel" }, ngImport: i0, template: "<mat-stepper *ngIf=\"user?.moveType\" [linear]=\"isLinear\" labelPosition=\"bottom\" #stepper>\r\n <mat-step>\r\n <div class=\"step-title\">Step 1: Select location</div>\r\n<!-- <form>-->\r\n <ng-template matStepLabel>Select location</ng-template>\r\n <mat-label class=\"mat-label\">Phone number</mat-label>\r\n <mat-radio-group\r\n class=\"radio-group\"\r\n [(ngModel)]=\"user.moveType.phoneNumber\"\r\n name=\"phoneNumber\" (change)=\"selectPhoneNumberMigrationType($event)\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current number {{currentNumber}}</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new number</mat-radio-button>\r\n\r\n <div *ngIf=\"user.moveType.phoneNumber === '2'\" class=\"select-container\">\r\n <mat-progress-spinner *ngIf=\"phoneNumberPending\"\r\n class=\"field-spinner\" mode=\"indeterminate\"\r\n [diameter]=\"30\"></mat-progress-spinner>\r\n\r\n <mat-select class=\"select\" placeholder=\"Select number\" [(ngModel)]=\"user.newNumber\"\r\n (selectionChange)=\"onPhoneNumberChange($event)\">\r\n <mat-option *ngFor=\"let option of dnsService.phoneNumbers\" value=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove number</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-label class=\"mat-label\">Extension</mat-label>\r\n <mat-radio-group class=\"radio-group\" name=\"extension\"\r\n [(ngModel)]=\"user.moveType.extension\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current extension</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new extension</mat-radio-button>\r\n <mat-form-field *ngIf=\"user.moveType.extension === '2'\" appearance=\"outline\">\r\n <input matInput type=\"text\" (change)=\"onExtensionCHange($event)\"\r\n [(ngModel)]=\"user.newExtension\"\r\n [placeholder]=\"'Enter extension'\" />\r\n </mat-form-field>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove extension</mat-radio-button>\r\n </mat-radio-group>\r\n<!-- </form>-->\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" (click)=\"cancel.emit()\">Cancel</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 2: Device eligibility check</div>\r\n <ng-template matStepLabel>Device eligibility check</ng-template>\r\n <form></form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 3: Validation</div>\r\n <form>\r\n <ng-template matStepLabel>Validation</ng-template>\r\n <mat-label class=\"mat-label\">Validation Success!</mat-label>\r\n <p class=\"validation-text\">There is no issue for moving this user to the new location, $MTlocationname. Please be aware of the changes below once the user is being moved to the new location.</p>\r\n <mat-label class=\"mat-label\">Expected changes</mat-label>\r\n <ul>\r\n <li>Tablet device (TABAVICK) needs to be reconfigured with Webex App. User will receive an email with link to download.</li>\r\n <li>Cisco 8875 (SEP751FC9BAB854) will not be migrated.</li>\r\n <li>The user will be removed from Call Park Group.</li>\r\n <li>If the device is using the location level device settings, the device will pick up the new location device settings once the user is moved. If some of the device settings are overwritten at the user level, these user level settings will be retained and the rest of the settings will be picked up at the higher level (organization or location) settings.</li>\r\n <li>If the current location has a different recording service from the one of the new location, the recording of this user may be lost after moving location.</li>\r\n </ul>\r\n <div>\r\n <mat-checkbox class=\"checkbox\" checked=\"true\" color=\"primary\">I confirm that I understand these conditions. I acknowledge the changes.</mat-checkbox>\r\n </div>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step>\r\n <div class=\"step-title\">Step 2: Result</div>\r\n <ng-template matStepLabel>Result</ng-template>\r\n <form>\r\n <mat-label class=\"mat-label\">Moving user has been successfully initiated!</mat-label>\r\n <p class=\"validation-text\">\r\n The user will be moved to the new location, Paris.\r\n <br>\r\n For the progress of move, please visit the <a class=\"form-link\" href=\"#\">user details</a>.\r\n </p>\r\n </form>\r\n <div class=\"step-actions\">\r\n<!-- <button mat-button class=\"webex-btn btn-done\" matStepperNext (click)=\"cancel.emit()\">Done</button>-->\r\n <button mat-button class=\"webex-btn btn-done\" matStepperNext (click)=\"runMoveUser.emit()\">Done</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n </mat-stepper>\r\n", styles: [".mat-stepper-horizontal{height:-moz-fit-content;height:fit-content;max-height:750px;margin:0 auto;width:70%;background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container{margin:0 auto;width:800px}.mat-stepper-horizontal .mat-step-icon{width:18px;height:18px;border:3px solid hsl(0,0%,50.2%)}.mat-stepper-horizontal .mat-step-icon-selected{background-color:#c6c6c6!important;border-color:#19487d}.mat-stepper-horizontal .mat-step-icon-state-number{background-color:#fff}.mat-stepper-horizontal .mat-step-icon-state-edit,.mat-stepper-horizontal .mat-step-header .mat-step-icon-state-done{background-color:#1170cf;border-color:#1170cf}.mat-stepper-horizontal .mat-step-icon-content{display:none}.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):before,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):before,.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):after,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):after{border-top-width:3px!important}.mat-stepper-horizontal .mat-horizontal-stepper-header:before,.mat-stepper-horizontal .mat-horizontal-stepper-header:after,.mat-stepper-horizontal .mat-stepper-horizontal-line{border-top-width:3px!important;background-color:#7b7b7b}::ng-deep .mat-step-header[aria-labelledby=disabled_af]{pointer-events:none!important;cursor:not-allowed}::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-icon,::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-label{cursor:not-allowed;opacity:.6}.mat-mdc-form-field{margin-top:16px}.mat-label{font-size:16px;font-weight:600;margin:1rem 0}.step-title{font-size:28px;font-weight:700;margin:.5rem 0 1.5rem 2rem}.validation-text{margin-top:.5rem;margin-bottom:2rem}ul{padding:.5rem 2rem;margin-top:.5rem;margin-bottom:2rem}form{background-color:#fff;padding:2.5rem;min-height:350px;border-radius:.5rem}.form-link{text-decoration:none;color:#007bff}.radio-group{display:flex;flex-direction:column;margin:15px 0;align-items:flex-start}.radio-button{margin:.5rem 0}.select{width:350px;padding:.5rem;margin:.5rem 0;border:1px solid #a0a0a0;border-radius:.5rem}.step-actions{display:flex;flex-flow:row-reverse;margin-top:2rem;gap:1rem}.webex-btn{border:1px solid black;border-radius:1rem;cursor:pointer;gap:1rem}.btn-next{background-color:#000;color:#fff}.btn-cancel,.btn-done{background-color:#fff;color:#000}.select-container{position:relative}.select-container .mat-progress-spinner{position:absolute;left:45%;top:35px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i6$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i9.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i9.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i9.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i9.MatStepperNext, selector: "button[matStepperNext]", inputs: ["type"] }, { kind: "directive", type: i9.MatStepperPrevious, selector: "button[matStepperPrevious]", inputs: ["type"] }, { kind: "component", type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "directive", type: i12.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i12.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }] });
981
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserStepperComponent, decorators: [{
982
+ type: Component,
983
+ args: [{ selector: 'app-move-user-stepper', template: "<mat-stepper *ngIf=\"user?.moveType\" [linear]=\"isLinear\" labelPosition=\"bottom\" #stepper>\r\n <mat-step>\r\n <div class=\"step-title\">Step 1: Select location</div>\r\n<!-- <form>-->\r\n <ng-template matStepLabel>Select location</ng-template>\r\n <mat-label class=\"mat-label\">Phone number</mat-label>\r\n <mat-radio-group\r\n class=\"radio-group\"\r\n [(ngModel)]=\"user.moveType.phoneNumber\"\r\n name=\"phoneNumber\" (change)=\"selectPhoneNumberMigrationType($event)\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current number {{currentNumber}}</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new number</mat-radio-button>\r\n\r\n <div *ngIf=\"user.moveType.phoneNumber === '2'\" class=\"select-container\">\r\n <mat-progress-spinner *ngIf=\"phoneNumberPending\"\r\n class=\"field-spinner\" mode=\"indeterminate\"\r\n [diameter]=\"30\"></mat-progress-spinner>\r\n\r\n <mat-select class=\"select\" placeholder=\"Select number\" [(ngModel)]=\"user.newNumber\"\r\n (selectionChange)=\"onPhoneNumberChange($event)\">\r\n <mat-option *ngFor=\"let option of dnsService.phoneNumbers\" value=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove number</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-label class=\"mat-label\">Extension</mat-label>\r\n <mat-radio-group class=\"radio-group\" name=\"extension\"\r\n [(ngModel)]=\"user.moveType.extension\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current extension</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new extension</mat-radio-button>\r\n <mat-form-field *ngIf=\"user.moveType.extension === '2'\" appearance=\"outline\">\r\n <input matInput type=\"text\" (change)=\"onExtensionCHange($event)\"\r\n [(ngModel)]=\"user.newExtension\"\r\n [placeholder]=\"'Enter extension'\" />\r\n </mat-form-field>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove extension</mat-radio-button>\r\n </mat-radio-group>\r\n<!-- </form>-->\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" (click)=\"cancel.emit()\">Cancel</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 2: Device eligibility check</div>\r\n <ng-template matStepLabel>Device eligibility check</ng-template>\r\n <form></form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 3: Validation</div>\r\n <form>\r\n <ng-template matStepLabel>Validation</ng-template>\r\n <mat-label class=\"mat-label\">Validation Success!</mat-label>\r\n <p class=\"validation-text\">There is no issue for moving this user to the new location, $MTlocationname. Please be aware of the changes below once the user is being moved to the new location.</p>\r\n <mat-label class=\"mat-label\">Expected changes</mat-label>\r\n <ul>\r\n <li>Tablet device (TABAVICK) needs to be reconfigured with Webex App. User will receive an email with link to download.</li>\r\n <li>Cisco 8875 (SEP751FC9BAB854) will not be migrated.</li>\r\n <li>The user will be removed from Call Park Group.</li>\r\n <li>If the device is using the location level device settings, the device will pick up the new location device settings once the user is moved. If some of the device settings are overwritten at the user level, these user level settings will be retained and the rest of the settings will be picked up at the higher level (organization or location) settings.</li>\r\n <li>If the current location has a different recording service from the one of the new location, the recording of this user may be lost after moving location.</li>\r\n </ul>\r\n <div>\r\n <mat-checkbox class=\"checkbox\" checked=\"true\" color=\"primary\">I confirm that I understand these conditions. I acknowledge the changes.</mat-checkbox>\r\n </div>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step>\r\n <div class=\"step-title\">Step 2: Result</div>\r\n <ng-template matStepLabel>Result</ng-template>\r\n <form>\r\n <mat-label class=\"mat-label\">Moving user has been successfully initiated!</mat-label>\r\n <p class=\"validation-text\">\r\n The user will be moved to the new location, Paris.\r\n <br>\r\n For the progress of move, please visit the <a class=\"form-link\" href=\"#\">user details</a>.\r\n </p>\r\n </form>\r\n <div class=\"step-actions\">\r\n<!-- <button mat-button class=\"webex-btn btn-done\" matStepperNext (click)=\"cancel.emit()\">Done</button>-->\r\n <button mat-button class=\"webex-btn btn-done\" matStepperNext (click)=\"runMoveUser.emit()\">Done</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n </mat-stepper>\r\n", styles: [".mat-stepper-horizontal{height:-moz-fit-content;height:fit-content;max-height:750px;margin:0 auto;width:70%;background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container{margin:0 auto;width:800px}.mat-stepper-horizontal .mat-step-icon{width:18px;height:18px;border:3px solid hsl(0,0%,50.2%)}.mat-stepper-horizontal .mat-step-icon-selected{background-color:#c6c6c6!important;border-color:#19487d}.mat-stepper-horizontal .mat-step-icon-state-number{background-color:#fff}.mat-stepper-horizontal .mat-step-icon-state-edit,.mat-stepper-horizontal .mat-step-header .mat-step-icon-state-done{background-color:#1170cf;border-color:#1170cf}.mat-stepper-horizontal .mat-step-icon-content{display:none}.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):before,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):before,.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):after,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):after{border-top-width:3px!important}.mat-stepper-horizontal .mat-horizontal-stepper-header:before,.mat-stepper-horizontal .mat-horizontal-stepper-header:after,.mat-stepper-horizontal .mat-stepper-horizontal-line{border-top-width:3px!important;background-color:#7b7b7b}::ng-deep .mat-step-header[aria-labelledby=disabled_af]{pointer-events:none!important;cursor:not-allowed}::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-icon,::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-label{cursor:not-allowed;opacity:.6}.mat-mdc-form-field{margin-top:16px}.mat-label{font-size:16px;font-weight:600;margin:1rem 0}.step-title{font-size:28px;font-weight:700;margin:.5rem 0 1.5rem 2rem}.validation-text{margin-top:.5rem;margin-bottom:2rem}ul{padding:.5rem 2rem;margin-top:.5rem;margin-bottom:2rem}form{background-color:#fff;padding:2.5rem;min-height:350px;border-radius:.5rem}.form-link{text-decoration:none;color:#007bff}.radio-group{display:flex;flex-direction:column;margin:15px 0;align-items:flex-start}.radio-button{margin:.5rem 0}.select{width:350px;padding:.5rem;margin:.5rem 0;border:1px solid #a0a0a0;border-radius:.5rem}.step-actions{display:flex;flex-flow:row-reverse;margin-top:2rem;gap:1rem}.webex-btn{border:1px solid black;border-radius:1rem;cursor:pointer;gap:1rem}.btn-next{background-color:#000;color:#fff}.btn-cancel,.btn-done{background-color:#fff;color:#000}.select-container{position:relative}.select-container .mat-progress-spinner{position:absolute;left:45%;top:35px}\n"] }]
984
+ }], ctorParameters: function () { return [{ type: DnsService }]; }, propDecorators: { user: [{
985
+ type: Input
986
+ }], customerId: [{
987
+ type: Input
988
+ }], runMoveUser: [{
989
+ type: Output
990
+ }], cancel: [{
991
+ type: Output
992
992
  }] } });
993
993
 
994
- class MoveUserWizardComponent {
995
- constructor(dnsService) {
996
- this.dnsService = dnsService;
997
- this.closeMoveUserWizard = new EventEmitter();
998
- this.runMoveUser = new EventEmitter();
999
- this.dataPending = false;
1000
- }
1001
- onClose() {
1002
- this.closeMoveUserWizard.emit();
1003
- }
1004
- onRunMoveUser() {
1005
- this.runMoveUser.emit();
1006
- }
1007
- }
1008
- MoveUserWizardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserWizardComponent, deps: [{ token: DnsService }], target: i0.ɵɵFactoryTarget.Component });
1009
- MoveUserWizardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MoveUserWizardComponent, selector: "app-move-user-wizard", inputs: { user: "user", customerId: "customerId" }, outputs: { closeMoveUserWizard: "closeMoveUserWizard", runMoveUser: "runMoveUser" }, ngImport: i0, template: "<app-loader *ngIf=\"dataPending\"></app-loader>\n<div class=\"move-user-stepper-container\">\n <header class=\"move-user-header\">\n <div class=\"move-user-header__title\">Move User</div>\n <div class=\"move-user-header__close\">\n <span class=\"app-icon icon-close\" (click)=\"onClose()\"></span>\n </div>\n </header>\n <app-move-user-stepper *ngIf=\"user\" [customerId]=\"customerId\" [user]=\"user\" (cancel)=\"onClose()\"\n (runMoveUser)=\"onRunMoveUser()\"></app-move-user-stepper>\n</div>\n", styles: [".move-user-header{background-color:#1170cf;height:45px;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;color:#fff;font-size:18px;font-weight:500}.move-user-header__close{cursor:pointer}.move-user-header__close i{font-size:25px;font-weight:100}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center}.icon-close{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M12.0005 13.0538L6.92737 18.1269C6.78892 18.2654 6.61489 18.3362 6.40527 18.3394C6.19567 18.3426 6.01844 18.2718 5.87357 18.1269C5.72869 17.982 5.65625 17.8064 5.65625 17.6C5.65625 17.3936 5.72869 17.218 5.87357 17.0731L10.9466 12L5.87357 6.92689C5.73511 6.78844 5.66427 6.6144 5.66107 6.40479C5.65786 6.19519 5.72869 6.01795 5.87357 5.87309C6.01844 5.7282 6.19407 5.65576 6.40047 5.65576C6.60687 5.65576 6.78251 5.7282 6.92737 5.87309L12.0005 10.9462L17.0736 5.87309C17.212 5.73462 17.3861 5.66379 17.5957 5.66059C17.8053 5.65737 17.9825 5.7282 18.1274 5.87309C18.2723 6.01795 18.3447 6.19359 18.3447 6.39999C18.3447 6.60639 18.2723 6.78202 18.1274 6.92689L13.0543 12L18.1274 17.0731C18.2658 17.2115 18.3367 17.3856 18.3399 17.5952C18.3431 17.8048 18.2723 17.982 18.1274 18.1269C17.9825 18.2718 17.8069 18.3442 17.6005 18.3442C17.3941 18.3442 17.2184 18.2718 17.0736 18.1269L12.0005 13.0538Z%22 fill%3D%22%23333333%22%2F%3E%3C%2Fsvg%3E\")}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AppLoaderComponent, selector: "app-loader" }, { kind: "component", type: MoveUserStepperComponent, selector: "app-move-user-stepper", inputs: ["user", "customerId"], outputs: ["runMoveUser", "cancel"] }] });
1010
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserWizardComponent, decorators: [{
1011
- type: Component,
1012
- args: [{ selector: 'app-move-user-wizard', template: "<app-loader *ngIf=\"dataPending\"></app-loader>\n<div class=\"move-user-stepper-container\">\n <header class=\"move-user-header\">\n <div class=\"move-user-header__title\">Move User</div>\n <div class=\"move-user-header__close\">\n <span class=\"app-icon icon-close\" (click)=\"onClose()\"></span>\n </div>\n </header>\n <app-move-user-stepper *ngIf=\"user\" [customerId]=\"customerId\" [user]=\"user\" (cancel)=\"onClose()\"\n (runMoveUser)=\"onRunMoveUser()\"></app-move-user-stepper>\n</div>\n", styles: [".move-user-header{background-color:#1170cf;height:45px;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;color:#fff;font-size:18px;font-weight:500}.move-user-header__close{cursor:pointer}.move-user-header__close i{font-size:25px;font-weight:100}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center}.icon-close{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M12.0005 13.0538L6.92737 18.1269C6.78892 18.2654 6.61489 18.3362 6.40527 18.3394C6.19567 18.3426 6.01844 18.2718 5.87357 18.1269C5.72869 17.982 5.65625 17.8064 5.65625 17.6C5.65625 17.3936 5.72869 17.218 5.87357 17.0731L10.9466 12L5.87357 6.92689C5.73511 6.78844 5.66427 6.6144 5.66107 6.40479C5.65786 6.19519 5.72869 6.01795 5.87357 5.87309C6.01844 5.7282 6.19407 5.65576 6.40047 5.65576C6.60687 5.65576 6.78251 5.7282 6.92737 5.87309L12.0005 10.9462L17.0736 5.87309C17.212 5.73462 17.3861 5.66379 17.5957 5.66059C17.8053 5.65737 17.9825 5.7282 18.1274 5.87309C18.2723 6.01795 18.3447 6.19359 18.3447 6.39999C18.3447 6.60639 18.2723 6.78202 18.1274 6.92689L13.0543 12L18.1274 17.0731C18.2658 17.2115 18.3367 17.3856 18.3399 17.5952C18.3431 17.8048 18.2723 17.982 18.1274 18.1269C17.9825 18.2718 17.8069 18.3442 17.6005 18.3442C17.3941 18.3442 17.2184 18.2718 17.0736 18.1269L12.0005 13.0538Z%22 fill%3D%22%23333333%22%2F%3E%3C%2Fsvg%3E\")}\n"] }]
1013
- }], ctorParameters: function () { return [{ type: DnsService }]; }, propDecorators: { user: [{
1014
- type: Input
1015
- }], customerId: [{
1016
- type: Input
1017
- }], closeMoveUserWizard: [{
1018
- type: Output
1019
- }], runMoveUser: [{
1020
- type: Output
994
+ class MoveUserWizardComponent {
995
+ constructor(dnsService) {
996
+ this.dnsService = dnsService;
997
+ this.closeMoveUserWizard = new EventEmitter();
998
+ this.runMoveUser = new EventEmitter();
999
+ this.dataPending = false;
1000
+ }
1001
+ onClose() {
1002
+ this.closeMoveUserWizard.emit();
1003
+ }
1004
+ onRunMoveUser() {
1005
+ this.runMoveUser.emit();
1006
+ }
1007
+ }
1008
+ MoveUserWizardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserWizardComponent, deps: [{ token: DnsService }], target: i0.ɵɵFactoryTarget.Component });
1009
+ MoveUserWizardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MoveUserWizardComponent, selector: "app-move-user-wizard", inputs: { user: "user", customerId: "customerId" }, outputs: { closeMoveUserWizard: "closeMoveUserWizard", runMoveUser: "runMoveUser" }, ngImport: i0, template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div class=\"move-user-stepper-container\">\r\n <header class=\"move-user-header\">\r\n <div class=\"move-user-header__title\">Move User {{user.userid}}</div>\r\n <div class=\"move-user-header__close\">\r\n <span class=\"app-icon icon-white-close\" (click)=\"onClose()\"></span>\r\n </div>\r\n </header>\r\n <app-move-user-stepper *ngIf=\"user\" [customerId]=\"customerId\" [user]=\"user\" (cancel)=\"onClose()\"\r\n (runMoveUser)=\"onRunMoveUser()\"></app-move-user-stepper>\r\n</div>\r\n", styles: [".move-user-header{background-color:#1170cf;height:45px;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;color:#fff;font-size:18px;font-weight:500}.move-user-header__close{cursor:pointer}.move-user-header__close i{font-size:25px;font-weight:100}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center}.icon-close{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M12.0005 13.0538L6.92737 18.1269C6.78892 18.2654 6.61489 18.3362 6.40527 18.3394C6.19567 18.3426 6.01844 18.2718 5.87357 18.1269C5.72869 17.982 5.65625 17.8064 5.65625 17.6C5.65625 17.3936 5.72869 17.218 5.87357 17.0731L10.9466 12L5.87357 6.92689C5.73511 6.78844 5.66427 6.6144 5.66107 6.40479C5.65786 6.19519 5.72869 6.01795 5.87357 5.87309C6.01844 5.7282 6.19407 5.65576 6.40047 5.65576C6.60687 5.65576 6.78251 5.7282 6.92737 5.87309L12.0005 10.9462L17.0736 5.87309C17.212 5.73462 17.3861 5.66379 17.5957 5.66059C17.8053 5.65737 17.9825 5.7282 18.1274 5.87309C18.2723 6.01795 18.3447 6.19359 18.3447 6.39999C18.3447 6.60639 18.2723 6.78202 18.1274 6.92689L13.0543 12L18.1274 17.0731C18.2658 17.2115 18.3367 17.3856 18.3399 17.5952C18.3431 17.8048 18.2723 17.982 18.1274 18.1269C17.9825 18.2718 17.8069 18.3442 17.6005 18.3442C17.3941 18.3442 17.2184 18.2718 17.0736 18.1269L12.0005 13.0538Z%22 fill%3D%22%23333333%22%2F%3E%0D%3C%2Fsvg%3E%0D\")}.icon-white-close{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M13.0606 11.9998L19.2803 5.78001C19.35 5.71038 19.4052 5.6277 19.4429 5.53672C19.4806 5.44573 19.5 5.34822 19.5 5.24974C19.5 5.15126 19.4806 5.05374 19.4429 4.96276C19.4052 4.87177 19.3499 4.7891 19.2803 4.71947C19.2107 4.64983 19.128 4.5946 19.037 4.55691C18.946 4.51923 18.8485 4.49983 18.75 4.49983C18.6515 4.49984 18.554 4.51924 18.463 4.55692C18.3721 4.59461 18.2894 4.64985 18.2198 4.71949L12 10.9392L5.78026 4.71949C5.71077 4.64921 5.62807 4.59335 5.53691 4.55514C5.44576 4.51692 5.34795 4.49711 5.24911 4.49683C5.15027 4.49655 5.05235 4.51581 4.96098 4.55351C4.86961 4.59121 4.78659 4.64659 4.7167 4.71648C4.64681 4.78638 4.59143 4.8694 4.55374 4.96077C4.51605 5.05214 4.49679 5.15006 4.49707 5.2489C4.49736 5.34774 4.51718 5.44555 4.5554 5.5367C4.59361 5.62786 4.64947 5.71055 4.71976 5.78004L10.9395 11.9998L4.71976 18.2195C4.65013 18.2892 4.59489 18.3718 4.5572 18.4628C4.51951 18.5538 4.50011 18.6513 4.50011 18.7498C4.50011 18.8483 4.51951 18.9458 4.5572 19.0368C4.59488 19.1278 4.65012 19.2105 4.71976 19.2801C4.7894 19.3497 4.87207 19.405 4.96305 19.4427C5.05403 19.4803 5.15155 19.4997 5.25003 19.4997C5.34851 19.4997 5.44603 19.4803 5.53701 19.4427C5.628 19.405 5.71067 19.3497 5.78031 19.2801L12.0001 13.0603L18.2198 19.2801C18.3604 19.4207 18.5512 19.4997 18.7501 19.4997C18.949 19.4997 19.1397 19.4207 19.2804 19.2801C19.421 19.1395 19.5 18.9487 19.5 18.7498C19.5 18.5509 19.421 18.3602 19.2804 18.2195L13.0606 11.9998Z%22 fill%3D%22white%22 fill-opacity%3D%220.95%22%2F%3E%3C%2Fsvg%3E\")}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AppLoaderComponent, selector: "app-loader" }, { kind: "component", type: MoveUserStepperComponent, selector: "app-move-user-stepper", inputs: ["user", "customerId"], outputs: ["runMoveUser", "cancel"] }] });
1010
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserWizardComponent, decorators: [{
1011
+ type: Component,
1012
+ args: [{ selector: 'app-move-user-wizard', template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div class=\"move-user-stepper-container\">\r\n <header class=\"move-user-header\">\r\n <div class=\"move-user-header__title\">Move User {{user.userid}}</div>\r\n <div class=\"move-user-header__close\">\r\n <span class=\"app-icon icon-white-close\" (click)=\"onClose()\"></span>\r\n </div>\r\n </header>\r\n <app-move-user-stepper *ngIf=\"user\" [customerId]=\"customerId\" [user]=\"user\" (cancel)=\"onClose()\"\r\n (runMoveUser)=\"onRunMoveUser()\"></app-move-user-stepper>\r\n</div>\r\n", styles: [".move-user-header{background-color:#1170cf;height:45px;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;color:#fff;font-size:18px;font-weight:500}.move-user-header__close{cursor:pointer}.move-user-header__close i{font-size:25px;font-weight:100}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center}.icon-close{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M12.0005 13.0538L6.92737 18.1269C6.78892 18.2654 6.61489 18.3362 6.40527 18.3394C6.19567 18.3426 6.01844 18.2718 5.87357 18.1269C5.72869 17.982 5.65625 17.8064 5.65625 17.6C5.65625 17.3936 5.72869 17.218 5.87357 17.0731L10.9466 12L5.87357 6.92689C5.73511 6.78844 5.66427 6.6144 5.66107 6.40479C5.65786 6.19519 5.72869 6.01795 5.87357 5.87309C6.01844 5.7282 6.19407 5.65576 6.40047 5.65576C6.60687 5.65576 6.78251 5.7282 6.92737 5.87309L12.0005 10.9462L17.0736 5.87309C17.212 5.73462 17.3861 5.66379 17.5957 5.66059C17.8053 5.65737 17.9825 5.7282 18.1274 5.87309C18.2723 6.01795 18.3447 6.19359 18.3447 6.39999C18.3447 6.60639 18.2723 6.78202 18.1274 6.92689L13.0543 12L18.1274 17.0731C18.2658 17.2115 18.3367 17.3856 18.3399 17.5952C18.3431 17.8048 18.2723 17.982 18.1274 18.1269C17.9825 18.2718 17.8069 18.3442 17.6005 18.3442C17.3941 18.3442 17.2184 18.2718 17.0736 18.1269L12.0005 13.0538Z%22 fill%3D%22%23333333%22%2F%3E%0D%3C%2Fsvg%3E%0D\")}.icon-white-close{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M13.0606 11.9998L19.2803 5.78001C19.35 5.71038 19.4052 5.6277 19.4429 5.53672C19.4806 5.44573 19.5 5.34822 19.5 5.24974C19.5 5.15126 19.4806 5.05374 19.4429 4.96276C19.4052 4.87177 19.3499 4.7891 19.2803 4.71947C19.2107 4.64983 19.128 4.5946 19.037 4.55691C18.946 4.51923 18.8485 4.49983 18.75 4.49983C18.6515 4.49984 18.554 4.51924 18.463 4.55692C18.3721 4.59461 18.2894 4.64985 18.2198 4.71949L12 10.9392L5.78026 4.71949C5.71077 4.64921 5.62807 4.59335 5.53691 4.55514C5.44576 4.51692 5.34795 4.49711 5.24911 4.49683C5.15027 4.49655 5.05235 4.51581 4.96098 4.55351C4.86961 4.59121 4.78659 4.64659 4.7167 4.71648C4.64681 4.78638 4.59143 4.8694 4.55374 4.96077C4.51605 5.05214 4.49679 5.15006 4.49707 5.2489C4.49736 5.34774 4.51718 5.44555 4.5554 5.5367C4.59361 5.62786 4.64947 5.71055 4.71976 5.78004L10.9395 11.9998L4.71976 18.2195C4.65013 18.2892 4.59489 18.3718 4.5572 18.4628C4.51951 18.5538 4.50011 18.6513 4.50011 18.7498C4.50011 18.8483 4.51951 18.9458 4.5572 19.0368C4.59488 19.1278 4.65012 19.2105 4.71976 19.2801C4.7894 19.3497 4.87207 19.405 4.96305 19.4427C5.05403 19.4803 5.15155 19.4997 5.25003 19.4997C5.34851 19.4997 5.44603 19.4803 5.53701 19.4427C5.628 19.405 5.71067 19.3497 5.78031 19.2801L12.0001 13.0603L18.2198 19.2801C18.3604 19.4207 18.5512 19.4997 18.7501 19.4997C18.949 19.4997 19.1397 19.4207 19.2804 19.2801C19.421 19.1395 19.5 18.9487 19.5 18.7498C19.5 18.5509 19.421 18.3602 19.2804 18.2195L13.0606 11.9998Z%22 fill%3D%22white%22 fill-opacity%3D%220.95%22%2F%3E%3C%2Fsvg%3E\")}\n"] }]
1013
+ }], ctorParameters: function () { return [{ type: DnsService }]; }, propDecorators: { user: [{
1014
+ type: Input
1015
+ }], customerId: [{
1016
+ type: Input
1017
+ }], closeMoveUserWizard: [{
1018
+ type: Output
1019
+ }], runMoveUser: [{
1020
+ type: Output
1021
1021
  }] } });
1022
1022
 
1023
- const DISPLAYED_COLS = ['user-icon', 'name', 'email', 'status', 'role', 'actions'];
1024
- const LOCAL_STORAGE = {
1025
- USER_IN_MIGRATION: 'userIdInMigration'
1026
- };
1027
- class UsersListComponent {
1028
- get form() {
1029
- var _a, _b;
1030
- return (_b = (_a = this.userService) === null || _a === void 0 ? void 0 : _a.user) === null || _b === void 0 ? void 0 : _b.form;
1031
- }
1032
- constructor(userService, apiService, apiWebexService, notifications, usersSearchService, dialog) {
1033
- this.userService = userService;
1034
- this.apiService = apiService;
1035
- this.apiWebexService = apiWebexService;
1036
- this.notifications = notifications;
1037
- this.usersSearchService = usersSearchService;
1038
- this.dialog = dialog;
1039
- this.openUser = new EventEmitter();
1040
- this.userMoved = new EventEmitter();
1041
- this.switchToWizard = new EventEmitter();
1042
- this.displayedColumns = DISPLAYED_COLS;
1043
- this.showMoveUserWizard = false;
1044
- }
1045
- ngOnInit() {
1046
- this.usersSearchService.setDefaultValues();
1047
- this.usersSearchService.customerId = this.customerId;
1048
- this.usersSearchService.siteId = this.siteId;
1049
- this.apiService.token = this.token;
1050
- this.apiWebexService.token = this.token;
1051
- this.apiService.apiUrl = this.host + '/dcp';
1052
- this.apiWebexService.apiUrl = this.host + '/webex';
1053
- this.getMigratedUsers();
1054
- this.searchSubscription = this.usersSearchService.foundUsers$
1055
- .subscribe((users) => {
1056
- this.initializeDataSource(users);
1057
- });
1058
- }
1059
- pageNumberChangeEvent(perPageNumber) {
1060
- this.usersSearchService.pageSize = perPageNumber;
1061
- this.usersSearchService.pageIndex = 0;
1062
- this.runSearch();
1063
- }
1064
- closeMoveUserWizard() {
1065
- this.moveUser = null;
1066
- this.showMoveUserWizard = false;
1067
- this.switchToWizard.emit(false);
1068
- }
1069
- pageEvent(event) {
1070
- this.usersSearchService.pageSize = event.pageSize;
1071
- this.usersSearchService.pageIndex = event.pageIndex;
1072
- this.runSearch();
1073
- }
1074
- onUserClick(user) {
1075
- this.openUser.emit(user);
1076
- }
1077
- moveUserToMT(user, index) {
1078
- if (user && user.siteId && user.userid) {
1079
- this.moveUserPending = true;
1080
- this.moveInProgressUserId = user.userid;
1081
- this.setStatusToUser(index, 'In Progress');
1082
- localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, user.userid);
1083
- const subscription = this.userService.moveUserToMT(this.customerId, user)
1084
- .subscribe(() => {
1085
- this.moveUser = null;
1086
- this.moveUserIndex = null;
1087
- this.getMigratedUsers();
1088
- }, () => {
1089
- this.removeUserInMigrationProgress();
1090
- this.setStatusToUser(index, 'Migration Error');
1091
- });
1092
- }
1093
- }
1094
- moveUserToDI(user, index) {
1095
- if (user && user.siteId && user.webexUUID) {
1096
- this.moveUserPending = true;
1097
- this.moveInProgressUserId = user.userid;
1098
- this.users[index].status = 'In Progress';
1099
- localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, user.userid);
1100
- const subscription = this.userService.moveUserToDI(this.customerId, user)
1101
- .subscribe(() => {
1102
- this.removeUserInMigrationProgress();
1103
- this.setStatusToUser(index, 'Active');
1104
- this.users[index].webexUUID = '';
1105
- if (this.usersSearchService.migratedUsers && this.usersSearchService.migratedUsers.length) {
1106
- this.usersSearchService.migratedUsers = this.usersSearchService.migratedUsers.filter((migratedUser) => migratedUser.userid !== user.email);
1107
- }
1108
- }, () => {
1109
- this.removeUserInMigrationProgress();
1110
- this.setStatusToUser(index, 'Migration Error');
1111
- });
1112
- }
1113
- }
1114
- removeUserInMigrationProgress() {
1115
- localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);
1116
- this.moveInProgressUserId = '';
1117
- this.moveUserPending = false;
1118
- }
1119
- setStatusToUser(index, status) {
1120
- if (this.users && this.users[index]) {
1121
- this.users[index].status = status;
1122
- if (status === 'Migrated') {
1123
- this.users[index].roleName = '';
1124
- this.users[index].isMigrated = true;
1125
- this.users[index].status = status;
1126
- }
1127
- else {
1128
- this.users[index].roleName = 'Dedicated Instance Calling user';
1129
- this.users[index].isMigrated = false;
1130
- this.users[index].status = status;
1131
- }
1132
- }
1133
- this.dataSource = new MatTableDataSource(this.users);
1134
- }
1135
- initializeDataSource(users) {
1136
- if (users === null || users === void 0 ? void 0 : users.length) {
1137
- // this.setRandomUserRole(users);
1138
- this.users = users;
1139
- this.setUserMigrationProgress();
1140
- this.usersSearchService.setMigratedPropToUsers(this.users);
1141
- this.dataSource = new MatTableDataSource(users);
1142
- }
1143
- }
1144
- setUserRole() {
1145
- var _a;
1146
- if ((_a = this.users) === null || _a === void 0 ? void 0 : _a.length) {
1147
- this.users.forEach(user => {
1148
- if (!user.isMigrated) {
1149
- user.roleName = 'Dedicated Instance Calling user';
1150
- }
1151
- });
1152
- }
1153
- }
1154
- setRandomUserRole(users) {
1155
- const max = Math.round(this.usersSearchService.pageSize - this.usersSearchService.pageSize / 4);
1156
- const min = Math.round(this.usersSearchService.pageSize / 2);
1157
- const randomAmount = Math.round(Math.random() * (max - min) + min);
1158
- const indexes = this.getArrayOfRandomUserIndexes(randomAmount);
1159
- indexes.forEach(index => {
1160
- if (users[index]) {
1161
- users[index].roleName = 'Dedicated Instance Calling user';
1162
- }
1163
- });
1164
- }
1165
- getArrayOfRandomUserIndexes(randomAmount) {
1166
- const indexes = [];
1167
- while (randomAmount > 0) {
1168
- const index = Math.round(Math.random() * (this.usersSearchService.pageSize - 1));
1169
- indexes.push(index);
1170
- randomAmount--;
1171
- }
1172
- return indexes;
1173
- }
1174
- runSearch() {
1175
- this.dataPending = true;
1176
- this.usersSearchService.quickRegularUsersSearch()
1177
- .subscribe(() => {
1178
- this.dataPending = false;
1179
- }, () => {
1180
- this.dataPending = false;
1181
- this.notifications.error('The data can not be received');
1182
- });
1183
- }
1184
- setUserMigrationProgress() {
1185
- const userIdInMigration = localStorage.getItem(LOCAL_STORAGE.USER_IN_MIGRATION);
1186
- if (userIdInMigration) {
1187
- const index = this.users.findIndex(user => user.userid === userIdInMigration);
1188
- this.moveInProgressUserId = index > -1 ? this.users[index].userid : '';
1189
- this.moveUserPending = index > -1;
1190
- }
1191
- }
1192
- getMigratedUsers() {
1193
- this.dataPending = true;
1194
- const searchParams = {
1195
- customerid: this.customerId,
1196
- siteid: this.siteId,
1197
- 'cloud-only': 'true'
1198
- };
1199
- // this.usersSearchService.quickWebexUsersSearch(searchParams, true, MAX_INTEGER)
1200
- this.usersSearchService.getMigratedUsers(this.customerId)
1201
- // this.usersSearchService.getMigratedWebexUsers(this.customerId)
1202
- .subscribe(() => {
1203
- const userIdInMigration = localStorage.getItem(LOCAL_STORAGE.USER_IN_MIGRATION);
1204
- if (userIdInMigration && this.usersSearchService.migratedUsers.filter((migratedUser) => migratedUser.userid === userIdInMigration)) {
1205
- localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);
1206
- }
1207
- this.runSearch();
1208
- }, () => {
1209
- this.dataPending = false;
1210
- this.notifications.error('The data can not be received');
1211
- });
1212
- }
1213
- onMoveUser(user, index, type) {
1214
- const dialogRef = this.dialog.open(UserListConfirmDialogComponent, {
1215
- data: {
1216
- title: `Move user to ${type}?`,
1217
- message: `You\'re sure that you want to move ${user.userid} to ${type}?`,
1218
- confirmButtonText: 'Yes, continue'
1219
- }
1220
- });
1221
- dialogRef.beforeClosed().subscribe((result) => {
1222
- if (result) {
1223
- switch (type) {
1224
- case 'QuickMove':
1225
- this.moveUserToMT(user, index);
1226
- break;
1227
- case 'MT':
1228
- this.moveUser = user;
1229
- this.moveUserIndex = index;
1230
- this.showMoveUserWizard = true;
1231
- this.switchToWizard.emit(true);
1232
- break;
1233
- case 'DI':
1234
- this.moveUserToDI(user, index);
1235
- break;
1236
- }
1237
- }
1238
- });
1239
- }
1240
- runMoveUserToMT() {
1241
- this.showMoveUserWizard = false;
1242
- this.moveUserToMT(this.moveUser, this.moveUserIndex);
1243
- }
1244
- }
1245
- UsersListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListComponent, deps: [{ token: UserService }, { token: APIService }, { token: ApiWebexService }, { token: NotificationService }, { token: UsersSearchService }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
1246
- UsersListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UsersListComponent, selector: "app-users-list", inputs: { token: "token", customerId: "customerId", siteId: "siteId", host: "host" }, outputs: { openUser: "openUser", userMoved: "userMoved", switchToWizard: "switchToWizard" }, ngImport: i0, template: "<app-loader *ngIf=\"dataPending\"></app-loader>\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\n <app-pagination\n [pagination]=\"usersSearchService.getPagination()\"\n [showPageSizeOptions]=\"true\"\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\n (pageEmitter)=\"pageEvent($event)\">\n </app-pagination>\nnew users list 2\n <table class=\"webex-table\" mat-table *ngIf=\"users?.length\" #table [dataSource]=\"dataSource\">\n\n <ng-container matColumnDef=\"user-icon\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n (click)=\"onUserClick(user)\">\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">First / Last Name</th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n (click)=\"onUserClick(user)\"> {{ user.firstName }} {{ user.lastName }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\n <td class=\"user-site\" [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">\n {{ user.email }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Status</th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n (click)=\"onUserClick(user)\">\n <span class=\"icon-user-status icon-user-status-active\"></span>{{user.status}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user, let i = index\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\">\n <mat-progress-spinner class=\"field-spinner\"\n [diameter]=\"20\"\n mode=\"indeterminate\"\n *ngIf=\"user.status === 'In Progress'\"></mat-progress-spinner>\n <button *ngIf=\"!(moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid)\"\n class=\"button-action-dot\" mat-icon-button [matMenuTriggerFor]=\"menu\">\n <div class=\"icon-actions-dots\">\n <span class=\"icon-dot\">.</span>\n <span class=\"icon-dot\">.</span>\n <span class=\"icon-dot\">.</span>\n </div>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'QuickMove')\">Quick Move User</button>\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'MT')\">Move User to MT</button>\n <button *ngIf=\"user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'DI')\">Move User to DI</button>\n <button mat-menu-item [disabled]=\"true\">Deactivate User</button>\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\n </mat-menu>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"role\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Administrator Role</th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">{{ user.roleName || '' }}</td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</div>\n\n<app-move-user-wizard *ngIf=\"showMoveUserWizard\" [user]=\"moveUser\"\n [customerId]=\"customerId\" (runMoveUser)=\"runMoveUserToMT()\"\n (closeMoveUserWizard)=\"closeMoveUserWizard()\"></app-move-user-wizard>\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";table.mat-table{border-spacing:0;width:100%}::ng-deep .mat-paginator{background:none}.icon-user-status{width:.5rem;height:.5rem;border-radius:50%;background-color:#707070;margin:0 5px 0 0}.icon-user-status.icon-user-status-active{background-color:#1d805f;display:inline-block}.mat-select{height:100%;line-height:35px}.mat-form-field-wrapper{padding-bottom:0!important}.mat-form-field{padding:0;max-width:300px}.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{width:2rem;height:2rem;font-size:.7rem;line-height:1rem;display:inline-block;background:#d0d0d0;border-radius:2rem;line-height:40px;text-align:center}.icon-webex{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg id%3D%22a%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 16.67 15.56%22%3E%3Cdefs%3E%3Cstyle%3E.b%7Bfill%3Anone%3Bstroke%3A%232c355d%3Bstroke-width%3A1.4px%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cpath class%3D%22b%22 d%3D%22M4.87%2C3.89c0-1.72%2C1.51-3.19%2C3.47-3.19s3.47%2C1.47%2C3.47%2C3.19-1.51%2C3.19-3.47%2C3.19-3.47-1.47-3.47-3.19ZM.7%2C12.64c0-.37%2C.19-.76%2C.67-1.17%2C.48-.41%2C1.17-.78%2C2-1.09%2C1.66-.62%2C3.66-.93%2C4.97-.93s3.31%2C.31%2C4.97%2C.93c.83%2C.31%2C1.52%2C.68%2C2%2C1.09%2C.47%2C.41%2C.67%2C.8%2C.67%2C1.17v2.22H.7v-2.22Z%22%2F%3E%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Poppins,Poppins,sans-serif;font-size:14px}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:#009fdb!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-weight:400;font-size:14px}.user-info-box h3{display:block;font-weight:500;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#f7f7f7;color:#636363;font-size:12px}.webex-table td{background:#fff;color:#000;font-size:14px}.webex-table tr:hover td:not(.disabled-user-row){background:#ededed;cursor:pointer}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#F3F6F6;border:1px solid #E2E9EF;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important;line-height:35px!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}.mat-form-field-wrapper,.mat-form-field-flex{height:30px!important}.mat-form-field-appearance-outline .mat-form-field-outline,.mat-form-field-outline .mat-form-field-outline-thick{height:35px!important}.mat-select{line-height:20px!important}.mat-form-field-appearance-outline .mat-form-field-infix{padding:14px 12px 10px;border-top:0;max-width:300px}.mat-tab-group{font-family:Inter,sans-serif}.mat-tab-label{font-weight:500!important;font-size:14px!important;height:auto!important;min-width:auto!important;padding:0!important}.mat-ink-bar{background-color:#000000e6!important;height:3px!important}.mat-form-field-wrapper{padding-bottom:0}.mat-form-field{max-width:300px}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}::ng-deep .mat-form-field-wrapper{height:30px}::ng-deep .mat-form-field-flex{height:30px}::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}::ng-deep .mat-select{line-height:20px}::ng-deep .mat-form-field-infix{border-top:0px!important}::ng-deep .mat-paginator{background:transparent!important}::ng-deep .mat-paginator-container{min-height:30px!important}::ng-deep .mat-paginator-range-label{margin:0 10px 0 24px!important;font-size:15px!important}::ng-deep .pagination{font-size:13px;color:#0000008a}::ng-deep .per-page-block{display:flex;line-height:42px!important}::ng-deep .item_per_page{line-height:42px!important}::ng-deep .select-page-size{line-height:42px!important}::ng-deep mat-progress-spinner.page-spinner{position:fixed;margin:auto;inset:0}::ng-deep mat-progress-spinner.field-spinner{position:relative;margin:-20px auto auto}::ng-deep mat-progress-spinner.tab-spinner{position:relative;margin:0 auto auto}.icon-dot{display:block;color:#4f4f4f;font-size:16px;line-height:5px}.button-action-dot:hover{background:#dfdfdf}.button-action-dot{padding:0 5px 5px;border-radius:.25rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i10.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i10.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i10.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i10.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i10.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i10.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i10.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i10.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i10.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i11$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i11$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: PaginationComponent, selector: "app-pagination", inputs: ["pagination", "showPageSizeOptions", "showRefreshButton", "lengthPending"], outputs: ["pageEmitter", "pageNumberChangeEmitter"] }, { kind: "component", type: AppLoaderComponent, selector: "app-loader" }, { kind: "component", type: MoveUserWizardComponent, selector: "app-move-user-wizard", inputs: ["user", "customerId"], outputs: ["closeMoveUserWizard", "runMoveUser"] }] });
1247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListComponent, decorators: [{
1248
- type: Component,
1249
- args: [{ selector: 'app-users-list', template: "<app-loader *ngIf=\"dataPending\"></app-loader>\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\n <app-pagination\n [pagination]=\"usersSearchService.getPagination()\"\n [showPageSizeOptions]=\"true\"\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\n (pageEmitter)=\"pageEvent($event)\">\n </app-pagination>\nnew users list 2\n <table class=\"webex-table\" mat-table *ngIf=\"users?.length\" #table [dataSource]=\"dataSource\">\n\n <ng-container matColumnDef=\"user-icon\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n (click)=\"onUserClick(user)\">\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">First / Last Name</th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n (click)=\"onUserClick(user)\"> {{ user.firstName }} {{ user.lastName }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\n <td class=\"user-site\" [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">\n {{ user.email }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Status</th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n (click)=\"onUserClick(user)\">\n <span class=\"icon-user-status icon-user-status-active\"></span>{{user.status}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user, let i = index\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\">\n <mat-progress-spinner class=\"field-spinner\"\n [diameter]=\"20\"\n mode=\"indeterminate\"\n *ngIf=\"user.status === 'In Progress'\"></mat-progress-spinner>\n <button *ngIf=\"!(moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid)\"\n class=\"button-action-dot\" mat-icon-button [matMenuTriggerFor]=\"menu\">\n <div class=\"icon-actions-dots\">\n <span class=\"icon-dot\">.</span>\n <span class=\"icon-dot\">.</span>\n <span class=\"icon-dot\">.</span>\n </div>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'QuickMove')\">Quick Move User</button>\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'MT')\">Move User to MT</button>\n <button *ngIf=\"user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'DI')\">Move User to DI</button>\n <button mat-menu-item [disabled]=\"true\">Deactivate User</button>\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\n </mat-menu>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"role\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Administrator Role</th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">{{ user.roleName || '' }}</td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</div>\n\n<app-move-user-wizard *ngIf=\"showMoveUserWizard\" [user]=\"moveUser\"\n [customerId]=\"customerId\" (runMoveUser)=\"runMoveUserToMT()\"\n (closeMoveUserWizard)=\"closeMoveUserWizard()\"></app-move-user-wizard>\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";table.mat-table{border-spacing:0;width:100%}::ng-deep .mat-paginator{background:none}.icon-user-status{width:.5rem;height:.5rem;border-radius:50%;background-color:#707070;margin:0 5px 0 0}.icon-user-status.icon-user-status-active{background-color:#1d805f;display:inline-block}.mat-select{height:100%;line-height:35px}.mat-form-field-wrapper{padding-bottom:0!important}.mat-form-field{padding:0;max-width:300px}.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{width:2rem;height:2rem;font-size:.7rem;line-height:1rem;display:inline-block;background:#d0d0d0;border-radius:2rem;line-height:40px;text-align:center}.icon-webex{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg id%3D%22a%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 16.67 15.56%22%3E%3Cdefs%3E%3Cstyle%3E.b%7Bfill%3Anone%3Bstroke%3A%232c355d%3Bstroke-width%3A1.4px%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cpath class%3D%22b%22 d%3D%22M4.87%2C3.89c0-1.72%2C1.51-3.19%2C3.47-3.19s3.47%2C1.47%2C3.47%2C3.19-1.51%2C3.19-3.47%2C3.19-3.47-1.47-3.47-3.19ZM.7%2C12.64c0-.37%2C.19-.76%2C.67-1.17%2C.48-.41%2C1.17-.78%2C2-1.09%2C1.66-.62%2C3.66-.93%2C4.97-.93s3.31%2C.31%2C4.97%2C.93c.83%2C.31%2C1.52%2C.68%2C2%2C1.09%2C.47%2C.41%2C.67%2C.8%2C.67%2C1.17v2.22H.7v-2.22Z%22%2F%3E%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Poppins,Poppins,sans-serif;font-size:14px}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:#009fdb!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-weight:400;font-size:14px}.user-info-box h3{display:block;font-weight:500;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#f7f7f7;color:#636363;font-size:12px}.webex-table td{background:#fff;color:#000;font-size:14px}.webex-table tr:hover td:not(.disabled-user-row){background:#ededed;cursor:pointer}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#F3F6F6;border:1px solid #E2E9EF;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important;line-height:35px!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}.mat-form-field-wrapper,.mat-form-field-flex{height:30px!important}.mat-form-field-appearance-outline .mat-form-field-outline,.mat-form-field-outline .mat-form-field-outline-thick{height:35px!important}.mat-select{line-height:20px!important}.mat-form-field-appearance-outline .mat-form-field-infix{padding:14px 12px 10px;border-top:0;max-width:300px}.mat-tab-group{font-family:Inter,sans-serif}.mat-tab-label{font-weight:500!important;font-size:14px!important;height:auto!important;min-width:auto!important;padding:0!important}.mat-ink-bar{background-color:#000000e6!important;height:3px!important}.mat-form-field-wrapper{padding-bottom:0}.mat-form-field{max-width:300px}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}::ng-deep .mat-form-field-wrapper{height:30px}::ng-deep .mat-form-field-flex{height:30px}::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}::ng-deep .mat-select{line-height:20px}::ng-deep .mat-form-field-infix{border-top:0px!important}::ng-deep .mat-paginator{background:transparent!important}::ng-deep .mat-paginator-container{min-height:30px!important}::ng-deep .mat-paginator-range-label{margin:0 10px 0 24px!important;font-size:15px!important}::ng-deep .pagination{font-size:13px;color:#0000008a}::ng-deep .per-page-block{display:flex;line-height:42px!important}::ng-deep .item_per_page{line-height:42px!important}::ng-deep .select-page-size{line-height:42px!important}::ng-deep mat-progress-spinner.page-spinner{position:fixed;margin:auto;inset:0}::ng-deep mat-progress-spinner.field-spinner{position:relative;margin:-20px auto auto}::ng-deep mat-progress-spinner.tab-spinner{position:relative;margin:0 auto auto}.icon-dot{display:block;color:#4f4f4f;font-size:16px;line-height:5px}.button-action-dot:hover{background:#dfdfdf}.button-action-dot{padding:0 5px 5px;border-radius:.25rem}\n"] }]
1250
- }], ctorParameters: function () { return [{ type: UserService }, { type: APIService }, { type: ApiWebexService }, { type: NotificationService }, { type: UsersSearchService }, { type: i1.MatDialog }]; }, propDecorators: { token: [{
1251
- type: Input
1252
- }], customerId: [{
1253
- type: Input
1254
- }], siteId: [{
1255
- type: Input
1256
- }], openUser: [{
1257
- type: Output
1258
- }], userMoved: [{
1259
- type: Output
1260
- }], switchToWizard: [{
1261
- type: Output
1262
- }], host: [{
1263
- type: Input
1023
+ const DISPLAYED_COLS = ['user-icon', 'name', 'email', 'status', 'role', 'actions'];
1024
+ const LOCAL_STORAGE = {
1025
+ USER_IN_MIGRATION: 'userIdInMigration'
1026
+ };
1027
+ class UsersListComponent {
1028
+ get form() {
1029
+ var _a, _b;
1030
+ return (_b = (_a = this.userService) === null || _a === void 0 ? void 0 : _a.user) === null || _b === void 0 ? void 0 : _b.form;
1031
+ }
1032
+ constructor(userService, apiService, apiWebexService, notifications, usersSearchService, dialog) {
1033
+ this.userService = userService;
1034
+ this.apiService = apiService;
1035
+ this.apiWebexService = apiWebexService;
1036
+ this.notifications = notifications;
1037
+ this.usersSearchService = usersSearchService;
1038
+ this.dialog = dialog;
1039
+ this.openUser = new EventEmitter();
1040
+ this.userMoved = new EventEmitter();
1041
+ this.switchToWizard = new EventEmitter();
1042
+ this.displayedColumns = DISPLAYED_COLS;
1043
+ this.showMoveUserWizard = false;
1044
+ }
1045
+ ngOnInit() {
1046
+ this.usersSearchService.setDefaultValues();
1047
+ this.usersSearchService.customerId = this.customerId;
1048
+ this.usersSearchService.siteId = this.siteId;
1049
+ this.apiService.token = this.token;
1050
+ this.apiWebexService.token = this.token;
1051
+ this.apiService.apiUrl = this.host + '/dcp';
1052
+ this.apiWebexService.apiUrl = this.host + '/webex';
1053
+ this.getMigratedUsers();
1054
+ this.searchSubscription = this.usersSearchService.foundUsers$
1055
+ .subscribe((users) => {
1056
+ this.initializeDataSource(users);
1057
+ });
1058
+ console.log('users list paris 333');
1059
+ }
1060
+ pageNumberChangeEvent(perPageNumber) {
1061
+ this.usersSearchService.pageSize = perPageNumber;
1062
+ this.usersSearchService.pageIndex = 0;
1063
+ this.runSearch();
1064
+ }
1065
+ closeMoveUserWizard() {
1066
+ this.moveUser = null;
1067
+ this.showMoveUserWizard = false;
1068
+ this.switchToWizard.emit(false);
1069
+ }
1070
+ pageEvent(event) {
1071
+ this.usersSearchService.pageSize = event.pageSize;
1072
+ this.usersSearchService.pageIndex = event.pageIndex;
1073
+ this.runSearch();
1074
+ }
1075
+ onUserClick(user) {
1076
+ this.openUser.emit(user);
1077
+ }
1078
+ moveUserToMT(user, index) {
1079
+ if (user && user.siteId && user.userid) {
1080
+ this.moveUserPending = true;
1081
+ this.moveInProgressUserId = user.userid;
1082
+ this.setStatusToUser(index, 'In Progress');
1083
+ localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, user.userid);
1084
+ const subscription = this.userService.moveUserToMT(this.customerId, user)
1085
+ .subscribe(() => {
1086
+ this.moveUser = null;
1087
+ this.moveUserIndex = null;
1088
+ this.getMigratedUsers();
1089
+ }, () => {
1090
+ this.removeUserInMigrationProgress();
1091
+ this.setStatusToUser(index, 'Migration Error');
1092
+ });
1093
+ }
1094
+ }
1095
+ moveUserToDI(user, index) {
1096
+ if (user && user.siteId && user.webexUUID) {
1097
+ this.moveUserPending = true;
1098
+ this.moveInProgressUserId = user.userid;
1099
+ this.users[index].status = 'In Progress';
1100
+ localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, user.userid);
1101
+ const subscription = this.userService.moveUserToDI(this.customerId, user)
1102
+ .subscribe(() => {
1103
+ this.removeUserInMigrationProgress();
1104
+ this.setStatusToUser(index, 'Active');
1105
+ this.users[index].webexUUID = '';
1106
+ if (this.usersSearchService.migratedUsers && this.usersSearchService.migratedUsers.length) {
1107
+ this.usersSearchService.migratedUsers = this.usersSearchService.migratedUsers.filter((migratedUser) => migratedUser.userid !== user.email);
1108
+ }
1109
+ }, () => {
1110
+ this.removeUserInMigrationProgress();
1111
+ this.setStatusToUser(index, 'Migration Error');
1112
+ });
1113
+ }
1114
+ }
1115
+ removeUserInMigrationProgress() {
1116
+ localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);
1117
+ this.moveInProgressUserId = '';
1118
+ this.moveUserPending = false;
1119
+ }
1120
+ setStatusToUser(index, status) {
1121
+ if (this.users && this.users[index]) {
1122
+ this.users[index].status = status;
1123
+ if (status === 'Migrated') {
1124
+ this.users[index].roleName = '';
1125
+ this.users[index].isMigrated = true;
1126
+ this.users[index].status = status;
1127
+ }
1128
+ else {
1129
+ this.users[index].roleName = 'Dedicated Instance Calling user';
1130
+ this.users[index].isMigrated = false;
1131
+ this.users[index].status = status;
1132
+ }
1133
+ }
1134
+ this.dataSource = new MatTableDataSource(this.users);
1135
+ }
1136
+ initializeDataSource(users) {
1137
+ if (users === null || users === void 0 ? void 0 : users.length) {
1138
+ // this.setRandomUserRole(users);
1139
+ this.users = users;
1140
+ this.setUserMigrationProgress();
1141
+ this.usersSearchService.setMigratedPropToUsers(this.users);
1142
+ this.dataSource = new MatTableDataSource(users);
1143
+ }
1144
+ }
1145
+ setUserRole() {
1146
+ var _a;
1147
+ if ((_a = this.users) === null || _a === void 0 ? void 0 : _a.length) {
1148
+ this.users.forEach(user => {
1149
+ if (!user.isMigrated) {
1150
+ user.roleName = 'Dedicated Instance Calling user';
1151
+ }
1152
+ });
1153
+ }
1154
+ }
1155
+ setRandomUserRole(users) {
1156
+ const max = Math.round(this.usersSearchService.pageSize - this.usersSearchService.pageSize / 4);
1157
+ const min = Math.round(this.usersSearchService.pageSize / 2);
1158
+ const randomAmount = Math.round(Math.random() * (max - min) + min);
1159
+ const indexes = this.getArrayOfRandomUserIndexes(randomAmount);
1160
+ indexes.forEach(index => {
1161
+ if (users[index]) {
1162
+ users[index].roleName = 'Dedicated Instance Calling user';
1163
+ }
1164
+ });
1165
+ }
1166
+ getArrayOfRandomUserIndexes(randomAmount) {
1167
+ const indexes = [];
1168
+ while (randomAmount > 0) {
1169
+ const index = Math.round(Math.random() * (this.usersSearchService.pageSize - 1));
1170
+ indexes.push(index);
1171
+ randomAmount--;
1172
+ }
1173
+ return indexes;
1174
+ }
1175
+ runSearch() {
1176
+ this.dataPending = true;
1177
+ this.usersSearchService.quickRegularUsersSearch()
1178
+ .subscribe(() => {
1179
+ this.dataPending = false;
1180
+ }, () => {
1181
+ this.dataPending = false;
1182
+ this.notifications.error('The data can not be received');
1183
+ });
1184
+ }
1185
+ setUserMigrationProgress() {
1186
+ const userIdInMigration = localStorage.getItem(LOCAL_STORAGE.USER_IN_MIGRATION);
1187
+ if (userIdInMigration) {
1188
+ const index = this.users.findIndex(user => user.userid === userIdInMigration);
1189
+ this.moveInProgressUserId = index > -1 ? this.users[index].userid : '';
1190
+ this.moveUserPending = index > -1;
1191
+ }
1192
+ }
1193
+ getMigratedUsers() {
1194
+ this.dataPending = true;
1195
+ const searchParams = {
1196
+ customerid: this.customerId,
1197
+ siteid: this.siteId,
1198
+ 'cloud-only': 'true'
1199
+ };
1200
+ // this.usersSearchService.quickWebexUsersSearch(searchParams, true, MAX_INTEGER)
1201
+ this.usersSearchService.getMigratedUsers(this.customerId)
1202
+ // this.usersSearchService.getMigratedWebexUsers(this.customerId)
1203
+ .subscribe(() => {
1204
+ const userIdInMigration = localStorage.getItem(LOCAL_STORAGE.USER_IN_MIGRATION);
1205
+ if (userIdInMigration && this.usersSearchService.migratedUsers.filter((migratedUser) => migratedUser.userid === userIdInMigration)) {
1206
+ localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);
1207
+ }
1208
+ this.runSearch();
1209
+ }, () => {
1210
+ this.dataPending = false;
1211
+ this.notifications.error('The data can not be received');
1212
+ });
1213
+ }
1214
+ onMoveUser(user, index, type) {
1215
+ const dialogRef = this.dialog.open(UserListConfirmDialogComponent, {
1216
+ data: {
1217
+ title: `Move user to ${type}?`,
1218
+ message: `You\'re sure that you want to move ${user.userid} to ${type}?`,
1219
+ confirmButtonText: 'Yes, continue'
1220
+ }
1221
+ });
1222
+ dialogRef.beforeClosed().subscribe((result) => {
1223
+ if (result) {
1224
+ switch (type) {
1225
+ case 'QuickMove':
1226
+ this.moveUserToMT(user, index);
1227
+ break;
1228
+ case 'MT':
1229
+ this.moveUser = user;
1230
+ this.moveUserIndex = index;
1231
+ this.showMoveUserWizard = true;
1232
+ this.switchToWizard.emit(true);
1233
+ break;
1234
+ case 'DI':
1235
+ this.moveUserToDI(user, index);
1236
+ break;
1237
+ }
1238
+ }
1239
+ });
1240
+ }
1241
+ runMoveUserToMT() {
1242
+ this.showMoveUserWizard = false;
1243
+ this.moveUserToMT(this.moveUser, this.moveUserIndex);
1244
+ }
1245
+ }
1246
+ UsersListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListComponent, deps: [{ token: UserService }, { token: APIService }, { token: ApiWebexService }, { token: NotificationService }, { token: UsersSearchService }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
1247
+ UsersListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UsersListComponent, selector: "app-users-list", inputs: { token: "token", customerId: "customerId", siteId: "siteId", host: "host" }, outputs: { openUser: "openUser", userMoved: "userMoved", switchToWizard: "switchToWizard" }, ngImport: i0, template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\r\n <app-pagination\r\n [pagination]=\"usersSearchService.getPagination()\"\r\n [showPageSizeOptions]=\"true\"\r\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\r\n (pageEmitter)=\"pageEvent($event)\">\r\n </app-pagination>\r\n <table class=\"webex-table\" mat-table *ngIf=\"users?.length\" #table [dataSource]=\"dataSource\">\r\n\r\n <ng-container matColumnDef=\"user-icon\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"name\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">First / Last Name</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\"> {{ user.firstName }} {{ user.lastName }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"email\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\r\n <td class=\"user-site\" [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">\r\n {{ user.email }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"status\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Status</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-user-status icon-user-status-active\"></span>{{user.status}}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"actions\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user, let i = index\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\">\r\n <mat-progress-spinner class=\"field-spinner\"\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"user.status === 'In Progress'\"></mat-progress-spinner>\r\n <button *ngIf=\"!(moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid)\"\r\n class=\"button-action-dot\" mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <div class=\"icon-actions-dots\">\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n </div>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\r\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\r\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'QuickMove')\">Quick Move User</button>\r\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'MT')\">Move User to MT</button>\r\n <button *ngIf=\"user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'DI')\">Move User to DI</button>\r\n <button mat-menu-item [disabled]=\"true\">Deactivate User</button>\r\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"role\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Administrator Role</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">{{ user.roleName || '' }}</td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n </table>\r\n</div>\r\n\r\n<app-move-user-wizard *ngIf=\"showMoveUserWizard\" [user]=\"moveUser\"\r\n [customerId]=\"customerId\" (runMoveUser)=\"runMoveUserToMT()\"\r\n (closeMoveUserWizard)=\"closeMoveUserWizard()\"></app-move-user-wizard>\r\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";table.mat-table{border-spacing:0;width:100%}::ng-deep .mat-paginator{background:none}.icon-user-status{width:.5rem;height:.5rem;border-radius:50%;background-color:#707070;margin:0 5px 0 0}.icon-user-status.icon-user-status-active{background-color:#1d805f;display:inline-block}.mat-select{height:100%;line-height:35px}.mat-form-field-wrapper{padding-bottom:0!important}.mat-form-field{padding:0;max-width:300px}.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{width:2rem;height:2rem;font-size:.7rem;line-height:1rem;display:inline-block;background:#d0d0d0;border-radius:2rem;line-height:40px;text-align:center}.icon-webex{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg id%3D%22a%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 16.67 15.56%22%3E%3Cdefs%3E%3Cstyle%3E.b%7Bfill%3Anone%3Bstroke%3A%232c355d%3Bstroke-width%3A1.4px%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cpath class%3D%22b%22 d%3D%22M4.87%2C3.89c0-1.72%2C1.51-3.19%2C3.47-3.19s3.47%2C1.47%2C3.47%2C3.19-1.51%2C3.19-3.47%2C3.19-3.47-1.47-3.47-3.19ZM.7%2C12.64c0-.37%2C.19-.76%2C.67-1.17%2C.48-.41%2C1.17-.78%2C2-1.09%2C1.66-.62%2C3.66-.93%2C4.97-.93s3.31%2C.31%2C4.97%2C.93c.83%2C.31%2C1.52%2C.68%2C2%2C1.09%2C.47%2C.41%2C.67%2C.8%2C.67%2C1.17v2.22H.7v-2.22Z%22%2F%3E%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Poppins,Poppins,sans-serif;font-size:14px}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:#009fdb!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-weight:400;font-size:14px}.user-info-box h3{display:block;font-weight:500;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#f7f7f7;color:#636363;font-size:12px}.webex-table td{background:#fff;color:#000;font-size:14px}.webex-table tr:hover td:not(.disabled-user-row){background:#ededed;cursor:pointer}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#F3F6F6;border:1px solid #E2E9EF;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important;line-height:35px!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}.mat-form-field-wrapper,.mat-form-field-flex{height:30px!important}.mat-form-field-appearance-outline .mat-form-field-outline,.mat-form-field-outline .mat-form-field-outline-thick{height:35px!important}.mat-select{line-height:20px!important}.mat-form-field-appearance-outline .mat-form-field-infix{padding:14px 12px 10px;border-top:0;max-width:300px}.mat-tab-group{font-family:Inter,sans-serif}.mat-tab-label{font-weight:500!important;font-size:14px!important;height:auto!important;min-width:auto!important;padding:0!important}.mat-ink-bar{background-color:#000000e6!important;height:3px!important}.mat-form-field-wrapper{padding-bottom:0}.mat-form-field{max-width:300px}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}::ng-deep .mat-form-field-wrapper{height:30px}::ng-deep .mat-form-field-flex{height:30px}::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}::ng-deep .mat-select{line-height:20px}::ng-deep .mat-form-field-infix{border-top:0px!important}::ng-deep .mat-paginator{background:transparent!important}::ng-deep .mat-paginator-container{min-height:30px!important}::ng-deep .mat-paginator-range-label{margin:0 10px 0 24px!important;font-size:15px!important}::ng-deep .pagination{font-size:13px;color:#0000008a}::ng-deep .per-page-block{display:flex;line-height:42px!important}::ng-deep .item_per_page{line-height:42px!important}::ng-deep .select-page-size{line-height:42px!important}::ng-deep mat-progress-spinner.page-spinner{position:fixed;margin:auto;inset:0}::ng-deep mat-progress-spinner.field-spinner{position:relative;margin:-20px auto auto}::ng-deep mat-progress-spinner.tab-spinner{position:relative;margin:0 auto auto}.icon-dot{display:block;color:#4f4f4f;font-size:16px;line-height:5px}.button-action-dot:hover{background:#dfdfdf}.button-action-dot{padding:0 5px 5px;border-radius:.25rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i10$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i10$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i10$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i10$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i10$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i10$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i10$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i10$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i10$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: PaginationComponent, selector: "app-pagination", inputs: ["pagination", "showPageSizeOptions", "showRefreshButton", "lengthPending"], outputs: ["pageEmitter", "pageNumberChangeEmitter"] }, { kind: "component", type: AppLoaderComponent, selector: "app-loader" }, { kind: "component", type: MoveUserWizardComponent, selector: "app-move-user-wizard", inputs: ["user", "customerId"], outputs: ["closeMoveUserWizard", "runMoveUser"] }] });
1248
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListComponent, decorators: [{
1249
+ type: Component,
1250
+ args: [{ selector: 'app-users-list', template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\r\n <app-pagination\r\n [pagination]=\"usersSearchService.getPagination()\"\r\n [showPageSizeOptions]=\"true\"\r\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\r\n (pageEmitter)=\"pageEvent($event)\">\r\n </app-pagination>\r\n <table class=\"webex-table\" mat-table *ngIf=\"users?.length\" #table [dataSource]=\"dataSource\">\r\n\r\n <ng-container matColumnDef=\"user-icon\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"name\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">First / Last Name</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\"> {{ user.firstName }} {{ user.lastName }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"email\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\r\n <td class=\"user-site\" [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">\r\n {{ user.email }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"status\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Status</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-user-status icon-user-status-active\"></span>{{user.status}}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"actions\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user, let i = index\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\">\r\n <mat-progress-spinner class=\"field-spinner\"\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"user.status === 'In Progress'\"></mat-progress-spinner>\r\n <button *ngIf=\"!(moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid)\"\r\n class=\"button-action-dot\" mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <div class=\"icon-actions-dots\">\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n </div>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\r\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\r\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'QuickMove')\">Quick Move User</button>\r\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'MT')\">Move User to MT</button>\r\n <button *ngIf=\"user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'DI')\">Move User to DI</button>\r\n <button mat-menu-item [disabled]=\"true\">Deactivate User</button>\r\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"role\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Administrator Role</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">{{ user.roleName || '' }}</td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n </table>\r\n</div>\r\n\r\n<app-move-user-wizard *ngIf=\"showMoveUserWizard\" [user]=\"moveUser\"\r\n [customerId]=\"customerId\" (runMoveUser)=\"runMoveUserToMT()\"\r\n (closeMoveUserWizard)=\"closeMoveUserWizard()\"></app-move-user-wizard>\r\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";table.mat-table{border-spacing:0;width:100%}::ng-deep .mat-paginator{background:none}.icon-user-status{width:.5rem;height:.5rem;border-radius:50%;background-color:#707070;margin:0 5px 0 0}.icon-user-status.icon-user-status-active{background-color:#1d805f;display:inline-block}.mat-select{height:100%;line-height:35px}.mat-form-field-wrapper{padding-bottom:0!important}.mat-form-field{padding:0;max-width:300px}.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{width:2rem;height:2rem;font-size:.7rem;line-height:1rem;display:inline-block;background:#d0d0d0;border-radius:2rem;line-height:40px;text-align:center}.icon-webex{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg id%3D%22a%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 16.67 15.56%22%3E%3Cdefs%3E%3Cstyle%3E.b%7Bfill%3Anone%3Bstroke%3A%232c355d%3Bstroke-width%3A1.4px%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cpath class%3D%22b%22 d%3D%22M4.87%2C3.89c0-1.72%2C1.51-3.19%2C3.47-3.19s3.47%2C1.47%2C3.47%2C3.19-1.51%2C3.19-3.47%2C3.19-3.47-1.47-3.47-3.19ZM.7%2C12.64c0-.37%2C.19-.76%2C.67-1.17%2C.48-.41%2C1.17-.78%2C2-1.09%2C1.66-.62%2C3.66-.93%2C4.97-.93s3.31%2C.31%2C4.97%2C.93c.83%2C.31%2C1.52%2C.68%2C2%2C1.09%2C.47%2C.41%2C.67%2C.8%2C.67%2C1.17v2.22H.7v-2.22Z%22%2F%3E%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Poppins,Poppins,sans-serif;font-size:14px}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:#009fdb!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-weight:400;font-size:14px}.user-info-box h3{display:block;font-weight:500;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#f7f7f7;color:#636363;font-size:12px}.webex-table td{background:#fff;color:#000;font-size:14px}.webex-table tr:hover td:not(.disabled-user-row){background:#ededed;cursor:pointer}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#F3F6F6;border:1px solid #E2E9EF;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important;line-height:35px!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}.mat-form-field-wrapper,.mat-form-field-flex{height:30px!important}.mat-form-field-appearance-outline .mat-form-field-outline,.mat-form-field-outline .mat-form-field-outline-thick{height:35px!important}.mat-select{line-height:20px!important}.mat-form-field-appearance-outline .mat-form-field-infix{padding:14px 12px 10px;border-top:0;max-width:300px}.mat-tab-group{font-family:Inter,sans-serif}.mat-tab-label{font-weight:500!important;font-size:14px!important;height:auto!important;min-width:auto!important;padding:0!important}.mat-ink-bar{background-color:#000000e6!important;height:3px!important}.mat-form-field-wrapper{padding-bottom:0}.mat-form-field{max-width:300px}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}::ng-deep .mat-form-field-wrapper{height:30px}::ng-deep .mat-form-field-flex{height:30px}::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}::ng-deep .mat-select{line-height:20px}::ng-deep .mat-form-field-infix{border-top:0px!important}::ng-deep .mat-paginator{background:transparent!important}::ng-deep .mat-paginator-container{min-height:30px!important}::ng-deep .mat-paginator-range-label{margin:0 10px 0 24px!important;font-size:15px!important}::ng-deep .pagination{font-size:13px;color:#0000008a}::ng-deep .per-page-block{display:flex;line-height:42px!important}::ng-deep .item_per_page{line-height:42px!important}::ng-deep .select-page-size{line-height:42px!important}::ng-deep mat-progress-spinner.page-spinner{position:fixed;margin:auto;inset:0}::ng-deep mat-progress-spinner.field-spinner{position:relative;margin:-20px auto auto}::ng-deep mat-progress-spinner.tab-spinner{position:relative;margin:0 auto auto}.icon-dot{display:block;color:#4f4f4f;font-size:16px;line-height:5px}.button-action-dot:hover{background:#dfdfdf}.button-action-dot{padding:0 5px 5px;border-radius:.25rem}\n"] }]
1251
+ }], ctorParameters: function () { return [{ type: UserService }, { type: APIService }, { type: ApiWebexService }, { type: NotificationService }, { type: UsersSearchService }, { type: i1.MatDialog }]; }, propDecorators: { token: [{
1252
+ type: Input
1253
+ }], customerId: [{
1254
+ type: Input
1255
+ }], siteId: [{
1256
+ type: Input
1257
+ }], openUser: [{
1258
+ type: Output
1259
+ }], userMoved: [{
1260
+ type: Output
1261
+ }], switchToWizard: [{
1262
+ type: Output
1263
+ }], host: [{
1264
+ type: Input
1264
1265
  }] } });
1265
1266
 
1266
- class EventsCommunicationService {
1267
- constructor() {
1268
- this.onSuccessfulLoginEvent = new Subject();
1269
- }
1270
- }
1271
- EventsCommunicationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsCommunicationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1272
- EventsCommunicationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsCommunicationService });
1273
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsCommunicationService, decorators: [{
1274
- type: Injectable
1267
+ class EventsCommunicationService {
1268
+ constructor() {
1269
+ this.onSuccessfulLoginEvent = new Subject();
1270
+ }
1271
+ }
1272
+ EventsCommunicationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsCommunicationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1273
+ EventsCommunicationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsCommunicationService });
1274
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsCommunicationService, decorators: [{
1275
+ type: Injectable
1275
1276
  }], ctorParameters: function () { return []; } });
1276
1277
 
1277
- class MaterialModule {
1278
- }
1279
- MaterialModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1280
- MaterialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, imports: [DragDropModule,
1281
- MatButtonModule,
1282
- MatListModule,
1283
- MatProgressSpinnerModule,
1284
- MatExpansionModule,
1285
- MatInputModule,
1286
- MatInputModule,
1287
- MatListModule,
1288
- MatTreeModule,
1289
- MatTreeModule,
1290
- MatNativeDateModule,
1291
- MatDatepickerModule,
1292
- MatTooltipModule,
1293
- MatAutocompleteModule,
1294
- MatChipsModule,
1295
- MatSidenavModule,
1296
- MatFormFieldModule,
1297
- MatStepperModule,
1298
- MatTabsModule,
1299
- MatCardModule,
1300
- MatSelectModule,
1301
- MatCheckboxModule,
1302
- MatSlideToggleModule,
1303
- MatTableModule,
1304
- MatPaginatorModule,
1305
- MatMenuModule,
1306
- MatDialogModule,
1307
- MatRadioModule], exports: [DragDropModule,
1308
- MatButtonModule,
1309
- MatListModule,
1310
- MatProgressSpinnerModule,
1311
- MatExpansionModule,
1312
- MatInputModule,
1313
- MatInputModule,
1314
- MatListModule,
1315
- MatTreeModule,
1316
- MatTreeModule,
1317
- MatNativeDateModule,
1318
- MatDatepickerModule,
1319
- MatTooltipModule,
1320
- MatAutocompleteModule,
1321
- MatChipsModule,
1322
- MatSidenavModule,
1323
- MatFormFieldModule,
1324
- MatStepperModule,
1325
- MatTabsModule,
1326
- MatCardModule,
1327
- MatCheckboxModule,
1328
- MatSelectModule,
1329
- MatSlideToggleModule,
1330
- MatProgressSpinnerModule,
1331
- MatTableModule,
1332
- MatPaginatorModule,
1333
- MatMenuModule,
1334
- MatDialogModule,
1335
- MatRadioModule] });
1336
- MaterialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, imports: [DragDropModule,
1337
- MatButtonModule,
1338
- MatListModule,
1339
- MatProgressSpinnerModule,
1340
- MatExpansionModule,
1341
- MatInputModule,
1342
- MatInputModule,
1343
- MatListModule,
1344
- MatTreeModule,
1345
- MatTreeModule,
1346
- MatNativeDateModule,
1347
- MatDatepickerModule,
1348
- MatTooltipModule,
1349
- MatAutocompleteModule,
1350
- MatChipsModule,
1351
- MatSidenavModule,
1352
- MatFormFieldModule,
1353
- MatStepperModule,
1354
- MatTabsModule,
1355
- MatCardModule,
1356
- MatSelectModule,
1357
- MatCheckboxModule,
1358
- MatSlideToggleModule,
1359
- MatTableModule,
1360
- MatPaginatorModule,
1361
- MatMenuModule,
1362
- MatDialogModule,
1363
- MatRadioModule, DragDropModule,
1364
- MatButtonModule,
1365
- MatListModule,
1366
- MatProgressSpinnerModule,
1367
- MatExpansionModule,
1368
- MatInputModule,
1369
- MatInputModule,
1370
- MatListModule,
1371
- MatTreeModule,
1372
- MatTreeModule,
1373
- MatNativeDateModule,
1374
- MatDatepickerModule,
1375
- MatTooltipModule,
1376
- MatAutocompleteModule,
1377
- MatChipsModule,
1378
- MatSidenavModule,
1379
- MatFormFieldModule,
1380
- MatStepperModule,
1381
- MatTabsModule,
1382
- MatCardModule,
1383
- MatCheckboxModule,
1384
- MatSelectModule,
1385
- MatSlideToggleModule,
1386
- MatProgressSpinnerModule,
1387
- MatTableModule,
1388
- MatPaginatorModule,
1389
- MatMenuModule,
1390
- MatDialogModule,
1391
- MatRadioModule] });
1392
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, decorators: [{
1393
- type: NgModule,
1394
- args: [{
1395
- imports: [
1396
- DragDropModule,
1397
- MatButtonModule,
1398
- MatListModule,
1399
- MatProgressSpinnerModule,
1400
- MatExpansionModule,
1401
- MatInputModule,
1402
- MatInputModule,
1403
- MatListModule,
1404
- MatTreeModule,
1405
- MatTreeModule,
1406
- MatNativeDateModule,
1407
- MatDatepickerModule,
1408
- MatTooltipModule,
1409
- MatAutocompleteModule,
1410
- MatChipsModule,
1411
- MatSidenavModule,
1412
- MatFormFieldModule,
1413
- MatStepperModule,
1414
- MatTabsModule,
1415
- MatCardModule,
1416
- MatSelectModule,
1417
- MatCheckboxModule,
1418
- MatSlideToggleModule,
1419
- MatTableModule,
1420
- MatPaginatorModule,
1421
- MatMenuModule,
1422
- MatDialogModule,
1423
- MatRadioModule
1424
- ],
1425
- exports: [
1426
- DragDropModule,
1427
- MatButtonModule,
1428
- MatListModule,
1429
- MatProgressSpinnerModule,
1430
- MatExpansionModule,
1431
- MatInputModule,
1432
- MatInputModule,
1433
- MatListModule,
1434
- MatTreeModule,
1435
- MatTreeModule,
1436
- MatNativeDateModule,
1437
- MatDatepickerModule,
1438
- MatTooltipModule,
1439
- MatAutocompleteModule,
1440
- MatChipsModule,
1441
- MatSidenavModule,
1442
- MatFormFieldModule,
1443
- MatStepperModule,
1444
- MatTabsModule,
1445
- MatCardModule,
1446
- MatCheckboxModule,
1447
- MatSelectModule,
1448
- MatSlideToggleModule,
1449
- MatProgressSpinnerModule,
1450
- MatTableModule,
1451
- MatPaginatorModule,
1452
- MatMenuModule,
1453
- MatDialogModule,
1454
- MatRadioModule
1455
- ],
1456
- }]
1278
+ class MaterialModule {
1279
+ }
1280
+ MaterialModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1281
+ MaterialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, imports: [DragDropModule,
1282
+ MatButtonModule,
1283
+ MatListModule,
1284
+ MatProgressSpinnerModule,
1285
+ MatExpansionModule,
1286
+ MatInputModule,
1287
+ MatInputModule,
1288
+ MatListModule,
1289
+ MatTreeModule,
1290
+ MatTreeModule,
1291
+ MatNativeDateModule,
1292
+ MatDatepickerModule,
1293
+ MatTooltipModule,
1294
+ MatAutocompleteModule,
1295
+ MatChipsModule,
1296
+ MatSidenavModule,
1297
+ MatFormFieldModule,
1298
+ MatStepperModule,
1299
+ MatTabsModule,
1300
+ MatCardModule,
1301
+ MatSelectModule,
1302
+ MatCheckboxModule,
1303
+ MatSlideToggleModule,
1304
+ MatTableModule,
1305
+ MatPaginatorModule,
1306
+ MatMenuModule,
1307
+ MatDialogModule,
1308
+ MatRadioModule], exports: [DragDropModule,
1309
+ MatButtonModule,
1310
+ MatListModule,
1311
+ MatProgressSpinnerModule,
1312
+ MatExpansionModule,
1313
+ MatInputModule,
1314
+ MatInputModule,
1315
+ MatListModule,
1316
+ MatTreeModule,
1317
+ MatTreeModule,
1318
+ MatNativeDateModule,
1319
+ MatDatepickerModule,
1320
+ MatTooltipModule,
1321
+ MatAutocompleteModule,
1322
+ MatChipsModule,
1323
+ MatSidenavModule,
1324
+ MatFormFieldModule,
1325
+ MatStepperModule,
1326
+ MatTabsModule,
1327
+ MatCardModule,
1328
+ MatCheckboxModule,
1329
+ MatSelectModule,
1330
+ MatSlideToggleModule,
1331
+ MatProgressSpinnerModule,
1332
+ MatTableModule,
1333
+ MatPaginatorModule,
1334
+ MatMenuModule,
1335
+ MatDialogModule,
1336
+ MatRadioModule] });
1337
+ MaterialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, imports: [DragDropModule,
1338
+ MatButtonModule,
1339
+ MatListModule,
1340
+ MatProgressSpinnerModule,
1341
+ MatExpansionModule,
1342
+ MatInputModule,
1343
+ MatInputModule,
1344
+ MatListModule,
1345
+ MatTreeModule,
1346
+ MatTreeModule,
1347
+ MatNativeDateModule,
1348
+ MatDatepickerModule,
1349
+ MatTooltipModule,
1350
+ MatAutocompleteModule,
1351
+ MatChipsModule,
1352
+ MatSidenavModule,
1353
+ MatFormFieldModule,
1354
+ MatStepperModule,
1355
+ MatTabsModule,
1356
+ MatCardModule,
1357
+ MatSelectModule,
1358
+ MatCheckboxModule,
1359
+ MatSlideToggleModule,
1360
+ MatTableModule,
1361
+ MatPaginatorModule,
1362
+ MatMenuModule,
1363
+ MatDialogModule,
1364
+ MatRadioModule, DragDropModule,
1365
+ MatButtonModule,
1366
+ MatListModule,
1367
+ MatProgressSpinnerModule,
1368
+ MatExpansionModule,
1369
+ MatInputModule,
1370
+ MatInputModule,
1371
+ MatListModule,
1372
+ MatTreeModule,
1373
+ MatTreeModule,
1374
+ MatNativeDateModule,
1375
+ MatDatepickerModule,
1376
+ MatTooltipModule,
1377
+ MatAutocompleteModule,
1378
+ MatChipsModule,
1379
+ MatSidenavModule,
1380
+ MatFormFieldModule,
1381
+ MatStepperModule,
1382
+ MatTabsModule,
1383
+ MatCardModule,
1384
+ MatCheckboxModule,
1385
+ MatSelectModule,
1386
+ MatSlideToggleModule,
1387
+ MatProgressSpinnerModule,
1388
+ MatTableModule,
1389
+ MatPaginatorModule,
1390
+ MatMenuModule,
1391
+ MatDialogModule,
1392
+ MatRadioModule] });
1393
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, decorators: [{
1394
+ type: NgModule,
1395
+ args: [{
1396
+ imports: [
1397
+ DragDropModule,
1398
+ MatButtonModule,
1399
+ MatListModule,
1400
+ MatProgressSpinnerModule,
1401
+ MatExpansionModule,
1402
+ MatInputModule,
1403
+ MatInputModule,
1404
+ MatListModule,
1405
+ MatTreeModule,
1406
+ MatTreeModule,
1407
+ MatNativeDateModule,
1408
+ MatDatepickerModule,
1409
+ MatTooltipModule,
1410
+ MatAutocompleteModule,
1411
+ MatChipsModule,
1412
+ MatSidenavModule,
1413
+ MatFormFieldModule,
1414
+ MatStepperModule,
1415
+ MatTabsModule,
1416
+ MatCardModule,
1417
+ MatSelectModule,
1418
+ MatCheckboxModule,
1419
+ MatSlideToggleModule,
1420
+ MatTableModule,
1421
+ MatPaginatorModule,
1422
+ MatMenuModule,
1423
+ MatDialogModule,
1424
+ MatRadioModule
1425
+ ],
1426
+ exports: [
1427
+ DragDropModule,
1428
+ MatButtonModule,
1429
+ MatListModule,
1430
+ MatProgressSpinnerModule,
1431
+ MatExpansionModule,
1432
+ MatInputModule,
1433
+ MatInputModule,
1434
+ MatListModule,
1435
+ MatTreeModule,
1436
+ MatTreeModule,
1437
+ MatNativeDateModule,
1438
+ MatDatepickerModule,
1439
+ MatTooltipModule,
1440
+ MatAutocompleteModule,
1441
+ MatChipsModule,
1442
+ MatSidenavModule,
1443
+ MatFormFieldModule,
1444
+ MatStepperModule,
1445
+ MatTabsModule,
1446
+ MatCardModule,
1447
+ MatCheckboxModule,
1448
+ MatSelectModule,
1449
+ MatSlideToggleModule,
1450
+ MatProgressSpinnerModule,
1451
+ MatTableModule,
1452
+ MatPaginatorModule,
1453
+ MatMenuModule,
1454
+ MatDialogModule,
1455
+ MatRadioModule
1456
+ ],
1457
+ }]
1457
1458
  }] });
1458
1459
 
1459
- class UsersListModule {
1460
- }
1461
- UsersListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1462
- UsersListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, declarations: [UsersListComponent,
1463
- PaginationComponent,
1464
- AppLoaderComponent,
1465
- MoveUserWizardComponent,
1466
- MoveUserStepperComponent,
1467
- UserListConfirmDialogComponent], imports: [BrowserModule,
1468
- FormsModule,
1469
- ReactiveFormsModule,
1470
- HttpClientModule,
1471
- MaterialModule], exports: [UsersListComponent] });
1472
- UsersListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, providers: [
1473
- UserService,
1474
- APIService,
1475
- EventsCommunicationService,
1476
- UsersSearchService,
1477
- NotificationService,
1478
- RemoveKynFromIBMService,
1479
- ApiWebexService,
1480
- DnsService
1481
- ], imports: [BrowserModule,
1482
- FormsModule,
1483
- ReactiveFormsModule,
1484
- HttpClientModule,
1485
- MaterialModule] });
1486
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, decorators: [{
1487
- type: NgModule,
1488
- args: [{
1489
- declarations: [
1490
- UsersListComponent,
1491
- PaginationComponent,
1492
- AppLoaderComponent,
1493
- MoveUserWizardComponent,
1494
- MoveUserStepperComponent,
1495
- UserListConfirmDialogComponent
1496
- ],
1497
- imports: [
1498
- BrowserModule,
1499
- FormsModule,
1500
- ReactiveFormsModule,
1501
- HttpClientModule,
1502
- MaterialModule
1503
- ],
1504
- providers: [
1505
- UserService,
1506
- APIService,
1507
- EventsCommunicationService,
1508
- UsersSearchService,
1509
- NotificationService,
1510
- RemoveKynFromIBMService,
1511
- ApiWebexService,
1512
- DnsService
1513
- ],
1514
- exports: [UsersListComponent]
1515
- }]
1460
+ class UsersListModule {
1461
+ }
1462
+ UsersListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1463
+ UsersListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, declarations: [UsersListComponent,
1464
+ PaginationComponent,
1465
+ AppLoaderComponent,
1466
+ MoveUserWizardComponent,
1467
+ MoveUserStepperComponent,
1468
+ UserListConfirmDialogComponent], imports: [BrowserModule,
1469
+ FormsModule,
1470
+ ReactiveFormsModule,
1471
+ HttpClientModule,
1472
+ MaterialModule], exports: [UsersListComponent] });
1473
+ UsersListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, providers: [
1474
+ UserService,
1475
+ APIService,
1476
+ EventsCommunicationService,
1477
+ UsersSearchService,
1478
+ NotificationService,
1479
+ RemoveKynFromIBMService,
1480
+ ApiWebexService,
1481
+ DnsService
1482
+ ], imports: [BrowserModule,
1483
+ FormsModule,
1484
+ ReactiveFormsModule,
1485
+ HttpClientModule,
1486
+ MaterialModule] });
1487
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, decorators: [{
1488
+ type: NgModule,
1489
+ args: [{
1490
+ declarations: [
1491
+ UsersListComponent,
1492
+ PaginationComponent,
1493
+ AppLoaderComponent,
1494
+ MoveUserWizardComponent,
1495
+ MoveUserStepperComponent,
1496
+ UserListConfirmDialogComponent
1497
+ ],
1498
+ imports: [
1499
+ BrowserModule,
1500
+ FormsModule,
1501
+ ReactiveFormsModule,
1502
+ HttpClientModule,
1503
+ MaterialModule
1504
+ ],
1505
+ providers: [
1506
+ UserService,
1507
+ APIService,
1508
+ EventsCommunicationService,
1509
+ UsersSearchService,
1510
+ NotificationService,
1511
+ RemoveKynFromIBMService,
1512
+ ApiWebexService,
1513
+ DnsService
1514
+ ],
1515
+ exports: [UsersListComponent]
1516
+ }]
1516
1517
  }] });
1517
1518
 
1518
- /**
1519
- * Generated bundle index. Do not edit.
1519
+ /**
1520
+ * Generated bundle index. Do not edit.
1520
1521
  */
1521
1522
 
1522
1523
  export { APIService, EventsCommunicationService, NotificationService, RemoveKynFromIBMService, UserService, UsersListComponent, UsersListModule, UsersSearchService };