@getjones/test-infra 4.5.9 → 4.5.11

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 (244) hide show
  1. package/package.json +30 -30
  2. package/src/common/commonFlows/auth/auth.js +40 -40
  3. package/src/common/commonFlows/index.js +4 -4
  4. package/src/common/commonFlows/records/records.js +269 -269
  5. package/src/common/consts/accountSettings.js +44 -44
  6. package/src/common/consts/activationStatuses.js +6 -6
  7. package/src/common/consts/autocomplete.js +10 -10
  8. package/src/common/consts/constantsForRecordsSortingAndFilters.js +49 -49
  9. package/src/common/consts/dashboardCharts.js +18 -18
  10. package/src/common/consts/homepage/AttentionTab.js +6 -6
  11. package/src/common/consts/homepage/sortOptions.js +19 -19
  12. package/src/common/consts/ocrStatuses.js +6 -6
  13. package/src/common/consts/projectSettings.js +21 -21
  14. package/src/common/consts/recordTypes.js +5 -5
  15. package/src/common/consts/requirementActions.js +10 -10
  16. package/src/common/consts/s3FileTypes.js +13 -13
  17. package/src/common/consts/userRoles.js +18 -18
  18. package/src/common/consts/userTypes.js +8 -8
  19. package/src/common/errorCodes.js +3 -3
  20. package/src/common/httpResponseStatusCodes.json +11 -11
  21. package/src/common/httpResponseTypes.json +2 -2
  22. package/src/common/requests/apiKeyAuth/requests.js +44 -44
  23. package/src/common/requests/cookieAuth/requests.js +40 -40
  24. package/src/common/requests/internalAuth/requests.js +48 -48
  25. package/src/common/requests/requestHandlers.js +80 -80
  26. package/src/common/utils/complianceUtil.js +113 -116
  27. package/src/common/utils/configsUtil.js +22 -22
  28. package/src/common/utils/dataTypeUtils.js +41 -41
  29. package/src/common/utils/numberUtils.js +22 -22
  30. package/src/common/utils/objectUtils.js +7 -7
  31. package/src/common/utils/timeUtils.js +177 -177
  32. package/src/common/validations/errorValidation.js +16 -16
  33. package/src/common/validations/typeValidations.js +36 -36
  34. package/src/defaults/configs/auditConfigs.js +125 -125
  35. package/src/defaults/configs/coverage.js +144 -144
  36. package/src/defaults/configs/polices.js +76 -76
  37. package/src/defaults/configs/requirement.js +32 -32
  38. package/src/defaults/index.js +6 -6
  39. package/src/env.js +57 -57
  40. package/src/factory/globalRecord/globalRecord.js +43 -43
  41. package/src/factory/index.js +8 -8
  42. package/src/factory/records/records.js +281 -282
  43. package/src/factory/users/users.js +69 -69
  44. package/src/index.js +103 -103
  45. package/src/saas/internal-api/accountDirectory/api/accountDirectory.api.js +50 -50
  46. package/src/saas/internal-api/accountDirectory/api/accountDirectory.service.js +182 -182
  47. package/src/saas/internal-api/accountDirectory/index.js +4 -4
  48. package/src/saas/internal-api/accountDirectory/models/accountDirectory.model.js +40 -40
  49. package/src/saas/internal-api/accounts/api/core/accounts.core.api.js +35 -35
  50. package/src/saas/internal-api/accounts/api/core/accounts.core.service.js +93 -93
  51. package/src/saas/internal-api/accounts/api/emailCustomization/accounts.email.customizations.api.js +29 -29
  52. package/src/saas/internal-api/accounts/api/emailCustomization/accounts.email.customizations.service.js +61 -61
  53. package/src/saas/internal-api/accounts/api/openapi/accounts.openapi.api.js +48 -48
  54. package/src/saas/internal-api/accounts/api/openapi/accounts.openapi.service.js +74 -74
  55. package/src/saas/internal-api/accounts/api/settings/settings.api.js +21 -21
  56. package/src/saas/internal-api/accounts/api/settings/settings.service.js +41 -41
  57. package/src/saas/internal-api/accounts/consts/consts.js +8 -8
  58. package/src/saas/internal-api/accounts/index.js +22 -22
  59. package/src/saas/internal-api/accounts/models/core/create.account.model.js +16 -16
  60. package/src/saas/internal-api/accounts/models/settings/update.settings.model.js +53 -53
  61. package/src/saas/internal-api/accounts/utils/utils.js +61 -61
  62. package/src/saas/internal-api/agreement/api/agreement.api.js +39 -39
  63. package/src/saas/internal-api/agreement/api/agreement.service.js +121 -121
  64. package/src/saas/internal-api/agreement/consts/consts.js +11 -11
  65. package/src/saas/internal-api/agreement/index.js +12 -12
  66. package/src/saas/internal-api/agreement/models/create.agreement.model.js +12 -12
  67. package/src/saas/internal-api/agreement/models/createAgreementByAuditorModel.js +11 -11
  68. package/src/saas/internal-api/agreement/models/createAgreementByPMModel.js +13 -13
  69. package/src/saas/internal-api/auditCustomerRules/api/customer.rules.api.js +43 -43
  70. package/src/saas/internal-api/auditCustomerRules/api/customer.rules.service.js +105 -105
  71. package/src/saas/internal-api/auditCustomerRules/consts/customer.rule.js +11 -11
  72. package/src/saas/internal-api/auditCustomerRules/index.js +6 -6
  73. package/src/saas/internal-api/auditCustomerRules/models/customer.rule.model.js +46 -46
  74. package/src/saas/internal-api/auditCustomerRules/utils/customer.rule.util.js +19 -19
  75. package/src/saas/internal-api/auditNotes/api/audit.notes.api.js +40 -40
  76. package/src/saas/internal-api/auditNotes/api/audit.notes.service.js +115 -115
  77. package/src/saas/internal-api/auditNotes/index.js +4 -4
  78. package/src/saas/internal-api/auditNotes/models/audit.note.model.js +30 -30
  79. package/src/saas/internal-api/auth/api/auth.api.js +27 -27
  80. package/src/saas/internal-api/auth/api/auth.service.js +90 -90
  81. package/src/saas/internal-api/auth/index.js +3 -3
  82. package/src/saas/internal-api/coi/api/coi.api.js +58 -58
  83. package/src/saas/internal-api/coi/api/coi.service.js +61 -61
  84. package/src/saas/internal-api/coi/consts/hashes.js +5 -5
  85. package/src/saas/internal-api/coi/consts/uploaderTypes.js +5 -5
  86. package/src/saas/internal-api/coi/index.js +14 -14
  87. package/src/saas/internal-api/coi/models/Combine.last.two.cois.model.js +25 -25
  88. package/src/saas/internal-api/coi/models/submit.coi.model.js +19 -19
  89. package/src/saas/internal-api/coi/utils/utils.js +117 -117
  90. package/src/saas/internal-api/compliance/api/amBestRating/am.best.rating.api.js +12 -12
  91. package/src/saas/internal-api/compliance/api/amBestRating/am.best.rating.service.js +14 -14
  92. package/src/saas/internal-api/compliance/api/audit/audit.api.js +106 -115
  93. package/src/saas/internal-api/compliance/api/audit/audit.service.js +307 -329
  94. package/src/saas/internal-api/compliance/api/convert/convert.api.js +17 -17
  95. package/src/saas/internal-api/compliance/api/convert/convert.service.js +11 -11
  96. package/src/saas/internal-api/compliance/api/coverage/coverage.api.js +33 -33
  97. package/src/saas/internal-api/compliance/api/coverage/coverage.service.js +46 -46
  98. package/src/saas/internal-api/compliance/api/overrideGap/override.gap.api.js +38 -38
  99. package/src/saas/internal-api/compliance/api/overrideGap/override.gap.service.js +189 -189
  100. package/src/saas/internal-api/compliance/consts/audit.js +113 -113
  101. package/src/saas/internal-api/compliance/index.js +36 -36
  102. package/src/saas/internal-api/compliance/models/audit/audit.model.js +96 -96
  103. package/src/saas/internal-api/compliance/models/waive/waive.model.js +49 -49
  104. package/src/saas/internal-api/compliance/utils/auditUtil.js +269 -269
  105. package/src/saas/internal-api/compliance/utils/coverageUtil.js +45 -45
  106. package/src/saas/internal-api/contractors/api/contractors.api.js +209 -209
  107. package/src/saas/internal-api/contractors/api/contractors.service.js +361 -361
  108. package/src/saas/internal-api/contractors/consts/consts.js +6 -6
  109. package/src/saas/internal-api/contractors/index.js +8 -8
  110. package/src/saas/internal-api/contractors/models/assign.requirement.model.js +10 -10
  111. package/src/saas/internal-api/contractors/models/edit.contractor.model.js +73 -73
  112. package/src/saas/internal-api/contractors/models/link.request.model.js +10 -10
  113. package/src/saas/internal-api/contractors/models/subscription.contractor.model.js +13 -13
  114. package/src/saas/internal-api/contractors/models/verification.contractor.model.js +27 -27
  115. package/src/saas/internal-api/contractors/utils.js +25 -25
  116. package/src/saas/internal-api/dashboard/api/recordList.api.js +38 -38
  117. package/src/saas/internal-api/dashboard/api/recordList.service.js +60 -60
  118. package/src/saas/internal-api/dashboard/index.js +5 -5
  119. package/src/saas/internal-api/dashboard/models/dashboard.filter.criteria.model.js +38 -38
  120. package/src/saas/internal-api/dbEmails/api/db.emails.api.js +25 -25
  121. package/src/saas/internal-api/dbEmails/api/db.emails.service.js +156 -156
  122. package/src/saas/internal-api/dbEmails/consts/consts.js +56 -55
  123. package/src/saas/internal-api/dbEmails/index.js +6 -6
  124. package/src/saas/internal-api/dbEmails/models/db.emails.model.js +22 -22
  125. package/src/saas/internal-api/dbEmails/utils/util.js +87 -87
  126. package/src/saas/internal-api/emailCustomization/api/email.customization.api.js +26 -26
  127. package/src/saas/internal-api/emailCustomization/api/email.customization.service.js +50 -50
  128. package/src/saas/internal-api/emailCustomization/index.js +3 -3
  129. package/src/saas/internal-api/globalRecord/api/global.record.api.js +95 -95
  130. package/src/saas/internal-api/globalRecord/api/global.record.service.js +112 -112
  131. package/src/saas/internal-api/globalRecord/consts.js +20 -20
  132. package/src/saas/internal-api/globalRecord/index.js +6 -6
  133. package/src/saas/internal-api/globalRecord/models/global.record.model.js +60 -60
  134. package/src/saas/internal-api/globalRecord/utils/util.js +161 -161
  135. package/src/saas/internal-api/homepageCharts/api/charts.api.js +12 -12
  136. package/src/saas/internal-api/homepageCharts/api/charts.service.js +7 -7
  137. package/src/saas/internal-api/homepageCharts/index.js +3 -3
  138. package/src/saas/internal-api/jonesNetworkTab/api/jones.network.tab.api.js +14 -14
  139. package/src/saas/internal-api/jonesNetworkTab/api/jones.network.tab.service.js +16 -16
  140. package/src/saas/internal-api/jonesNetworkTab/index.js +3 -3
  141. package/src/saas/internal-api/notificationCenter/api/notification.center.api.js +32 -32
  142. package/src/saas/internal-api/notificationCenter/api/notification.center.service.js +49 -49
  143. package/src/saas/internal-api/notificationCenter/index.js +3 -3
  144. package/src/saas/internal-api/policyFile/api/policy.file.api.js +43 -43
  145. package/src/saas/internal-api/policyFile/api/policy.file.service.js +117 -117
  146. package/src/saas/internal-api/policyFile/consts.js +21 -21
  147. package/src/saas/internal-api/policyFile/index.js +11 -11
  148. package/src/saas/internal-api/policyFile/models/create.policy.file.model.js +11 -11
  149. package/src/saas/internal-api/policyFile/models/set.publish.flag.to.policy.model.js +13 -13
  150. package/src/saas/internal-api/projects/api/core/projects.api.js +39 -39
  151. package/src/saas/internal-api/projects/api/core/projects.service.js +77 -77
  152. package/src/saas/internal-api/projects/api/settings/project.settings.api.js +18 -18
  153. package/src/saas/internal-api/projects/api/settings/project.settings.service.js +35 -35
  154. package/src/saas/internal-api/projects/consts/defaultProject.js +3 -3
  155. package/src/saas/internal-api/projects/index.js +24 -24
  156. package/src/saas/internal-api/projects/models/core/create.project.model.js +41 -41
  157. package/src/saas/internal-api/projects/models/core/update.project.model.js +47 -47
  158. package/src/saas/internal-api/projects/models/settings/update.project.settings.model.js +40 -40
  159. package/src/saas/internal-api/projects/utils/utils.js +155 -155
  160. package/src/saas/internal-api/recordHub/api/record.hub.api.js +14 -14
  161. package/src/saas/internal-api/recordHub/api/record.hub.service.js +32 -32
  162. package/src/saas/internal-api/recordHub/index.js +3 -3
  163. package/src/saas/internal-api/recordNotes/api/record.notes.api.js +38 -38
  164. package/src/saas/internal-api/recordNotes/api/record.notes.service.js +56 -56
  165. package/src/saas/internal-api/recordNotes/api/record.notes.utils.js +12 -12
  166. package/src/saas/internal-api/recordNotes/index.js +3 -3
  167. package/src/saas/internal-api/reports/api/reports.api.js +62 -62
  168. package/src/saas/internal-api/reports/api/reports.service.js +79 -79
  169. package/src/saas/internal-api/reports/consts/consts.js +74 -74
  170. package/src/saas/internal-api/reports/index.js +15 -15
  171. package/src/saas/internal-api/reports/models/report.model.js +27 -27
  172. package/src/saas/internal-api/requests/api/requests.api.js +132 -132
  173. package/src/saas/internal-api/requests/api/requests.service.js +312 -312
  174. package/src/saas/internal-api/requests/index.js +21 -21
  175. package/src/saas/internal-api/requests/models/create.request.model.js +36 -36
  176. package/src/saas/internal-api/requests/models/draft.request.criteria.model.js +18 -18
  177. package/src/saas/internal-api/requests/models/draft.request.report.model.js +14 -14
  178. package/src/saas/internal-api/requests/models/edit.request.model.js +31 -31
  179. package/src/saas/internal-api/requests/models/homepageRequestCriteriaModel.js +19 -19
  180. package/src/saas/internal-api/requests/models/requestListCriteriaModel.js +17 -17
  181. package/src/saas/internal-api/requests/models/tenant.request.model.js +9 -9
  182. package/src/saas/internal-api/requests/utils.js +16 -16
  183. package/src/saas/internal-api/requestsTable/api/requests.table.api.js +20 -20
  184. package/src/saas/internal-api/requestsTable/api/requests.table.service.js +14 -14
  185. package/src/saas/internal-api/requestsTable/index.js +3 -3
  186. package/src/saas/internal-api/requirements/api/requirements.api.js +57 -57
  187. package/src/saas/internal-api/requirements/api/requirements.service.js +184 -184
  188. package/src/saas/internal-api/requirements/consts/attributeTypes.json +8 -8
  189. package/src/saas/internal-api/requirements/consts/consts.js +6 -6
  190. package/src/saas/internal-api/requirements/index.js +10 -10
  191. package/src/saas/internal-api/requirements/models/create.requirement.model.js +17 -17
  192. package/src/saas/internal-api/requirements/models/policy.model.js +35 -35
  193. package/src/saas/internal-api/requirements/models/update.requirement.model.js +19 -19
  194. package/src/saas/internal-api/requirements/utils/utils.js +129 -129
  195. package/src/saas/internal-api/serviceArea/api/coordinates.api.js +12 -12
  196. package/src/saas/internal-api/serviceArea/api/coordinates.service.js +7 -7
  197. package/src/saas/internal-api/serviceArea/index.js +4 -4
  198. package/src/saas/internal-api/serviceArea/utils/utils.js +8 -8
  199. package/src/saas/internal-api/tabs/api/tabs.api.js +32 -32
  200. package/src/saas/internal-api/tabs/api/tabs.service.js +60 -60
  201. package/src/saas/internal-api/tabs/index.js +3 -3
  202. package/src/saas/internal-api/tabs/models/tabs.model.js +19 -19
  203. package/src/saas/internal-api/thread-scheduler/runner.js +55 -55
  204. package/src/saas/internal-api/uploadFiles/api/upload.file.api.js +43 -43
  205. package/src/saas/internal-api/uploadFiles/api/upload.file.service.js +107 -107
  206. package/src/saas/internal-api/uploadFiles/consts.js +12 -12
  207. package/src/saas/internal-api/uploadFiles/index.js +5 -5
  208. package/src/saas/internal-api/users/api/tenantApp/tenant.app.api.js +38 -38
  209. package/src/saas/internal-api/users/api/tenantApp/tenant.app.service.js +108 -108
  210. package/src/saas/internal-api/users/api/users.api.js +127 -127
  211. package/src/saas/internal-api/users/api/users.service.js +258 -258
  212. package/src/saas/internal-api/users/index.js +16 -16
  213. package/src/saas/internal-api/users/models/create.inner.system.user.model.js +18 -18
  214. package/src/saas/internal-api/users/models/notification.settings.model.js +12 -12
  215. package/src/saas/internal-api/users/models/tenent.user.model.js +11 -11
  216. package/src/saas/internal-api/users/models/users.model.js +43 -43
  217. package/src/saas/internal-api/users/utils/util.js +39 -39
  218. package/src/saas/internal-api/vendorProfile/api/vendor.profile.api.js +26 -26
  219. package/src/saas/internal-api/vendorProfile/api/vendor.profile.service.js +19 -19
  220. package/src/saas/internal-api/vendorProfile/index.js +3 -3
  221. package/src/saas/openapi/accounts/accounts.api.js +17 -17
  222. package/src/saas/openapi/accounts/accounts.service.js +11 -11
  223. package/src/saas/openapi/coi/coi.api.js +30 -30
  224. package/src/saas/openapi/coi/coi.service.js +43 -43
  225. package/src/saas/openapi/projects/projects.api.js +83 -83
  226. package/src/saas/openapi/projects/projects.service.js +64 -64
  227. package/src/saas/openapi/requests/index.js +7 -7
  228. package/src/saas/openapi/requests/models/invite.request.model.js +40 -40
  229. package/src/saas/openapi/requests/models/update.request.model.js +35 -35
  230. package/src/saas/openapi/requests/requests.api.js +93 -93
  231. package/src/saas/openapi/requests/requests.service.js +94 -94
  232. package/src/saas/openapi/requirements/index.js +6 -6
  233. package/src/saas/openapi/requirements/models/copy.requirement.model.js +10 -10
  234. package/src/saas/openapi/requirements/requirements.api.js +41 -41
  235. package/src/saas/openapi/requirements/requirements.service.js +49 -49
  236. package/src/saas/openapi/tabs/index.js +6 -6
  237. package/src/saas/openapi/tabs/models/create.tab.model.js +6 -6
  238. package/src/saas/openapi/tabs/tabs.api.js +27 -27
  239. package/src/saas/openapi/tabs/tabs.service.js +19 -19
  240. package/src/saas/openapi/users/user.model.js +10 -10
  241. package/src/saas/openapi/users/users.api.js +33 -33
  242. package/src/saas/openapi/users/users.service.js +51 -51
  243. package/tests/env.test.js +40 -40
  244. package/tests/validation.test.js +83 -83
@@ -1,189 +1,189 @@
1
- const env = require('../../../../../env');
2
-
3
- const overrideGapApi = require('./override.gap.api');
4
- const { WaiveRequestModel, RetractRequestModel, WAIVER_REASONS } = require('../../models/waive/waive.model');
5
- const { validateType } = require('../../../../../common/validations/typeValidations');
6
- const auditUtil = require('../../utils/auditUtil');
7
- const httpResponseStatusCodes = require('../../../../../common/httpResponseStatusCodes.json');
8
-
9
- const { credentials } = env.getEnv();
10
- const userTypes = require('../../../../../common/consts/userTypes');
11
-
12
- const waive = (waiveRequestModel, context) => {
13
- validateType(waiveRequestModel, WaiveRequestModel);
14
- return overrideGapApi.waive(waiveRequestModel.contractorId, waiveRequestModel, context);
15
- };
16
-
17
- const retract = (retractRequestModel, context) => {
18
- validateType(retractRequestModel, RetractRequestModel);
19
- return overrideGapApi.retract(retractRequestModel.contractorId, retractRequestModel, context);
20
- };
21
-
22
- const overrideGap = ({ waiveRequestModel, isTestingBackwardCompatibility = false, context }) => {
23
- validateType(waiveRequestModel, WaiveRequestModel);
24
- return overrideGapApi.overrideGap({ waiveRequestModel, isTestingBackwardCompatibility, context });
25
- };
26
-
27
- const retractOverride = (retractRequestModel, context) => {
28
- validateType(retractRequestModel, RetractRequestModel);
29
- return overrideGapApi.retractOverride(retractRequestModel, context);
30
- };
31
-
32
- const getAllWaiveModels = (
33
- record,
34
- policyName,
35
- attributeName,
36
- waiverReason,
37
- remarks,
38
- {
39
- userId,
40
- userRole,
41
- auditId
42
- } = {}) => {
43
- const auditIds = auditId ? [auditId] : getPolicyAuditIdsFromRecord(record, policyName, auditUtil.getAttributeKey(attributeName));
44
- userId = userId || env.getSystemUserIdentity(credentials.superUser).id;
45
- userRole = userRole || userTypes.ICS;
46
-
47
- const waiverModels = [];
48
- let i = 0;
49
- while (i < auditIds.length) {
50
- const auditId = auditIds[i];
51
- const waiveModel = new WaiveRequestModel({
52
- contractorId: record.id,
53
- auditId,
54
- waiverReason,
55
- remarks,
56
- userId,
57
- userRole
58
- });
59
- waiverModels.push(waiveModel);
60
- i++;
61
- }
62
-
63
- return waiverModels;
64
- };
65
-
66
- const getWaiveModel = (
67
- record,
68
- policyName,
69
- attributeName,
70
- waiverReason,
71
- remarks,
72
- {
73
- userId,
74
- userRole,
75
- auditId
76
- } = {}) => {
77
- return getAllWaiveModels(record, policyName, attributeName, waiverReason, remarks, { userId, userRole, auditId })[0];
78
- };
79
-
80
- // used by automation. has to return a single model
81
- const getWaiveModelByGap = (
82
- record,
83
- policyName,
84
- gap,
85
- reason,
86
- note,
87
- {
88
- userId,
89
- userRole
90
- } = {}) => {
91
- const { attributeName, auditId } = auditUtil.getAttributeNameAndAuditIdByGap(record, policyName, gap);
92
-
93
- return getWaiveModel(record, policyName, attributeName, reason, note, { userId, userRole, auditId });
94
- };
95
-
96
- const getRetractModel = (record, policyName, attributeName) => {
97
- const auditIds = getPolicyAuditIdsFromRecord(record, policyName, auditUtil.getAttributeKey(attributeName));
98
- const userId = env.getSystemUserIdentity(credentials.superUser).id;
99
- const userRole = userTypes.ICS;
100
-
101
- const retractModels = [];
102
- for (const auditId of auditIds) {
103
- const model = new RetractRequestModel({
104
- contractorId: record.id,
105
- auditId,
106
- userId,
107
- userRole
108
- });
109
- retractModels.push(model);
110
- }
111
- return retractModels.length > 1 ? retractModels : retractModels[0];
112
- };
113
-
114
- const getPolicyAuditIdsFromRecord = (record, policyName, attributeName) => {
115
- const policy = record.reviewbyAuditor.find(contractorCoverage =>
116
- contractorCoverage.insuranceName === policyName);
117
-
118
- if (!policy) {
119
- throw new Error(`Policy name: ${policyName} don't exist in record`);
120
- }
121
-
122
- const attributes = policy.errorList.filter(error => error.limitname === attributeName);
123
-
124
- if (!attributes.length) {
125
- throw new Error(`Attribute name: ${attributeName} don't exist in record`);
126
- }
127
-
128
- const auditIds = attributes.map(a => a.auditId);
129
-
130
- return auditIds;
131
- };
132
-
133
- // private method - please refer to waiveAll / acceptAll
134
- const overrideAll = async (record, reason, context, { note = 'OVERRIDDEN AUTOMATICALLY' } = {}) => {
135
- let allWaivablePolicies = auditUtil.getAllWaivablePolicies(record, context);
136
- // Remove duplicates, this can happen for example in case of multiple errors on Additional Insured, Certificate Holder or Additional Information
137
- allWaivablePolicies = allWaivablePolicies.filter((value, index, self) =>
138
- index === self.findIndex(t => (
139
- t.policyName === value.policyName && t.attributeName === value.attributeName
140
- ))
141
- );
142
-
143
- for (const waivable of allWaivablePolicies) {
144
- const waiveModels = getAllWaiveModels(record, waivable.policyName, waivable.attributeName, reason, note);
145
- for (const waiveModel of waiveModels) {
146
- const waiveResponse = await overrideGap({ waiveRequestModel: waiveModel, context });
147
-
148
- if (waiveResponse.status !== httpResponseStatusCodes.OK) {
149
- throw Error(`Failed to waive ${waivable.policyName} - ${waivable.attributeName} for ${record.company}`);
150
- }
151
- }
152
- }
153
- };
154
-
155
- const waiveAll = async (record, context, { reason = WAIVER_REASONS.BUSINESS_DECISION, note = 'WAIVED AUTOMATICALLY' } = {}) => {
156
- if (reason === WAIVER_REASONS.ACCEPT_NO_EXPOSURE) {
157
- throw Error('Invalid override gap reason to waive');
158
- }
159
-
160
- await overrideAll(record, reason, context, { note });
161
- };
162
-
163
- const acceptAll = async (record, context, { note = 'ACCEPTED AUTOMATICALLY' } = {}) => {
164
- await overrideAll(record, WAIVER_REASONS.ACCEPT_NO_EXPOSURE, context, { note });
165
- };
166
-
167
- const getOverridesByRecordId = async function(recordId, context) {
168
- const responseAudit = await overrideGapApi.getOverridesByRecordId(recordId, context);
169
-
170
- if (responseAudit.status !== httpResponseStatusCodes.OK) {
171
- throw Error(`Failed to get overrides by record id\n${responseAudit}`);
172
- }
173
-
174
- return responseAudit.data;
175
- };
176
-
177
- module.exports = {
178
- waive,
179
- waiveAll,
180
- acceptAll,
181
- retract,
182
- getWaiveModel,
183
- getAllWaiveModels,
184
- getRetractModel,
185
- getWaiveModelByGap,
186
- overrideGap,
187
- retractOverride,
188
- getOverridesByRecordId
189
- };
1
+ const env = require('../../../../../env');
2
+
3
+ const overrideGapApi = require('./override.gap.api');
4
+ const { WaiveRequestModel, RetractRequestModel, WAIVER_REASONS } = require('../../models/waive/waive.model');
5
+ const { validateType } = require('../../../../../common/validations/typeValidations');
6
+ const auditUtil = require('../../utils/auditUtil');
7
+ const httpResponseStatusCodes = require('../../../../../common/httpResponseStatusCodes.json');
8
+
9
+ const { credentials } = env.getEnv();
10
+ const userTypes = require('../../../../../common/consts/userTypes');
11
+
12
+ const waive = (waiveRequestModel, context) => {
13
+ validateType(waiveRequestModel, WaiveRequestModel);
14
+ return overrideGapApi.waive(waiveRequestModel.contractorId, waiveRequestModel, context);
15
+ };
16
+
17
+ const retract = (retractRequestModel, context) => {
18
+ validateType(retractRequestModel, RetractRequestModel);
19
+ return overrideGapApi.retract(retractRequestModel.contractorId, retractRequestModel, context);
20
+ };
21
+
22
+ const overrideGap = ({ waiveRequestModel, isTestingBackwardCompatibility = false, context }) => {
23
+ validateType(waiveRequestModel, WaiveRequestModel);
24
+ return overrideGapApi.overrideGap({ waiveRequestModel, isTestingBackwardCompatibility, context });
25
+ };
26
+
27
+ const retractOverride = (retractRequestModel, context) => {
28
+ validateType(retractRequestModel, RetractRequestModel);
29
+ return overrideGapApi.retractOverride(retractRequestModel, context);
30
+ };
31
+
32
+ const getAllWaiveModels = (
33
+ record,
34
+ policyName,
35
+ attributeName,
36
+ waiverReason,
37
+ remarks,
38
+ {
39
+ userId,
40
+ userRole,
41
+ auditId
42
+ } = {}) => {
43
+ const auditIds = auditId ? [auditId] : getPolicyAuditIdsFromRecord(record, policyName, auditUtil.getAttributeKey(attributeName));
44
+ userId = userId || env.getSystemUserIdentity(credentials.superUser).id;
45
+ userRole = userRole || userTypes.ICS;
46
+
47
+ const waiverModels = [];
48
+ let i = 0;
49
+ while (i < auditIds.length) {
50
+ const auditId = auditIds[i];
51
+ const waiveModel = new WaiveRequestModel({
52
+ contractorId: record.id,
53
+ auditId,
54
+ waiverReason,
55
+ remarks,
56
+ userId,
57
+ userRole
58
+ });
59
+ waiverModels.push(waiveModel);
60
+ i++;
61
+ }
62
+
63
+ return waiverModels;
64
+ };
65
+
66
+ const getWaiveModel = (
67
+ record,
68
+ policyName,
69
+ attributeName,
70
+ waiverReason,
71
+ remarks,
72
+ {
73
+ userId,
74
+ userRole,
75
+ auditId
76
+ } = {}) => {
77
+ return getAllWaiveModels(record, policyName, attributeName, waiverReason, remarks, { userId, userRole, auditId })[0];
78
+ };
79
+
80
+ // used by automation. has to return a single model
81
+ const getWaiveModelByGap = (
82
+ record,
83
+ policyName,
84
+ gap,
85
+ reason,
86
+ note,
87
+ {
88
+ userId,
89
+ userRole
90
+ } = {}) => {
91
+ const { attributeName, auditId } = auditUtil.getAttributeNameAndAuditIdByGap(record, policyName, gap);
92
+
93
+ return getWaiveModel(record, policyName, attributeName, reason, note, { userId, userRole, auditId });
94
+ };
95
+
96
+ const getRetractModel = (record, policyName, attributeName) => {
97
+ const auditIds = getPolicyAuditIdsFromRecord(record, policyName, auditUtil.getAttributeKey(attributeName));
98
+ const userId = env.getSystemUserIdentity(credentials.superUser).id;
99
+ const userRole = userTypes.ICS;
100
+
101
+ const retractModels = [];
102
+ for (const auditId of auditIds) {
103
+ const model = new RetractRequestModel({
104
+ contractorId: record.id,
105
+ auditId,
106
+ userId,
107
+ userRole
108
+ });
109
+ retractModels.push(model);
110
+ }
111
+ return retractModels.length > 1 ? retractModels : retractModels[0];
112
+ };
113
+
114
+ const getPolicyAuditIdsFromRecord = (record, policyName, attributeName) => {
115
+ const policy = record.reviewbyAuditor.find(contractorCoverage =>
116
+ contractorCoverage.insuranceName === policyName);
117
+
118
+ if (!policy) {
119
+ throw new Error(`Policy name: ${policyName} don't exist in record`);
120
+ }
121
+
122
+ const attributes = policy.errorList.filter(error => error.limitname === attributeName);
123
+
124
+ if (!attributes.length) {
125
+ throw new Error(`Attribute name: ${attributeName} don't exist in record`);
126
+ }
127
+
128
+ const auditIds = attributes.map(a => a.auditId);
129
+
130
+ return auditIds;
131
+ };
132
+
133
+ // private method - please refer to waiveAll / acceptAll
134
+ const overrideAll = async (record, reason, context, { note = 'OVERRIDDEN AUTOMATICALLY' } = {}) => {
135
+ let allWaivablePolicies = auditUtil.getAllWaivablePolicies(record, context);
136
+ // Remove duplicates, this can happen for example in case of multiple errors on Additional Insured, Certificate Holder or Additional Information
137
+ allWaivablePolicies = allWaivablePolicies.filter((value, index, self) =>
138
+ index === self.findIndex(t => (
139
+ t.policyName === value.policyName && t.attributeName === value.attributeName
140
+ ))
141
+ );
142
+
143
+ for (const waivable of allWaivablePolicies) {
144
+ const waiveModels = getAllWaiveModels(record, waivable.policyName, waivable.attributeName, reason, note);
145
+ for (const waiveModel of waiveModels) {
146
+ const waiveResponse = await overrideGap({ waiveRequestModel: waiveModel, context });
147
+
148
+ if (waiveResponse.status !== httpResponseStatusCodes.OK) {
149
+ throw Error(`Failed to waive ${waivable.policyName} - ${waivable.attributeName} for ${record.company}`);
150
+ }
151
+ }
152
+ }
153
+ };
154
+
155
+ const waiveAll = async (record, context, { reason = WAIVER_REASONS.BUSINESS_DECISION, note = 'WAIVED AUTOMATICALLY' } = {}) => {
156
+ if (reason === WAIVER_REASONS.ACCEPT_NO_EXPOSURE) {
157
+ throw Error('Invalid override gap reason to waive');
158
+ }
159
+
160
+ await overrideAll(record, reason, context, { note });
161
+ };
162
+
163
+ const acceptAll = async (record, context, { note = 'ACCEPTED AUTOMATICALLY' } = {}) => {
164
+ await overrideAll(record, WAIVER_REASONS.ACCEPT_NO_EXPOSURE, context, { note });
165
+ };
166
+
167
+ const getOverridesByRecordId = async function(recordId, context) {
168
+ const responseAudit = await overrideGapApi.getOverridesByRecordId(recordId, context);
169
+
170
+ if (responseAudit.status !== httpResponseStatusCodes.OK) {
171
+ throw Error(`Failed to get overrides by record id\n${responseAudit}`);
172
+ }
173
+
174
+ return responseAudit.data;
175
+ };
176
+
177
+ module.exports = {
178
+ waive,
179
+ waiveAll,
180
+ acceptAll,
181
+ retract,
182
+ getWaiveModel,
183
+ getAllWaiveModels,
184
+ getRetractModel,
185
+ getWaiveModelByGap,
186
+ overrideGap,
187
+ retractOverride,
188
+ getOverridesByRecordId
189
+ };
@@ -1,113 +1,113 @@
1
- const COI_AUDIT_STATUSES = {
2
- NOT_AUDITED: '0',
3
- REAUDIT: '3'
4
- };
5
-
6
- const AUDIT_ENTITY_STATUSES = {
7
- YES: 'Yes',
8
- NO: 'No',
9
- EMPTY: 'empty',
10
- OTHER: 'other',
11
- CLAIMS: 'Claims'
12
- };
13
-
14
- const VALID_SCORES = ['A+', 'A'];
15
-
16
- const AUDITOR_ROLE = 'Auditor';
17
-
18
- const DEFAULT_POLICY_ID = '-3';
19
-
20
- const POLICY_NAMES_MAP = {
21
- certificateOfInsurance: 'Certificate of Insurance',
22
- generalLiability: 'General Liability',
23
- excessLiability: 'Excess Liability',
24
- umbrella: 'Umbrella',
25
- professionalLiability: 'Professional Liability',
26
- environmentalLiability: 'Environmental Liability',
27
- liquorLiability: 'Liquor Liability',
28
- garageLiability: 'Garage Liability',
29
- garageKeepersLiability: 'Garage Keepers Liability',
30
- workersCompensation: 'Workers’ Compensation',
31
- automobileLiability: 'Automobile Liability',
32
- propertyInsurance: 'Property Insurance',
33
- rentedLeasedEquipment: 'Rented/Leased Equipment',
34
- fidelityCrime: 'Fidelity / Crime',
35
- employmentPracticesLiability: 'Employment Practices Liability',
36
- directorsAndOfficersLiability: 'Directors and Officers Liability',
37
- cyberLiability: 'Cyber Liability',
38
- waiverOfSubrogation: 'Waiver Of Subrogation',
39
- agreement: 'Agreement',
40
- certificateHolder: 'Certificate Holder',
41
- additionalInformation: 'Additional Information',
42
- additionalInsured: 'Additional Insured',
43
- businessInterruptionIncomeInsurance: 'Business Interruption / Income Insurance'
44
- };
45
-
46
- const ATTRIBUTE_NAMES_MAP = {
47
- isPolicyExist: 'coverageexists',
48
- eachOccurrence: 'Each Occurrence',
49
- expiryDate: 'expirydate',
50
- policyNumber: 'policynumber',
51
- perOccurrence: 'PerOccur',
52
- perPolicy: 'Per Policy',
53
- perProject: 'Per Project',
54
- perLocation: 'Per Location',
55
- certificateIssueDate: 'certIssueDate',
56
- insuredAddress: 'Insured Address',
57
- insuredName: 'Insured Name',
58
- amRating: 'AMBestRating',
59
- cancellationTerms: 'cancellationTerms',
60
- coiAuthentication: 'COIauthentication',
61
- signature: 'signature',
62
- indemnityPeriod: 'Indemnity Period',
63
- actualLossSustained: 'Actual Loss Sustained',
64
- extraExpense: 'Extra Expense',
65
- combinedSingleLimit: 'Combined Single Limit'
66
- };
67
-
68
- const auditTriggerType = {
69
- newAudit: 'NEW_AUDIT',
70
- changeRequirements: 'CHANGE_REQUIREMENTS',
71
- updateRequirements: 'UPDATE_REQUIREMENTS',
72
- updateRequirementsWithNotifications: 'ENTITY_CHANGED',
73
- gaps: 'GAPS',
74
- renewal: 'RENEWAL',
75
- agreement: 'AGREEMENT',
76
- policy: 'POLICY'
77
- };
78
-
79
- const auditStatus = {
80
- pending: 'PENDING',
81
- inProgress: 'IN_PROGRESS',
82
- onHold: 'ON_HOLD',
83
- done: 'DONE',
84
- canceled: 'CANCELED'
85
- };
86
-
87
- const auditTypes = {
88
- manual: 'MANUAL',
89
- automatic: 'AUTOMATIC'
90
- };
91
-
92
- const auditOnHoldReason = {
93
- ESCALATION_TO_PM: 'Escalation to PM',
94
- ISSUE_WITH_REQUIREMENTS: 'Issue with Requirements',
95
- REQUIREMENTS_UPDATE: 'Requirements Update',
96
- INTERNAL_DISCUSSION: 'Internal Discussion',
97
- POLICY_VERIFICATION: 'Policy Verification',
98
- COI_REVIEW: 'COI Review (For Policy Analysts\' Use Only)'
99
- };
100
-
101
- module.exports = {
102
- DEFAULT_POLICY_ID,
103
- POLICY_NAMES_MAP,
104
- ATTRIBUTE_NAMES_MAP,
105
- COI_AUDIT_STATUSES,
106
- AUDITOR_ROLE,
107
- AUDIT_ENTITY_STATUSES,
108
- VALID_SCORES,
109
- auditTriggerType,
110
- auditStatus,
111
- auditOnHoldReason,
112
- auditTypes
113
- };
1
+ const COI_AUDIT_STATUSES = {
2
+ NOT_AUDITED: '0',
3
+ REAUDIT: '3'
4
+ };
5
+
6
+ const AUDIT_ENTITY_STATUSES = {
7
+ YES: 'Yes',
8
+ NO: 'No',
9
+ EMPTY: 'empty',
10
+ OTHER: 'other',
11
+ CLAIMS: 'Claims'
12
+ };
13
+
14
+ const VALID_SCORES = ['A+', 'A'];
15
+
16
+ const AUDITOR_ROLE = 'Auditor';
17
+
18
+ const DEFAULT_POLICY_ID = '-3';
19
+
20
+ const POLICY_NAMES_MAP = {
21
+ certificateOfInsurance: 'Certificate of Insurance',
22
+ generalLiability: 'General Liability',
23
+ excessLiability: 'Excess Liability',
24
+ umbrella: 'Umbrella',
25
+ professionalLiability: 'Professional Liability',
26
+ environmentalLiability: 'Environmental Liability',
27
+ liquorLiability: 'Liquor Liability',
28
+ garageLiability: 'Garage Liability',
29
+ garageKeepersLiability: 'Garage Keepers Liability',
30
+ workersCompensation: 'Workers’ Compensation',
31
+ automobileLiability: 'Automobile Liability',
32
+ propertyInsurance: 'Property Insurance',
33
+ rentedLeasedEquipment: 'Rented/Leased Equipment',
34
+ fidelityCrime: 'Fidelity / Crime',
35
+ employmentPracticesLiability: 'Employment Practices Liability',
36
+ directorsAndOfficersLiability: 'Directors and Officers Liability',
37
+ cyberLiability: 'Cyber Liability',
38
+ waiverOfSubrogation: 'Waiver Of Subrogation',
39
+ agreement: 'Agreement',
40
+ certificateHolder: 'Certificate Holder',
41
+ additionalInformation: 'Additional Information',
42
+ additionalInsured: 'Additional Insured',
43
+ businessInterruptionIncomeInsurance: 'Business Interruption / Income Insurance'
44
+ };
45
+
46
+ const ATTRIBUTE_NAMES_MAP = {
47
+ isPolicyExist: 'coverageexists',
48
+ eachOccurrence: 'Each Occurrence',
49
+ expiryDate: 'expirydate',
50
+ policyNumber: 'policynumber',
51
+ perOccurrence: 'PerOccur',
52
+ perPolicy: 'Per Policy',
53
+ perProject: 'Per Project',
54
+ perLocation: 'Per Location',
55
+ certificateIssueDate: 'certIssueDate',
56
+ insuredAddress: 'Insured Address',
57
+ insuredName: 'Insured Name',
58
+ amRating: 'AMBestRating',
59
+ cancellationTerms: 'cancellationTerms',
60
+ coiAuthentication: 'COIauthentication',
61
+ signature: 'signature',
62
+ indemnityPeriod: 'Indemnity Period',
63
+ actualLossSustained: 'Actual Loss Sustained',
64
+ extraExpense: 'Extra Expense',
65
+ combinedSingleLimit: 'Combined Single Limit'
66
+ };
67
+
68
+ const auditTriggerType = {
69
+ newAudit: 'NEW_AUDIT',
70
+ changeRequirements: 'CHANGE_REQUIREMENTS',
71
+ updateRequirements: 'UPDATE_REQUIREMENTS',
72
+ updateRequirementsWithNotifications: 'ENTITY_CHANGED',
73
+ gaps: 'GAPS',
74
+ renewal: 'RENEWAL',
75
+ agreement: 'AGREEMENT',
76
+ policy: 'POLICY'
77
+ };
78
+
79
+ const auditStatus = {
80
+ pending: 'PENDING',
81
+ inProgress: 'IN_PROGRESS',
82
+ onHold: 'ON_HOLD',
83
+ done: 'DONE',
84
+ canceled: 'CANCELED'
85
+ };
86
+
87
+ const auditTypes = {
88
+ manual: 'MANUAL',
89
+ automatic: 'AUTOMATIC'
90
+ };
91
+
92
+ const auditOnHoldReason = {
93
+ ESCALATION_TO_PM: 'Escalation to PM',
94
+ ISSUE_WITH_REQUIREMENTS: 'Issue with Requirements',
95
+ REQUIREMENTS_UPDATE: 'Requirements Update',
96
+ INTERNAL_DISCUSSION: 'Internal Discussion',
97
+ POLICY_VERIFICATION: 'Policy Verification',
98
+ COI_REVIEW: 'COI Review (For Policy Analysts\' Use Only)'
99
+ };
100
+
101
+ module.exports = {
102
+ DEFAULT_POLICY_ID,
103
+ POLICY_NAMES_MAP,
104
+ ATTRIBUTE_NAMES_MAP,
105
+ COI_AUDIT_STATUSES,
106
+ AUDITOR_ROLE,
107
+ AUDIT_ENTITY_STATUSES,
108
+ VALID_SCORES,
109
+ auditTriggerType,
110
+ auditStatus,
111
+ auditOnHoldReason,
112
+ auditTypes
113
+ };
@@ -1,36 +1,36 @@
1
- const auditModels = require('./models/audit/audit.model');
2
- const auditServices = require('./api/audit/audit.service');
3
-
4
- const waiveModels = require('./models/waive/waive.model');
5
- const overrideGapServices = require('./api/overrideGap/override.gap.service');
6
-
7
- const convertServices = require('./api/convert/convert.service');
8
- const coverageServices = require('./api/coverage/coverage.service');
9
-
10
- const amBestRatingServices = require('./api/amBestRating/am.best.rating.service');
11
-
12
- const auditConsts = require('./consts/audit');
13
- const auditUtils = require('./utils/auditUtil');
14
-
15
- const models = {
16
- audit: auditModels,
17
- waive: waiveModels
18
- };
19
-
20
- const consts = {
21
- audit: auditConsts
22
- };
23
-
24
- const utils = {
25
- audit: auditUtils
26
- };
27
-
28
- const services = {
29
- audit: auditServices,
30
- overrideGap: overrideGapServices,
31
- convert: convertServices,
32
- coverage: coverageServices,
33
- amBestRating: amBestRatingServices
34
- };
35
-
36
- module.exports = { services, models, consts, utils };
1
+ const auditModels = require('./models/audit/audit.model');
2
+ const auditServices = require('./api/audit/audit.service');
3
+
4
+ const waiveModels = require('./models/waive/waive.model');
5
+ const overrideGapServices = require('./api/overrideGap/override.gap.service');
6
+
7
+ const convertServices = require('./api/convert/convert.service');
8
+ const coverageServices = require('./api/coverage/coverage.service');
9
+
10
+ const amBestRatingServices = require('./api/amBestRating/am.best.rating.service');
11
+
12
+ const auditConsts = require('./consts/audit');
13
+ const auditUtils = require('./utils/auditUtil');
14
+
15
+ const models = {
16
+ audit: auditModels,
17
+ waive: waiveModels
18
+ };
19
+
20
+ const consts = {
21
+ audit: auditConsts
22
+ };
23
+
24
+ const utils = {
25
+ audit: auditUtils
26
+ };
27
+
28
+ const services = {
29
+ audit: auditServices,
30
+ overrideGap: overrideGapServices,
31
+ convert: convertServices,
32
+ coverage: coverageServices,
33
+ amBestRating: amBestRatingServices
34
+ };
35
+
36
+ module.exports = { services, models, consts, utils };