@getjones/test-infra 2.6.6 → 2.6.8
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/auth/auth.js +40 -0
- package/src/common/commonFlows/index.js +2 -1
- package/src/common/commonFlows/records/records.js +4 -4
- package/src/common/consts/recordTypes.js +5 -0
- package/src/common/requests/apiKeyAuth/requests.js +6 -0
- package/src/common/requests/requestHandlers.js +18 -0
- package/src/common/utils/timeUtils.js +10 -7
- package/src/defaults/configs/auditConfigs.js +5 -1
- package/src/defaults/configs/polices.js +2 -1
- package/src/defaults/configs/requirement.js +6 -3
- package/src/factory/records/records.js +33 -16
- package/src/index.js +9 -5
- package/src/saas/internal-api/accounts/api/core/accounts.core.service.js +1 -1
- package/src/saas/internal-api/accounts/api/settings/settings.service.js +1 -2
- package/src/saas/internal-api/accounts/models/settings/update.settings.model.js +18 -7
- package/src/saas/internal-api/auth/api/auth.api.js +14 -5
- package/src/saas/internal-api/auth/api/auth.service.js +28 -5
- package/src/saas/internal-api/compliance/api/waive/waive.service.js +16 -1
- package/src/saas/internal-api/compliance/utils/util.js +25 -1
- package/src/saas/internal-api/contractors/consts/consts.js +6 -0
- package/src/saas/internal-api/dashboard/api/recordList.api.js +38 -0
- package/src/saas/internal-api/dashboard/api/recordList.service.js +60 -0
- package/src/saas/internal-api/dbEmails/api/db.emails.service.js +2 -2
- package/src/saas/internal-api/globalRecord/api/global.record.api.js +8 -2
- package/src/saas/internal-api/globalRecord/api/global.record.service.js +13 -1
- package/src/saas/internal-api/requests/api/requests.api.js +14 -2
- package/src/saas/internal-api/requests/api/requests.service.js +18 -0
- package/src/saas/internal-api/requestsTable/api/requests.table.api.js +14 -0
- package/src/saas/internal-api/requestsTable/api/requests.table.service.js +9 -0
- package/src/saas/internal-api/requestsTable/index.js +3 -0
- package/src/saas/internal-api/requirements/api/requirements.service.js +22 -1
- package/src/saas/internal-api/requirements/index.js +2 -1
- package/src/saas/internal-api/requirements/models/update.requirement.model.js +3 -1
- package/src/saas/internal-api/requirements/utils/utils.js +2 -2
- package/src/saas/internal-api/thread-scheduler/runner.js +1 -1
- package/src/saas/internal-api/users/api/users.service.js +2 -2
- package/src/saas/openapi/coi/coi.api.js +20 -0
- package/src/saas/openapi/coi/coi.service.js +13 -0
- package/src/saas/openapi/requests/index.js +2 -1
- package/src/saas/openapi/requests/models/invite.request.model.js +11 -11
- package/src/saas/openapi/requests/models/update.request.model.js +35 -0
- package/src/saas/openapi/requests/requests.api.js +64 -8
- package/src/saas/openapi/requests/requests.service.js +52 -5
- package/src/saas/openapi/requirements/requirements.api.js +18 -4
- package/src/saas/openapi/requirements/requirements.service.js +14 -2
- package/src/saas/internal-api/dashboardInnerPage/api/recordList.api.js +0 -12
- package/src/saas/internal-api/dashboardInnerPage/api/recordList.service.js +0 -7
- /package/src/saas/internal-api/{dashboardInnerPage → dashboard}/index.js +0 -0
- /package/src/saas/internal-api/{dashboardInnerPage → dashboard}/models/dashboard.filter.criteria.model.js +0 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const requests = require('../../../../common/requests/cookieAuth/requests');
|
|
2
|
+
const { backendUrl } = require('../../../../env').getEnv();
|
|
3
|
+
|
|
4
|
+
const Endpoints = {
|
|
5
|
+
innerPageRecords: `${backendUrl}/saas/analytics/dashboard/requests`,
|
|
6
|
+
policySummary: `${backendUrl}/saas/analytics/dashboard/policies-summary`,
|
|
7
|
+
complianceSummary: `${backendUrl}/saas/user/properties/compliance-summary`,
|
|
8
|
+
expirationPerMonth: `${backendUrl}/saas/analytics/dashboard/expiration-per-month`,
|
|
9
|
+
requireAttention: `${backendUrl}/saas/analytics/dashboard/requireAttention`
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const getSortedRecordsForDashboardInnerPage = (dashboardCriteriaModel, context) => {
|
|
13
|
+
return requests.postRequestHandler(Endpoints.innerPageRecords, dashboardCriteriaModel, context);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const getPolicySummaryCharts = (dashboardCriteriaModel, context) => {
|
|
17
|
+
return requests.postRequestHandler(Endpoints.policySummary, dashboardCriteriaModel, context);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const getComplianceSummaryCharts = (dashboardCriteriaModel, context) => {
|
|
21
|
+
return requests.postRequestHandler(Endpoints.complianceSummary, dashboardCriteriaModel, context);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const getExpirationPerMonth = (dashboardCriteriaModel, context) => {
|
|
25
|
+
return requests.postRequestHandler(Endpoints.expirationPerMonth, dashboardCriteriaModel, context);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const getRequireAttention = (dashboardCriteriaModel, context) => {
|
|
29
|
+
return requests.postRequestHandler(Endpoints.requireAttention, dashboardCriteriaModel, context);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
module.exports = {
|
|
33
|
+
getSortedRecordsForDashboardInnerPage,
|
|
34
|
+
getPolicySummaryCharts,
|
|
35
|
+
getComplianceSummaryCharts,
|
|
36
|
+
getExpirationPerMonth,
|
|
37
|
+
getRequireAttention
|
|
38
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
const recordListAPI = require('./recordList.api');
|
|
2
|
+
const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
|
|
3
|
+
|
|
4
|
+
const getSortedRecordsForDashboardInnerPage = async (dashboardCriteriaModel, context) => {
|
|
5
|
+
const innerPageResponse = await recordListAPI.getSortedRecordsForDashboardInnerPage(dashboardCriteriaModel, context);
|
|
6
|
+
|
|
7
|
+
if (innerPageResponse.status !== httpResponseStatusCodes.OK) {
|
|
8
|
+
throw Error(`Get dashboard inner page has fail\n${innerPageResponse}`);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
return innerPageResponse.data;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const getPolicySummaryCharts = async (dashboardCriteriaModel, context) => {
|
|
15
|
+
const responseChart = await recordListAPI.getPolicySummaryCharts(dashboardCriteriaModel, context);
|
|
16
|
+
|
|
17
|
+
if (responseChart.status !== httpResponseStatusCodes.OK) {
|
|
18
|
+
throw Error(`Get policy summary chart has fail\n${responseChart}`);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return responseChart.data;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const getComplianceSummaryCharts = async (dashboardCriteriaModel, context) => {
|
|
25
|
+
const responseChart = await recordListAPI.getComplianceSummaryCharts(dashboardCriteriaModel, context);
|
|
26
|
+
|
|
27
|
+
if (responseChart.status !== httpResponseStatusCodes.OK) {
|
|
28
|
+
throw Error(`Get compliance summary chart has fail\n${responseChart}`);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return responseChart.data;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const getExpirationPerMonth = async (dashboardCriteriaModel, context) => {
|
|
35
|
+
const responseChart = await recordListAPI.getExpirationPerMonth(dashboardCriteriaModel, context);
|
|
36
|
+
|
|
37
|
+
if (responseChart.status !== httpResponseStatusCodes.OK) {
|
|
38
|
+
throw Error(`Get expiration per chart has fail\n${responseChart}`);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return responseChart.data;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const getRequireAttentionChart = async (dashboardCriteriaModel, context) => {
|
|
45
|
+
const responseChart = await recordListAPI.getRequireAttention(dashboardCriteriaModel, context);
|
|
46
|
+
|
|
47
|
+
if (responseChart.status !== httpResponseStatusCodes.OK) {
|
|
48
|
+
throw Error(`Get require attention chart has fail\n${responseChart}`);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return responseChart.data;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
module.exports = {
|
|
55
|
+
getSortedRecordsForDashboardInnerPage,
|
|
56
|
+
getPolicySummaryCharts,
|
|
57
|
+
getComplianceSummaryCharts,
|
|
58
|
+
getExpirationPerMonth,
|
|
59
|
+
getRequireAttentionChart
|
|
60
|
+
};
|
|
@@ -99,7 +99,7 @@ const getLastMessage = async (
|
|
|
99
99
|
const response = await getAllMessages(emailModel);
|
|
100
100
|
|
|
101
101
|
if (response.status !== httpResponseStatusCodes.OK) {
|
|
102
|
-
throw new Error(
|
|
102
|
+
throw new Error(`Inbox messages could not be retrieved\n${response}`);
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
await getLatestMessage(response.data);
|
|
@@ -110,7 +110,7 @@ const getLastMessage = async (
|
|
|
110
110
|
const response = await deleteMultipleMessages([newestId]);
|
|
111
111
|
|
|
112
112
|
if (response.status !== httpResponseStatusCodes.NO_CONTENT) {
|
|
113
|
-
throw new Error(`Failed to delete email with ID : ${newestId}
|
|
113
|
+
throw new Error(`Failed to delete email with ID : ${newestId}\n${response}`);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
|
|
@@ -14,7 +14,8 @@ const Endpoints = {
|
|
|
14
14
|
getGlobalRecordByPolicyNumber: policyNumber => `${nodeBackendUrl}/global-record/policyNumber/${policyNumber}`,
|
|
15
15
|
publishGlobalRecord: `${backendUrl}/saas/global-record/publish`,
|
|
16
16
|
getGlobalRecordLinkedRecords: id => `${backendUrl}/saas/global-record/${id}/linked-records`,
|
|
17
|
-
splitToNewGlobalRecord: `${backendUrl}/saas/global-record/split-to-new
|
|
17
|
+
splitToNewGlobalRecord: `${backendUrl}/saas/global-record/split-to-new`,
|
|
18
|
+
getGlobalByRecordId: recordId => `${backendUrl}/saas/global-record/${recordId}`
|
|
18
19
|
};
|
|
19
20
|
|
|
20
21
|
const getGlobalRecord = async (id, nodeBackendSecret) => {
|
|
@@ -61,6 +62,10 @@ const splitToNewGlobalRecord = ({ recordId, glPolicyNumber }, context) => {
|
|
|
61
62
|
return cookieAuthRequests.postRequestHandler(Endpoints.splitToNewGlobalRecord, { recordId, glPolicyNumber }, context);
|
|
62
63
|
};
|
|
63
64
|
|
|
65
|
+
const getGlobalRecordByRecordId = (recordId, context) => {
|
|
66
|
+
return cookieAuthRequests.getRequestHandler(Endpoints.getGlobalByRecordId(recordId), {}, context);
|
|
67
|
+
};
|
|
68
|
+
|
|
64
69
|
module.exports = {
|
|
65
70
|
createGlobalRecord,
|
|
66
71
|
getGlobalRecord,
|
|
@@ -72,5 +77,6 @@ module.exports = {
|
|
|
72
77
|
getGlobalRecordByPolicyNumber,
|
|
73
78
|
publishGlobalRecord,
|
|
74
79
|
getGlobalRecordLinkedRecords,
|
|
75
|
-
splitToNewGlobalRecord
|
|
80
|
+
splitToNewGlobalRecord,
|
|
81
|
+
getGlobalRecordByRecordId
|
|
76
82
|
};
|
|
@@ -2,6 +2,7 @@ const globalRecordAPI = require('./global.record.api');
|
|
|
2
2
|
const { CreateGlobalRecordModel } = require('../models/global.record.model');
|
|
3
3
|
const { validateType } = require('../../../../common/validations/typeValidations');
|
|
4
4
|
const { nodeBackendSecret } = require('../../../../env').getEnv();
|
|
5
|
+
const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
|
|
5
6
|
|
|
6
7
|
const getGlobalRecordById = async id => {
|
|
7
8
|
return globalRecordAPI.getGlobalRecord(id, nodeBackendSecret);
|
|
@@ -65,6 +66,16 @@ const splitToNewGlobalRecord = async (recordId, glPolicyNumber, context) => {
|
|
|
65
66
|
return globalRecordAPI.splitToNewGlobalRecord(requestData, context);
|
|
66
67
|
};
|
|
67
68
|
|
|
69
|
+
const getGlobalRecordByRecordId = async (recordId, context) => {
|
|
70
|
+
const response = await globalRecordAPI.getGlobalRecordByRecordId(recordId, context);
|
|
71
|
+
|
|
72
|
+
if (response.status !== httpResponseStatusCodes.OK) {
|
|
73
|
+
throw Error(`Failed to get global record by recordId - ${recordId}`, response.data);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return response.data;
|
|
77
|
+
};
|
|
78
|
+
|
|
68
79
|
module.exports = {
|
|
69
80
|
createGlobalRecord,
|
|
70
81
|
getGlobalRecordById,
|
|
@@ -79,5 +90,6 @@ module.exports = {
|
|
|
79
90
|
getGlobalRecordByPolicyNumber,
|
|
80
91
|
publishGlobalRecord,
|
|
81
92
|
getGlobalRecordLinkedRecords,
|
|
82
|
-
splitToNewGlobalRecord
|
|
93
|
+
splitToNewGlobalRecord,
|
|
94
|
+
getGlobalRecordByRecordId
|
|
83
95
|
};
|
|
@@ -3,19 +3,25 @@ const { backendUrl } = require('../../../../env').getEnv();
|
|
|
3
3
|
|
|
4
4
|
const Endpoints = {
|
|
5
5
|
create: `${backendUrl}/saas/requests/invite`,
|
|
6
|
+
addRequestToRecord: (recordId, tabId) => `${backendUrl}/saas/${tabId}/request/${recordId}`,
|
|
6
7
|
publicLinkInvite: `${backendUrl}/_saas/requests/publicinvite`,
|
|
7
8
|
edit: contractorId => `${backendUrl}/saas/requests/${contractorId}/update`,
|
|
8
9
|
getById: requestId => `${backendUrl}/saas/request/${requestId}`,
|
|
9
10
|
getAccountRequests: accountId => `${backendUrl}/saas/requests/${accountId}`,
|
|
10
11
|
getByTabId: `${backendUrl}/saas/requests`,
|
|
11
12
|
requestsGlobalSearch: (projectId, searchWord) =>
|
|
12
|
-
`${backendUrl}/saas/requests/search?&projectId=${projectId}&searchWord=${searchWord}
|
|
13
|
+
`${backendUrl}/saas/requests/search?&projectId=${projectId}&searchWord=${searchWord}`,
|
|
14
|
+
getAutocompleteAutoSelect: `${backendUrl}/saas/request/auto/selection`
|
|
13
15
|
};
|
|
14
16
|
|
|
15
17
|
const createRequest = (createRequestModel, context) => {
|
|
16
18
|
return requests.postRequestHandler(Endpoints.create, createRequestModel, context);
|
|
17
19
|
};
|
|
18
20
|
|
|
21
|
+
const addRequestToRecord = (recordId, tabId, context) => {
|
|
22
|
+
return requests.postRequestHandler(Endpoints.addRequestToRecord(recordId, tabId), {}, context);
|
|
23
|
+
};
|
|
24
|
+
|
|
19
25
|
const inviteRequestViaPublicLink = (createRequestModel, context) => {
|
|
20
26
|
return requests.postRequestHandler(Endpoints.publicLinkInvite, createRequestModel, context);
|
|
21
27
|
};
|
|
@@ -30,6 +36,10 @@ const getRequestById = (requestId, context) => {
|
|
|
30
36
|
return requests.getRequestHandler(Endpoints.getById(requestId), {}, context);
|
|
31
37
|
};
|
|
32
38
|
|
|
39
|
+
const getAutocompleteAutoSelect = (params, context) => {
|
|
40
|
+
return requests.getRequestHandler(Endpoints.getAutocompleteAutoSelect, params, context);
|
|
41
|
+
};
|
|
42
|
+
|
|
33
43
|
const getRequestsByAccountId = (accountId, context, params) => {
|
|
34
44
|
return requests.getRequestHandler(Endpoints.getAccountRequests(accountId), params, context);
|
|
35
45
|
};
|
|
@@ -45,10 +55,12 @@ const requestsGlobalSearch = (projectId, searchWord, context) => {
|
|
|
45
55
|
|
|
46
56
|
module.exports = {
|
|
47
57
|
createRequest,
|
|
58
|
+
addRequestToRecord,
|
|
48
59
|
inviteRequestViaPublicLink,
|
|
49
60
|
editRequestAndRecordDetails,
|
|
50
61
|
getRequestById,
|
|
51
62
|
getRequestsByAccountId,
|
|
52
63
|
getRequestsByTabId,
|
|
53
|
-
requestsGlobalSearch
|
|
64
|
+
requestsGlobalSearch,
|
|
65
|
+
getAutocompleteAutoSelect
|
|
54
66
|
};
|
|
@@ -2,12 +2,17 @@ const requestsAPI = require('./requests.api');
|
|
|
2
2
|
const { CreateRequestModel, ContractorInfo } = require('../models/create.request.model');
|
|
3
3
|
const { RequestModel } = require('../models/edit.request.model');
|
|
4
4
|
const { validateType } = require('../../../../common/validations/typeValidations');
|
|
5
|
+
const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
|
|
5
6
|
|
|
6
7
|
const createRequest = async (createRequestModel, context) => {
|
|
7
8
|
validateType(createRequestModel, CreateRequestModel);
|
|
8
9
|
return requestsAPI.createRequest(createRequestModel, context);
|
|
9
10
|
};
|
|
10
11
|
|
|
12
|
+
const addRequestToRecord = async (recordId, tabId, context) => {
|
|
13
|
+
return requestsAPI.addRequestToRecord(recordId, tabId, context);
|
|
14
|
+
};
|
|
15
|
+
|
|
11
16
|
const inviteRequestViaPublicLink = async (createRequestModel, context) => {
|
|
12
17
|
validateType(createRequestModel, CreateRequestModel);
|
|
13
18
|
return requestsAPI.inviteRequestViaPublicLink(createRequestModel, context);
|
|
@@ -18,6 +23,17 @@ const editRequestAndRecordDetails = (editRequestModel, context) => {
|
|
|
18
23
|
return requestsAPI.editRequestAndRecordDetails(editRequestModel, context);
|
|
19
24
|
};
|
|
20
25
|
|
|
26
|
+
const getAutocompleteAutoSelect = async (params, context) => {
|
|
27
|
+
const { companyOrDba, tabId, requirementsId } = params;
|
|
28
|
+
const autoSelectedRequest = await requestsAPI.getAutocompleteAutoSelect({ companyOrDba, tabId, requirementsId }, context);
|
|
29
|
+
|
|
30
|
+
if (autoSelectedRequest.status != httpResponseStatusCodes.OK) {
|
|
31
|
+
throw Error('Failed to get the auto select request', autoSelectedRequest.data);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return autoSelectedRequest.data;
|
|
35
|
+
};
|
|
36
|
+
|
|
21
37
|
const getRequestsByTabId = (tabId, context, activityStatus = 'Active') => {
|
|
22
38
|
return requestsAPI.getRequestsByTabId(tabId, context, activityStatus);
|
|
23
39
|
};
|
|
@@ -73,6 +89,8 @@ const requestsGlobalSearch = (projectId, searchWord, context) => {
|
|
|
73
89
|
|
|
74
90
|
module.exports = {
|
|
75
91
|
createRequest,
|
|
92
|
+
getAutocompleteAutoSelect,
|
|
93
|
+
addRequestToRecord,
|
|
76
94
|
inviteRequestViaPublicLink,
|
|
77
95
|
editRequestAndRecordDetails,
|
|
78
96
|
getRequestsByTabId,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const { backendUrl } = require('../../../../env').getEnv();
|
|
2
|
+
const requests = require('../../../../common/requests/cookieAuth/requests');
|
|
3
|
+
|
|
4
|
+
const Endpoints = {
|
|
5
|
+
getRequestsByEmail: email => `${backendUrl}/saas/records/email/${email}`
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
const getRequestsByEmail = (email, context) => {
|
|
9
|
+
return requests.getRequestHandler(Endpoints.getRequestsByEmail(email), {}, context);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
module.exports = {
|
|
13
|
+
getRequestsByEmail
|
|
14
|
+
};
|
|
@@ -2,6 +2,7 @@ const requirementsAPI = require('./requirements.api');
|
|
|
2
2
|
const { CreateRequirementModel } = require('../models/create.requirement.model');
|
|
3
3
|
const { UpdateRequirementModel } = require('../models/update.requirement.model');
|
|
4
4
|
const requirementUtils = require('../utils/utils');
|
|
5
|
+
const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
|
|
5
6
|
|
|
6
7
|
const { validateType } = require('../../../../common/validations/typeValidations');
|
|
7
8
|
|
|
@@ -79,6 +80,25 @@ const getUpdatedRequirementModel = async (updatedRequirement, tabId, context) =>
|
|
|
79
80
|
return requirementUtils.getUpdateRequirementModel(updatedRequirement);
|
|
80
81
|
};
|
|
81
82
|
|
|
83
|
+
const deleteAllRequirementsInTabs = async (tabIds, context) => {
|
|
84
|
+
const failedToDeleteRequirements = [];
|
|
85
|
+
for (const tabId of tabIds) {
|
|
86
|
+
const { data: existingRequirements } = await getRequirementsByTabId(tabId, context);
|
|
87
|
+
for (const requirement of existingRequirements) {
|
|
88
|
+
const response = await deleteByRequirementId(requirement.id, context);
|
|
89
|
+
|
|
90
|
+
if (response.status !== httpResponseStatusCodes.OK) {
|
|
91
|
+
console.error('Failed to delete requirement: ', requirement.id);
|
|
92
|
+
failedToDeleteRequirements.push(response);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (failedToDeleteRequirements.length) {
|
|
98
|
+
throw Error(`Failed to delete ${failedToDeleteRequirements.length} of ${existingRequirements.length} requirements in account. Failed with status: ${ failedToDeleteRequirements[0].status }`);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
82
102
|
module.exports = {
|
|
83
103
|
createRequirement,
|
|
84
104
|
getRequirementById,
|
|
@@ -91,5 +111,6 @@ module.exports = {
|
|
|
91
111
|
deleteByRequirementId,
|
|
92
112
|
deleteRequirementByName,
|
|
93
113
|
getCreateRequirementModel,
|
|
94
|
-
getUpdatedRequirementModel
|
|
114
|
+
getUpdatedRequirementModel,
|
|
115
|
+
deleteAllRequirementsInTabs
|
|
95
116
|
};
|
|
@@ -2,7 +2,8 @@ const createModel = require('./models/create.requirement.model');
|
|
|
2
2
|
const updateModel = require('./models/update.requirement.model');
|
|
3
3
|
const policyModel = require('./models/policy.model');
|
|
4
4
|
const services = require('./api/requirements.service');
|
|
5
|
+
const consts = require('./consts/consts');
|
|
5
6
|
|
|
6
7
|
const models = { create: createModel, update: updateModel, policy: policyModel };
|
|
7
8
|
|
|
8
|
-
module.exports = { services, models };
|
|
9
|
+
module.exports = { services, models, consts };
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
const { VENDORS } = require('../../../../common/consts/recordTypes');
|
|
1
2
|
const { validateType } = require('../../../../common/validations/typeValidations');
|
|
2
3
|
const { REQUIREMENT_SHARING_LEVELS } = require('../consts/consts');
|
|
3
4
|
const { PolicyModel } = require('./policy.model');
|
|
4
5
|
|
|
5
6
|
class UpdateRequirementModel {
|
|
6
|
-
constructor({ id, name, policies, dateModified, sharingLevel = REQUIREMENT_SHARING_LEVELS.TAB }) {
|
|
7
|
+
constructor({ id, name, policies, dateModified, sharingLevel = REQUIREMENT_SHARING_LEVELS.TAB, recordType = VENDORS }) {
|
|
7
8
|
this.id = id;
|
|
8
9
|
this.name = name;
|
|
9
10
|
this.policies = policies;
|
|
10
11
|
this.dateModified = dateModified;
|
|
11
12
|
this.sharingLevel = sharingLevel;
|
|
13
|
+
this.recordType = recordType;
|
|
12
14
|
|
|
13
15
|
validateType(policies, Array);
|
|
14
16
|
policies && validateType(policies[0], PolicyModel);
|
|
@@ -88,12 +88,12 @@ const getCreateRequirementModel = function(requirement) {
|
|
|
88
88
|
};
|
|
89
89
|
|
|
90
90
|
const getUpdateRequirementModel = function(updatedRequirement) {
|
|
91
|
-
const { id, policies, name, sharingLevel, dateModified } = updatedRequirement;
|
|
91
|
+
const { id, policies, name, recordType, sharingLevel, dateModified } = updatedRequirement;
|
|
92
92
|
|
|
93
93
|
const parsedPolicies = parseRequirementConfig(policies);
|
|
94
94
|
const policyModels = parsedPolicies.map(policy => getPolicyModel(policy));
|
|
95
95
|
|
|
96
|
-
return new UpdateRequirementModel({ id, name, policies: policyModels, dateModified, sharingLevel });
|
|
96
|
+
return new UpdateRequirementModel({ id, name, policies: policyModels, dateModified, sharingLevel, recordType });
|
|
97
97
|
};
|
|
98
98
|
|
|
99
99
|
module.exports = {
|
|
@@ -18,7 +18,7 @@ const runThreadScheduler = async ({ contractorIds = [], scheduledReportsIds = []
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
if (response.status !== httpResponseStatusCodes.OK) {
|
|
21
|
-
throw new Error(
|
|
21
|
+
throw new Error(`Thread scheduler has failed to run\n${response}`);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
return response;
|
|
@@ -43,7 +43,7 @@ const getOrCreateUser = async (email, role, projectsIds, context, { fullName = r
|
|
|
43
43
|
const inviteResponse = await inviteUser([inviteUserModel], context);
|
|
44
44
|
|
|
45
45
|
if (inviteResponse.status !== httpResponseStatusCodes.NO_CONTENT) {
|
|
46
|
-
throw new Error(`Failed to invite user with email: ${email}
|
|
46
|
+
throw new Error(`Failed to invite user with email: ${email}\n${inviteResponse}`);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
userResponse = await getUserByEmail(email, context);
|
|
@@ -57,7 +57,7 @@ const getOrCreateUser = async (email, role, projectsIds, context, { fullName = r
|
|
|
57
57
|
const signupResponse = await signupUser(signupUserModel, context);
|
|
58
58
|
|
|
59
59
|
if (signupResponse.status !== httpResponseStatusCodes.OK) {
|
|
60
|
-
throw new Error(`Failed to signup user with email: ${email}
|
|
60
|
+
throw new Error(`Failed to signup user with email: ${email}\n${signupResponse}`);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
userResponse = await getUserByEmail(email, context);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const requests = require('../../../common/requests/apiKeyAuth/requests');
|
|
2
|
+
const { openapiUrl } = require('../../../env').getEnv();
|
|
3
|
+
const { isLocalhost } = require('../../../env');
|
|
4
|
+
|
|
5
|
+
const contractorUrl = isLocalhost() ? 'contractors' : 'records';
|
|
6
|
+
|
|
7
|
+
const Endpoints = {
|
|
8
|
+
uploadCoi: requestId => `${openapiUrl}/${contractorUrl}/${requestId}/coi`,
|
|
9
|
+
downloadCoi: requestId => `${openapiUrl}/${contractorUrl}/${requestId}/coi-link`
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const uploadCoi = (apiKey, requestId, fileData) => {
|
|
13
|
+
return requests.putFileRequestHandler(Endpoints.uploadCoi(requestId), apiKey, fileData);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const downloadCoi = (apiKey, requestId) => {
|
|
17
|
+
return requests.getRequestHandler(Endpoints.downloadCoi(requestId), apiKey);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
module.exports = { uploadCoi, downloadCoi };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
|
|
3
|
+
const coiApis = require('./coi.api');
|
|
4
|
+
|
|
5
|
+
const uploadCoi = (apiKey, requestId, filePath) => {
|
|
6
|
+
const fileData = fs.createReadStream(filePath);
|
|
7
|
+
return coiApis.uploadCoi(apiKey, requestId, fileData);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const downloadCoi = (apiKey, requestId) => {
|
|
11
|
+
return coiApis.downloadCoi(apiKey, requestId);
|
|
12
|
+
};
|
|
13
|
+
module.exports = { uploadCoi, downloadCoi };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const services = require('./requests.service');
|
|
2
2
|
|
|
3
3
|
const InviteRequestModel = require('./models/invite.request.model');
|
|
4
|
-
const
|
|
4
|
+
const UpdateRequestModel = require('./models/update.request.model');
|
|
5
|
+
const models = { InviteRequestModel, UpdateRequestModel };
|
|
5
6
|
|
|
6
7
|
module.exports = { ... services, models };
|
|
@@ -3,17 +3,17 @@ class InviteRequestModel {
|
|
|
3
3
|
email,
|
|
4
4
|
company,
|
|
5
5
|
{
|
|
6
|
-
requirementId,
|
|
7
|
-
firstName,
|
|
8
|
-
lastName,
|
|
9
|
-
dba,
|
|
10
|
-
address,
|
|
11
|
-
city,
|
|
12
|
-
state,
|
|
13
|
-
zipCode,
|
|
14
|
-
phoneNumber,
|
|
15
|
-
startDate,
|
|
16
|
-
endDate
|
|
6
|
+
requirementId = null,
|
|
7
|
+
firstName = null,
|
|
8
|
+
lastName = null,
|
|
9
|
+
dba = null,
|
|
10
|
+
address = null,
|
|
11
|
+
city = null,
|
|
12
|
+
state = null,
|
|
13
|
+
zipCode = null,
|
|
14
|
+
phoneNumber = null,
|
|
15
|
+
startDate = null,
|
|
16
|
+
endDate = null
|
|
17
17
|
} = {}
|
|
18
18
|
) {
|
|
19
19
|
this.email = email;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
class UpdateRequestModel {
|
|
2
|
+
constructor(
|
|
3
|
+
email,
|
|
4
|
+
company,
|
|
5
|
+
{
|
|
6
|
+
firstName = null,
|
|
7
|
+
lastName = null,
|
|
8
|
+
dba = null,
|
|
9
|
+
address = null,
|
|
10
|
+
city = null,
|
|
11
|
+
state = null,
|
|
12
|
+
zipCode = null,
|
|
13
|
+
phoneNumber = null,
|
|
14
|
+
startDate = null,
|
|
15
|
+
endDate = null
|
|
16
|
+
} = {}
|
|
17
|
+
) {
|
|
18
|
+
this.email = email;
|
|
19
|
+
this.company = company;
|
|
20
|
+
this.firstName = firstName;
|
|
21
|
+
this.lastName = lastName;
|
|
22
|
+
this.dba = dba;
|
|
23
|
+
this.address = address;
|
|
24
|
+
this.city = city;
|
|
25
|
+
this.state = state;
|
|
26
|
+
this.zipCode = zipCode;
|
|
27
|
+
this.phoneNumber = phoneNumber;
|
|
28
|
+
this.startDate = startDate;
|
|
29
|
+
this.endDate = endDate;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
module.exports = {
|
|
34
|
+
UpdateRequestModel
|
|
35
|
+
};
|
|
@@ -2,19 +2,75 @@ const requests = require('../../../common/requests/apiKeyAuth/requests');
|
|
|
2
2
|
const { openapiUrl } = require('../../../env').getEnv();
|
|
3
3
|
const { isLocalhost } = require('../../../env');
|
|
4
4
|
|
|
5
|
-
const
|
|
5
|
+
const recordsUrl = isLocalhost() ? 'contractors' : 'records';
|
|
6
6
|
|
|
7
7
|
const Endpoints = {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
inviteRequest: tabId => `${openapiUrl}/tabs/${tabId}/${recordsUrl}`,
|
|
9
|
+
requestById: requestId => `${openapiUrl}/${recordsUrl}/${requestId}`,
|
|
10
|
+
getAllRequests: `${openapiUrl}/${recordsUrl}/all`,
|
|
11
|
+
getRequestsByEmail: `${openapiUrl}/${recordsUrl}`,
|
|
12
|
+
getModifiedRequests: `${openapiUrl}/${recordsUrl}/modified`,
|
|
13
|
+
getPolicies: requestId => `${openapiUrl}/${recordsUrl}/${requestId}/compliance-report`,
|
|
14
|
+
changeRequirement: (requestId, requirementId) =>
|
|
15
|
+
`${openapiUrl}/${recordsUrl}/${requestId}/requirement/${requirementId}`,
|
|
16
|
+
archive: requestId => `${openapiUrl}/${recordsUrl}/${requestId}/archive`,
|
|
17
|
+
restore: requestId => `${openapiUrl}/${recordsUrl}/${requestId}/restore`
|
|
10
18
|
};
|
|
11
19
|
|
|
12
|
-
const
|
|
13
|
-
return requests.
|
|
20
|
+
const inviteRequest = (apiKey, tabId, params) => {
|
|
21
|
+
return requests.postRequestHandler(Endpoints.inviteRequest(tabId), apiKey, params);
|
|
14
22
|
};
|
|
15
23
|
|
|
16
|
-
const
|
|
17
|
-
return requests.
|
|
24
|
+
const getAllRequests = (apiKey, params) => {
|
|
25
|
+
return requests.getRequestHandler(Endpoints.getAllRequests, apiKey, params);
|
|
18
26
|
};
|
|
19
27
|
|
|
20
|
-
|
|
28
|
+
const getRequestsByEmail = (apiKey, email) => {
|
|
29
|
+
const params = { email };
|
|
30
|
+
return requests.getRequestHandler(Endpoints.getRequestsByEmail, apiKey, params);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const getRequestById = (apiKey, id) => {
|
|
34
|
+
return requests.getRequestHandler(Endpoints.requestById(id), apiKey);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const getRequestsByModifiedDate = (apiKey, timestamp) => {
|
|
38
|
+
const params = { timestamp };
|
|
39
|
+
return requests.getRequestHandler(Endpoints.getModifiedRequests, apiKey, params);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const getRequestPolicies = (apiKey, id) => {
|
|
43
|
+
return requests.getRequestHandler(Endpoints.getPolicies(id), apiKey);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const updateRequest = (apiKey, id, updateRequestModel) => {
|
|
47
|
+
return requests.patchRequestHandler(Endpoints.requestById(id), apiKey, updateRequestModel);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const changeRequirement = (apiKey, requestId, requirementId) => {
|
|
51
|
+
const endpoint = Endpoints.changeRequirement(requestId, requirementId);
|
|
52
|
+
return requests.putRequestHandler(endpoint, apiKey);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const archiveRequest = (apiKey, requestId) => {
|
|
56
|
+
const endpoint = Endpoints.archive(requestId);
|
|
57
|
+
return requests.putRequestHandler(endpoint, apiKey);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const restoreRequest = (apiKey, requestId) => {
|
|
61
|
+
const endpoint = Endpoints.restore(requestId);
|
|
62
|
+
return requests.putRequestHandler(endpoint, apiKey);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
module.exports = {
|
|
66
|
+
inviteRequest,
|
|
67
|
+
getAllRequests,
|
|
68
|
+
getRequestById,
|
|
69
|
+
getRequestsByEmail,
|
|
70
|
+
getRequestsByModifiedDate,
|
|
71
|
+
getRequestPolicies,
|
|
72
|
+
updateRequest,
|
|
73
|
+
archiveRequest,
|
|
74
|
+
restoreRequest,
|
|
75
|
+
changeRequirement
|
|
76
|
+
};
|