@getjones/test-infra 2.10.14 → 2.11.0

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 (193) 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 +102 -102
  5. package/src/common/consts/dashboardCharts.js +18 -18
  6. package/src/common/consts/recordTypes.js +5 -5
  7. package/src/common/consts/s3FileTypes.js +11 -11
  8. package/src/common/consts/userTypes.js +8 -8
  9. package/src/common/httpResponseStatusCodes.json +11 -11
  10. package/src/common/requests/apiKeyAuth/requests.js +44 -44
  11. package/src/common/requests/cookieAuth/requests.js +40 -40
  12. package/src/common/requests/requestHandlers.js +78 -78
  13. package/src/common/utils/complianceUtil.js +83 -83
  14. package/src/common/utils/configsUtil.js +22 -22
  15. package/src/common/utils/dataTypeUtils.js +41 -41
  16. package/src/common/utils/numberUtils.js +22 -22
  17. package/src/common/utils/objectUtils.js +7 -7
  18. package/src/common/utils/timeUtils.js +177 -177
  19. package/src/common/validations/errorValidation.js +16 -16
  20. package/src/common/validations/typeValidations.js +36 -36
  21. package/src/defaults/configs/auditConfigs.js +91 -91
  22. package/src/defaults/configs/coverage.js +227 -227
  23. package/src/defaults/configs/polices.js +54 -54
  24. package/src/defaults/configs/requirement.js +32 -32
  25. package/src/defaults/index.js +6 -6
  26. package/src/env.js +57 -57
  27. package/src/factory/globalRecord/globalRecord.js +70 -70
  28. package/src/factory/index.js +8 -8
  29. package/src/factory/records/records.js +128 -128
  30. package/src/factory/users/users.js +77 -77
  31. package/src/index.js +89 -89
  32. package/src/resources/virusFile.pdf +0 -0
  33. package/src/saas/internal-api/accounts/api/core/accounts.core.api.js +28 -28
  34. package/src/saas/internal-api/accounts/api/core/accounts.core.service.js +82 -82
  35. package/src/saas/internal-api/accounts/api/openapi/accounts.openapi.api.js +48 -48
  36. package/src/saas/internal-api/accounts/api/openapi/accounts.openapi.service.js +74 -74
  37. package/src/saas/internal-api/accounts/api/settings/settings.api.js +21 -21
  38. package/src/saas/internal-api/accounts/api/settings/settings.service.js +41 -41
  39. package/src/saas/internal-api/accounts/consts/consts.js +6 -6
  40. package/src/saas/internal-api/accounts/index.js +20 -20
  41. package/src/saas/internal-api/accounts/models/core/create.account.model.js +16 -16
  42. package/src/saas/internal-api/accounts/models/settings/update.settings.model.js +38 -38
  43. package/src/saas/internal-api/accounts/utils/utils.js +58 -58
  44. package/src/saas/internal-api/agreement/api/agreement.api.js +35 -35
  45. package/src/saas/internal-api/agreement/api/agreement.service.js +67 -67
  46. package/src/saas/internal-api/agreement/consts/consts.js +8 -8
  47. package/src/saas/internal-api/agreement/index.js +11 -11
  48. package/src/saas/internal-api/agreement/models/create.agreement.model.js +12 -12
  49. package/src/saas/internal-api/auditNotes/api/audit.notes.api.js +40 -40
  50. package/src/saas/internal-api/auditNotes/api/audit.notes.service.js +115 -115
  51. package/src/saas/internal-api/auditNotes/index.js +4 -4
  52. package/src/saas/internal-api/auditNotes/models/audit.note.model.js +30 -30
  53. package/src/saas/internal-api/auth/api/auth.api.js +27 -27
  54. package/src/saas/internal-api/auth/api/auth.service.js +90 -90
  55. package/src/saas/internal-api/auth/index.js +3 -3
  56. package/src/saas/internal-api/coi/api/coi.api.js +34 -34
  57. package/src/saas/internal-api/coi/api/coi.service.js +22 -22
  58. package/src/saas/internal-api/coi/consts/uploaderTypes.js +5 -5
  59. package/src/saas/internal-api/coi/index.js +13 -13
  60. package/src/saas/internal-api/coi/models/submit.coi.model.js +9 -9
  61. package/src/saas/internal-api/coi/utils/utils.js +48 -48
  62. package/src/saas/internal-api/compliance/api/audit/audit.api.js +96 -96
  63. package/src/saas/internal-api/compliance/api/audit/audit.service.js +219 -219
  64. package/src/saas/internal-api/compliance/api/convert/convert.api.js +17 -17
  65. package/src/saas/internal-api/compliance/api/convert/convert.service.js +11 -11
  66. package/src/saas/internal-api/compliance/api/coverage/coverage.api.js +33 -33
  67. package/src/saas/internal-api/compliance/api/coverage/coverage.service.js +48 -48
  68. package/src/saas/internal-api/compliance/api/overrideGap/override.gap.api.js +33 -33
  69. package/src/saas/internal-api/compliance/api/overrideGap/override.gap.service.js +141 -141
  70. package/src/saas/internal-api/compliance/consts/audit.js +102 -102
  71. package/src/saas/internal-api/compliance/index.js +33 -33
  72. package/src/saas/internal-api/compliance/models/audit/audit.model.js +94 -94
  73. package/src/saas/internal-api/compliance/models/waive/waive.model.js +49 -49
  74. package/src/saas/internal-api/compliance/utils/auditUtil.js +222 -222
  75. package/src/saas/internal-api/compliance/utils/coverageUtil.js +40 -40
  76. package/src/saas/internal-api/contractors/api/contractors.api.js +166 -166
  77. package/src/saas/internal-api/contractors/api/contractors.service.js +198 -198
  78. package/src/saas/internal-api/contractors/consts/consts.js +6 -6
  79. package/src/saas/internal-api/contractors/index.js +9 -9
  80. package/src/saas/internal-api/contractors/models/assign.requirement.model.js +10 -10
  81. package/src/saas/internal-api/contractors/models/create.contractor.model.js +22 -22
  82. package/src/saas/internal-api/contractors/models/edit.contractor.model.js +60 -60
  83. package/src/saas/internal-api/contractors/models/verification.contractor.model.js +27 -27
  84. package/src/saas/internal-api/dashboard/api/recordList.api.js +38 -38
  85. package/src/saas/internal-api/dashboard/api/recordList.service.js +60 -60
  86. package/src/saas/internal-api/dashboard/index.js +5 -5
  87. package/src/saas/internal-api/dashboard/models/dashboard.filter.criteria.model.js +38 -38
  88. package/src/saas/internal-api/dbEmails/api/db.emails.api.js +25 -25
  89. package/src/saas/internal-api/dbEmails/api/db.emails.service.js +147 -147
  90. package/src/saas/internal-api/dbEmails/consts/consts.js +53 -53
  91. package/src/saas/internal-api/dbEmails/index.js +6 -6
  92. package/src/saas/internal-api/dbEmails/models/db.emails.model.js +22 -22
  93. package/src/saas/internal-api/dbEmails/utils/util.js +82 -82
  94. package/src/saas/internal-api/emailCustomization/api/email.customization.api.js +26 -26
  95. package/src/saas/internal-api/emailCustomization/api/email.customization.service.js +50 -50
  96. package/src/saas/internal-api/emailCustomization/index.js +3 -3
  97. package/src/saas/internal-api/globalRecord/api/global.record.api.js +95 -95
  98. package/src/saas/internal-api/globalRecord/api/global.record.service.js +106 -106
  99. package/src/saas/internal-api/globalRecord/consts.js +20 -20
  100. package/src/saas/internal-api/globalRecord/index.js +6 -6
  101. package/src/saas/internal-api/globalRecord/models/global.record.model.js +60 -60
  102. package/src/saas/internal-api/globalRecord/utils/util.js +161 -161
  103. package/src/saas/internal-api/homepageCharts/api/charts.api.js +12 -12
  104. package/src/saas/internal-api/homepageCharts/api/charts.service.js +7 -7
  105. package/src/saas/internal-api/homepageCharts/index.js +3 -3
  106. package/src/saas/internal-api/projects/api/core/projects.api.js +39 -39
  107. package/src/saas/internal-api/projects/api/core/projects.service.js +65 -65
  108. package/src/saas/internal-api/projects/api/settings/project.settings.api.js +18 -18
  109. package/src/saas/internal-api/projects/api/settings/project.settings.service.js +35 -35
  110. package/src/saas/internal-api/projects/consts/defaultProject.js +3 -3
  111. package/src/saas/internal-api/projects/index.js +24 -24
  112. package/src/saas/internal-api/projects/models/core/create.project.model.js +41 -41
  113. package/src/saas/internal-api/projects/models/core/update.project.model.js +47 -47
  114. package/src/saas/internal-api/projects/models/settings/update.project.settings.model.js +41 -41
  115. package/src/saas/internal-api/projects/utils/utils.js +156 -156
  116. package/src/saas/internal-api/recordNotes/api/record.notes.api.js +38 -38
  117. package/src/saas/internal-api/recordNotes/api/record.notes.service.js +29 -29
  118. package/src/saas/internal-api/recordNotes/index.js +3 -3
  119. package/src/saas/internal-api/reports/api/reports.api.js +39 -39
  120. package/src/saas/internal-api/reports/api/reports.service.js +34 -34
  121. package/src/saas/internal-api/reports/consts/consts.js +64 -64
  122. package/src/saas/internal-api/reports/index.js +15 -15
  123. package/src/saas/internal-api/reports/models/report.model.js +27 -27
  124. package/src/saas/internal-api/requests/api/requests.api.js +78 -78
  125. package/src/saas/internal-api/requests/api/requests.service.js +151 -151
  126. package/src/saas/internal-api/requests/index.js +16 -16
  127. package/src/saas/internal-api/requests/models/create.request.model.js +33 -33
  128. package/src/saas/internal-api/requests/models/edit.request.model.js +31 -31
  129. package/src/saas/internal-api/requests/models/inner.page.request.criteria.model.js +17 -17
  130. package/src/saas/internal-api/requests/models/tenant.request.model.js +9 -9
  131. package/src/saas/internal-api/requests/utils.js +8 -8
  132. package/src/saas/internal-api/requestsTable/api/requests.table.api.js +20 -20
  133. package/src/saas/internal-api/requestsTable/api/requests.table.service.js +14 -14
  134. package/src/saas/internal-api/requestsTable/index.js +3 -3
  135. package/src/saas/internal-api/requirements/api/requirements.api.js +45 -45
  136. package/src/saas/internal-api/requirements/api/requirements.service.js +134 -134
  137. package/src/saas/internal-api/requirements/consts/attributeTypes.json +5 -6
  138. package/src/saas/internal-api/requirements/consts/consts.js +6 -6
  139. package/src/saas/internal-api/requirements/index.js +10 -10
  140. package/src/saas/internal-api/requirements/models/create.requirement.model.js +17 -17
  141. package/src/saas/internal-api/requirements/models/policy.model.js +33 -33
  142. package/src/saas/internal-api/requirements/models/update.requirement.model.js +19 -19
  143. package/src/saas/internal-api/requirements/utils/utils.js +102 -115
  144. package/src/saas/internal-api/serviceArea/api/coordinates.api.js +12 -12
  145. package/src/saas/internal-api/serviceArea/api/coordinates.service.js +7 -7
  146. package/src/saas/internal-api/serviceArea/index.js +4 -4
  147. package/src/saas/internal-api/serviceArea/utils/utils.js +8 -8
  148. package/src/saas/internal-api/tabs/api/tabs.api.js +32 -32
  149. package/src/saas/internal-api/tabs/api/tabs.service.js +54 -54
  150. package/src/saas/internal-api/tabs/index.js +3 -3
  151. package/src/saas/internal-api/tabs/models/tabs.model.js +18 -19
  152. package/src/saas/internal-api/thread-scheduler/runner.js +39 -39
  153. package/src/saas/internal-api/uploadFiles/api/upload.file.api.js +25 -25
  154. package/src/saas/internal-api/uploadFiles/api/upload.file.service.js +32 -32
  155. package/src/saas/internal-api/uploadFiles/consts.js +12 -12
  156. package/src/saas/internal-api/uploadFiles/index.js +3 -3
  157. package/src/saas/internal-api/users/api/tenantApp/tenant.app.api.js +32 -32
  158. package/src/saas/internal-api/users/api/tenantApp/tenant.app.service.js +78 -78
  159. package/src/saas/internal-api/users/api/users.api.js +109 -109
  160. package/src/saas/internal-api/users/api/users.service.js +198 -198
  161. package/src/saas/internal-api/users/index.js +16 -16
  162. package/src/saas/internal-api/users/models/create.inner.system.user.model.js +18 -18
  163. package/src/saas/internal-api/users/models/notification.settings.model.js +12 -12
  164. package/src/saas/internal-api/users/models/tenent.user.model.js +11 -11
  165. package/src/saas/internal-api/users/models/users.model.js +41 -41
  166. package/src/saas/internal-api/users/utils/util.js +39 -39
  167. package/src/saas/internal-api/vendorProfile/api/vendor.profile.api.js +20 -20
  168. package/src/saas/internal-api/vendorProfile/api/vendor.profile.service.js +14 -14
  169. package/src/saas/internal-api/vendorProfile/index.js +3 -3
  170. package/src/saas/openapi/accounts/accounts.api.js +17 -17
  171. package/src/saas/openapi/accounts/accounts.service.js +11 -11
  172. package/src/saas/openapi/coi/coi.api.js +20 -20
  173. package/src/saas/openapi/coi/coi.service.js +13 -13
  174. package/src/saas/openapi/projects/projects.api.js +83 -83
  175. package/src/saas/openapi/projects/projects.service.js +64 -64
  176. package/src/saas/openapi/requests/index.js +7 -7
  177. package/src/saas/openapi/requests/models/invite.request.model.js +37 -37
  178. package/src/saas/openapi/requests/models/update.request.model.js +35 -35
  179. package/src/saas/openapi/requests/requests.api.js +76 -76
  180. package/src/saas/openapi/requests/requests.service.js +65 -65
  181. package/src/saas/openapi/requirements/index.js +6 -6
  182. package/src/saas/openapi/requirements/models/copy.requirement.model.js +10 -10
  183. package/src/saas/openapi/requirements/requirements.api.js +32 -32
  184. package/src/saas/openapi/requirements/requirements.service.js +37 -37
  185. package/src/saas/openapi/tabs/index.js +6 -6
  186. package/src/saas/openapi/tabs/models/create.tab.model.js +6 -6
  187. package/src/saas/openapi/tabs/tabs.api.js +27 -27
  188. package/src/saas/openapi/tabs/tabs.service.js +19 -19
  189. package/src/saas/openapi/users/user.model.js +10 -10
  190. package/src/saas/openapi/users/users.api.js +33 -33
  191. package/src/saas/openapi/users/users.service.js +41 -41
  192. package/tests/env.test.js +40 -40
  193. package/tests/validation.test.js +83 -83
@@ -1,198 +1,198 @@
1
- const contractorsAPI = require('./contractors.api');
2
- const { CreateContractorModel } = require('../models/create.contractor.model');
3
- const { RequestModel } = require('../../requests/models/edit.request.model');
4
- const { validateType } = require('../../../../common/validations/typeValidations');
5
- const { RecordModifyDateVerificationModel } = require('../models/verification.contractor.model');
6
- const { AssignRequirementModel } = require('../models/assign.requirement.model');
7
- const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
8
- const { waitFor } = require('../../../../common/utils/timeUtils');
9
-
10
- const createContractor = async (createContractorModel, context) => {
11
- validateType(createContractorModel, CreateContractorModel);
12
- return contractorsAPI.createContractor(createContractorModel, context);
13
- };
14
-
15
- const getContractorsByAccountId = async (accountId, context, activationStatus = null) => {
16
- if (activationStatus) {
17
- activationStatus = activationStatus.reduce((f, s) => `${f},${s}`);
18
- }
19
-
20
- return contractorsAPI.getContractorsByAccountId({ accountId, activationStatus }, context);
21
- };
22
-
23
- const getContractorById = (contractorId, context) => {
24
- return contractorsAPI.getContractorById(contractorId, context);
25
- };
26
-
27
- const getRecordHistory = (contractorId, context) => {
28
- return contractorsAPI.getRecordHistory(contractorId, context);
29
- };
30
-
31
- const archiveByContractorId = (contractorId, context) => {
32
- return contractorsAPI.archiveByContractorId(contractorId, context);
33
- };
34
-
35
- const restoreRecord = (recordVerificationModel, context) => {
36
- validateType(recordVerificationModel, RecordModifyDateVerificationModel);
37
- return contractorsAPI.restoreRecord(recordVerificationModel, context);
38
- };
39
-
40
- const editContractor = (editRequestModel, context) => {
41
- validateType(editRequestModel, RequestModel);
42
- return contractorsAPI.editContractor(editRequestModel, context);
43
- };
44
-
45
- const updateExpiryDate = (contractorId, expiryDate, policyName) => {
46
- return contractorsAPI.updateExpiryDate(contractorId, expiryDate, policyName);
47
- };
48
-
49
- const assignRequirement = (requestId, assignRequirementModel, context) => {
50
- return contractorsAPI.assignRequirement(requestId, assignRequirementModel, context);
51
- };
52
-
53
- const updateInviteDate = (contractorId, inviteDate, context) => {
54
- return contractorsAPI.updateInviteDate(contractorId, inviteDate, context);
55
- };
56
-
57
- const updateLastInviteActionDate = (recordId, dateOffset, context) => {
58
- return contractorsAPI.updateLastInviteActionDate(recordId, dateOffset, context);
59
- };
60
-
61
- const getContractorsByTabId = (tabId, context, activityStatus = 'Active') => {
62
- return contractorsAPI.getContractorsByTabId(tabId, context, activityStatus);
63
- };
64
-
65
- const searchInAutoComplete = ({ tabId, searchWord }, context) => {
66
- return contractorsAPI.searchInAutocomplete({ tabId, searchWord }, context);
67
- };
68
-
69
- const updateContractorUploadDate = (contractorId, uploadDate, context) => {
70
- validateType(uploadDate, Date);
71
- return contractorsAPI.updateContractorUploadDate(contractorId, uploadDate, context);
72
- };
73
-
74
- const changeRequirement = (recordModifyDateVerificationModel, context) => {
75
- validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
76
- return contractorsAPI.changeRequirement(recordModifyDateVerificationModel, context);
77
- };
78
-
79
- const sendGaps = (requestId, recordModifyDateVerificationModel, context) => {
80
- validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
81
- return contractorsAPI.sendGaps(requestId, recordModifyDateVerificationModel, context);
82
- };
83
-
84
- const requestNewCoiAboutToExpire = (requestId, recordModifyDateVerificationModel, context) => {
85
- validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
86
- return contractorsAPI.requestNewCoiAboutToExpire(requestId, recordModifyDateVerificationModel, context);
87
- };
88
-
89
- const requestNewCoiExpired = (requestId, recordModifyDateVerificationModel, context) => {
90
- validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
91
- return contractorsAPI.requestNewCoiExpired(requestId, recordModifyDateVerificationModel, context);
92
- };
93
-
94
- const resendInvitation = (requestId, recordModifyDateVerificationModel, context) => {
95
- validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
96
- return contractorsAPI.resendInvitation(requestId, recordModifyDateVerificationModel, context);
97
- };
98
-
99
- const muteNotifications = (recordModifyDateVerificationModel, context) => {
100
- validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
101
- return contractorsAPI.muteNotifications(recordModifyDateVerificationModel, context);
102
- };
103
-
104
- const unmuteNotifications = (recordModifyDateVerificationModel, context) => {
105
- validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
106
- return contractorsAPI.unmuteNotifications(recordModifyDateVerificationModel, context);
107
- };
108
-
109
- const deleteByContractorId = (contractorId, context) => {
110
- return contractorsAPI.deleteByContractorId(contractorId, context);
111
- };
112
-
113
- const deleteAllRecordsInAccount = async (accountId, context, { activationStatus } = {}) => {
114
- const { data: existingRecords } = await getContractorsByAccountId(accountId, context, activationStatus);
115
-
116
- if (!existingRecords.length) {
117
- return;
118
- }
119
-
120
- const failed = [];
121
- for (const record of existingRecords) {
122
- const response = await deleteByContractorId(record.id, context);
123
-
124
- if (response.status !== httpResponseStatusCodes.NO_CONTENT) {
125
- console.error(`Failed to delete record: ${record.company}, retrying...`);
126
- waitFor(1000);
127
- const try2response = await deleteByContractorId(record.id, context);
128
-
129
- if (try2response.status !== httpResponseStatusCodes.NO_CONTENT) {
130
- console.error(`Failed to delete record: ${record.company} second time.`);
131
- failed.push(response);
132
- }
133
- }
134
- }
135
-
136
- if (failed.length) {
137
- throw Error(`Failed to delete ${failed.length} of ${existingRecords.length} records in account. Failed with status: ${ failed[0].status }`);
138
- }
139
- };
140
-
141
- const getRecordVerificationModel = async (recordId, context, { requirementId, requirementDateModified } = {}) => {
142
- const { data: recordData } = await getContractorById(recordId, context);
143
- return new RecordModifyDateVerificationModel(recordData.id, { contractorDateModified: recordData.dateModified, requirementId, requirementDateModified });
144
- };
145
-
146
- const getAssignRequirementModel = (requirementId, companyName, emailAddress) => {
147
- return new AssignRequirementModel(requirementId, companyName, emailAddress);
148
- };
149
-
150
- const getLinkedProjectsCount = (recordId, context) => {
151
- return contractorsAPI.getLinkedProjectsCount(recordId, context);
152
- };
153
-
154
- const restoreByRecordId = async (recordId, context) => {
155
- const recordModifyModel = await getRecordVerificationModel(recordId, context);
156
- const restoreResponse = await restoreRecord(recordModifyModel, context);
157
-
158
- if (restoreResponse.status !== httpResponseStatusCodes.OK) {
159
- throw new Error(`Failed to restore record "${recordId}"\n${restoreResponse.statusText}`);
160
- }
161
-
162
- return restoreResponse;
163
- };
164
-
165
- const getInviteLinkStatus = (encryptedData, context) => {
166
- return contractorsAPI.getInviteLinkStatus(encryptedData, context);
167
- };
168
-
169
- module.exports = {
170
- createContractor,
171
- changeRequirement,
172
- getContractorsByAccountId,
173
- getContractorById,
174
- getRecordHistory,
175
- archiveByContractorId,
176
- restoreRecord,
177
- editContractor,
178
- updateInviteDate,
179
- updateExpiryDate,
180
- getContractorsByTabId,
181
- searchInAutoComplete,
182
- updateContractorUploadDate,
183
- sendGaps,
184
- requestNewCoiAboutToExpire,
185
- requestNewCoiExpired,
186
- resendInvitation,
187
- muteNotifications,
188
- unmuteNotifications,
189
- deleteByContractorId,
190
- deleteAllRecordsInAccount,
191
- getRecordVerificationModel,
192
- assignRequirement,
193
- getAssignRequirementModel,
194
- getLinkedProjectsCount,
195
- restoreByRecordId,
196
- updateLastInviteActionDate,
197
- getInviteLinkStatus
198
- };
1
+ const contractorsAPI = require('./contractors.api');
2
+ const { CreateContractorModel } = require('../models/create.contractor.model');
3
+ const { RequestModel } = require('../../requests/models/edit.request.model');
4
+ const { validateType } = require('../../../../common/validations/typeValidations');
5
+ const { RecordModifyDateVerificationModel } = require('../models/verification.contractor.model');
6
+ const { AssignRequirementModel } = require('../models/assign.requirement.model');
7
+ const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
8
+ const { waitFor } = require('../../../../common/utils/timeUtils');
9
+
10
+ const createContractor = async (createContractorModel, context) => {
11
+ validateType(createContractorModel, CreateContractorModel);
12
+ return contractorsAPI.createContractor(createContractorModel, context);
13
+ };
14
+
15
+ const getContractorsByAccountId = async (accountId, context, activationStatus = null) => {
16
+ if (activationStatus) {
17
+ activationStatus = activationStatus.reduce((f, s) => `${f},${s}`);
18
+ }
19
+
20
+ return contractorsAPI.getContractorsByAccountId({ accountId, activationStatus }, context);
21
+ };
22
+
23
+ const getContractorById = (contractorId, context) => {
24
+ return contractorsAPI.getContractorById(contractorId, context);
25
+ };
26
+
27
+ const getRecordHistory = (contractorId, context) => {
28
+ return contractorsAPI.getRecordHistory(contractorId, context);
29
+ };
30
+
31
+ const archiveByContractorId = (contractorId, context) => {
32
+ return contractorsAPI.archiveByContractorId(contractorId, context);
33
+ };
34
+
35
+ const restoreRecord = (recordVerificationModel, context) => {
36
+ validateType(recordVerificationModel, RecordModifyDateVerificationModel);
37
+ return contractorsAPI.restoreRecord(recordVerificationModel, context);
38
+ };
39
+
40
+ const editContractor = (editRequestModel, context) => {
41
+ validateType(editRequestModel, RequestModel);
42
+ return contractorsAPI.editContractor(editRequestModel, context);
43
+ };
44
+
45
+ const updateExpiryDate = (contractorId, expiryDate, policyName) => {
46
+ return contractorsAPI.updateExpiryDate(contractorId, expiryDate, policyName);
47
+ };
48
+
49
+ const assignRequirement = (requestId, assignRequirementModel, context) => {
50
+ return contractorsAPI.assignRequirement(requestId, assignRequirementModel, context);
51
+ };
52
+
53
+ const updateInviteDate = (contractorId, inviteDate, context) => {
54
+ return contractorsAPI.updateInviteDate(contractorId, inviteDate, context);
55
+ };
56
+
57
+ const updateLastInviteActionDate = (recordId, dateOffset, context) => {
58
+ return contractorsAPI.updateLastInviteActionDate(recordId, dateOffset, context);
59
+ };
60
+
61
+ const getContractorsByTabId = (tabId, context, activityStatus = 'Active') => {
62
+ return contractorsAPI.getContractorsByTabId(tabId, context, activityStatus);
63
+ };
64
+
65
+ const searchInAutoComplete = ({ tabId, searchWord }, context) => {
66
+ return contractorsAPI.searchInAutocomplete({ tabId, searchWord }, context);
67
+ };
68
+
69
+ const updateContractorUploadDate = (contractorId, uploadDate, context) => {
70
+ validateType(uploadDate, Date);
71
+ return contractorsAPI.updateContractorUploadDate(contractorId, uploadDate, context);
72
+ };
73
+
74
+ const changeRequirement = (recordModifyDateVerificationModel, context) => {
75
+ validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
76
+ return contractorsAPI.changeRequirement(recordModifyDateVerificationModel, context);
77
+ };
78
+
79
+ const sendGaps = (requestId, recordModifyDateVerificationModel, context) => {
80
+ validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
81
+ return contractorsAPI.sendGaps(requestId, recordModifyDateVerificationModel, context);
82
+ };
83
+
84
+ const requestNewCoiAboutToExpire = (requestId, recordModifyDateVerificationModel, context) => {
85
+ validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
86
+ return contractorsAPI.requestNewCoiAboutToExpire(requestId, recordModifyDateVerificationModel, context);
87
+ };
88
+
89
+ const requestNewCoiExpired = (requestId, recordModifyDateVerificationModel, context) => {
90
+ validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
91
+ return contractorsAPI.requestNewCoiExpired(requestId, recordModifyDateVerificationModel, context);
92
+ };
93
+
94
+ const resendInvitation = (requestId, recordModifyDateVerificationModel, context) => {
95
+ validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
96
+ return contractorsAPI.resendInvitation(requestId, recordModifyDateVerificationModel, context);
97
+ };
98
+
99
+ const muteNotifications = (recordModifyDateVerificationModel, context) => {
100
+ validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
101
+ return contractorsAPI.muteNotifications(recordModifyDateVerificationModel, context);
102
+ };
103
+
104
+ const unmuteNotifications = (recordModifyDateVerificationModel, context) => {
105
+ validateType(recordModifyDateVerificationModel, RecordModifyDateVerificationModel);
106
+ return contractorsAPI.unmuteNotifications(recordModifyDateVerificationModel, context);
107
+ };
108
+
109
+ const deleteByContractorId = (contractorId, context) => {
110
+ return contractorsAPI.deleteByContractorId(contractorId, context);
111
+ };
112
+
113
+ const deleteAllRecordsInAccount = async (accountId, context, { activationStatus } = {}) => {
114
+ const { data: existingRecords } = await getContractorsByAccountId(accountId, context, activationStatus);
115
+
116
+ if (!existingRecords.length) {
117
+ return;
118
+ }
119
+
120
+ const failed = [];
121
+ for (const record of existingRecords) {
122
+ const response = await deleteByContractorId(record.id, context);
123
+
124
+ if (response.status !== httpResponseStatusCodes.NO_CONTENT) {
125
+ console.error(`Failed to delete record: ${record.company}, retrying...`);
126
+ waitFor(1000);
127
+ const try2response = await deleteByContractorId(record.id, context);
128
+
129
+ if (try2response.status !== httpResponseStatusCodes.NO_CONTENT) {
130
+ console.error(`Failed to delete record: ${record.company} second time.`);
131
+ failed.push(response);
132
+ }
133
+ }
134
+ }
135
+
136
+ if (failed.length) {
137
+ throw Error(`Failed to delete ${failed.length} of ${existingRecords.length} records in account. Failed with status: ${ failed[0].status }`);
138
+ }
139
+ };
140
+
141
+ const getRecordVerificationModel = async (recordId, context, { requirementId, requirementDateModified } = {}) => {
142
+ const { data: recordData } = await getContractorById(recordId, context);
143
+ return new RecordModifyDateVerificationModel(recordData.id, { contractorDateModified: recordData.dateModified, requirementId, requirementDateModified });
144
+ };
145
+
146
+ const getAssignRequirementModel = (requirementId, companyName, emailAddress) => {
147
+ return new AssignRequirementModel(requirementId, companyName, emailAddress);
148
+ };
149
+
150
+ const getLinkedProjectsCount = (recordId, context) => {
151
+ return contractorsAPI.getLinkedProjectsCount(recordId, context);
152
+ };
153
+
154
+ const restoreByRecordId = async (recordId, context) => {
155
+ const recordModifyModel = await getRecordVerificationModel(recordId, context);
156
+ const restoreResponse = await restoreRecord(recordModifyModel, context);
157
+
158
+ if (restoreResponse.status !== httpResponseStatusCodes.OK) {
159
+ throw new Error(`Failed to restore record "${recordId}"\n${restoreResponse.statusText}`);
160
+ }
161
+
162
+ return restoreResponse;
163
+ };
164
+
165
+ const getInviteLinkStatus = (encryptedData, context) => {
166
+ return contractorsAPI.getInviteLinkStatus(encryptedData, context);
167
+ };
168
+
169
+ module.exports = {
170
+ createContractor,
171
+ changeRequirement,
172
+ getContractorsByAccountId,
173
+ getContractorById,
174
+ getRecordHistory,
175
+ archiveByContractorId,
176
+ restoreRecord,
177
+ editContractor,
178
+ updateInviteDate,
179
+ updateExpiryDate,
180
+ getContractorsByTabId,
181
+ searchInAutoComplete,
182
+ updateContractorUploadDate,
183
+ sendGaps,
184
+ requestNewCoiAboutToExpire,
185
+ requestNewCoiExpired,
186
+ resendInvitation,
187
+ muteNotifications,
188
+ unmuteNotifications,
189
+ deleteByContractorId,
190
+ deleteAllRecordsInAccount,
191
+ getRecordVerificationModel,
192
+ assignRequirement,
193
+ getAssignRequirementModel,
194
+ getLinkedProjectsCount,
195
+ restoreByRecordId,
196
+ updateLastInviteActionDate,
197
+ getInviteLinkStatus
198
+ };
@@ -1,6 +1,6 @@
1
- const RECORD_SHARING_LEVEL = {
2
- account: 'Account',
3
- tab: 'Tab'
4
- };
5
-
6
- module.exports = { RECORD_SHARING_LEVEL };
1
+ const RECORD_SHARING_LEVEL = {
2
+ account: 'Account',
3
+ tab: 'Tab'
4
+ };
5
+
6
+ module.exports = { RECORD_SHARING_LEVEL };
@@ -1,9 +1,9 @@
1
- const createModel = require('./models/create.contractor.model');
2
- const editModel = require('./models/edit.contractor.model');
3
- const verificationModel = require('./models/verification.contractor.model');
4
- const assignRequirementModel = require('./models/assign.requirement.model');
5
- const services = require('./api/contractors.service');
6
-
7
- const models = { create: createModel, edit: editModel, verification: verificationModel, assignRequirementModel };
8
-
9
- module.exports = { services, models };
1
+ const createModel = require('./models/create.contractor.model');
2
+ const editModel = require('./models/edit.contractor.model');
3
+ const verificationModel = require('./models/verification.contractor.model');
4
+ const assignRequirementModel = require('./models/assign.requirement.model');
5
+ const services = require('./api/contractors.service');
6
+
7
+ const models = { create: createModel, edit: editModel, verification: verificationModel, assignRequirementModel };
8
+
9
+ module.exports = { services, models };
@@ -1,10 +1,10 @@
1
- class AssignRequirementModel {
2
- constructor(requirementId, companyName, emailAddress, { fileName = null, disableMail = false } = {}) {
3
- this.requirementId = requirementId;
4
- this.companyName = companyName;
5
- this.emailAddress = emailAddress;
6
- this.fileName = fileName;
7
- this.disableMail = disableMail;
8
- }
9
- }
10
- module.exports = { AssignRequirementModel };
1
+ class AssignRequirementModel {
2
+ constructor(requirementId, companyName, emailAddress, { fileName = null, disableMail = false } = {}) {
3
+ this.requirementId = requirementId;
4
+ this.companyName = companyName;
5
+ this.emailAddress = emailAddress;
6
+ this.fileName = fileName;
7
+ this.disableMail = disableMail;
8
+ }
9
+ }
10
+ module.exports = { AssignRequirementModel };
@@ -1,22 +1,22 @@
1
- const { validateType } = require('../../../../common/validations/typeValidations');
2
-
3
- function CreateContractorModel(requirementId, inviterEmail, vendorInfo, { tabId = null, sendMail = false, publicLink } = {}) {
4
- this.reqId = requirementId;
5
- this.inviterEmail = inviterEmail;
6
- this.vendorInfo = vendorInfo;
7
- this.disableMail = !sendMail;
8
- this.tabId = tabId;
9
- this.publicLink = publicLink;
10
-
11
- vendorInfo && validateType(vendorInfo, ContractorInfo);
12
- }
13
-
14
- function ContractorInfo(recordType, email, companyName, additionalEmails) {
15
- this.recordType = recordType;
16
- this.email = email;
17
- this.companyName = companyName;
18
- this.title = email;
19
- this.additionalEmails = additionalEmails;
20
- }
21
-
22
- module.exports = { CreateContractorModel, ContractorInfo };
1
+ const { validateType } = require('../../../../common/validations/typeValidations');
2
+
3
+ function CreateContractorModel(requirementId, inviterEmail, vendorInfo, { tabId = null, sendMail = false, publicLink } = {}) {
4
+ this.reqId = requirementId;
5
+ this.inviterEmail = inviterEmail;
6
+ this.vendorInfo = vendorInfo;
7
+ this.disableMail = !sendMail;
8
+ this.tabId = tabId;
9
+ this.publicLink = publicLink;
10
+
11
+ vendorInfo && validateType(vendorInfo, ContractorInfo);
12
+ }
13
+
14
+ function ContractorInfo(recordType, email, companyName, additionalEmails) {
15
+ this.recordType = recordType;
16
+ this.email = email;
17
+ this.companyName = companyName;
18
+ this.title = email;
19
+ this.additionalEmails = additionalEmails;
20
+ }
21
+
22
+ module.exports = { CreateContractorModel, ContractorInfo };
@@ -1,60 +1,60 @@
1
- const { validateType } = require('../../../../common/validations/typeValidations');
2
-
3
- class ContractorModel {
4
- constructor(contractorId, recordType, company, emailAddress, additionalDetails) {
5
- validateType(additionalDetails, ContractorDetailsModel);
6
-
7
- this.contractorId = contractorId;
8
- this.recordType = recordType;
9
- this.company = company;
10
- this.emailAddress = emailAddress;
11
-
12
- for (const detail in additionalDetails) {
13
- if (additionalDetails[detail]) {
14
- this[detail] = additionalDetails[detail];
15
- }
16
- }
17
- }
18
- }
19
-
20
- class ContractorDetailsModel {
21
- constructor({
22
- additionalEmails = [],
23
- dba = null,
24
- firstName = null,
25
- lastName = null,
26
- address = null,
27
- city = null,
28
- state = null,
29
- zipCode = null,
30
- phoneNumber = null,
31
- recordId = null,
32
- projectDescription = null,
33
- startDate = null,
34
- endDate = null
35
- } = {}) {
36
- this.dba = dba;
37
- this.fName = firstName;
38
- this.lName = lastName;
39
- this.location = address;
40
- this.city = city;
41
- this.state = state;
42
- this.zipCode = zipCode;
43
- this.phoneNumber = phoneNumber;
44
- this.externalRecordId = recordId;
45
- this.descriptionOfOperations = projectDescription;
46
- this.startDate = startDate;
47
- this.endDate = endDate;
48
-
49
- this.additionalEmails = [];
50
-
51
- for (const email of additionalEmails) {
52
- this.additionalEmails.push(typeof email === 'string' ? { email: email } : email);
53
- }
54
- }
55
- }
56
-
57
- module.exports = {
58
- ContractorModel,
59
- ContractorDetailsModel
60
- };
1
+ const { validateType } = require('../../../../common/validations/typeValidations');
2
+
3
+ class ContractorModel {
4
+ constructor(contractorId, recordType, company, emailAddress, additionalDetails) {
5
+ validateType(additionalDetails, ContractorDetailsModel);
6
+
7
+ this.contractorId = contractorId;
8
+ this.recordType = recordType;
9
+ this.company = company;
10
+ this.emailAddress = emailAddress;
11
+
12
+ for (const detail in additionalDetails) {
13
+ if (additionalDetails[detail]) {
14
+ this[detail] = additionalDetails[detail];
15
+ }
16
+ }
17
+ }
18
+ }
19
+
20
+ class ContractorDetailsModel {
21
+ constructor({
22
+ additionalEmails = [],
23
+ dba = null,
24
+ firstName = null,
25
+ lastName = null,
26
+ address = null,
27
+ city = null,
28
+ state = null,
29
+ zipCode = null,
30
+ phoneNumber = null,
31
+ recordId = null,
32
+ projectDescription = null,
33
+ startDate = null,
34
+ endDate = null
35
+ } = {}) {
36
+ this.dba = dba;
37
+ this.fName = firstName;
38
+ this.lName = lastName;
39
+ this.location = address;
40
+ this.city = city;
41
+ this.state = state;
42
+ this.zipCode = zipCode;
43
+ this.phoneNumber = phoneNumber;
44
+ this.externalRecordId = recordId;
45
+ this.descriptionOfOperations = projectDescription;
46
+ this.startDate = startDate;
47
+ this.endDate = endDate;
48
+
49
+ this.additionalEmails = [];
50
+
51
+ for (const email of additionalEmails) {
52
+ this.additionalEmails.push(typeof email === 'string' ? { email: email } : email);
53
+ }
54
+ }
55
+ }
56
+
57
+ module.exports = {
58
+ ContractorModel,
59
+ ContractorDetailsModel
60
+ };