@getjones/test-infra 5.2.10 → 5.2.12

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 (288) hide show
  1. package/eslint.config.mjs +156 -156
  2. package/package.json +43 -42
  3. package/src/common/commonFlows/auth/auth.js +95 -95
  4. package/src/common/commonFlows/index.js +5 -5
  5. package/src/common/commonFlows/records/records.js +457 -423
  6. package/src/common/commonFlows/users/users.js +15 -15
  7. package/src/common/consts/accountSettings.js +112 -112
  8. package/src/common/consts/activationStatuses.js +6 -6
  9. package/src/common/consts/analysisStatuses.js +7 -7
  10. package/src/common/consts/autocomplete.js +10 -10
  11. package/src/common/consts/constantsForRecordsSortingAndFilters.js +49 -49
  12. package/src/common/consts/dashboardCharts.js +18 -18
  13. package/src/common/consts/homepage/AttentionTab.js +6 -6
  14. package/src/common/consts/homepage/sortOptions.js +19 -19
  15. package/src/common/consts/projectSettings.js +28 -28
  16. package/src/common/consts/recordTypes.js +5 -5
  17. package/src/common/consts/requirementActions.js +10 -10
  18. package/src/common/consts/s3FileTypes.js +12 -12
  19. package/src/common/consts/userRoles.js +21 -21
  20. package/src/common/consts/userTypes.js +16 -16
  21. package/src/common/errorCodes.js +12 -11
  22. package/src/common/httpResponseStatusCodes.json +19 -19
  23. package/src/common/httpResponseTypes.json +2 -2
  24. package/src/common/requests/apiKeyAuth/requests.js +45 -45
  25. package/src/common/requests/cookieAuth/requests.js +40 -40
  26. package/src/common/requests/internalAuth/requests.js +48 -48
  27. package/src/common/requests/requestHandlers.js +112 -112
  28. package/src/common/utils/arrayUtils.js +19 -19
  29. package/src/common/utils/complianceUtil.js +114 -114
  30. package/src/common/utils/configsUtil.js +22 -22
  31. package/src/common/utils/dataTypeUtils.js +41 -41
  32. package/src/common/utils/numberUtils.js +22 -22
  33. package/src/common/utils/objectUtils.js +102 -102
  34. package/src/common/utils/timeUtils.js +195 -195
  35. package/src/common/validations/typeValidations.js +36 -36
  36. package/src/defaults/configs/attributes.js +170 -170
  37. package/src/defaults/configs/auditConfigs.js +129 -129
  38. package/src/defaults/configs/coverage.js +144 -144
  39. package/src/defaults/configs/polices.js +28 -28
  40. package/src/defaults/configs/requirement.js +218 -218
  41. package/src/defaults/index.js +7 -7
  42. package/src/env.js +58 -58
  43. package/src/factory/globalRecord/globalRecord.js +43 -43
  44. package/src/factory/index.js +8 -8
  45. package/src/factory/records/records.js +295 -295
  46. package/src/factory/users/users.js +70 -70
  47. package/src/index.js +114 -114
  48. package/src/reporters/mochaReporter.js +273 -273
  49. package/src/resources/agreements/agreement.pdf +0 -0
  50. package/src/saas/internal-api/accountDirectory/api/accountDirectory.api.js +152 -152
  51. package/src/saas/internal-api/accountDirectory/api/accountDirectory.service.js +576 -576
  52. package/src/saas/internal-api/accountDirectory/consts/accountDirectory.consts.js +75 -75
  53. package/src/saas/internal-api/accountDirectory/index.js +5 -5
  54. package/src/saas/internal-api/accountDirectory/models/accountDirectory.models.js +172 -172
  55. package/src/saas/internal-api/accounts/api/core/accounts.core.api.js +48 -48
  56. package/src/saas/internal-api/accounts/api/core/accounts.core.service.js +104 -104
  57. package/src/saas/internal-api/accounts/api/emailCustomization/accounts.email.customizations.api.js +29 -29
  58. package/src/saas/internal-api/accounts/api/emailCustomization/accounts.email.customizations.service.js +60 -60
  59. package/src/saas/internal-api/accounts/api/emailCustomization/consts.js +8 -8
  60. package/src/saas/internal-api/accounts/api/openapi/accounts.openapi.api.js +54 -54
  61. package/src/saas/internal-api/accounts/api/openapi/accounts.openapi.service.js +67 -67
  62. package/src/saas/internal-api/accounts/api/settings/settings.api.js +21 -21
  63. package/src/saas/internal-api/accounts/api/settings/settings.service.js +58 -58
  64. package/src/saas/internal-api/accounts/consts/consts.js +8 -8
  65. package/src/saas/internal-api/accounts/index.js +22 -22
  66. package/src/saas/internal-api/accounts/models/core/create.account.model.js +16 -16
  67. package/src/saas/internal-api/accounts/models/settings/update.settings.model.js +110 -110
  68. package/src/saas/internal-api/accounts/utils/utils.js +60 -60
  69. package/src/saas/internal-api/agreement/api/agreement.api.js +39 -39
  70. package/src/saas/internal-api/agreement/api/agreement.service.js +121 -121
  71. package/src/saas/internal-api/agreement/consts/consts.js +11 -11
  72. package/src/saas/internal-api/agreement/index.js +12 -12
  73. package/src/saas/internal-api/agreement/models/create.agreement.model.js +12 -12
  74. package/src/saas/internal-api/agreement/models/createAgreementByAuditorModel.js +11 -11
  75. package/src/saas/internal-api/agreement/models/createAgreementByPMModel.js +13 -13
  76. package/src/saas/internal-api/auditCustomerRules/api/customer.rules.api.js +49 -49
  77. package/src/saas/internal-api/auditCustomerRules/api/customer.rules.service.js +121 -121
  78. package/src/saas/internal-api/auditCustomerRules/consts/customer.rule.js +40 -40
  79. package/src/saas/internal-api/auditCustomerRules/index.js +7 -7
  80. package/src/saas/internal-api/auditCustomerRules/models/customer.rule.model.js +55 -55
  81. package/src/saas/internal-api/auditCustomerRules/utils/customer.rule.util.js +70 -70
  82. package/src/saas/internal-api/auditNotes/api/audit.notes.api.js +40 -40
  83. package/src/saas/internal-api/auditNotes/api/audit.notes.service.js +116 -116
  84. package/src/saas/internal-api/auditNotes/index.js +4 -4
  85. package/src/saas/internal-api/auditNotes/models/audit.note.model.js +32 -32
  86. package/src/saas/internal-api/auditorComments/api/auditor.comments.api.js +20 -20
  87. package/src/saas/internal-api/auditorComments/api/auditor.comments.service.js +27 -27
  88. package/src/saas/internal-api/auditorComments/consts/auditor.comment.js +16 -16
  89. package/src/saas/internal-api/auditorComments/index.js +5 -5
  90. package/src/saas/internal-api/auditorComments/models/auditor.comment.model.js +40 -40
  91. package/src/saas/internal-api/auth/api/auth.api.js +78 -78
  92. package/src/saas/internal-api/auth/api/auth.service.js +206 -172
  93. package/src/saas/internal-api/auth/index.js +3 -3
  94. package/src/saas/internal-api/coi/api/coi.api.js +76 -76
  95. package/src/saas/internal-api/coi/api/coi.service.js +104 -104
  96. package/src/saas/internal-api/coi/consts/duplicateHandling.js +7 -7
  97. package/src/saas/internal-api/coi/consts/hashes.js +5 -5
  98. package/src/saas/internal-api/coi/consts/uploaderTypes.js +3 -3
  99. package/src/saas/internal-api/coi/index.js +16 -16
  100. package/src/saas/internal-api/coi/models/Combine.last.two.cois.model.js +25 -25
  101. package/src/saas/internal-api/coi/models/submit.coi.batch.model.js +23 -23
  102. package/src/saas/internal-api/coi/models/submit.coi.model.js +23 -23
  103. package/src/saas/internal-api/coi/utils/utils.js +185 -185
  104. package/src/saas/internal-api/compliance/api/amBestRating/am.best.rating.api.js +12 -12
  105. package/src/saas/internal-api/compliance/api/amBestRating/am.best.rating.service.js +14 -14
  106. package/src/saas/internal-api/compliance/api/audit/aiAudit/aiAudit.api.js +63 -63
  107. package/src/saas/internal-api/compliance/api/audit/aiAudit/aiAudit.service.js +99 -99
  108. package/src/saas/internal-api/compliance/api/audit/audit.api.js +124 -124
  109. package/src/saas/internal-api/compliance/api/audit/audit.service.js +390 -390
  110. package/src/saas/internal-api/compliance/api/complianceSnapshot/compliance.snapshot.api.js +32 -32
  111. package/src/saas/internal-api/compliance/api/complianceSnapshot/compliance.snapshot.service.js +73 -73
  112. package/src/saas/internal-api/compliance/api/convert/convert.api.js +12 -12
  113. package/src/saas/internal-api/compliance/api/convert/convert.service.js +7 -7
  114. package/src/saas/internal-api/compliance/api/coverage/coverage.api.js +33 -33
  115. package/src/saas/internal-api/compliance/api/coverage/coverage.service.js +46 -46
  116. package/src/saas/internal-api/compliance/api/overrideGap/override.gap.api.js +86 -86
  117. package/src/saas/internal-api/compliance/api/overrideGap/override.gap.service.js +300 -300
  118. package/src/saas/internal-api/compliance/consts/audit.js +130 -130
  119. package/src/saas/internal-api/compliance/consts/overrideGapRequest/override.gap.request.js +7 -7
  120. package/src/saas/internal-api/compliance/index.js +41 -41
  121. package/src/saas/internal-api/compliance/models/audit/audit.model.js +109 -109
  122. package/src/saas/internal-api/compliance/models/overrideGapRequest/override.gap.request.model.js +16 -16
  123. package/src/saas/internal-api/compliance/models/waive/waive.model.js +112 -112
  124. package/src/saas/internal-api/compliance/utils/auditUtil.js +308 -308
  125. package/src/saas/internal-api/compliance/utils/coverageUtil.js +45 -45
  126. package/src/saas/internal-api/contractors/api/contractors.service.js +482 -482
  127. package/src/saas/internal-api/contractors/consts/consts.js +6 -6
  128. package/src/saas/internal-api/contractors/index.js +8 -8
  129. package/src/saas/internal-api/contractors/models/assign.requirement.model.js +11 -11
  130. package/src/saas/internal-api/contractors/models/edit.contractor.model.js +73 -73
  131. package/src/saas/internal-api/contractors/models/link.request.model.js +10 -10
  132. package/src/saas/internal-api/contractors/models/verification.contractor.model.js +29 -29
  133. package/src/saas/internal-api/contractors/utils.js +25 -25
  134. package/src/saas/internal-api/customTags/api/customTags.api.js +47 -47
  135. package/src/saas/internal-api/customTags/api/customTags.service.js +96 -96
  136. package/src/saas/internal-api/customTags/index.js +4 -4
  137. package/src/saas/internal-api/customTags/models/customTagsModels.js +17 -17
  138. package/src/saas/internal-api/dashboard/api/recordList.api.js +38 -38
  139. package/src/saas/internal-api/dashboard/api/recordList.service.js +60 -60
  140. package/src/saas/internal-api/dashboard/index.js +5 -5
  141. package/src/saas/internal-api/dashboard/models/dashboard.filter.criteria.model.js +38 -38
  142. package/src/saas/internal-api/dbEmails/api/db.emails.api.js +25 -25
  143. package/src/saas/internal-api/dbEmails/api/db.emails.service.js +178 -178
  144. package/src/saas/internal-api/dbEmails/consts/consts.js +66 -66
  145. package/src/saas/internal-api/dbEmails/index.js +6 -6
  146. package/src/saas/internal-api/dbEmails/models/db.emails.model.js +22 -22
  147. package/src/saas/internal-api/dbEmails/utils/util.js +82 -82
  148. package/src/saas/internal-api/emailCustomization/api/email.customization.api.js +26 -26
  149. package/src/saas/internal-api/emailCustomization/api/email.customization.service.js +50 -50
  150. package/src/saas/internal-api/emailCustomization/index.js +3 -3
  151. package/src/saas/internal-api/fileScan/api/file.scan.api.js +14 -14
  152. package/src/saas/internal-api/fileScan/api/file.scan.service.js +35 -35
  153. package/src/saas/internal-api/fileScan/index.js +3 -3
  154. package/src/saas/internal-api/fileScan/models/update.scan.status.model.js +13 -13
  155. package/src/saas/internal-api/globalRecord/api/global.record.api.js +95 -95
  156. package/src/saas/internal-api/globalRecord/api/global.record.service.js +112 -112
  157. package/src/saas/internal-api/globalRecord/consts.js +20 -20
  158. package/src/saas/internal-api/globalRecord/index.js +6 -6
  159. package/src/saas/internal-api/globalRecord/models/global.record.model.js +60 -60
  160. package/src/saas/internal-api/globalRecord/utils/util.js +161 -161
  161. package/src/saas/internal-api/homepageCharts/api/charts.api.js +12 -12
  162. package/src/saas/internal-api/homepageCharts/api/charts.service.js +7 -7
  163. package/src/saas/internal-api/homepageCharts/index.js +3 -3
  164. package/src/saas/internal-api/notificationCenter/api/notification.center.api.js +32 -32
  165. package/src/saas/internal-api/notificationCenter/api/notification.center.service.js +49 -49
  166. package/src/saas/internal-api/notificationCenter/consts.js +9 -9
  167. package/src/saas/internal-api/notificationCenter/index.js +4 -4
  168. package/src/saas/internal-api/outlook/api/outlook.api.js +14 -14
  169. package/src/saas/internal-api/outlook/api/outlook.service.js +14 -14
  170. package/src/saas/internal-api/outlook/index.js +3 -3
  171. package/src/saas/internal-api/policyFile/api/policy.file.api.js +43 -43
  172. package/src/saas/internal-api/policyFile/api/policy.file.service.js +117 -117
  173. package/src/saas/internal-api/policyFile/consts.js +21 -21
  174. package/src/saas/internal-api/policyFile/index.js +11 -11
  175. package/src/saas/internal-api/policyFile/models/create.policy.file.model.js +11 -11
  176. package/src/saas/internal-api/policyFile/models/set.publish.flag.to.policy.model.js +13 -13
  177. package/src/saas/internal-api/projects/api/core/projects.api.js +39 -39
  178. package/src/saas/internal-api/projects/api/core/projects.service.js +77 -77
  179. package/src/saas/internal-api/projects/api/settings/project.settings.api.js +18 -18
  180. package/src/saas/internal-api/projects/api/settings/project.settings.service.js +35 -35
  181. package/src/saas/internal-api/projects/consts/defaultProject.js +3 -3
  182. package/src/saas/internal-api/projects/index.js +24 -24
  183. package/src/saas/internal-api/projects/models/core/create.project.model.js +41 -41
  184. package/src/saas/internal-api/projects/models/core/update.project.model.js +47 -47
  185. package/src/saas/internal-api/projects/models/settings/update.project.settings.model.js +48 -48
  186. package/src/saas/internal-api/projects/utils/utils.js +159 -159
  187. package/src/saas/internal-api/recordHub/api/record.hub.api.js +20 -20
  188. package/src/saas/internal-api/recordHub/api/record.hub.service.js +86 -86
  189. package/src/saas/internal-api/recordHub/index.js +3 -3
  190. package/src/saas/internal-api/recordNotes/api/record.notes.api.js +38 -38
  191. package/src/saas/internal-api/recordNotes/api/record.notes.service.js +56 -56
  192. package/src/saas/internal-api/recordNotes/api/record.notes.utils.js +12 -12
  193. package/src/saas/internal-api/recordNotes/index.js +3 -3
  194. package/src/saas/internal-api/relatedDocs/api/related.docs.api.js +98 -98
  195. package/src/saas/internal-api/relatedDocs/api/related.docs.service.js +180 -180
  196. package/src/saas/internal-api/relatedDocs/index.js +4 -4
  197. package/src/saas/internal-api/relatedDocs/models/related.doc.model.js +36 -36
  198. package/src/saas/internal-api/reports/api/reports.api.js +56 -56
  199. package/src/saas/internal-api/reports/api/reports.service.js +68 -68
  200. package/src/saas/internal-api/reports/consts/consts.js +71 -71
  201. package/src/saas/internal-api/reports/index.js +15 -15
  202. package/src/saas/internal-api/reports/models/report.model.js +27 -27
  203. package/src/saas/internal-api/requests/api/requests.api.js +132 -132
  204. package/src/saas/internal-api/requests/api/requests.service.js +315 -315
  205. package/src/saas/internal-api/requests/index.js +21 -21
  206. package/src/saas/internal-api/requests/models/create.request.model.js +39 -39
  207. package/src/saas/internal-api/requests/models/draft.request.criteria.model.js +18 -18
  208. package/src/saas/internal-api/requests/models/draft.request.report.model.js +14 -14
  209. package/src/saas/internal-api/requests/models/edit.request.model.js +31 -31
  210. package/src/saas/internal-api/requests/models/homepageRequestCriteriaModel.js +19 -19
  211. package/src/saas/internal-api/requests/models/requestListCriteriaModel.js +17 -17
  212. package/src/saas/internal-api/requests/models/tenant.request.model.js +9 -9
  213. package/src/saas/internal-api/requests/utils.js +16 -16
  214. package/src/saas/internal-api/requestsTable/api/requests.table.api.js +20 -20
  215. package/src/saas/internal-api/requestsTable/api/requests.table.service.js +14 -14
  216. package/src/saas/internal-api/requestsTable/index.js +3 -3
  217. package/src/saas/internal-api/requirements/api/lease/lease.api.js +74 -56
  218. package/src/saas/internal-api/requirements/api/lease/lease.service.js +167 -123
  219. package/src/saas/internal-api/requirements/api/requirements.api.js +65 -65
  220. package/src/saas/internal-api/requirements/api/requirements.service.js +198 -198
  221. package/src/saas/internal-api/requirements/consts/attributeTypes.json +8 -8
  222. package/src/saas/internal-api/requirements/consts/consts.js +22 -15
  223. package/src/saas/internal-api/requirements/index.js +22 -21
  224. package/src/saas/internal-api/requirements/models/create.requirement.model.js +17 -17
  225. package/src/saas/internal-api/requirements/models/extraction.request.model.js +16 -16
  226. package/src/saas/internal-api/requirements/models/policy.model.js +35 -35
  227. package/src/saas/internal-api/requirements/models/tab.extraction.request.model.js +14 -0
  228. package/src/saas/internal-api/requirements/models/update.requirement.model.js +19 -19
  229. package/src/saas/internal-api/requirements/utils/utils.js +129 -129
  230. package/src/saas/internal-api/sampleCoi/api/sample.coi.api.js +15 -15
  231. package/src/saas/internal-api/sampleCoi/api/sample.coi.service.js +48 -48
  232. package/src/saas/internal-api/sampleCoi/consts/consts.js +22 -22
  233. package/src/saas/internal-api/sampleCoi/index.js +4 -4
  234. package/src/saas/internal-api/serviceArea/api/coordinates.api.js +12 -12
  235. package/src/saas/internal-api/serviceArea/api/coordinates.service.js +7 -7
  236. package/src/saas/internal-api/serviceArea/index.js +4 -4
  237. package/src/saas/internal-api/serviceArea/utils/utils.js +8 -8
  238. package/src/saas/internal-api/tableOfContents/api/table.of.contents.api.js +37 -37
  239. package/src/saas/internal-api/tableOfContents/api/table.of.contents.service.js +19 -19
  240. package/src/saas/internal-api/tableOfContents/index.js +3 -3
  241. package/src/saas/internal-api/tabs/api/tabs.api.js +32 -32
  242. package/src/saas/internal-api/tabs/api/tabs.service.js +60 -60
  243. package/src/saas/internal-api/tabs/index.js +3 -3
  244. package/src/saas/internal-api/tabs/models/tabs.model.js +19 -19
  245. package/src/saas/internal-api/thread-scheduler/runner.js +69 -69
  246. package/src/saas/internal-api/thread-scheduler/schedulerJobs.js +8 -8
  247. package/src/saas/internal-api/uploadFiles/api/upload.file.api.js +49 -49
  248. package/src/saas/internal-api/uploadFiles/api/upload.file.service.js +162 -162
  249. package/src/saas/internal-api/uploadFiles/consts.js +36 -36
  250. package/src/saas/internal-api/uploadFiles/index.js +5 -5
  251. package/src/saas/internal-api/uploadFiles/utils.js +34 -34
  252. package/src/saas/internal-api/users/api/tenantApp/tenant.app.api.js +38 -38
  253. package/src/saas/internal-api/users/api/tenantApp/tenant.app.service.js +109 -109
  254. package/src/saas/internal-api/users/api/users.api.js +158 -158
  255. package/src/saas/internal-api/users/api/users.service.js +363 -363
  256. package/src/saas/internal-api/users/index.js +17 -17
  257. package/src/saas/internal-api/users/models/create.inner.system.user.model.js +18 -18
  258. package/src/saas/internal-api/users/models/notification.settings.model.js +15 -14
  259. package/src/saas/internal-api/users/models/tenant.user.model.js +11 -11
  260. package/src/saas/internal-api/users/models/users.model.js +43 -43
  261. package/src/saas/internal-api/users/utils/util.js +50 -49
  262. package/src/saas/internal-api/vendorProfile/api/vendor.profile.api.js +26 -26
  263. package/src/saas/internal-api/vendorProfile/api/vendor.profile.service.js +19 -19
  264. package/src/saas/internal-api/vendorProfile/index.js +3 -3
  265. package/src/saas/openapi/accounts/accounts.api.js +17 -17
  266. package/src/saas/openapi/accounts/accounts.service.js +11 -11
  267. package/src/saas/openapi/coi/coi.api.js +35 -35
  268. package/src/saas/openapi/coi/coi.service.js +53 -53
  269. package/src/saas/openapi/projects/projects.api.js +83 -83
  270. package/src/saas/openapi/projects/projects.service.js +71 -71
  271. package/src/saas/openapi/relatedDocs/related.docs.api.js +30 -30
  272. package/src/saas/openapi/relatedDocs/related.docs.service.js +55 -55
  273. package/src/saas/openapi/requests/index.js +7 -7
  274. package/src/saas/openapi/requests/models/invite.request.model.js +42 -42
  275. package/src/saas/openapi/requests/models/update.request.model.js +37 -37
  276. package/src/saas/openapi/requests/requests.api.js +93 -93
  277. package/src/saas/openapi/requests/requests.service.js +94 -94
  278. package/src/saas/openapi/requirements/index.js +6 -6
  279. package/src/saas/openapi/requirements/models/copy.requirement.model.js +10 -10
  280. package/src/saas/openapi/requirements/requirements.api.js +41 -41
  281. package/src/saas/openapi/requirements/requirements.service.js +55 -55
  282. package/src/saas/openapi/tabs/index.js +6 -6
  283. package/src/saas/openapi/tabs/models/create.tab.model.js +6 -6
  284. package/src/saas/openapi/tabs/tabs.api.js +27 -27
  285. package/src/saas/openapi/tabs/tabs.service.js +19 -19
  286. package/src/saas/openapi/users/user.model.js +10 -10
  287. package/src/saas/openapi/users/users.api.js +33 -33
  288. package/src/saas/openapi/users/users.service.js +51 -51
@@ -1,185 +1,185 @@
1
- const fs = require('fs');
2
-
3
- const services = require('../api/coi.service');
4
- const fileScanService = require('../../fileScan/api/file.scan.service');
5
- const { SubmitCoiModel } = require('../models/submit.coi.model');
6
- const { SubmitCoiBatchModel } = require('../models/submit.coi.batch.model');
7
- const { CombineLastTwoCOIsModel } = require('../models/Combine.last.two.cois.model');
8
- const { getContractorById } = require('../../contractors/api/contractors.service');
9
- const { getIcsCookie } = require('../../auth/api/auth.service');
10
- const timeUtils = require('../../../../common/utils/timeUtils');
11
- const UPLOADER_TYPES = require('../consts/uploaderTypes');
12
-
13
- // Stages the certificate into TEMPCOI/{recordId}/ without submitting it, no audit is created
14
- const uploadFileToStorage = async (recordId, filePath) => {
15
- const fileData = fs.createReadStream(filePath);
16
- const uploadResponse = await services.uploadToS3(recordId, fileData);
17
-
18
- return uploadResponse.data.fileId;
19
- };
20
-
21
- const submitCoiFilesUpload = async ({
22
- recordId,
23
- fileIds,
24
- uploadedBy,
25
- uploaderContext,
26
- uploaderEmail,
27
- recordDateModified,
28
- duplicateHandling
29
- }) => {
30
- const submitCoiModel = new SubmitCoiModel({
31
- recordId,
32
- fileIds,
33
- uploadedBy,
34
- uploaderContext,
35
- uploaderEmail,
36
- recordDateModified,
37
- duplicateHandling
38
- });
39
-
40
- if (uploadedBy != UPLOADER_TYPES.ICS) { // Upload by user role
41
- return services.submitCoi(submitCoiModel);
42
- }
43
-
44
- return services.submitCoiByUserContext(submitCoiModel, uploaderContext); // Upload by user context
45
- };
46
-
47
- const uploadCoi = async (
48
- recordId,
49
- filePath,
50
- uploadedBy,
51
- uploaderEmail,
52
- {
53
- markAsScaned, // Should be passed with context
54
- uploaderContext,
55
- duplicateHandling
56
- } = {}
57
- ) => {
58
- if (!uploaderContext) {
59
- uploaderContext = await getIcsCookie();
60
- }
61
-
62
- const recordResponse = await getContractorById(recordId, uploaderContext);
63
- const recordDateModified = recordResponse.data.dateModified;
64
- const fileId = await uploadFileToStorage(recordId, filePath);
65
-
66
- const submitResponse = fileId && await submitCoiFilesUpload({
67
- recordId,
68
- fileIds: [fileId],
69
- uploadedBy,
70
- uploaderContext,
71
- uploaderEmail,
72
- recordDateModified,
73
- duplicateHandling
74
- });
75
-
76
- const uploadedCoi = !!submitResponse.data.fileName && { id: fileId, name: submitResponse.data.fileName };
77
-
78
- if (uploadedCoi.name && markAsScaned && uploaderContext) {
79
- await fileScanService.completeCoiScan(recordId, uploadedCoi.name, uploaderContext);
80
- }
81
-
82
- return uploadedCoi;
83
- };
84
-
85
- // Stages a certificate the way the UI does before an on-behalf upload: upload, then merge with
86
- // isContractorExist false. The merge writes the file flat to TEMPCOI/ and returns before any
87
- // certificate, audit or history write, so the COI is staged but not attached to the record.
88
- const stageMergedCertificate = async (recordId, filePath, context) => {
89
- const fileId = await uploadFileToStorage(recordId, filePath);
90
- const submitCoiModel = new SubmitCoiModel({ recordId, fileIds: [fileId], isContractorExist: false });
91
- const submitResponse = await services.submitCoiByUserContext(submitCoiModel, context);
92
-
93
- if (!submitResponse.data.fileName) {
94
- throw Error(`Failed to stage an on-behalf certificate for record: ${recordId}`);
95
- }
96
-
97
- return submitResponse.data.fileName;
98
- };
99
-
100
- const waitForAntiVirusRecordCoiScanToFinish = async (recordId, context, { maxSecondToWait = 10 } = {}) => {
101
- let isScanned = false;
102
- const oneSecondInMilliseconds = 1000;
103
- let timeFromTheStart = 0;
104
- let coiLink;
105
- const started = Date.now();
106
-
107
- const { data: record } = await getContractorById(recordId, context);
108
-
109
- while (!isScanned && timeFromTheStart < maxSecondToWait) {
110
- ({ data: coiLink } = await services.getCoiPreSignedUrl(record.certificatePdf));
111
- isScanned = coiLink.isInProgress;
112
- const now = Date.now();
113
- timeFromTheStart = (now - started) / oneSecondInMilliseconds;
114
- await timeUtils.waitFor(1).seconds;
115
- }
116
-
117
- return coiLink.coiPreSignedUrl;
118
- };
119
-
120
- const uploadCoiBatch = async (sourceRecordId, recordIds, filePaths, uploadedBy, uploaderEmail, {
121
- uploaderContext,
122
- duplicateHandling,
123
- expectError
124
- } = {}) => {
125
- if (!uploaderContext) {
126
- uploaderContext = await getIcsCookie();
127
- }
128
-
129
- const fileIds = await Promise.all(
130
- filePaths.map(filePath => uploadFileToStorage(sourceRecordId, filePath))
131
- );
132
-
133
- const records = await Promise.all(
134
- recordIds.map(async recordId => {
135
- const { data: record } = await getContractorById(recordId, uploaderContext);
136
- return { contractorId: recordId, contractorDateModified: record.dateModified };
137
- })
138
- );
139
-
140
- const submitCoiBatchModel = new SubmitCoiBatchModel({
141
- fileIds,
142
- sourceRecordId,
143
- records,
144
- uploadedBy,
145
- uploaderEmail,
146
- duplicateHandling
147
- });
148
-
149
- return services.submitCoiBatch(submitCoiBatchModel, uploaderContext, { expectError });
150
- };
151
-
152
- const combineLastTwoCOIs = async ({
153
- recordId,
154
- fileIds,
155
- uploadedBy,
156
- uploaderEmail,
157
- isContractorExist,
158
- icsContext,
159
- auditorContext,
160
- isNewCoiOnTop
161
- }) => {
162
- const recordResponse = await getContractorById(recordId, icsContext);
163
- const recordDateModified = recordResponse.data.dateModified;
164
-
165
- const combineLastTwoCOIsModel = new CombineLastTwoCOIsModel({
166
- recordId,
167
- fileIds,
168
- uploadedBy,
169
- uploaderEmail,
170
- recordDateModified,
171
- isContractorExist,
172
- isNewCoiOnTop
173
- });
174
- return services.combineLastTwoCOIs(combineLastTwoCOIsModel, auditorContext);
175
- };
176
-
177
- module.exports = {
178
- uploadCoi,
179
- uploadCoiBatch,
180
- uploadFileToStorage,
181
- submitCoiFilesUpload,
182
- stageMergedCertificate,
183
- waitForAntiVirusRecordCoiScanToFinish,
184
- combineLastTwoCOIs
185
- };
1
+ const fs = require('fs');
2
+
3
+ const services = require('../api/coi.service');
4
+ const fileScanService = require('../../fileScan/api/file.scan.service');
5
+ const { SubmitCoiModel } = require('../models/submit.coi.model');
6
+ const { SubmitCoiBatchModel } = require('../models/submit.coi.batch.model');
7
+ const { CombineLastTwoCOIsModel } = require('../models/Combine.last.two.cois.model');
8
+ const { getContractorById } = require('../../contractors/api/contractors.service');
9
+ const { getIcsCookie } = require('../../auth/api/auth.service');
10
+ const timeUtils = require('../../../../common/utils/timeUtils');
11
+ const UPLOADER_TYPES = require('../consts/uploaderTypes');
12
+
13
+ // Stages the certificate into TEMPCOI/{recordId}/ without submitting it, no audit is created
14
+ const uploadFileToStorage = async (recordId, filePath) => {
15
+ const fileData = fs.createReadStream(filePath);
16
+ const uploadResponse = await services.uploadToS3(recordId, fileData);
17
+
18
+ return uploadResponse.data.fileId;
19
+ };
20
+
21
+ const submitCoiFilesUpload = async ({
22
+ recordId,
23
+ fileIds,
24
+ uploadedBy,
25
+ uploaderContext,
26
+ uploaderEmail,
27
+ recordDateModified,
28
+ duplicateHandling
29
+ }) => {
30
+ const submitCoiModel = new SubmitCoiModel({
31
+ recordId,
32
+ fileIds,
33
+ uploadedBy,
34
+ uploaderContext,
35
+ uploaderEmail,
36
+ recordDateModified,
37
+ duplicateHandling
38
+ });
39
+
40
+ if (uploadedBy != UPLOADER_TYPES.ICS) { // Upload by user role
41
+ return services.submitCoi(submitCoiModel);
42
+ }
43
+
44
+ return services.submitCoiByUserContext(submitCoiModel, uploaderContext); // Upload by user context
45
+ };
46
+
47
+ const uploadCoi = async (
48
+ recordId,
49
+ filePath,
50
+ uploadedBy,
51
+ uploaderEmail,
52
+ {
53
+ markAsScaned, // Should be passed with context
54
+ uploaderContext,
55
+ duplicateHandling
56
+ } = {}
57
+ ) => {
58
+ if (!uploaderContext) {
59
+ uploaderContext = await getIcsCookie();
60
+ }
61
+
62
+ const recordResponse = await getContractorById(recordId, uploaderContext);
63
+ const recordDateModified = recordResponse.data.dateModified;
64
+ const fileId = await uploadFileToStorage(recordId, filePath);
65
+
66
+ const submitResponse = fileId && await submitCoiFilesUpload({
67
+ recordId,
68
+ fileIds: [fileId],
69
+ uploadedBy,
70
+ uploaderContext,
71
+ uploaderEmail,
72
+ recordDateModified,
73
+ duplicateHandling
74
+ });
75
+
76
+ const uploadedCoi = !!submitResponse.data.fileName && { id: fileId, name: submitResponse.data.fileName };
77
+
78
+ if (uploadedCoi.name && markAsScaned && uploaderContext) {
79
+ await fileScanService.completeCoiScan(recordId, uploadedCoi.name, uploaderContext);
80
+ }
81
+
82
+ return uploadedCoi;
83
+ };
84
+
85
+ // Stages a certificate the way the UI does before an on-behalf upload: upload, then merge with
86
+ // isContractorExist false. The merge writes the file flat to TEMPCOI/ and returns before any
87
+ // certificate, audit or history write, so the COI is staged but not attached to the record.
88
+ const stageMergedCertificate = async (recordId, filePath, context) => {
89
+ const fileId = await uploadFileToStorage(recordId, filePath);
90
+ const submitCoiModel = new SubmitCoiModel({ recordId, fileIds: [fileId], isContractorExist: false });
91
+ const submitResponse = await services.submitCoiByUserContext(submitCoiModel, context);
92
+
93
+ if (!submitResponse.data.fileName) {
94
+ throw Error(`Failed to stage an on-behalf certificate for record: ${recordId}`);
95
+ }
96
+
97
+ return submitResponse.data.fileName;
98
+ };
99
+
100
+ const waitForAntiVirusRecordCoiScanToFinish = async (recordId, context, { maxSecondToWait = 10 } = {}) => {
101
+ let isScanned = false;
102
+ const oneSecondInMilliseconds = 1000;
103
+ let timeFromTheStart = 0;
104
+ let coiLink;
105
+ const started = Date.now();
106
+
107
+ const { data: record } = await getContractorById(recordId, context);
108
+
109
+ while (!isScanned && timeFromTheStart < maxSecondToWait) {
110
+ ({ data: coiLink } = await services.getCoiPreSignedUrl(record.certificatePdf));
111
+ isScanned = coiLink.isInProgress;
112
+ const now = Date.now();
113
+ timeFromTheStart = (now - started) / oneSecondInMilliseconds;
114
+ await timeUtils.waitFor(1).seconds;
115
+ }
116
+
117
+ return coiLink.coiPreSignedUrl;
118
+ };
119
+
120
+ const uploadCoiBatch = async (sourceRecordId, recordIds, filePaths, uploadedBy, uploaderEmail, {
121
+ uploaderContext,
122
+ duplicateHandling,
123
+ expectError
124
+ } = {}) => {
125
+ if (!uploaderContext) {
126
+ uploaderContext = await getIcsCookie();
127
+ }
128
+
129
+ const fileIds = await Promise.all(
130
+ filePaths.map(filePath => uploadFileToStorage(sourceRecordId, filePath))
131
+ );
132
+
133
+ const records = await Promise.all(
134
+ recordIds.map(async recordId => {
135
+ const { data: record } = await getContractorById(recordId, uploaderContext);
136
+ return { contractorId: recordId, contractorDateModified: record.dateModified };
137
+ })
138
+ );
139
+
140
+ const submitCoiBatchModel = new SubmitCoiBatchModel({
141
+ fileIds,
142
+ sourceRecordId,
143
+ records,
144
+ uploadedBy,
145
+ uploaderEmail,
146
+ duplicateHandling
147
+ });
148
+
149
+ return services.submitCoiBatch(submitCoiBatchModel, uploaderContext, { expectError });
150
+ };
151
+
152
+ const combineLastTwoCOIs = async ({
153
+ recordId,
154
+ fileIds,
155
+ uploadedBy,
156
+ uploaderEmail,
157
+ isContractorExist,
158
+ icsContext,
159
+ auditorContext,
160
+ isNewCoiOnTop
161
+ }) => {
162
+ const recordResponse = await getContractorById(recordId, icsContext);
163
+ const recordDateModified = recordResponse.data.dateModified;
164
+
165
+ const combineLastTwoCOIsModel = new CombineLastTwoCOIsModel({
166
+ recordId,
167
+ fileIds,
168
+ uploadedBy,
169
+ uploaderEmail,
170
+ recordDateModified,
171
+ isContractorExist,
172
+ isNewCoiOnTop
173
+ });
174
+ return services.combineLastTwoCOIs(combineLastTwoCOIsModel, auditorContext);
175
+ };
176
+
177
+ module.exports = {
178
+ uploadCoi,
179
+ uploadCoiBatch,
180
+ uploadFileToStorage,
181
+ submitCoiFilesUpload,
182
+ stageMergedCertificate,
183
+ waitForAntiVirusRecordCoiScanToFinish,
184
+ combineLastTwoCOIs
185
+ };
@@ -1,12 +1,12 @@
1
- const internalRequests = require('../../../../../common/requests/internalAuth/requests');
2
- const { nodeBackendUrl } = require('../../../../../env').getEnv();
3
-
4
- const Endpoints = {
5
- getAMBestRatingForInsurers: `${nodeBackendUrl}/compliance/am-best-rating`
6
- };
7
-
8
- const getAMBestRatingForInsurers = insurerList => {
9
- return internalRequests.postRequestHandler(Endpoints.getAMBestRatingForInsurers, insurerList);
10
- };
11
-
12
- module.exports = { getAMBestRatingForInsurers };
1
+ const internalRequests = require('../../../../../common/requests/internalAuth/requests');
2
+ const { nodeBackendUrl } = require('../../../../../env').getEnv();
3
+
4
+ const Endpoints = {
5
+ getAMBestRatingForInsurers: `${nodeBackendUrl}/compliance/am-best-rating`
6
+ };
7
+
8
+ const getAMBestRatingForInsurers = insurerList => {
9
+ return internalRequests.postRequestHandler(Endpoints.getAMBestRatingForInsurers, insurerList);
10
+ };
11
+
12
+ module.exports = { getAMBestRatingForInsurers };
@@ -1,14 +1,14 @@
1
- const amBestRatingApi = require('./am.best.rating.api');
2
- const httpResponseStatusCodes = require('../../../../../common/httpResponseStatusCodes.json');
3
-
4
- const getAMBestRatingForInsurers = async insurerList => {
5
- const response = await amBestRatingApi.getAMBestRatingForInsurers(insurerList);
6
-
7
- if (response.status !== httpResponseStatusCodes.OK) {
8
- throw Error(`Failed to get AM best data - Response: ${response.status}`);
9
- }
10
-
11
- return response.data;
12
- };
13
-
14
- module.exports = { getAMBestRatingForInsurers };
1
+ const amBestRatingApi = require('./am.best.rating.api');
2
+ const httpResponseStatusCodes = require('../../../../../common/httpResponseStatusCodes.json');
3
+
4
+ const getAMBestRatingForInsurers = async insurerList => {
5
+ const response = await amBestRatingApi.getAMBestRatingForInsurers(insurerList);
6
+
7
+ if (response.status !== httpResponseStatusCodes.OK) {
8
+ throw Error(`Failed to get AM best data - Response: ${response.status}`);
9
+ }
10
+
11
+ return response.data;
12
+ };
13
+
14
+ module.exports = { getAMBestRatingForInsurers };
@@ -1,63 +1,63 @@
1
- const internalRequests = require('../../../../../../common/requests/internalAuth/requests');
2
- const requests = require('../../../../../../common/requests/cookieAuth/requests');
3
- const { nodeBackendUrl, backendUrl } = require('../../../../../../env').getEnv();
4
-
5
- const Endpoints = {
6
- getAiAnalysisResult: `${nodeBackendUrl}/compliance/ai/analysis-results`,
7
- getComparisonAlgorithmResultsIos: `${nodeBackendUrl}/compliance/comparison-algorithm-results`,
8
- getComplianceReport: aiAnalysisProcessId => `${nodeBackendUrl}/compliance/ai/audit/compliance-report/${aiAnalysisProcessId}`,
9
- getAiAnalysisExtractionStep: recordId => `${backendUrl}/saas/record/${recordId}/coi/ai-analysis-status`,
10
- getAiAnalysisStatus: recordId => `${backendUrl}/saas/ai-analysis-process/status/record/${recordId}`,
11
- getAiAnalysisProcess: recordId => `${backendUrl}/saas/integration-tests/ai-analysis-process/record/${recordId}`,
12
- getAcord25ByAiAnalysis: `${nodeBackendUrl}/compliance/ai/analysis/acord25`,
13
- getAuxiliaryDataByAiAnalysis: uniqueCoiId => `${nodeBackendUrl}/compliance/auxiliary-data/from/coi-analysis/${uniqueCoiId}`,
14
- getOcrByRecordIdAiAnalysis: recordId => `${backendUrl}/jcsc/record/${recordId}/ocr`
15
- };
16
-
17
- const getAiAnalysisResult = (uniqueCoiIds, requirementsId) => {
18
- return internalRequests.postRequestHandler(Endpoints.getAiAnalysisResult, { uniqueCoiIds, requirementsId });
19
- };
20
-
21
- const getComparisonAlgorithmResultsIos = data => {
22
- return internalRequests.postRequestHandler(Endpoints.getComparisonAlgorithmResultsIos, data);
23
- };
24
-
25
- const getComplianceReport = aiAnalysisProcessId => {
26
- return internalRequests.getRequestHandler(Endpoints.getComplianceReport(aiAnalysisProcessId));
27
- };
28
-
29
- const getAiAnalysisExtractionStep = (recordId, context) => {
30
- return requests.getRequestHandler(Endpoints.getAiAnalysisExtractionStep(recordId), {}, context);
31
- };
32
-
33
- const getAiAnalysisStatus = (recordId, context) => {
34
- return requests.getRequestHandler(Endpoints.getAiAnalysisStatus(recordId), {}, context);
35
- };
36
-
37
- const getAiAnalysisProcess = (recordId, context) => {
38
- return requests.getRequestHandler(Endpoints.getAiAnalysisProcess(recordId), {}, context);
39
- };
40
-
41
- const getAcord25ByAiAnalysis = uniqueCoiIds => {
42
- return internalRequests.postRequestHandler(Endpoints.getAcord25ByAiAnalysis, { uniqueCoiIds });
43
- };
44
-
45
- const getAuxiliaryDataByAiAnalysis = uniqueCoiId => {
46
- return internalRequests.getRequestHandler(Endpoints.getAuxiliaryDataByAiAnalysis(uniqueCoiId));
47
- };
48
-
49
- const getOcrByRecordIdAiAnalysis = recordId => {
50
- return internalRequests.getRequestHandler(Endpoints.getOcrByRecordIdAiAnalysis(recordId));
51
- };
52
-
53
- module.exports = {
54
- getComparisonAlgorithmResultsIos,
55
- getAiAnalysisResult,
56
- getComplianceReport,
57
- getAiAnalysisExtractionStep,
58
- getAiAnalysisStatus,
59
- getAiAnalysisProcess,
60
- getAcord25ByAiAnalysis,
61
- getAuxiliaryDataByAiAnalysis,
62
- getOcrByRecordIdAiAnalysis
63
- };
1
+ const internalRequests = require('../../../../../../common/requests/internalAuth/requests');
2
+ const requests = require('../../../../../../common/requests/cookieAuth/requests');
3
+ const { nodeBackendUrl, backendUrl } = require('../../../../../../env').getEnv();
4
+
5
+ const Endpoints = {
6
+ getAiAnalysisResult: `${nodeBackendUrl}/compliance/ai/analysis-results`,
7
+ getComparisonAlgorithmResultsIos: `${nodeBackendUrl}/compliance/comparison-algorithm-results`,
8
+ getComplianceReport: aiAnalysisProcessId => `${nodeBackendUrl}/compliance/ai/audit/compliance-report/${aiAnalysisProcessId}`,
9
+ getAiAnalysisExtractionStep: recordId => `${backendUrl}/saas/record/${recordId}/coi/ai-analysis-status`,
10
+ getAiAnalysisStatus: recordId => `${backendUrl}/saas/ai-analysis-process/status/record/${recordId}`,
11
+ getAiAnalysisProcess: recordId => `${backendUrl}/saas/integration-tests/ai-analysis-process/record/${recordId}`,
12
+ getAcord25ByAiAnalysis: `${nodeBackendUrl}/compliance/ai/analysis/acord25`,
13
+ getAuxiliaryDataByAiAnalysis: uniqueCoiId => `${nodeBackendUrl}/compliance/auxiliary-data/from/coi-analysis/${uniqueCoiId}`,
14
+ getOcrByRecordIdAiAnalysis: recordId => `${backendUrl}/jcsc/record/${recordId}/ocr`
15
+ };
16
+
17
+ const getAiAnalysisResult = (uniqueCoiIds, requirementsId) => {
18
+ return internalRequests.postRequestHandler(Endpoints.getAiAnalysisResult, { uniqueCoiIds, requirementsId });
19
+ };
20
+
21
+ const getComparisonAlgorithmResultsIos = data => {
22
+ return internalRequests.postRequestHandler(Endpoints.getComparisonAlgorithmResultsIos, data);
23
+ };
24
+
25
+ const getComplianceReport = aiAnalysisProcessId => {
26
+ return internalRequests.getRequestHandler(Endpoints.getComplianceReport(aiAnalysisProcessId));
27
+ };
28
+
29
+ const getAiAnalysisExtractionStep = (recordId, context) => {
30
+ return requests.getRequestHandler(Endpoints.getAiAnalysisExtractionStep(recordId), {}, context);
31
+ };
32
+
33
+ const getAiAnalysisStatus = (recordId, context) => {
34
+ return requests.getRequestHandler(Endpoints.getAiAnalysisStatus(recordId), {}, context);
35
+ };
36
+
37
+ const getAiAnalysisProcess = (recordId, context) => {
38
+ return requests.getRequestHandler(Endpoints.getAiAnalysisProcess(recordId), {}, context);
39
+ };
40
+
41
+ const getAcord25ByAiAnalysis = uniqueCoiIds => {
42
+ return internalRequests.postRequestHandler(Endpoints.getAcord25ByAiAnalysis, { uniqueCoiIds });
43
+ };
44
+
45
+ const getAuxiliaryDataByAiAnalysis = uniqueCoiId => {
46
+ return internalRequests.getRequestHandler(Endpoints.getAuxiliaryDataByAiAnalysis(uniqueCoiId));
47
+ };
48
+
49
+ const getOcrByRecordIdAiAnalysis = recordId => {
50
+ return internalRequests.getRequestHandler(Endpoints.getOcrByRecordIdAiAnalysis(recordId));
51
+ };
52
+
53
+ module.exports = {
54
+ getComparisonAlgorithmResultsIos,
55
+ getAiAnalysisResult,
56
+ getComplianceReport,
57
+ getAiAnalysisExtractionStep,
58
+ getAiAnalysisStatus,
59
+ getAiAnalysisProcess,
60
+ getAcord25ByAiAnalysis,
61
+ getAuxiliaryDataByAiAnalysis,
62
+ getOcrByRecordIdAiAnalysis
63
+ };