@getjones/test-infra 2.8.15 → 2.9.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.
- package/package.json +1 -1
- package/src/common/commonFlows/records/records.js +32 -2
- package/src/common/utils/complianceUtil.js +8 -7
- package/src/common/utils/timeUtils.js +6 -1
- package/src/saas/internal-api/compliance/api/audit/audit.api.js +16 -13
- package/src/saas/internal-api/compliance/api/audit/audit.service.js +11 -10
- package/src/saas/internal-api/compliance/consts/audit.js +1 -20
- package/src/saas/internal-api/contractors/api/contractors.api.js +9 -1
- package/src/saas/internal-api/contractors/api/contractors.service.js +8 -2
- package/src/resources/virusFile.pdf +0 -0
package/package.json
CHANGED
|
@@ -4,6 +4,7 @@ const threadScheduler = require('../../../saas/internal-api/thread-scheduler/run
|
|
|
4
4
|
const timeUtils = require('../../utils/timeUtils');
|
|
5
5
|
const httpResponseStatusCodes = require('../../../common/httpResponseStatusCodes.json');
|
|
6
6
|
const contractors = require('../../../saas/internal-api/contractors');
|
|
7
|
+
const compliance = require('../../../saas/internal-api/compliance');
|
|
7
8
|
|
|
8
9
|
const makeRecordNotResponsive = async function(recordId, context, { isTenant } = {}) {
|
|
9
10
|
const dates = isTenant ?
|
|
@@ -11,7 +12,7 @@ const makeRecordNotResponsive = async function(recordId, context, { isTenant } =
|
|
|
11
12
|
timeUtils.getInvitationDatesForNotResponsiveVendor();
|
|
12
13
|
|
|
13
14
|
for (const date of dates) {
|
|
14
|
-
await
|
|
15
|
+
await updateLastInviteActionDate(recordId, date, context);
|
|
15
16
|
}
|
|
16
17
|
};
|
|
17
18
|
|
|
@@ -32,6 +33,34 @@ const updateInviteDate = async function(recordId, inviteDate, context) {
|
|
|
32
33
|
await timeUtils.waitFor(2.5).seconds; // calls for the same records can override each other
|
|
33
34
|
};
|
|
34
35
|
|
|
36
|
+
const updateLastInviteActionDate = async function(recordId, customDate, context) {
|
|
37
|
+
await timeUtils.waitFor(1).seconds;
|
|
38
|
+
/*
|
|
39
|
+
To run the reminders mails successfully we must first update the compliance audit actions date,
|
|
40
|
+
Since the thread scheduler will trigger the logic of the reminders mails
|
|
41
|
+
only if last invite action date will be equal or after compliance audit actions date
|
|
42
|
+
*/
|
|
43
|
+
const updateComplianceAuditResponse = await compliance.services.audit.updateComplianceAuditActionsDate(recordId, customDate, context);
|
|
44
|
+
|
|
45
|
+
if (updateComplianceAuditResponse.status !== httpResponseStatusCodes.NO_CONTENT) {
|
|
46
|
+
throw new Error(`Compliance audit date could not be updated\n${updateComplianceAuditResponse}`);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const updateLastInviteActionResponse = await contractors.services.updateLastInviteActionDate(recordId, customDate, context);
|
|
50
|
+
|
|
51
|
+
if (updateLastInviteActionResponse.status !== httpResponseStatusCodes.NO_CONTENT) {
|
|
52
|
+
throw new Error(`Record invite date could not be updated\n${updateLastInviteActionResponse}`);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const threadSchedulerResponse = await threadScheduler.runForRecords([recordId]);
|
|
56
|
+
|
|
57
|
+
if (threadSchedulerResponse.status !== httpResponseStatusCodes.OK) {
|
|
58
|
+
throw new Error(`Thread scheduler has failed to run\n${threadSchedulerResponse}`);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
await timeUtils.waitFor(2.5).seconds; // calls for the same records can override each other
|
|
62
|
+
};
|
|
63
|
+
|
|
35
64
|
const runOverAllRenewalDatesForRecord = async function(recordId, policyName) {
|
|
36
65
|
const dates = timeUtils.getAutomaticRenewalsExpirationDates();
|
|
37
66
|
|
|
@@ -68,5 +97,6 @@ module.exports = {
|
|
|
68
97
|
runOverAllRenewalDatesForRecord,
|
|
69
98
|
updateInviteDate,
|
|
70
99
|
updatePolicyExpiryDateForRecord,
|
|
71
|
-
getHistoryEvents
|
|
100
|
+
getHistoryEvents,
|
|
101
|
+
updateLastInviteActionDate
|
|
72
102
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
const { getEnv, getSystemUserIdentity } = require('../../env');
|
|
2
|
-
const auditApi = require('../../saas/internal-api/compliance/api/audit/audit.api');
|
|
3
2
|
const auditConfigs = require('../../defaults/configs/auditConfigs');
|
|
4
3
|
|
|
5
4
|
const { credentials } = getEnv();
|
|
6
5
|
|
|
6
|
+
const auditApi = require('../../saas/internal-api/compliance/api/audit/audit.api');
|
|
7
|
+
|
|
7
8
|
const complianceStatuses = {
|
|
8
9
|
complaint: 'complaint',
|
|
9
10
|
notCompliant: 'notCompliant',
|
|
@@ -43,16 +44,16 @@ const getAuditMetadata = async (
|
|
|
43
44
|
const isReauditResponse = await isReaudit(recordId, auditorContext);
|
|
44
45
|
metadata.isReaudit = isReauditResponse.data.isReaudit;
|
|
45
46
|
|
|
46
|
-
const recordDetailsResponse = await auditApi.
|
|
47
|
-
const
|
|
47
|
+
const recordDetailsResponse = await auditApi.getContractorDetailsForAudit(recordId, auditorContext);
|
|
48
|
+
const { vendorDetails } = recordDetailsResponse.data;
|
|
48
49
|
|
|
49
|
-
metadata.certificateId =
|
|
50
|
+
metadata.certificateId = vendorDetails.certificateDetails.certificateuploadId;
|
|
50
51
|
metadata.auditDates = {
|
|
51
52
|
contractorId: recordId,
|
|
52
|
-
contractorDateModified:
|
|
53
|
+
contractorDateModified: vendorDetails.dateModified,
|
|
53
54
|
dateStartedAudit: recordDetailsResponse.dateStartedAudit,
|
|
54
|
-
contractorOverrideDateModified:
|
|
55
|
-
contractCreateDate:
|
|
55
|
+
contractorOverrideDateModified: vendorDetails.contractorOverrideDateModified,
|
|
56
|
+
contractCreateDate: vendorDetails.contractCreateDate
|
|
56
57
|
};
|
|
57
58
|
|
|
58
59
|
metadata.auditorId = await getAuditorId();
|
|
@@ -115,6 +115,10 @@ const convertDateToLongInt = value => {
|
|
|
115
115
|
return Date.parse(value);
|
|
116
116
|
};
|
|
117
117
|
|
|
118
|
+
const convertDateStringFormatToISOString = dateStringFormat => {
|
|
119
|
+
return new Date(dateStringFormat).toISOString();
|
|
120
|
+
};
|
|
121
|
+
|
|
118
122
|
module.exports = {
|
|
119
123
|
formats,
|
|
120
124
|
getOneYearAgoDate,
|
|
@@ -147,5 +151,6 @@ module.exports = {
|
|
|
147
151
|
convertDateToNewFormat,
|
|
148
152
|
getOneWeekAgoDate,
|
|
149
153
|
getOneWeekAheadDate,
|
|
150
|
-
convertDateToLongInt
|
|
154
|
+
convertDateToLongInt,
|
|
155
|
+
convertDateStringFormatToISOString
|
|
151
156
|
};
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
const requests = require('../../../../../common/requests/cookieAuth/requests');
|
|
2
2
|
const { backendUrl } = require('../../../../../env').getEnv();
|
|
3
3
|
|
|
4
|
+
const { convertDateStringFormatToISOString } = require('../../../../../common/utils/timeUtils');
|
|
5
|
+
|
|
4
6
|
const Endpoints = {
|
|
5
7
|
auditorContractorList: `${backendUrl}/saas/auditor/contractors`,
|
|
6
8
|
audit: `${backendUrl}/saas/auditor/contractors/submit/audits`,
|
|
7
|
-
|
|
8
|
-
getAuditRecordModelByRecordId: recordId => `${backendUrl}/saas/auditor/record/${recordId}/audit-record`,
|
|
9
|
+
contractorDetailsForAudit: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/master-audit`,
|
|
9
10
|
requirementDetailsForAudit: contractorId => `${backendUrl}/saas/auditor/contractor/${contractorId}/requirement`,
|
|
10
11
|
isReaudit: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/isreaudit`,
|
|
11
12
|
revertCoi: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/coi/revert`,
|
|
12
13
|
wrongCoi: `${backendUrl}/saas/coi/wrong-coi`,
|
|
13
|
-
getAudit: recordId => `${backendUrl}/saas/audit/${recordId}
|
|
14
|
+
getAudit: recordId => `${backendUrl}/saas/audit/${recordId}`,
|
|
15
|
+
updateComplianceAuditActionsDate: recordId => `${backendUrl}/saas/automation/audit/record/${recordId}/compliance-audit-actions/date`
|
|
14
16
|
};
|
|
15
17
|
|
|
16
18
|
const audit = async (contractorId, auditRequestModel, context) => {
|
|
17
|
-
await
|
|
19
|
+
await getContractorDetailsForAudit(contractorId, {}, context);
|
|
18
20
|
return submitAudit(auditRequestModel, context);
|
|
19
21
|
};
|
|
20
22
|
|
|
@@ -34,12 +36,8 @@ const getAuditorContractorList = (auditListParametersModel, context) => {
|
|
|
34
36
|
return requests.postRequestHandler(Endpoints.auditorContractorList, auditListParametersModel, context);
|
|
35
37
|
};
|
|
36
38
|
|
|
37
|
-
const
|
|
38
|
-
return requests.getRequestHandler(Endpoints.
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
const getAuditRecordModel = (recordId, context) => {
|
|
42
|
-
return requests.getRequestHandler(Endpoints.getAuditRecordModelByRecordId(recordId), {}, context);
|
|
39
|
+
const getContractorDetailsForAudit = (contractorId, context) => {
|
|
40
|
+
return requests.getRequestHandler(Endpoints.contractorDetailsForAudit(contractorId), {}, context);
|
|
43
41
|
};
|
|
44
42
|
|
|
45
43
|
const getRequirementDetailsForAudit = (contractorId, context) => {
|
|
@@ -55,6 +53,11 @@ const wrongCoi = (recordId, context) => {
|
|
|
55
53
|
return requests.getRequestHandler(Endpoints.wrongCoi, params, context);
|
|
56
54
|
};
|
|
57
55
|
|
|
56
|
+
const updateComplianceAuditActionsDate = (recordId, customComplianceAuditActionsDate, context) => {
|
|
57
|
+
const url = `${Endpoints.updateComplianceAuditActionsDate(recordId)}?customComplianceAuditActionsDate=${convertDateStringFormatToISOString(customComplianceAuditActionsDate)}`;
|
|
58
|
+
return requests.putRequestHandler(url, {}, context);
|
|
59
|
+
};
|
|
60
|
+
|
|
58
61
|
module.exports = {
|
|
59
62
|
audit,
|
|
60
63
|
submitAudit,
|
|
@@ -62,8 +65,8 @@ module.exports = {
|
|
|
62
65
|
wrongCoi,
|
|
63
66
|
isReaudit,
|
|
64
67
|
getAuditorContractorList,
|
|
65
|
-
|
|
66
|
-
getAuditRecordModel,
|
|
68
|
+
getContractorDetailsForAudit,
|
|
67
69
|
getRequirementDetailsForAudit,
|
|
68
|
-
getAuditByRecordId
|
|
70
|
+
getAuditByRecordId,
|
|
71
|
+
updateComplianceAuditActionsDate
|
|
69
72
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const auditApi = require('./audit.api');
|
|
2
2
|
const { AuditRequestModel, AuditListParametersModel, AuditDatesModel } = require('../../models/audit/audit.model');
|
|
3
|
-
const { validateType } = require('../../../../../common/validations/typeValidations');
|
|
3
|
+
const { validateType, validateDateString } = require('../../../../../common/validations/typeValidations');
|
|
4
4
|
const auditUtil = require('../../utils/auditUtil');
|
|
5
5
|
const dataTypeUtils = require('../../../../../common/utils/dataTypeUtils');
|
|
6
6
|
const { cloneObject } = require('../../../../../common/utils/objectUtils');
|
|
@@ -34,12 +34,8 @@ const getAuditorContractorList = (auditListParametersModel, context) => {
|
|
|
34
34
|
return auditApi.getAuditorContractorList(auditListParametersModel, context);
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
-
const
|
|
38
|
-
return auditApi.
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
const getAuditRecordModel = (recordId, context) => {
|
|
42
|
-
return auditApi.getAuditRecordModel(recordId, context);
|
|
37
|
+
const getContractorDetailsForAudit = (contractorId, context) => {
|
|
38
|
+
return auditApi.getContractorDetailsForAudit(contractorId, context);
|
|
43
39
|
};
|
|
44
40
|
|
|
45
41
|
const getRequirementDetailsForAudit = (contractorId, context) => {
|
|
@@ -148,6 +144,11 @@ const auditRecord = async function(
|
|
|
148
144
|
return auditResponse;
|
|
149
145
|
};
|
|
150
146
|
|
|
147
|
+
const updateComplianceAuditActionsDate = (recordId, customLastInviteActionDate, context) => {
|
|
148
|
+
validateDateString(customLastInviteActionDate, Date);
|
|
149
|
+
return auditApi.updateComplianceAuditActionsDate(recordId, customLastInviteActionDate, context);
|
|
150
|
+
};
|
|
151
|
+
|
|
151
152
|
module.exports = {
|
|
152
153
|
audit,
|
|
153
154
|
submitAudit,
|
|
@@ -155,12 +156,12 @@ module.exports = {
|
|
|
155
156
|
isReaudit,
|
|
156
157
|
wrongCoi,
|
|
157
158
|
getAuditorContractorList,
|
|
158
|
-
|
|
159
|
+
getContractorDetailsForAudit,
|
|
159
160
|
getRequirementDetailsForAudit,
|
|
160
|
-
getAuditRecordModel,
|
|
161
161
|
getAuditEntities,
|
|
162
162
|
getAuditMetadata,
|
|
163
163
|
getAuditByRecordId,
|
|
164
164
|
getAuditRequestModel,
|
|
165
|
-
auditRecord
|
|
165
|
+
auditRecord,
|
|
166
|
+
updateComplianceAuditActionsDate
|
|
166
167
|
};
|
|
@@ -60,23 +60,6 @@ const ATTRIBUTE_NAMES_MAP = {
|
|
|
60
60
|
signature: 'signature'
|
|
61
61
|
};
|
|
62
62
|
|
|
63
|
-
const auditTriggerType = {
|
|
64
|
-
newAudit: 'NEW_AUDIT',
|
|
65
|
-
changeRequirements: 'CHANGE_REQUIREMENTS',
|
|
66
|
-
updateRequirements: 'UPDATE_REQUIREMENTS',
|
|
67
|
-
updateRequirementsWithNotifications: 'ENTITY_CHANGED',
|
|
68
|
-
gaps: 'GAPS',
|
|
69
|
-
renewal: 'RENEWAL'
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
const auditStatus = {
|
|
73
|
-
pending: 'PENDING',
|
|
74
|
-
inProgress: 'IN_PROGRESS',
|
|
75
|
-
onHold: 'ON_HOLD',
|
|
76
|
-
done: 'DONE',
|
|
77
|
-
canceled: 'CANCELED'
|
|
78
|
-
};
|
|
79
|
-
|
|
80
63
|
module.exports = {
|
|
81
64
|
DEFAULT_POLICY_ID,
|
|
82
65
|
POLICY_NAMES_MAP,
|
|
@@ -84,7 +67,5 @@ module.exports = {
|
|
|
84
67
|
COI_AUDIT_STATUSES,
|
|
85
68
|
AUDITOR_ROLE,
|
|
86
69
|
AUDIT_ENTITY_STATUSES,
|
|
87
|
-
VALID_SCORES
|
|
88
|
-
auditTriggerType,
|
|
89
|
-
auditStatus
|
|
70
|
+
VALID_SCORES
|
|
90
71
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const requests = require('../../../../common/requests/cookieAuth/requests');
|
|
2
2
|
const { backendUrl } = require('../../../../env').getEnv();
|
|
3
|
+
const { convertDateStringFormatToISOString } = require('../../../../common/utils/timeUtils');
|
|
3
4
|
|
|
4
5
|
const Endpoints = {
|
|
5
6
|
create: `${backendUrl}/saas/contractors/invite`,
|
|
@@ -19,6 +20,7 @@ const Endpoints = {
|
|
|
19
20
|
changeRequirement: `${backendUrl}/saas/contractor/requirement`,
|
|
20
21
|
updateVendorExpiryDate: contractorId => `${backendUrl}/_saas/automation/contractor/${contractorId}/expiry-date`,
|
|
21
22
|
updateContractorInviteDate: contractorId => `${backendUrl}/_saas/automation/contractor/${contractorId}/invite-date`,
|
|
23
|
+
updateLastInviteActionDate: recordId => `${backendUrl}/saas/automation/invite/record/${recordId}/last-invite-action/date`,
|
|
22
24
|
searchInAutocomplete: ({ tabId, searchWord }) =>
|
|
23
25
|
`${backendUrl}/saas/requests/search/audited?&tabId=${tabId}&searchWord=${searchWord}`,
|
|
24
26
|
automationUpdateContractorUploadDate: contractorId => `${backendUrl}/saas/automation/contractor/${contractorId}/upload-date`,
|
|
@@ -126,6 +128,11 @@ const getLinkedProjectsCount = async (recordId, context) => {
|
|
|
126
128
|
return await requests.getRequestHandler(Endpoints.linkedProjectsCount(recordId), {}, context);
|
|
127
129
|
};
|
|
128
130
|
|
|
131
|
+
const updateLastInviteActionDate = (recordId, customLastInviteActionDate, context) => {
|
|
132
|
+
const url = `${Endpoints.updateLastInviteActionDate(recordId)}?customLastInviteActionDate=${convertDateStringFormatToISOString(customLastInviteActionDate)}`;
|
|
133
|
+
return requests.putRequestHandler(url, {}, context);
|
|
134
|
+
};
|
|
135
|
+
|
|
129
136
|
module.exports = {
|
|
130
137
|
createContractor,
|
|
131
138
|
changeRequirement,
|
|
@@ -148,5 +155,6 @@ module.exports = {
|
|
|
148
155
|
resendInvitation,
|
|
149
156
|
muteNotifications,
|
|
150
157
|
unmuteNotifications,
|
|
151
|
-
getLinkedProjectsCount
|
|
158
|
+
getLinkedProjectsCount,
|
|
159
|
+
updateLastInviteActionDate
|
|
152
160
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const contractorsAPI = require('./contractors.api');
|
|
2
2
|
const { CreateContractorModel } = require('../models/create.contractor.model');
|
|
3
3
|
const { RequestModel } = require('../../requests/models/edit.request.model');
|
|
4
|
-
const { validateType } = require('../../../../common/validations/typeValidations');
|
|
4
|
+
const { validateType, validateDateString } = require('../../../../common/validations/typeValidations');
|
|
5
5
|
const { RecordModifyDateVerificationModel } = require('../models/verification.contractor.model');
|
|
6
6
|
const { AssignRequirementModel } = require('../models/assign.requirement.model');
|
|
7
7
|
const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
|
|
@@ -54,6 +54,11 @@ const updateInviteDate = (contractorId, inviteDate, context) => {
|
|
|
54
54
|
return contractorsAPI.updateInviteDate(contractorId, inviteDate, context);
|
|
55
55
|
};
|
|
56
56
|
|
|
57
|
+
const updateLastInviteActionDate = (recordId, customLastInviteActionDate, context) => {
|
|
58
|
+
validateDateString(customLastInviteActionDate, Date);
|
|
59
|
+
return contractorsAPI.updateLastInviteActionDate(recordId, customLastInviteActionDate, context);
|
|
60
|
+
};
|
|
61
|
+
|
|
57
62
|
const getContractorsByTabId = (tabId, context, activityStatus = 'Active') => {
|
|
58
63
|
return contractorsAPI.getContractorsByTabId(tabId, context, activityStatus);
|
|
59
64
|
};
|
|
@@ -184,5 +189,6 @@ module.exports = {
|
|
|
184
189
|
assignRequirement,
|
|
185
190
|
getAssignRequirementModel,
|
|
186
191
|
getLinkedProjectsCount,
|
|
187
|
-
restoreByRecordId
|
|
192
|
+
restoreByRecordId,
|
|
193
|
+
updateLastInviteActionDate
|
|
188
194
|
};
|
|
Binary file
|