@getjones/test-infra 4.5.15 → 4.5.21

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 (246) 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 -113
  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 -281
  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/aiAudit/aiAudit.api.js +27 -0
  93. package/src/saas/internal-api/compliance/api/audit/aiAudit/aiAudit.service.js +38 -0
  94. package/src/saas/internal-api/compliance/api/audit/audit.api.js +112 -112
  95. package/src/saas/internal-api/compliance/api/audit/audit.service.js +319 -319
  96. package/src/saas/internal-api/compliance/api/convert/convert.api.js +17 -17
  97. package/src/saas/internal-api/compliance/api/convert/convert.service.js +11 -11
  98. package/src/saas/internal-api/compliance/api/coverage/coverage.api.js +33 -33
  99. package/src/saas/internal-api/compliance/api/coverage/coverage.service.js +46 -46
  100. package/src/saas/internal-api/compliance/api/overrideGap/override.gap.api.js +38 -38
  101. package/src/saas/internal-api/compliance/api/overrideGap/override.gap.service.js +189 -189
  102. package/src/saas/internal-api/compliance/consts/audit.js +113 -113
  103. package/src/saas/internal-api/compliance/index.js +38 -36
  104. package/src/saas/internal-api/compliance/models/audit/audit.model.js +96 -96
  105. package/src/saas/internal-api/compliance/models/waive/waive.model.js +49 -49
  106. package/src/saas/internal-api/compliance/utils/auditUtil.js +269 -269
  107. package/src/saas/internal-api/compliance/utils/coverageUtil.js +45 -45
  108. package/src/saas/internal-api/contractors/api/contractors.api.js +209 -209
  109. package/src/saas/internal-api/contractors/api/contractors.service.js +361 -361
  110. package/src/saas/internal-api/contractors/consts/consts.js +6 -6
  111. package/src/saas/internal-api/contractors/index.js +8 -8
  112. package/src/saas/internal-api/contractors/models/assign.requirement.model.js +10 -10
  113. package/src/saas/internal-api/contractors/models/edit.contractor.model.js +73 -73
  114. package/src/saas/internal-api/contractors/models/link.request.model.js +10 -10
  115. package/src/saas/internal-api/contractors/models/subscription.contractor.model.js +13 -13
  116. package/src/saas/internal-api/contractors/models/verification.contractor.model.js +27 -27
  117. package/src/saas/internal-api/contractors/utils.js +25 -25
  118. package/src/saas/internal-api/dashboard/api/recordList.api.js +38 -38
  119. package/src/saas/internal-api/dashboard/api/recordList.service.js +60 -60
  120. package/src/saas/internal-api/dashboard/index.js +5 -5
  121. package/src/saas/internal-api/dashboard/models/dashboard.filter.criteria.model.js +38 -38
  122. package/src/saas/internal-api/dbEmails/api/db.emails.api.js +25 -25
  123. package/src/saas/internal-api/dbEmails/api/db.emails.service.js +156 -156
  124. package/src/saas/internal-api/dbEmails/consts/consts.js +56 -56
  125. package/src/saas/internal-api/dbEmails/index.js +6 -6
  126. package/src/saas/internal-api/dbEmails/models/db.emails.model.js +22 -22
  127. package/src/saas/internal-api/dbEmails/utils/util.js +87 -87
  128. package/src/saas/internal-api/emailCustomization/api/email.customization.api.js +26 -26
  129. package/src/saas/internal-api/emailCustomization/api/email.customization.service.js +50 -50
  130. package/src/saas/internal-api/emailCustomization/index.js +3 -3
  131. package/src/saas/internal-api/globalRecord/api/global.record.api.js +95 -95
  132. package/src/saas/internal-api/globalRecord/api/global.record.service.js +112 -112
  133. package/src/saas/internal-api/globalRecord/consts.js +20 -20
  134. package/src/saas/internal-api/globalRecord/index.js +6 -6
  135. package/src/saas/internal-api/globalRecord/models/global.record.model.js +60 -60
  136. package/src/saas/internal-api/globalRecord/utils/util.js +161 -161
  137. package/src/saas/internal-api/homepageCharts/api/charts.api.js +12 -12
  138. package/src/saas/internal-api/homepageCharts/api/charts.service.js +7 -7
  139. package/src/saas/internal-api/homepageCharts/index.js +3 -3
  140. package/src/saas/internal-api/jonesNetworkTab/api/jones.network.tab.api.js +14 -14
  141. package/src/saas/internal-api/jonesNetworkTab/api/jones.network.tab.service.js +16 -16
  142. package/src/saas/internal-api/jonesNetworkTab/index.js +3 -3
  143. package/src/saas/internal-api/notificationCenter/api/notification.center.api.js +32 -32
  144. package/src/saas/internal-api/notificationCenter/api/notification.center.service.js +49 -49
  145. package/src/saas/internal-api/notificationCenter/index.js +3 -3
  146. package/src/saas/internal-api/policyFile/api/policy.file.api.js +43 -43
  147. package/src/saas/internal-api/policyFile/api/policy.file.service.js +117 -117
  148. package/src/saas/internal-api/policyFile/consts.js +21 -21
  149. package/src/saas/internal-api/policyFile/index.js +11 -11
  150. package/src/saas/internal-api/policyFile/models/create.policy.file.model.js +11 -11
  151. package/src/saas/internal-api/policyFile/models/set.publish.flag.to.policy.model.js +13 -13
  152. package/src/saas/internal-api/projects/api/core/projects.api.js +39 -39
  153. package/src/saas/internal-api/projects/api/core/projects.service.js +77 -77
  154. package/src/saas/internal-api/projects/api/settings/project.settings.api.js +18 -18
  155. package/src/saas/internal-api/projects/api/settings/project.settings.service.js +35 -35
  156. package/src/saas/internal-api/projects/consts/defaultProject.js +3 -3
  157. package/src/saas/internal-api/projects/index.js +24 -24
  158. package/src/saas/internal-api/projects/models/core/create.project.model.js +41 -41
  159. package/src/saas/internal-api/projects/models/core/update.project.model.js +47 -47
  160. package/src/saas/internal-api/projects/models/settings/update.project.settings.model.js +40 -40
  161. package/src/saas/internal-api/projects/utils/utils.js +155 -155
  162. package/src/saas/internal-api/recordHub/api/record.hub.api.js +14 -14
  163. package/src/saas/internal-api/recordHub/api/record.hub.service.js +32 -32
  164. package/src/saas/internal-api/recordHub/index.js +3 -3
  165. package/src/saas/internal-api/recordNotes/api/record.notes.api.js +38 -38
  166. package/src/saas/internal-api/recordNotes/api/record.notes.service.js +56 -56
  167. package/src/saas/internal-api/recordNotes/api/record.notes.utils.js +12 -12
  168. package/src/saas/internal-api/recordNotes/index.js +3 -3
  169. package/src/saas/internal-api/reports/api/reports.api.js +62 -62
  170. package/src/saas/internal-api/reports/api/reports.service.js +79 -79
  171. package/src/saas/internal-api/reports/consts/consts.js +74 -74
  172. package/src/saas/internal-api/reports/index.js +15 -15
  173. package/src/saas/internal-api/reports/models/report.model.js +27 -27
  174. package/src/saas/internal-api/requests/api/requests.api.js +132 -132
  175. package/src/saas/internal-api/requests/api/requests.service.js +312 -312
  176. package/src/saas/internal-api/requests/index.js +21 -21
  177. package/src/saas/internal-api/requests/models/create.request.model.js +36 -36
  178. package/src/saas/internal-api/requests/models/draft.request.criteria.model.js +18 -18
  179. package/src/saas/internal-api/requests/models/draft.request.report.model.js +14 -14
  180. package/src/saas/internal-api/requests/models/edit.request.model.js +31 -31
  181. package/src/saas/internal-api/requests/models/homepageRequestCriteriaModel.js +19 -19
  182. package/src/saas/internal-api/requests/models/requestListCriteriaModel.js +17 -17
  183. package/src/saas/internal-api/requests/models/tenant.request.model.js +9 -9
  184. package/src/saas/internal-api/requests/utils.js +16 -16
  185. package/src/saas/internal-api/requestsTable/api/requests.table.api.js +20 -20
  186. package/src/saas/internal-api/requestsTable/api/requests.table.service.js +14 -14
  187. package/src/saas/internal-api/requestsTable/index.js +3 -3
  188. package/src/saas/internal-api/requirements/api/requirements.api.js +57 -57
  189. package/src/saas/internal-api/requirements/api/requirements.service.js +184 -184
  190. package/src/saas/internal-api/requirements/consts/attributeTypes.json +8 -8
  191. package/src/saas/internal-api/requirements/consts/consts.js +6 -6
  192. package/src/saas/internal-api/requirements/index.js +10 -10
  193. package/src/saas/internal-api/requirements/models/create.requirement.model.js +17 -17
  194. package/src/saas/internal-api/requirements/models/policy.model.js +35 -35
  195. package/src/saas/internal-api/requirements/models/update.requirement.model.js +19 -19
  196. package/src/saas/internal-api/requirements/utils/utils.js +129 -129
  197. package/src/saas/internal-api/serviceArea/api/coordinates.api.js +12 -12
  198. package/src/saas/internal-api/serviceArea/api/coordinates.service.js +7 -7
  199. package/src/saas/internal-api/serviceArea/index.js +4 -4
  200. package/src/saas/internal-api/serviceArea/utils/utils.js +8 -8
  201. package/src/saas/internal-api/tabs/api/tabs.api.js +32 -32
  202. package/src/saas/internal-api/tabs/api/tabs.service.js +60 -60
  203. package/src/saas/internal-api/tabs/index.js +3 -3
  204. package/src/saas/internal-api/tabs/models/tabs.model.js +19 -19
  205. package/src/saas/internal-api/thread-scheduler/runner.js +55 -55
  206. package/src/saas/internal-api/uploadFiles/api/upload.file.api.js +43 -43
  207. package/src/saas/internal-api/uploadFiles/api/upload.file.service.js +107 -107
  208. package/src/saas/internal-api/uploadFiles/consts.js +12 -12
  209. package/src/saas/internal-api/uploadFiles/index.js +5 -5
  210. package/src/saas/internal-api/users/api/tenantApp/tenant.app.api.js +38 -38
  211. package/src/saas/internal-api/users/api/tenantApp/tenant.app.service.js +108 -108
  212. package/src/saas/internal-api/users/api/users.api.js +126 -126
  213. package/src/saas/internal-api/users/api/users.service.js +258 -258
  214. package/src/saas/internal-api/users/index.js +16 -16
  215. package/src/saas/internal-api/users/models/create.inner.system.user.model.js +18 -18
  216. package/src/saas/internal-api/users/models/notification.settings.model.js +12 -12
  217. package/src/saas/internal-api/users/models/tenent.user.model.js +11 -11
  218. package/src/saas/internal-api/users/models/users.model.js +43 -43
  219. package/src/saas/internal-api/users/utils/util.js +39 -39
  220. package/src/saas/internal-api/vendorProfile/api/vendor.profile.api.js +26 -26
  221. package/src/saas/internal-api/vendorProfile/api/vendor.profile.service.js +19 -19
  222. package/src/saas/internal-api/vendorProfile/index.js +3 -3
  223. package/src/saas/openapi/accounts/accounts.api.js +17 -17
  224. package/src/saas/openapi/accounts/accounts.service.js +11 -11
  225. package/src/saas/openapi/coi/coi.api.js +30 -30
  226. package/src/saas/openapi/coi/coi.service.js +43 -43
  227. package/src/saas/openapi/projects/projects.api.js +83 -83
  228. package/src/saas/openapi/projects/projects.service.js +64 -64
  229. package/src/saas/openapi/requests/index.js +7 -7
  230. package/src/saas/openapi/requests/models/invite.request.model.js +40 -40
  231. package/src/saas/openapi/requests/models/update.request.model.js +35 -35
  232. package/src/saas/openapi/requests/requests.api.js +93 -93
  233. package/src/saas/openapi/requests/requests.service.js +94 -94
  234. package/src/saas/openapi/requirements/index.js +6 -6
  235. package/src/saas/openapi/requirements/models/copy.requirement.model.js +10 -10
  236. package/src/saas/openapi/requirements/requirements.api.js +41 -41
  237. package/src/saas/openapi/requirements/requirements.service.js +49 -49
  238. package/src/saas/openapi/tabs/index.js +6 -6
  239. package/src/saas/openapi/tabs/models/create.tab.model.js +6 -6
  240. package/src/saas/openapi/tabs/tabs.api.js +27 -27
  241. package/src/saas/openapi/tabs/tabs.service.js +19 -19
  242. package/src/saas/openapi/users/user.model.js +10 -10
  243. package/src/saas/openapi/users/users.api.js +33 -33
  244. package/src/saas/openapi/users/users.service.js +51 -51
  245. package/tests/env.test.js +40 -40
  246. package/tests/validation.test.js +83 -83
@@ -1,361 +1,361 @@
1
- const contractorsAPI = require('./contractors.api');
2
- const { RequestModel } = require('../../requests/models/edit.request.model');
3
- const { validateType } = require('../../../../common/validations/typeValidations');
4
- const { RecordModifyDateVerificationModel } = require('../models/verification.contractor.model');
5
- const { AssignRequirementModel } = require('../models/assign.requirement.model');
6
- const { ContractorDetailsModel } = require('../models/edit.contractor.model');
7
- const { LinkRequestModel } = require('../models/link.request.model');
8
- const { SubscriptionModel } = require('../models/subscription.contractor.model');
9
- const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
10
- const { waitFor } = require('../../../../common/utils/timeUtils');
11
- const activationStatuses = require('../../../../common/consts/activationStatuses');
12
- const utils = require('../utils');
13
-
14
- const getContractorsByAccountId = async (accountId, context, activationStatus = null) => {
15
- if (activationStatus) {
16
- activationStatus = activationStatus.reduce((f, s) => `${f},${s}`);
17
- }
18
-
19
- return contractorsAPI.getContractorsByAccountId({ accountId, activationStatus }, context);
20
- };
21
-
22
- const getContractorById = (contractorId, context) => {
23
- return contractorsAPI.getContractorById(contractorId, context);
24
- };
25
-
26
- const getRecordHistory = (contractorId, context) => {
27
- return contractorsAPI.getRecordHistory(contractorId, context);
28
- };
29
-
30
- const getRecordHistoryEventReport = async (recordHistoryId, context, { expectError } = {}) => {
31
- const historyEventReportResponse = await contractorsAPI.getRecordHistoryEventReport(recordHistoryId, context);
32
-
33
- if (expectError) {
34
- return historyEventReportResponse;
35
- } else if (historyEventReportResponse.status !== httpResponseStatusCodes.OK) {
36
- throw new Error(`Failed to get record history event report: ${historyEventReportResponse.statusText}`);
37
- }
38
-
39
- return historyEventReportResponse.data;
40
- };
41
-
42
- const getRecordHistoryOverrideEventGapData = async (recordHistoryId, context, { expectError } = {}) => {
43
- const gapDataResponse = await contractorsAPI.getRecordHistoryOverrideEventGapData(recordHistoryId, context);
44
-
45
- if (expectError) {
46
- return gapDataResponse;
47
- } else if (gapDataResponse.status !== httpResponseStatusCodes.OK) {
48
- throw new Error(`Failed to get record history event gap data: ${gapDataResponse.statusText}`);
49
- }
50
-
51
- return gapDataResponse.data;
52
- };
53
-
54
- const getRecordOcrStatus = (recordId, context) => {
55
- return contractorsAPI.getRecordOcrStatus(recordId, context);
56
- };
57
-
58
- const getComplianceReport = (encryptedData, context) => {
59
- return contractorsAPI.getComplianceReport(encryptedData, context);
60
- };
61
-
62
- const archiveRecord = (recordVerificationModel, context) => {
63
- validateType(recordVerificationModel, RecordModifyDateVerificationModel);
64
- return contractorsAPI.archiveRecord(recordVerificationModel, context);
65
- };
66
-
67
- const restoreRecord = (recordVerificationModel, context) => {
68
- validateType(recordVerificationModel, RecordModifyDateVerificationModel);
69
- return contractorsAPI.restoreRecord(recordVerificationModel, context);
70
- };
71
-
72
- const editContractor = (editRequestModel, context) => {
73
- validateType(editRequestModel, RequestModel);
74
- return contractorsAPI.editContractor(editRequestModel, context);
75
- };
76
-
77
- const updateExpiryDate = (contractorId, expiryDate, policyName) => {
78
- return contractorsAPI.updateExpiryDate(contractorId, expiryDate, policyName);
79
- };
80
-
81
- const assignRequirement = (requestId, assignRequirementModel, context) => {
82
- return contractorsAPI.assignRequirement(requestId, assignRequirementModel, context);
83
- };
84
-
85
- const updateInviteDate = (contractorId, inviteDate, context) => {
86
- return contractorsAPI.updateInviteDate(contractorId, inviteDate, context);
87
- };
88
-
89
- const updateLastInviteActionDate = (recordId, dateOffset, context) => {
90
- return contractorsAPI.updateLastInviteActionDate(recordId, dateOffset, context);
91
- };
92
-
93
- const searchInAutoComplete = ({ tabId, searchWord }, context) => {
94
- return contractorsAPI.searchInAutocomplete({ tabId, searchWord }, context);
95
- };
96
-
97
- const updateContractorUploadDate = (contractorId, uploadDate, context) => {
98
- validateType(uploadDate, Date);
99
- return contractorsAPI.updateContractorUploadDate(contractorId, uploadDate, context);
100
- };
101
-
102
- const changeRequirement = (recordModifyDateVerificationModel, context) => {
103
- validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
104
- return contractorsAPI.changeRequirement(recordModifyDateVerificationModel, context);
105
- };
106
-
107
- const sendGaps = (requestId, recordModifyDateVerificationModel, context) => {
108
- validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
109
- return contractorsAPI.sendGaps(requestId, recordModifyDateVerificationModel, context);
110
- };
111
-
112
- const requestNewCoiAboutToExpire = (requestId, recordModifyDateVerificationModel, context) => {
113
- validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
114
- return contractorsAPI.requestNewCoiAboutToExpire(requestId, recordModifyDateVerificationModel, context);
115
- };
116
-
117
- const requestNewCoiExpired = (requestId, recordModifyDateVerificationModel, context) => {
118
- validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
119
- return contractorsAPI.requestNewCoiExpired(requestId, recordModifyDateVerificationModel, context);
120
- };
121
-
122
- const resendInvitation = (requestId, recordModifyDateVerificationModel, context) => {
123
- validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
124
- return contractorsAPI.resendInvitation(requestId, recordModifyDateVerificationModel, context);
125
- };
126
-
127
- const muteNotifications = (recordModifyDateVerificationModel, context) => {
128
- validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
129
- return contractorsAPI.muteNotifications(recordModifyDateVerificationModel, context);
130
- };
131
-
132
- const muteNotificationsByRecordId = async (recordId, context) => {
133
- const recordModifyDateVerificationModel = await getRecordVerificationModel(recordId, context);
134
- const muteResponse = await contractorsAPI.muteNotifications(recordModifyDateVerificationModel, context);
135
-
136
- if (muteResponse.status !== httpResponseStatusCodes.NO_CONTENT) {
137
- throw new Error(`Failed to mute record: ${muteResponse.statusText}`);
138
- }
139
-
140
- return muteResponse;
141
- };
142
-
143
- const unmuteNotifications = (recordModifyDateVerificationModel, context) => {
144
- validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
145
- return contractorsAPI.unmuteNotifications(recordModifyDateVerificationModel, context);
146
- };
147
-
148
- const unmuteNotificationsByRecordId = async (recordId, context) => {
149
- const recordModifyDateVerificationModel = await getRecordVerificationModel(recordId, context);
150
- const unmuteResponse = await contractorsAPI.unmuteNotifications(recordModifyDateVerificationModel, context);
151
-
152
- if (unmuteResponse.status !== httpResponseStatusCodes.NO_CONTENT) {
153
- throw new Error(`Failed to unmute record: ${unmuteResponse.statusText}`);
154
- }
155
-
156
- return unmuteResponse;
157
- };
158
-
159
- const unsubscribe = async (subscriptionModel, { expectError } = {}) => {
160
- validateType(subscriptionModel, SubscriptionModel);
161
- const unsubscribeResponse = await contractorsAPI.unsubscribe(subscriptionModel);
162
-
163
- if (unsubscribeResponse.status !== httpResponseStatusCodes.OK && !expectError) {
164
- throw new Error(`Failed to unsubscribe record: ${unsubscribeResponse.statusText}`);
165
- }
166
-
167
- return unsubscribeResponse;
168
- };
169
-
170
- const subscribe = async (subscriptionModel, { expectError } = {}) => {
171
- validateType(subscriptionModel, SubscriptionModel);
172
- const subscribeResponse = await contractorsAPI.subscribe(subscriptionModel);
173
-
174
- if (subscribeResponse.status !== httpResponseStatusCodes.OK && !expectError) {
175
- throw new Error(`Failed to subscribe record: ${subscribeResponse.statusText}`);
176
- }
177
-
178
- return subscribeResponse;
179
- };
180
-
181
- const getSubscriptionModel = (data, { recaptchaResponse = 'recaptchaResponse' } = {}) => {
182
- return new SubscriptionModel(data, recaptchaResponse);
183
- };
184
-
185
- const deleteByContractorId = (contractorId, context) => {
186
- return contractorsAPI.deleteByContractorId(contractorId, context);
187
- };
188
-
189
- const deleteAllRecordsInAccount = async (accountId, context, { activationStatus = [activationStatuses.ACTIVE, activationStatuses.ARCHIVED, activationStatuses.DRAFT] } = {}) => {
190
- const { data: existingRecords } = await getContractorsByAccountId(accountId, context, activationStatus);
191
-
192
- if (!existingRecords.length) {
193
- return;
194
- }
195
-
196
- const failed = [];
197
- for (const record of existingRecords) {
198
- const response = await deleteByContractorId(record.id, context);
199
-
200
- if (response.status !== httpResponseStatusCodes.NO_CONTENT) {
201
- console.error(`Failed to delete record: ${record.company}, retrying...`);
202
- waitFor(1000);
203
- const try2response = await deleteByContractorId(record.id, context);
204
-
205
- if (try2response.status !== httpResponseStatusCodes.NO_CONTENT) {
206
- console.error(`Failed to delete record: ${record.company} second time.`);
207
- failed.push(response);
208
- }
209
- }
210
- }
211
-
212
- if (failed.length) {
213
- throw Error(`Failed to delete ${failed.length} of ${existingRecords.length} records in account. Failed with status: ${ failed[0].status }`);
214
- }
215
- };
216
-
217
- const deleteAllActiveRecordsInAccount = async (accountId, context) => {
218
- return deleteAllRecordsInAccount(accountId, context, { activationStatus: [activationStatuses.ACTIVE] });
219
- };
220
-
221
- const getRecordVerificationModel = async (recordId, context, { requirementId, requirementDateModified } = {}) => {
222
- const { data: recordData } = await getContractorById(recordId, context);
223
- return new RecordModifyDateVerificationModel(recordData.id, { contractorDateModified: recordData.dateModified, requirementId, requirementDateModified });
224
- };
225
-
226
- const getRecordVerificationModelForDraftRecord = (request, { requirementId, requirementDateModified } = {}) => {
227
- const { record } = request;
228
- return new RecordModifyDateVerificationModel(record.id, { contractorDateModified: record.dateModified, requirementId, requirementDateModified });
229
- };
230
-
231
- const getAssignRequirementModel = (requirementId, companyName, emailAddress) => {
232
- return new AssignRequirementModel(requirementId, companyName, emailAddress);
233
- };
234
-
235
- const getLinkedProjectsCount = (recordId, context) => {
236
- return contractorsAPI.getLinkedProjectsCount(recordId, context);
237
- };
238
-
239
- const restoreByRecordId = async (recordId, context) => {
240
- const recordModifyModel = await getRecordVerificationModel(recordId, context);
241
- const restoreResponse = await restoreRecord(recordModifyModel, context);
242
-
243
- if (restoreResponse.status !== httpResponseStatusCodes.OK) {
244
- throw new Error(`Failed to restore record "${recordId}"\n${restoreResponse.statusText}`);
245
- }
246
-
247
- return restoreResponse;
248
- };
249
-
250
- const archiveByRecordId = async (recordId, context) => {
251
- const recordModifyModel = await getRecordVerificationModel(recordId, context);
252
- const archiveResponse = await archiveRecord(recordModifyModel, context);
253
-
254
- if (archiveResponse.status !== httpResponseStatusCodes.OK) {
255
- throw new Error(`Failed to archive record "${recordId}"\n${archiveResponse.statusText}`);
256
- }
257
-
258
- return archiveResponse;
259
- };
260
-
261
- const getInviteLinkStatus = (encryptedData, context) => {
262
- return contractorsAPI.getInviteLinkStatus(encryptedData, context);
263
- };
264
-
265
- const getContractorDetailsModel = recordConfig => {
266
- const apiDetailsConfig = utils.getRecordDetailsConfigInApiFormat(recordConfig);
267
- return new ContractorDetailsModel(apiDetailsConfig);
268
- };
269
-
270
- const getBasicDetailsById = async recordId => {
271
- const response = await contractorsAPI.getBasicDetailsById(recordId);
272
-
273
- if (response.status !== httpResponseStatusCodes.OK) {
274
- throw Error(`Failed to get basic record details by record id: ${recordId} - Response: ${response.status}`);
275
- }
276
-
277
- return response.data;
278
- };
279
-
280
- const getRecordsFromInsuredName = async (insuredName, accountIds) => {
281
- const response = await contractorsAPI.getRecordsFromInsuredName(insuredName, accountIds);
282
-
283
- if (response.status !== httpResponseStatusCodes.OK) {
284
- throw Error(`Failed to get records from insured name: ${insuredName} and accountIds: ${accountIds} - Response: ${response.status}`);
285
- }
286
-
287
- return response.data;
288
- };
289
-
290
- const linkDraftRequestToAccountRecord = async (requestToLink, targetAccountRecord, context, { shouldExpectError } = {}) => {
291
- const linkRequestModel = new LinkRequestModel(requestToLink, targetAccountRecord);
292
- const linkRequestResponse = await contractorsAPI.linkDraftRequestToAccountRecord(linkRequestModel, context);
293
-
294
- if (linkRequestResponse.status !== httpResponseStatusCodes.OK && !shouldExpectError) {
295
- throw Error(`Failed to link request - ${requestToLink.id} to accountRecord ${targetAccountRecord.id}\n${linkRequestResponse}`);
296
- } else {
297
- return linkRequestResponse;
298
- }
299
- };
300
-
301
- const changeRequirementsDirectly = async (recordId, newRequirementId, context) => {
302
- const recordVerificationModel = await getRecordVerificationModel(recordId, context);
303
- recordVerificationModel.requirementId = newRequirementId;
304
- const changeRequirementRes = await changeRequirement(recordVerificationModel, context);
305
-
306
- if (changeRequirementRes.status !== httpResponseStatusCodes.NO_CONTENT) {
307
- throw Error(`Failed to change requirement for record: ${recordId}`);
308
- }
309
- };
310
-
311
- const isRecordNotResponsive = async (recordId, context) => {
312
- const record = await getContractorById(recordId, context);
313
- return record.data.isNotResponsive;
314
- };
315
-
316
- module.exports = {
317
- changeRequirement,
318
- getContractorsByAccountId,
319
- getContractorById,
320
- getRecordHistory,
321
- getRecordHistoryEventReport,
322
- getRecordHistoryOverrideEventGapData,
323
- getRecordOcrStatus,
324
- getComplianceReport,
325
- archiveRecord,
326
- restoreRecord,
327
- editContractor,
328
- updateInviteDate,
329
- updateExpiryDate,
330
- searchInAutoComplete,
331
- updateContractorUploadDate,
332
- sendGaps,
333
- requestNewCoiAboutToExpire,
334
- requestNewCoiExpired,
335
- resendInvitation,
336
- muteNotifications,
337
- muteNotificationsByRecordId,
338
- unmuteNotifications,
339
- unmuteNotificationsByRecordId,
340
- unsubscribe,
341
- subscribe,
342
- getSubscriptionModel,
343
- deleteByContractorId,
344
- deleteAllRecordsInAccount,
345
- deleteAllActiveRecordsInAccount,
346
- getRecordVerificationModel,
347
- getRecordVerificationModelForDraftRecord,
348
- assignRequirement,
349
- getAssignRequirementModel,
350
- getLinkedProjectsCount,
351
- archiveByRecordId,
352
- restoreByRecordId,
353
- updateLastInviteActionDate,
354
- getInviteLinkStatus,
355
- getContractorDetailsModel,
356
- getBasicDetailsById,
357
- getRecordsFromInsuredName,
358
- linkDraftRequestToAccountRecord,
359
- changeRequirementsDirectly,
360
- isRecordNotResponsive
361
- };
1
+ const contractorsAPI = require('./contractors.api');
2
+ const { RequestModel } = require('../../requests/models/edit.request.model');
3
+ const { validateType } = require('../../../../common/validations/typeValidations');
4
+ const { RecordModifyDateVerificationModel } = require('../models/verification.contractor.model');
5
+ const { AssignRequirementModel } = require('../models/assign.requirement.model');
6
+ const { ContractorDetailsModel } = require('../models/edit.contractor.model');
7
+ const { LinkRequestModel } = require('../models/link.request.model');
8
+ const { SubscriptionModel } = require('../models/subscription.contractor.model');
9
+ const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
10
+ const { waitFor } = require('../../../../common/utils/timeUtils');
11
+ const activationStatuses = require('../../../../common/consts/activationStatuses');
12
+ const utils = require('../utils');
13
+
14
+ const getContractorsByAccountId = async (accountId, context, activationStatus = null) => {
15
+ if (activationStatus) {
16
+ activationStatus = activationStatus.reduce((f, s) => `${f},${s}`);
17
+ }
18
+
19
+ return contractorsAPI.getContractorsByAccountId({ accountId, activationStatus }, context);
20
+ };
21
+
22
+ const getContractorById = (contractorId, context) => {
23
+ return contractorsAPI.getContractorById(contractorId, context);
24
+ };
25
+
26
+ const getRecordHistory = (contractorId, context) => {
27
+ return contractorsAPI.getRecordHistory(contractorId, context);
28
+ };
29
+
30
+ const getRecordHistoryEventReport = async (recordHistoryId, context, { expectError } = {}) => {
31
+ const historyEventReportResponse = await contractorsAPI.getRecordHistoryEventReport(recordHistoryId, context);
32
+
33
+ if (expectError) {
34
+ return historyEventReportResponse;
35
+ } else if (historyEventReportResponse.status !== httpResponseStatusCodes.OK) {
36
+ throw new Error(`Failed to get record history event report: ${historyEventReportResponse.statusText}`);
37
+ }
38
+
39
+ return historyEventReportResponse.data;
40
+ };
41
+
42
+ const getRecordHistoryOverrideEventGapData = async (recordHistoryId, context, { expectError } = {}) => {
43
+ const gapDataResponse = await contractorsAPI.getRecordHistoryOverrideEventGapData(recordHistoryId, context);
44
+
45
+ if (expectError) {
46
+ return gapDataResponse;
47
+ } else if (gapDataResponse.status !== httpResponseStatusCodes.OK) {
48
+ throw new Error(`Failed to get record history event gap data: ${gapDataResponse.statusText}`);
49
+ }
50
+
51
+ return gapDataResponse.data;
52
+ };
53
+
54
+ const getRecordOcrStatus = (recordId, context) => {
55
+ return contractorsAPI.getRecordOcrStatus(recordId, context);
56
+ };
57
+
58
+ const getComplianceReport = (encryptedData, context) => {
59
+ return contractorsAPI.getComplianceReport(encryptedData, context);
60
+ };
61
+
62
+ const archiveRecord = (recordVerificationModel, context) => {
63
+ validateType(recordVerificationModel, RecordModifyDateVerificationModel);
64
+ return contractorsAPI.archiveRecord(recordVerificationModel, context);
65
+ };
66
+
67
+ const restoreRecord = (recordVerificationModel, context) => {
68
+ validateType(recordVerificationModel, RecordModifyDateVerificationModel);
69
+ return contractorsAPI.restoreRecord(recordVerificationModel, context);
70
+ };
71
+
72
+ const editContractor = (editRequestModel, context) => {
73
+ validateType(editRequestModel, RequestModel);
74
+ return contractorsAPI.editContractor(editRequestModel, context);
75
+ };
76
+
77
+ const updateExpiryDate = (contractorId, expiryDate, policyName) => {
78
+ return contractorsAPI.updateExpiryDate(contractorId, expiryDate, policyName);
79
+ };
80
+
81
+ const assignRequirement = (requestId, assignRequirementModel, context) => {
82
+ return contractorsAPI.assignRequirement(requestId, assignRequirementModel, context);
83
+ };
84
+
85
+ const updateInviteDate = (contractorId, inviteDate, context) => {
86
+ return contractorsAPI.updateInviteDate(contractorId, inviteDate, context);
87
+ };
88
+
89
+ const updateLastInviteActionDate = (recordId, dateOffset, context) => {
90
+ return contractorsAPI.updateLastInviteActionDate(recordId, dateOffset, context);
91
+ };
92
+
93
+ const searchInAutoComplete = ({ tabId, searchWord }, context) => {
94
+ return contractorsAPI.searchInAutocomplete({ tabId, searchWord }, context);
95
+ };
96
+
97
+ const updateContractorUploadDate = (contractorId, uploadDate, context) => {
98
+ validateType(uploadDate, Date);
99
+ return contractorsAPI.updateContractorUploadDate(contractorId, uploadDate, context);
100
+ };
101
+
102
+ const changeRequirement = (recordModifyDateVerificationModel, context) => {
103
+ validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
104
+ return contractorsAPI.changeRequirement(recordModifyDateVerificationModel, context);
105
+ };
106
+
107
+ const sendGaps = (requestId, recordModifyDateVerificationModel, context) => {
108
+ validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
109
+ return contractorsAPI.sendGaps(requestId, recordModifyDateVerificationModel, context);
110
+ };
111
+
112
+ const requestNewCoiAboutToExpire = (requestId, recordModifyDateVerificationModel, context) => {
113
+ validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
114
+ return contractorsAPI.requestNewCoiAboutToExpire(requestId, recordModifyDateVerificationModel, context);
115
+ };
116
+
117
+ const requestNewCoiExpired = (requestId, recordModifyDateVerificationModel, context) => {
118
+ validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
119
+ return contractorsAPI.requestNewCoiExpired(requestId, recordModifyDateVerificationModel, context);
120
+ };
121
+
122
+ const resendInvitation = (requestId, recordModifyDateVerificationModel, context) => {
123
+ validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
124
+ return contractorsAPI.resendInvitation(requestId, recordModifyDateVerificationModel, context);
125
+ };
126
+
127
+ const muteNotifications = (recordModifyDateVerificationModel, context) => {
128
+ validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
129
+ return contractorsAPI.muteNotifications(recordModifyDateVerificationModel, context);
130
+ };
131
+
132
+ const muteNotificationsByRecordId = async (recordId, context) => {
133
+ const recordModifyDateVerificationModel = await getRecordVerificationModel(recordId, context);
134
+ const muteResponse = await contractorsAPI.muteNotifications(recordModifyDateVerificationModel, context);
135
+
136
+ if (muteResponse.status !== httpResponseStatusCodes.NO_CONTENT) {
137
+ throw new Error(`Failed to mute record: ${muteResponse.statusText}`);
138
+ }
139
+
140
+ return muteResponse;
141
+ };
142
+
143
+ const unmuteNotifications = (recordModifyDateVerificationModel, context) => {
144
+ validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
145
+ return contractorsAPI.unmuteNotifications(recordModifyDateVerificationModel, context);
146
+ };
147
+
148
+ const unmuteNotificationsByRecordId = async (recordId, context) => {
149
+ const recordModifyDateVerificationModel = await getRecordVerificationModel(recordId, context);
150
+ const unmuteResponse = await contractorsAPI.unmuteNotifications(recordModifyDateVerificationModel, context);
151
+
152
+ if (unmuteResponse.status !== httpResponseStatusCodes.NO_CONTENT) {
153
+ throw new Error(`Failed to unmute record: ${unmuteResponse.statusText}`);
154
+ }
155
+
156
+ return unmuteResponse;
157
+ };
158
+
159
+ const unsubscribe = async (subscriptionModel, { expectError } = {}) => {
160
+ validateType(subscriptionModel, SubscriptionModel);
161
+ const unsubscribeResponse = await contractorsAPI.unsubscribe(subscriptionModel);
162
+
163
+ if (unsubscribeResponse.status !== httpResponseStatusCodes.OK && !expectError) {
164
+ throw new Error(`Failed to unsubscribe record: ${unsubscribeResponse.statusText}`);
165
+ }
166
+
167
+ return unsubscribeResponse;
168
+ };
169
+
170
+ const subscribe = async (subscriptionModel, { expectError } = {}) => {
171
+ validateType(subscriptionModel, SubscriptionModel);
172
+ const subscribeResponse = await contractorsAPI.subscribe(subscriptionModel);
173
+
174
+ if (subscribeResponse.status !== httpResponseStatusCodes.OK && !expectError) {
175
+ throw new Error(`Failed to subscribe record: ${subscribeResponse.statusText}`);
176
+ }
177
+
178
+ return subscribeResponse;
179
+ };
180
+
181
+ const getSubscriptionModel = (data, { recaptchaResponse = 'recaptchaResponse' } = {}) => {
182
+ return new SubscriptionModel(data, recaptchaResponse);
183
+ };
184
+
185
+ const deleteByContractorId = (contractorId, context) => {
186
+ return contractorsAPI.deleteByContractorId(contractorId, context);
187
+ };
188
+
189
+ const deleteAllRecordsInAccount = async (accountId, context, { activationStatus = [activationStatuses.ACTIVE, activationStatuses.ARCHIVED, activationStatuses.DRAFT] } = {}) => {
190
+ const { data: existingRecords } = await getContractorsByAccountId(accountId, context, activationStatus);
191
+
192
+ if (!existingRecords.length) {
193
+ return;
194
+ }
195
+
196
+ const failed = [];
197
+ for (const record of existingRecords) {
198
+ const response = await deleteByContractorId(record.id, context);
199
+
200
+ if (response.status !== httpResponseStatusCodes.NO_CONTENT) {
201
+ console.error(`Failed to delete record: ${record.company}, retrying...`);
202
+ waitFor(1000);
203
+ const try2response = await deleteByContractorId(record.id, context);
204
+
205
+ if (try2response.status !== httpResponseStatusCodes.NO_CONTENT) {
206
+ console.error(`Failed to delete record: ${record.company} second time.`);
207
+ failed.push(response);
208
+ }
209
+ }
210
+ }
211
+
212
+ if (failed.length) {
213
+ throw Error(`Failed to delete ${failed.length} of ${existingRecords.length} records in account. Failed with status: ${ failed[0].status }`);
214
+ }
215
+ };
216
+
217
+ const deleteAllActiveRecordsInAccount = async (accountId, context) => {
218
+ return deleteAllRecordsInAccount(accountId, context, { activationStatus: [activationStatuses.ACTIVE] });
219
+ };
220
+
221
+ const getRecordVerificationModel = async (recordId, context, { requirementId, requirementDateModified } = {}) => {
222
+ const { data: recordData } = await getContractorById(recordId, context);
223
+ return new RecordModifyDateVerificationModel(recordData.id, { contractorDateModified: recordData.dateModified, requirementId, requirementDateModified });
224
+ };
225
+
226
+ const getRecordVerificationModelForDraftRecord = (request, { requirementId, requirementDateModified } = {}) => {
227
+ const { record } = request;
228
+ return new RecordModifyDateVerificationModel(record.id, { contractorDateModified: record.dateModified, requirementId, requirementDateModified });
229
+ };
230
+
231
+ const getAssignRequirementModel = (requirementId, companyName, emailAddress) => {
232
+ return new AssignRequirementModel(requirementId, companyName, emailAddress);
233
+ };
234
+
235
+ const getLinkedProjectsCount = (recordId, context) => {
236
+ return contractorsAPI.getLinkedProjectsCount(recordId, context);
237
+ };
238
+
239
+ const restoreByRecordId = async (recordId, context) => {
240
+ const recordModifyModel = await getRecordVerificationModel(recordId, context);
241
+ const restoreResponse = await restoreRecord(recordModifyModel, context);
242
+
243
+ if (restoreResponse.status !== httpResponseStatusCodes.OK) {
244
+ throw new Error(`Failed to restore record "${recordId}"\n${restoreResponse.statusText}`);
245
+ }
246
+
247
+ return restoreResponse;
248
+ };
249
+
250
+ const archiveByRecordId = async (recordId, context) => {
251
+ const recordModifyModel = await getRecordVerificationModel(recordId, context);
252
+ const archiveResponse = await archiveRecord(recordModifyModel, context);
253
+
254
+ if (archiveResponse.status !== httpResponseStatusCodes.OK) {
255
+ throw new Error(`Failed to archive record "${recordId}"\n${archiveResponse.statusText}`);
256
+ }
257
+
258
+ return archiveResponse;
259
+ };
260
+
261
+ const getInviteLinkStatus = (encryptedData, context) => {
262
+ return contractorsAPI.getInviteLinkStatus(encryptedData, context);
263
+ };
264
+
265
+ const getContractorDetailsModel = recordConfig => {
266
+ const apiDetailsConfig = utils.getRecordDetailsConfigInApiFormat(recordConfig);
267
+ return new ContractorDetailsModel(apiDetailsConfig);
268
+ };
269
+
270
+ const getBasicDetailsById = async recordId => {
271
+ const response = await contractorsAPI.getBasicDetailsById(recordId);
272
+
273
+ if (response.status !== httpResponseStatusCodes.OK) {
274
+ throw Error(`Failed to get basic record details by record id: ${recordId} - Response: ${response.status}`);
275
+ }
276
+
277
+ return response.data;
278
+ };
279
+
280
+ const getRecordsFromInsuredName = async (insuredName, accountIds) => {
281
+ const response = await contractorsAPI.getRecordsFromInsuredName(insuredName, accountIds);
282
+
283
+ if (response.status !== httpResponseStatusCodes.OK) {
284
+ throw Error(`Failed to get records from insured name: ${insuredName} and accountIds: ${accountIds} - Response: ${response.status}`);
285
+ }
286
+
287
+ return response.data;
288
+ };
289
+
290
+ const linkDraftRequestToAccountRecord = async (requestToLink, targetAccountRecord, context, { shouldExpectError } = {}) => {
291
+ const linkRequestModel = new LinkRequestModel(requestToLink, targetAccountRecord);
292
+ const linkRequestResponse = await contractorsAPI.linkDraftRequestToAccountRecord(linkRequestModel, context);
293
+
294
+ if (linkRequestResponse.status !== httpResponseStatusCodes.OK && !shouldExpectError) {
295
+ throw Error(`Failed to link request - ${requestToLink.id} to accountRecord ${targetAccountRecord.id}\n${linkRequestResponse}`);
296
+ } else {
297
+ return linkRequestResponse;
298
+ }
299
+ };
300
+
301
+ const changeRequirementsDirectly = async (recordId, newRequirementId, context) => {
302
+ const recordVerificationModel = await getRecordVerificationModel(recordId, context);
303
+ recordVerificationModel.requirementId = newRequirementId;
304
+ const changeRequirementRes = await changeRequirement(recordVerificationModel, context);
305
+
306
+ if (changeRequirementRes.status !== httpResponseStatusCodes.NO_CONTENT) {
307
+ throw Error(`Failed to change requirement for record: ${recordId}`);
308
+ }
309
+ };
310
+
311
+ const isRecordNotResponsive = async (recordId, context) => {
312
+ const record = await getContractorById(recordId, context);
313
+ return record.data.isNotResponsive;
314
+ };
315
+
316
+ module.exports = {
317
+ changeRequirement,
318
+ getContractorsByAccountId,
319
+ getContractorById,
320
+ getRecordHistory,
321
+ getRecordHistoryEventReport,
322
+ getRecordHistoryOverrideEventGapData,
323
+ getRecordOcrStatus,
324
+ getComplianceReport,
325
+ archiveRecord,
326
+ restoreRecord,
327
+ editContractor,
328
+ updateInviteDate,
329
+ updateExpiryDate,
330
+ searchInAutoComplete,
331
+ updateContractorUploadDate,
332
+ sendGaps,
333
+ requestNewCoiAboutToExpire,
334
+ requestNewCoiExpired,
335
+ resendInvitation,
336
+ muteNotifications,
337
+ muteNotificationsByRecordId,
338
+ unmuteNotifications,
339
+ unmuteNotificationsByRecordId,
340
+ unsubscribe,
341
+ subscribe,
342
+ getSubscriptionModel,
343
+ deleteByContractorId,
344
+ deleteAllRecordsInAccount,
345
+ deleteAllActiveRecordsInAccount,
346
+ getRecordVerificationModel,
347
+ getRecordVerificationModelForDraftRecord,
348
+ assignRequirement,
349
+ getAssignRequirementModel,
350
+ getLinkedProjectsCount,
351
+ archiveByRecordId,
352
+ restoreByRecordId,
353
+ updateLastInviteActionDate,
354
+ getInviteLinkStatus,
355
+ getContractorDetailsModel,
356
+ getBasicDetailsById,
357
+ getRecordsFromInsuredName,
358
+ linkDraftRequestToAccountRecord,
359
+ changeRequirementsDirectly,
360
+ isRecordNotResponsive
361
+ };