@getjones/test-infra 1.1.0 → 1.1.2
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/README.md +50 -1
- package/package.json +2 -1
- package/src/env.js +6 -1
- package/src/index.js +14 -3
- package/src/saas/internal-api/accounts/api/openapi/accounts.openapi.setup.js +7 -1
- package/src/saas/internal-api/auth/api/auth.setup.js +11 -1
- package/src/saas/internal-api/coi/api/coi.api.js +29 -0
- package/src/saas/internal-api/coi/api/coi.setup.js +18 -0
- package/src/saas/internal-api/coi/index.js +6 -0
- package/src/saas/internal-api/coi/models/submit.coi.model.js +9 -0
- package/src/saas/internal-api/compliance/api/audit/audit.api.js +26 -0
- package/src/saas/internal-api/compliance/api/audit/audit.setup.js +18 -0
- package/src/saas/internal-api/compliance/api/waive/waive.api.js +23 -0
- package/src/saas/internal-api/compliance/api/waive/waive.setup.js +15 -0
- package/src/saas/internal-api/compliance/index.js +10 -0
- package/src/saas/internal-api/compliance/models/audit/audit.model.js +72 -0
- package/src/saas/internal-api/compliance/models/waive/waive.model.js +45 -0
- package/src/saas/internal-api/contractors/api/contractors.api.js +23 -1
- package/src/saas/internal-api/contractors/api/contractors.setup.js +25 -3
- package/src/saas/internal-api/projects/api/{projects.api.js → core/projects.api.js} +2 -2
- package/src/saas/internal-api/projects/api/{projects.setup.js → core/projects.setup.js} +15 -4
- package/src/saas/internal-api/projects/api/settings/project.settings.api.js +18 -0
- package/src/saas/internal-api/projects/api/settings/project.settings.setup.js +17 -0
- package/src/saas/internal-api/projects/index.js +15 -3
- package/src/saas/internal-api/projects/models/settings/update.project.settings.model.js +34 -0
- package/src/saas/internal-api/reports/api/reports.api.js +12 -0
- package/src/saas/internal-api/reports/api/reports.setup.js +11 -0
- package/src/saas/internal-api/reports/index.js +11 -0
- package/src/saas/internal-api/reports/models/report.model.js +42 -0
- package/src/saas/internal-api/requirements/api/requirements.api.js +8 -3
- package/src/saas/internal-api/requirements/api/requirements.setup.js +5 -1
- package/src/saas/internal-api/tabs/api/tabs.api.js +7 -2
- package/src/saas/internal-api/tabs/api/tabs.setup.js +6 -0
- package/src/saas/openapi/common/requests.js +19 -1
- package/src/saas/openapi/contractors/contractors.api.js +15 -0
- package/src/saas/openapi/contractors/contractors.setup.js +11 -0
- package/src/saas/openapi/projects/projects.api.js +38 -0
- package/src/saas/openapi/projects/projects.setup.js +29 -0
- package/src/saas/openapi/requirements/index.js +6 -0
- package/src/saas/openapi/requirements/models/copy.requirement.model.js +10 -0
- package/src/saas/openapi/requirements/requirements.api.js +13 -0
- package/src/saas/openapi/requirements/requirements.setup.js +20 -0
- /package/src/saas/internal-api/projects/models/{create.project.model.js → core/create.project.model.js} +0 -0
package/README.md
CHANGED
|
@@ -41,6 +41,7 @@ module.exports = {
|
|
|
41
41
|
* accounts
|
|
42
42
|
* accountSettings
|
|
43
43
|
* projects
|
|
44
|
+
* projectSettings
|
|
44
45
|
|
|
45
46
|
```node
|
|
46
47
|
const { auth, accounts, accountSettings, projects } = internalAPI;
|
|
@@ -261,4 +262,52 @@ const createProjectInput = {
|
|
|
261
262
|
|
|
262
263
|
const createProject = async (project, accountName, context) => {
|
|
263
264
|
};
|
|
264
|
-
```
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### projectSettings
|
|
268
|
+
|
|
269
|
+
```node
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
*
|
|
273
|
+
* @param accountName (string)
|
|
274
|
+
* @param context (string): Should contain cookie
|
|
275
|
+
*/
|
|
276
|
+
|
|
277
|
+
const getProjectsByAccountName = async (accountName, context) => {
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
*
|
|
282
|
+
* @param settings (object)
|
|
283
|
+
* @param context (string): Should contain cookie
|
|
284
|
+
*/
|
|
285
|
+
|
|
286
|
+
const updateProjectSettingsByProjectId = async (settings, context) => {
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
// Example for settings input (Not all of them are required):
|
|
290
|
+
const updateProjectSettingsInput = {
|
|
291
|
+
autoGaps: {
|
|
292
|
+
Guests: false,
|
|
293
|
+
Tenants: false,
|
|
294
|
+
Vendors: false
|
|
295
|
+
},
|
|
296
|
+
autoRenewels: false,
|
|
297
|
+
marketplace: {
|
|
298
|
+
marketplaceEnabled: false,
|
|
299
|
+
marketplacePreApproved: false,
|
|
300
|
+
marketplacePublicLink: false
|
|
301
|
+
},
|
|
302
|
+
ocrEnabled: false,
|
|
303
|
+
onboardingPhase: false,
|
|
304
|
+
projectId: null,
|
|
305
|
+
qrEnabled: false,
|
|
306
|
+
tenantSolution: false
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getjones/test-infra",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "Providing internal and openapi interface",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"axios": "^0.21.1",
|
|
13
|
+
"axios-file": "^1.0.17",
|
|
13
14
|
"chai": "^4.3.4",
|
|
14
15
|
"dotenv": "^8.2.0",
|
|
15
16
|
"enum": "^3.0.4",
|
package/src/env.js
CHANGED
|
@@ -28,8 +28,13 @@ const requiredValidation = object => {
|
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
+
const isLocalhost = () => {
|
|
32
|
+
return privateMembers.backendUrl.includes('localhost');
|
|
33
|
+
};
|
|
34
|
+
|
|
31
35
|
module.exports = {
|
|
32
36
|
init,
|
|
33
37
|
getEnv: () => privateMembers,
|
|
34
|
-
requiredValidation
|
|
38
|
+
requiredValidation,
|
|
39
|
+
isLocalhost
|
|
35
40
|
};
|
package/src/index.js
CHANGED
|
@@ -8,7 +8,6 @@ const init = conf => {
|
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
const getInternalAPI = () => {
|
|
11
|
-
|
|
12
11
|
const auth = require('./saas/internal-api/auth');
|
|
13
12
|
const accounts = require('./saas/internal-api/accounts');
|
|
14
13
|
|
|
@@ -18,20 +17,32 @@ const getInternalAPI = () => {
|
|
|
18
17
|
const requirements = require('./saas/internal-api/requirements');
|
|
19
18
|
const contractors = require('./saas/internal-api/contractors');
|
|
20
19
|
|
|
20
|
+
const coi = require('./saas/internal-api/coi');
|
|
21
|
+
const compliance = require('./saas/internal-api/compliance');
|
|
22
|
+
|
|
23
|
+
const reports = require('./saas/internal-api/reports');
|
|
24
|
+
|
|
21
25
|
const internalAPI = {
|
|
22
26
|
auth,
|
|
23
27
|
accounts,
|
|
24
28
|
projects,
|
|
25
29
|
tabs,
|
|
26
30
|
requirements,
|
|
27
|
-
contractors
|
|
31
|
+
contractors,
|
|
32
|
+
coi,
|
|
33
|
+
compliance,
|
|
34
|
+
reports
|
|
28
35
|
};
|
|
36
|
+
|
|
29
37
|
return internalAPI;
|
|
30
38
|
};
|
|
31
39
|
|
|
32
40
|
const getOpenAPI = () => {
|
|
33
41
|
const tabs = require('./saas/openapi/tabs/tabs.setup');
|
|
34
|
-
const
|
|
42
|
+
const contractors = require('./saas/openapi/contractors/contractors.setup');
|
|
43
|
+
const projects = require('./saas/openapi/projects/projects.setup');
|
|
44
|
+
const requirements = require('./saas/openapi/requirements');
|
|
45
|
+
const openAPI = { tabs, contractors, projects, requirements };
|
|
35
46
|
return openAPI;
|
|
36
47
|
|
|
37
48
|
};
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
const accountsAPI = require('./accounts.openapi.api');
|
|
2
|
+
const crypto = require('crypto');
|
|
3
|
+
|
|
4
|
+
const generateApiKeyValue = accountName => {
|
|
5
|
+
return crypto.createHash('sha256').update(accountName).digest('base64');
|
|
6
|
+
};
|
|
2
7
|
|
|
3
8
|
const createApiKey = async (accountId, apiKeyValue, context) => {
|
|
4
9
|
const data = { apiKeyValue, accountId };
|
|
@@ -39,5 +44,6 @@ module.exports = {
|
|
|
39
44
|
getApiKeyDetails,
|
|
40
45
|
deleteApiKey,
|
|
41
46
|
getOrCreateApiKey,
|
|
42
|
-
initializeApiKeyOnAws
|
|
47
|
+
initializeApiKeyOnAws,
|
|
48
|
+
generateApiKeyValue
|
|
43
49
|
};
|
|
@@ -21,8 +21,18 @@ const getIcsCookie = async () => {
|
|
|
21
21
|
return await getAuthCookie(credentials.superUser, credentials.superUserPassword);
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
+
const getAuditorCookie = async () => {
|
|
25
|
+
const { auditorUser, auditorPassword } = credentials;
|
|
26
|
+
requiredValidation({
|
|
27
|
+
'credentials.auditorUser': auditorUser,
|
|
28
|
+
'credentials.auditorPassword': auditorPassword
|
|
29
|
+
});
|
|
30
|
+
return await getAuthCookie(auditorUser, auditorPassword);
|
|
31
|
+
};
|
|
32
|
+
|
|
24
33
|
module.exports = {
|
|
25
34
|
getAuthCookie,
|
|
26
|
-
getIcsCookie
|
|
35
|
+
getIcsCookie,
|
|
36
|
+
getAuditorCookie
|
|
27
37
|
};
|
|
28
38
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const axiosFile = require('axios-file');
|
|
2
|
+
const requests = require('../../common/requests');
|
|
3
|
+
|
|
4
|
+
const { backendUrl } = require('../../../../env').getEnv();
|
|
5
|
+
|
|
6
|
+
const Endpoints = {
|
|
7
|
+
uploadToS3: `${backendUrl}/_saas/coi/upload`,
|
|
8
|
+
submitCoi: `${backendUrl}/coi/merge`,
|
|
9
|
+
getCoiPresignedUrl: fileName => `${backendUrl}/saas/coi/${fileName}`
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const uploadToS3 = async (contractorId, fileData) => {
|
|
13
|
+
return axiosFile({
|
|
14
|
+
url: Endpoints.uploadToS3,
|
|
15
|
+
method: 'post',
|
|
16
|
+
params: { contractorId },
|
|
17
|
+
data: { fileData }
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const submitCoi = async submitCoiModel => {
|
|
22
|
+
return requests.postRequestHandler(Endpoints.submitCoi, submitCoiModel).then(res => res.data);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const getCoiPreSignedUrl = async (coiFileName, context) => {
|
|
26
|
+
return requests.getRequestHandler(Endpoints.getCoiPresignedUrl(coiFileName), {}, context).then(res => res.data);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
module.exports = { uploadToS3, submitCoi, getCoiPreSignedUrl };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const coiApi = require('./coi.api');
|
|
2
|
+
const { SubmitCoiModel } = require('../models/submit.coi.model');
|
|
3
|
+
const { validateType } = require('../../../../common/validations/typeValidations');
|
|
4
|
+
|
|
5
|
+
const uploadToS3 = async (contractorId, fileData) => {
|
|
6
|
+
return coiApi.uploadToS3(contractorId, fileData);
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
const submitCoi = async submitCoiModel => {
|
|
10
|
+
validateType(submitCoiModel, SubmitCoiModel);
|
|
11
|
+
return coiApi.submitCoi(submitCoiModel);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const getCoiPreSignedUrl = async (coiFileName, context) => {
|
|
15
|
+
return coiApi.getCoiPreSignedUrl(coiFileName, context);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
module.exports = { uploadToS3, submitCoi, getCoiPreSignedUrl };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
function SubmitCoiModel(contractorId, fileIds, uploadedBy, uploaderEmail, isContractorExist = true) {
|
|
2
|
+
this.contractorId = contractorId;
|
|
3
|
+
this.chosenIds = fileIds;
|
|
4
|
+
this.uploadedBy = uploadedBy;
|
|
5
|
+
this.uploaderEmail = uploaderEmail;
|
|
6
|
+
this.isContractorExist = isContractorExist;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
module.exports = { SubmitCoiModel };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const requests = require('../../../common/requests');
|
|
2
|
+
const { backendUrl } = require('../../../../../env').getEnv();
|
|
3
|
+
|
|
4
|
+
const Endpoints = {
|
|
5
|
+
preAudit: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/master-audit`,
|
|
6
|
+
audit: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/audits`,
|
|
7
|
+
contractorDetailsForAudit: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/master-audit`,
|
|
8
|
+
requirementDetailsForAudit: contractorId => `${backendUrl}/saas/auditor/contractor/${contractorId}/requirement`
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const audit = async (contractorId, auditRequestModel, context) => {
|
|
12
|
+
const response = await requests.getRequestHandler(Endpoints.preAudit(contractorId), {}, context);
|
|
13
|
+
return requests.postRequestHandler(Endpoints.audit(contractorId), auditRequestModel, context).then(res => res.data);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const getContractorDetailsForAudit = async (contractorId, context) => {
|
|
17
|
+
return requests.getRequestHandler(Endpoints.contractorDetailsForAudit(contractorId),
|
|
18
|
+
{}, context).then(res => res.data);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const getRequirementDetailsForAudit = async (contractorId, context) => {
|
|
22
|
+
return requests.getRequestHandler(Endpoints.requirementDetailsForAudit(contractorId),
|
|
23
|
+
{}, context).then(res => res.data);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
module.exports = { audit, getContractorDetailsForAudit, getRequirementDetailsForAudit };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const auditApi = require('./audit.api');
|
|
2
|
+
const { AuditRequestModel } = require('../../models/audit/audit.model');
|
|
3
|
+
const { validateType } = require('../../../../../common/validations/typeValidations');
|
|
4
|
+
|
|
5
|
+
const audit = async (auditRequestModel, context) => {
|
|
6
|
+
validateType(auditRequestModel, AuditRequestModel);
|
|
7
|
+
return auditApi.audit(auditRequestModel.auditData.contractorId, auditRequestModel, context);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const getContractorDetailsForAudit = async (contractorId, context) => {
|
|
11
|
+
return auditApi.getContractorDetailsForAudit(contractorId, context);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const getRequirementDetailsForAudit = async (contractorId, context) => {
|
|
15
|
+
return auditApi.getRequirementDetailsForAudit(contractorId, context);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
module.exports = { audit, getContractorDetailsForAudit, getRequirementDetailsForAudit };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const requests = require('../../../common/requests');
|
|
2
|
+
const { backendUrl } = require('../../../../../env').getEnv();
|
|
3
|
+
|
|
4
|
+
const Endpoints = {
|
|
5
|
+
waive: contractorId => `${backendUrl}/saas/contractors/${contractorId}/waiver`,
|
|
6
|
+
retract: contractorId => `${backendUrl}/saas/contractors/${contractorId}/waiver`
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
const waive = async (contractorId, waiveRequestModel, context) => {
|
|
10
|
+
const status = waiveRequestModel.status;
|
|
11
|
+
delete waiveRequestModel.status;
|
|
12
|
+
return requests.postRequestHandler(Endpoints.waive(contractorId), waiveRequestModel,
|
|
13
|
+
context, {}, { status }).then(res => res.data);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const retract = async (contractorId, retractRequestModel, context) => {
|
|
17
|
+
const status = retractRequestModel.status;
|
|
18
|
+
delete retractRequestModel.status;
|
|
19
|
+
return requests.postRequestHandler(Endpoints.retract(contractorId), retractRequestModel,
|
|
20
|
+
context, {}, { status }).then(res => res.data);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
module.exports = { waive, retract };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const waiveApi = require('./waive.api');
|
|
2
|
+
const { WaiveRequestModel, RetractRequestModel } = require('../../models/waive/waive.model');
|
|
3
|
+
const { validateType } = require('../../../../../common/validations/typeValidations');
|
|
4
|
+
|
|
5
|
+
const waive = async (waiveRequestModel, context) => {
|
|
6
|
+
validateType(waiveRequestModel, WaiveRequestModel);
|
|
7
|
+
return waiveApi.waive(waiveRequestModel.contractorId, waiveRequestModel, context);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const retract = async (retractRequestModel, context) => {
|
|
11
|
+
validateType(retractRequestModel, RetractRequestModel);
|
|
12
|
+
return waiveApi.retract(retractRequestModel.contractorId, retractRequestModel, context);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
module.exports = { waive, retract };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const auditModels = require('./models/audit/audit.model');
|
|
2
|
+
const auditServices = require('./api/audit/audit.setup');
|
|
3
|
+
|
|
4
|
+
const waiveModels = require('./models/waive/waive.model');
|
|
5
|
+
const waiveServices = require('./api/waive/waive.setup');
|
|
6
|
+
|
|
7
|
+
const models = { audit: auditModels, waive: waiveModels };
|
|
8
|
+
const services = { audit: auditServices, waive: waiveServices };
|
|
9
|
+
|
|
10
|
+
module.exports = { services, models };
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
const COI_AUDIT_STATUSES = {
|
|
2
|
+
NOT_AUDITED: '0',
|
|
3
|
+
REAUDIT: '3'
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
const AUDIT_ENTITY_STATUSES = {
|
|
7
|
+
YES: 'Yes',
|
|
8
|
+
NO: 'No',
|
|
9
|
+
EMPTY: 'empty',
|
|
10
|
+
OTHER: 'other',
|
|
11
|
+
CLAIMS: 'Claims'
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const AUDIT_ATTRIBUTE_NAMES = {
|
|
15
|
+
CERTIFICATE_ISSUE_DATE: 'certIssueDate'
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const AUDIT_POLICY_NAMES = {
|
|
19
|
+
GENERAL_LIABILITY: ''
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const AUDITOR_ROLE = 'Auditor';
|
|
23
|
+
|
|
24
|
+
function AuditRequestModel({
|
|
25
|
+
accountId = null,
|
|
26
|
+
projectId = null,
|
|
27
|
+
requirementId = null,
|
|
28
|
+
contractorId = null,
|
|
29
|
+
certificateId = null,
|
|
30
|
+
auditorId = null,
|
|
31
|
+
auditEntities = null,
|
|
32
|
+
dateModified = null,
|
|
33
|
+
isReaudit = null,
|
|
34
|
+
isProjectOnboarding = false,
|
|
35
|
+
auditorRole = AUDITOR_ROLE,
|
|
36
|
+
shouldSendNotificationToPM = true
|
|
37
|
+
}) {
|
|
38
|
+
const auditData = {
|
|
39
|
+
userId: accountId,
|
|
40
|
+
projectId: projectId,
|
|
41
|
+
requirementId: requirementId,
|
|
42
|
+
contractorId: contractorId,
|
|
43
|
+
certificateId: certificateId,
|
|
44
|
+
auditorId: auditorId,
|
|
45
|
+
policyDetails: auditEntities,
|
|
46
|
+
auditorStatus: COI_AUDIT_STATUSES.NOT_AUDITED,
|
|
47
|
+
dateModified: dateModified,
|
|
48
|
+
isReaudit: isReaudit,
|
|
49
|
+
projectOnboarding: isProjectOnboarding,
|
|
50
|
+
role: auditorRole,
|
|
51
|
+
sendNotificationToPM: shouldSendNotificationToPM
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
this.auditData = auditData;
|
|
55
|
+
this.dateModified = dateModified;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function AuditEntityModel(policyId, attributeName, status, value) {
|
|
59
|
+
this.contractorInsuranceId = policyId;
|
|
60
|
+
this.limitname = attributeName;
|
|
61
|
+
this.status = status;
|
|
62
|
+
this.value = value;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
module.exports = {
|
|
66
|
+
AuditRequestModel,
|
|
67
|
+
AuditEntityModel,
|
|
68
|
+
COI_AUDIT_STATUSES,
|
|
69
|
+
AUDIT_ENTITY_STATUSES,
|
|
70
|
+
AUDIT_ATTRIBUTE_NAMES,
|
|
71
|
+
AUDIT_POLICY_NAMES
|
|
72
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const DEFAULT_USER_ROLE = 'ICS';
|
|
2
|
+
|
|
3
|
+
const WAIVE_ACTIONS = {
|
|
4
|
+
WAIVE: 'ignored',
|
|
5
|
+
RETRACT: 'notIgnored'
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
const WAIVER_REASONS = {
|
|
9
|
+
BUSINESS_DECISION: 'Business_Decision',
|
|
10
|
+
NO_EXPOSURE: 'No_Exposure',
|
|
11
|
+
EXECUTIVE_APPROVAL: 'Executive_Approval'
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
function WaiveRequestModel({
|
|
15
|
+
userId,
|
|
16
|
+
contractorId,
|
|
17
|
+
auditId,
|
|
18
|
+
waiverReason,
|
|
19
|
+
remarks = '',
|
|
20
|
+
userRole = DEFAULT_USER_ROLE
|
|
21
|
+
}) {
|
|
22
|
+
this.auditorContractorId = auditId;
|
|
23
|
+
this.contractorId = contractorId;
|
|
24
|
+
this.userId = userId;
|
|
25
|
+
this.waiverReason = waiverReason;
|
|
26
|
+
this.remarks = remarks;
|
|
27
|
+
|
|
28
|
+
this.userRole = userRole;
|
|
29
|
+
this.status = WAIVE_ACTIONS.WAIVE;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function RetractRequestModel({ userId, contractorId, auditId, userRole = DEFAULT_USER_ROLE }) {
|
|
33
|
+
this.auditorContractorId = auditId;
|
|
34
|
+
this.contractorId = contractorId;
|
|
35
|
+
this.userId = userId;
|
|
36
|
+
this.userRole = userRole;
|
|
37
|
+
this.status = WAIVE_ACTIONS.RETRACT;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
module.exports = {
|
|
41
|
+
WaiveRequestModel,
|
|
42
|
+
RetractRequestModel,
|
|
43
|
+
WAIVE_ACTIONS,
|
|
44
|
+
WAIVER_REASONS
|
|
45
|
+
};
|
|
@@ -4,7 +4,10 @@ const { backendUrl } = require('../../../../env').getEnv();
|
|
|
4
4
|
const Endpoints = {
|
|
5
5
|
create: `${backendUrl}/saas/contractors/invite`,
|
|
6
6
|
get: `${backendUrl}/saas/contractors`,
|
|
7
|
+
getContractorById: contractorId => `${backendUrl}/saas/contractor/${contractorId}`,
|
|
7
8
|
delete: contractorId => `${backendUrl}/saas/contractor/${contractorId}`,
|
|
9
|
+
archive: contractorId => `${backendUrl}/saas/contractor/${contractorId}/archive`,
|
|
10
|
+
restore: contractorId => `${backendUrl}/saas/contractor/${contractorId}/restore`,
|
|
8
11
|
};
|
|
9
12
|
|
|
10
13
|
const createContractors = async (createContractorModel, context) => {
|
|
@@ -15,8 +18,27 @@ const getContractorsByAccountId = async (params, context) => {
|
|
|
15
18
|
return requests.getRequestHandler(Endpoints.get, params, context).then(res => res.data);
|
|
16
19
|
};
|
|
17
20
|
|
|
21
|
+
const getContractorById = async (contractorId, context) => {
|
|
22
|
+
return requests.getRequestHandler(Endpoints.getContractorById(contractorId), {}, context).then(res => res.data);
|
|
23
|
+
};
|
|
24
|
+
|
|
18
25
|
const deleteByContractorId = async (contractorId, context) => {
|
|
19
26
|
return requests.deleteRequestHandler(Endpoints.delete(contractorId), context);
|
|
20
27
|
};
|
|
21
28
|
|
|
22
|
-
|
|
29
|
+
const archiveByContractorId = async (contractorId, context) => {
|
|
30
|
+
return requests.deleteRequestHandler(Endpoints.archive(contractorId), context);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const restoreByContractorId = async (contractorId, context) => {
|
|
34
|
+
return requests.postRequestHandler(Endpoints.restore(contractorId), {}, context);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
module.exports = {
|
|
38
|
+
createContractors,
|
|
39
|
+
getContractorsByAccountId,
|
|
40
|
+
getContractorById,
|
|
41
|
+
deleteByContractorId,
|
|
42
|
+
archiveByContractorId,
|
|
43
|
+
restoreByContractorId
|
|
44
|
+
};
|
|
@@ -7,12 +7,34 @@ const createContractors = async (createContractorsModel, context) => {
|
|
|
7
7
|
return contractorsAPI.createContractors(createContractorsModel, context);
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
-
const getContractorsByAccountId = async (accountId, context) => {
|
|
11
|
-
|
|
10
|
+
const getContractorsByAccountId = async (accountId, context, activationStatus = null) => {
|
|
11
|
+
if (activationStatus) {
|
|
12
|
+
activationStatus = activationStatus.reduce((f, s) => `${f},${s}`);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return contractorsAPI.getContractorsByAccountId({ accountId, activationStatus }, context);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const getContractorById = (contractorId, context) => {
|
|
19
|
+
return contractorsAPI.getContractorById(contractorId, context);
|
|
12
20
|
};
|
|
13
21
|
|
|
14
22
|
const deleteByContractorId = (contractorId, context) => {
|
|
15
23
|
return contractorsAPI.deleteByContractorId(contractorId, context);
|
|
16
24
|
};
|
|
17
25
|
|
|
18
|
-
|
|
26
|
+
const archiveByContractorId = (contractorId, context) => {
|
|
27
|
+
return contractorsAPI.archiveByContractorId(contractorId, context);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const restoreByContractorId = (contractorId, context) => {
|
|
31
|
+
return contractorsAPI.restoreByContractorId(contractorId, context);
|
|
32
|
+
};
|
|
33
|
+
module.exports = {
|
|
34
|
+
createContractors,
|
|
35
|
+
getContractorsByAccountId,
|
|
36
|
+
getContractorById,
|
|
37
|
+
deleteByContractorId,
|
|
38
|
+
archiveByContractorId,
|
|
39
|
+
restoreByContractorId
|
|
40
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const requests = require('
|
|
2
|
-
const { backendUrl } = require('
|
|
1
|
+
const requests = require('../../../common/requests');
|
|
2
|
+
const { backendUrl } = require('../../../../../env').getEnv();
|
|
3
3
|
|
|
4
4
|
const Endpoints = {
|
|
5
5
|
create: `${backendUrl}/saas/project`,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const projectsApi = require('./projects.api');
|
|
2
|
-
const accounts = require('
|
|
3
|
-
const { validateType } = require('
|
|
4
|
-
const CreateProjectModel = require('
|
|
2
|
+
const accounts = require('../../../accounts/api/core/accounts.core.setup');
|
|
3
|
+
const { validateType } = require('../../../../../common/validations/typeValidations');
|
|
4
|
+
const CreateProjectModel = require('../../models/core/create.project.model');
|
|
5
5
|
|
|
6
6
|
const getProjectsByAccountName = async (accountName, context) => {
|
|
7
7
|
const accountId = accounts.getAccountId(accountName, context);
|
|
@@ -28,9 +28,20 @@ const createProject = async (createProjectModel, context) => {
|
|
|
28
28
|
return projectsApi.create(createProjectModel, context);
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
+
const getOrCreateProject = async (createProjectModel, context) => {
|
|
32
|
+
const existingProjects = await getProjectsByName(createProjectModel.userId, createProjectModel.projectName, context);
|
|
33
|
+
|
|
34
|
+
if (existingProjects.length > 0) {
|
|
35
|
+
return existingProjects[0];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return createProject(createProjectModel, context);
|
|
39
|
+
};
|
|
40
|
+
|
|
31
41
|
module.exports = {
|
|
32
42
|
getProjectsByAccountName,
|
|
33
43
|
getProjectsByAccountId,
|
|
34
44
|
createProject,
|
|
35
|
-
deleteProjectByName
|
|
45
|
+
deleteProjectByName,
|
|
46
|
+
getOrCreateProject
|
|
36
47
|
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const requests = require('../../../common/requests');
|
|
2
|
+
const { backendUrl } = require('../../../../../env').getEnv();
|
|
3
|
+
|
|
4
|
+
const Endpoints = {
|
|
5
|
+
getByProjectId: projectId => `${backendUrl}/saas/project/${projectId}/settings`,
|
|
6
|
+
updateByProjectId: projectId => `${backendUrl}/saas/project/${projectId}/settings`,
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
const getProjectSettingsByProjectId = async (projectId, context) => {
|
|
10
|
+
const params = { projectId };
|
|
11
|
+
return requests.getRequestHandler(Endpoints.getByProjectId(projectId), params, context).then(res => res.data);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const updateProjectSettingsByProjectId = async (settings, context) => {
|
|
15
|
+
return requests.putRequestHandler(Endpoints.updateByProjectId(settings.projectId), settings, context);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
module.exports = { getProjectSettingsByProjectId, updateProjectSettingsByProjectId };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const { getProjectSettingsByProjectId, updateProjectSettingsByProjectId } = require('./project.settings.api');
|
|
2
|
+
const { validateType } = require('../../../../../common/validations/typeValidations');
|
|
3
|
+
const UpdateProjectSettingsModel = require('../../models/settings/update.project.settings.model');
|
|
4
|
+
|
|
5
|
+
const updateProjectSettings = async (updateProjectSettingsModel, context) => {
|
|
6
|
+
validateType(updateProjectSettingsModel, UpdateProjectSettingsModel);
|
|
7
|
+
return updateProjectSettingsByProjectId(updateProjectSettingsModel, context);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const getProjectSettings = async (projectId, context)=>{
|
|
11
|
+
return getProjectSettingsByProjectId(projectId, context);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
module.exports = {
|
|
15
|
+
updateProjectSettings,
|
|
16
|
+
getProjectSettings
|
|
17
|
+
};
|
|
@@ -1,6 +1,18 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
1
|
+
const projectService = require('./api/core/projects.setup');
|
|
2
|
+
const projectSettingsService = require('./api/settings/project.settings.setup');
|
|
3
|
+
const CreateProjectModel = require('./models/core/create.project.model');
|
|
4
|
+
const UpdateProjectSettingsModel = require('./models/settings/update.project.settings.model');
|
|
3
5
|
|
|
4
|
-
const
|
|
6
|
+
const coreModels = { CreateProjectModel };
|
|
7
|
+
const settingsModels = { UpdateProjectSettingsModel };
|
|
8
|
+
|
|
9
|
+
const services = {
|
|
10
|
+
core: projectService,
|
|
11
|
+
settings: projectSettingsService
|
|
12
|
+
};
|
|
13
|
+
const models = {
|
|
14
|
+
core: coreModels,
|
|
15
|
+
settings: settingsModels
|
|
16
|
+
};
|
|
5
17
|
|
|
6
18
|
module.exports = { models, services };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
|
|
2
|
+
function UpdateProjectSettingsModel({
|
|
3
|
+
autoGaps = defaultAutoGaps,
|
|
4
|
+
autoRenewels = false,
|
|
5
|
+
marketplace = defaultMarketplace,
|
|
6
|
+
ocrEnabled = false,
|
|
7
|
+
onboardingPhase = false,
|
|
8
|
+
projectId=null,
|
|
9
|
+
qrEnabled = false,
|
|
10
|
+
tenantSolution = false
|
|
11
|
+
|
|
12
|
+
}) {
|
|
13
|
+
this.autoGaps = autoGaps;
|
|
14
|
+
this.autoRenewels = autoRenewels;
|
|
15
|
+
this.marketplace = marketplace;
|
|
16
|
+
this.ocrEnabled = ocrEnabled;
|
|
17
|
+
this.onboardingPhase = onboardingPhase;
|
|
18
|
+
this.projectId = projectId;
|
|
19
|
+
this.qrEnabled = qrEnabled;
|
|
20
|
+
this.tenantSolution = tenantSolution;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
module.exports = UpdateProjectSettingsModel;
|
|
24
|
+
|
|
25
|
+
const defaultMarketplace = {
|
|
26
|
+
marketplaceEnabled: false,
|
|
27
|
+
marketplacePreApproved: false,
|
|
28
|
+
marketplacePublicLink: false
|
|
29
|
+
};
|
|
30
|
+
const defaultAutoGaps = {
|
|
31
|
+
Guests: false,
|
|
32
|
+
Tenants: false,
|
|
33
|
+
Vendors: false
|
|
34
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const requests = require('../../common/requests');
|
|
2
|
+
const { backendUrl } = require('../../../../env').getEnv();
|
|
3
|
+
|
|
4
|
+
const Endpoints = {
|
|
5
|
+
generateReport: reportType => `${backendUrl}/saas/integration-tests/ExportXLSXReport/${reportType}`
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
const generateReport = async (reportFilters, reportType, context) => {
|
|
9
|
+
return requests.postRequestHandler(Endpoints.generateReport(reportType), reportFilters, context).then(res => res.data);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
module.exports = { generateReport };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const reportsApi = require('./reports.api');
|
|
2
|
+
const { validateType } = require('../../../../common/validations/typeValidations');
|
|
3
|
+
const { ReportFilters } = require('../models/report.model');
|
|
4
|
+
|
|
5
|
+
const generateReport = async (reportFilters, reportType, context) => {
|
|
6
|
+
validateType(reportFilters, ReportFilters);
|
|
7
|
+
return reportsApi.generateReport(reportFilters, reportType, context);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
module.exports = { generateReport };
|
|
11
|
+
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const REPORT_TYPES = {
|
|
2
|
+
WAIVER_REPORT: 'WaiversReport'
|
|
3
|
+
};
|
|
4
|
+
|
|
5
|
+
const REPORT_COMPLIANCE_STATUSES = {
|
|
6
|
+
COMPLIANT: 'COMPLIANT',
|
|
7
|
+
NOT_COMPLIANT: 'NOT_COMPLIANT',
|
|
8
|
+
AWAITING_COI: 'AWAITING_COI',
|
|
9
|
+
WAIVED: 'WAIVED',
|
|
10
|
+
EXPIRED: 'EXPIRED',
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const REPORT_CONTRACTOR_TYPES = {
|
|
14
|
+
VENDORS: 'Vendors',
|
|
15
|
+
TENANTS: 'Tenants',
|
|
16
|
+
GUESTS: 'Guests'
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const ALL_REPORT_COMPLIANCE_STATUSES = [
|
|
20
|
+
REPORT_COMPLIANCE_STATUSES.COMPLIANT,
|
|
21
|
+
REPORT_COMPLIANCE_STATUSES.NOT_COMPLIANT,
|
|
22
|
+
REPORT_COMPLIANCE_STATUSES.AWAITING_COI,
|
|
23
|
+
REPORT_COMPLIANCE_STATUSES.WAIVED,
|
|
24
|
+
REPORT_COMPLIANCE_STATUSES.EXPIRED
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const ALL_REPORT_CONTRACTOR_TYPES = [
|
|
28
|
+
REPORT_CONTRACTOR_TYPES.VENDORS,
|
|
29
|
+
REPORT_CONTRACTOR_TYPES.TENANTS,
|
|
30
|
+
REPORT_CONTRACTOR_TYPES.GUESTS
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
function ReportFilters(projects, {
|
|
34
|
+
complianceStatuses = ALL_REPORT_COMPLIANCE_STATUSES,
|
|
35
|
+
contractorTypes = ALL_REPORT_CONTRACTOR_TYPES
|
|
36
|
+
}) {
|
|
37
|
+
this.projects = projects;
|
|
38
|
+
this.vendorTabTypes = contractorTypes;
|
|
39
|
+
this.complianceStatuses = complianceStatuses;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
module.exports = { ReportFilters, REPORT_TYPES, REPORT_CONTRACTOR_TYPES, REPORT_COMPLIANCE_STATUSES };
|
|
@@ -3,7 +3,8 @@ const { backendUrl } = require('../../../../env').getEnv();
|
|
|
3
3
|
|
|
4
4
|
const Endpoints = {
|
|
5
5
|
create: `${backendUrl}/saas/requirement`,
|
|
6
|
-
|
|
6
|
+
getRequirementsByTabId: `${backendUrl}/saas/requirements`,
|
|
7
|
+
getRequirementById: requirementId => `${backendUrl}/saas/requirement/${requirementId}`,
|
|
7
8
|
delete: requirementId => `${backendUrl}/saas/requirement/${requirementId}`,
|
|
8
9
|
};
|
|
9
10
|
|
|
@@ -14,11 +15,15 @@ const createRequirement = async (createRequirementModel, context, params) => {
|
|
|
14
15
|
};
|
|
15
16
|
|
|
16
17
|
const getRequirementsByTabId = async (tabId, context) => {
|
|
17
|
-
return requests.getRequestHandler(Endpoints.
|
|
18
|
+
return requests.getRequestHandler(Endpoints.getRequirementsByTabId, { tabId }, context).then(res => res.data);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const getRequirementById = async (requirementId, context) => {
|
|
22
|
+
return requests.getRequestHandler(Endpoints.getRequirementById(requirementId), {}, context).then(res => res.data);
|
|
18
23
|
};
|
|
19
24
|
|
|
20
25
|
const deleteByRequirementId = async (requirementId, context) => {
|
|
21
26
|
return requests.deleteRequestHandler(Endpoints.delete(requirementId), context);
|
|
22
27
|
};
|
|
23
28
|
|
|
24
|
-
module.exports = { createRequirement, getRequirementsByTabId, deleteByRequirementId };
|
|
29
|
+
module.exports = { createRequirement, getRequirementsByTabId, deleteByRequirementId, getRequirementById };
|
|
@@ -12,8 +12,12 @@ const getRequirementsByTabId = async (tabId, context) => {
|
|
|
12
12
|
return requirementsAPI.getRequirementsByTabId(tabId, context);
|
|
13
13
|
};
|
|
14
14
|
|
|
15
|
+
const getRequirementById = async (requirementId, context) => {
|
|
16
|
+
return requirementsAPI.getRequirementById(requirementId, context);
|
|
17
|
+
};
|
|
18
|
+
|
|
15
19
|
const deleteByRequirementId = (requirementId, context) => {
|
|
16
20
|
return requirementsAPI.deleteByRequirementId(requirementId, context);
|
|
17
21
|
};
|
|
18
22
|
|
|
19
|
-
module.exports = { createRequirement, getRequirementsByTabId, deleteByRequirementId };
|
|
23
|
+
module.exports = { createRequirement, getRequirementsByTabId, deleteByRequirementId, getRequirementById };
|
|
@@ -4,7 +4,8 @@ const { backendUrl } = require('../../../../env').getEnv();
|
|
|
4
4
|
const Endpoints = {
|
|
5
5
|
getTabsByProjectId: `${backendUrl}/saas/vendortab`,
|
|
6
6
|
create: `${backendUrl}/saas/vendortab`,
|
|
7
|
-
|
|
7
|
+
update: `${backendUrl}/saas/vendortab`,
|
|
8
|
+
delete: `${backendUrl}/saas/vendortab`
|
|
8
9
|
};
|
|
9
10
|
|
|
10
11
|
const getTabsByProjectId = async (projectId, context) => {
|
|
@@ -15,8 +16,12 @@ const createTab = async (tabModel, context) => {
|
|
|
15
16
|
return requests.postRequestHandler(Endpoints.create, tabModel, context);
|
|
16
17
|
};
|
|
17
18
|
|
|
19
|
+
const updateTab = async (tabModel, context) => {
|
|
20
|
+
return requests.postRequestHandler(Endpoints.update, tabModel, context);
|
|
21
|
+
};
|
|
22
|
+
|
|
18
23
|
const deleteTab = async (tabId, context) => {
|
|
19
24
|
return requests.deleteRequestHandler(Endpoints.delete, context, {}, { tabId });
|
|
20
25
|
};
|
|
21
26
|
|
|
22
|
-
module.exports = { getTabsByProjectId, createTab, deleteTab };
|
|
27
|
+
module.exports = { getTabsByProjectId, createTab, updateTab, deleteTab };
|
|
@@ -5,6 +5,11 @@ const createTab = async (projectId, tabName, tabType, context) => {
|
|
|
5
5
|
return tabsAPI.createTab(tabModel, context);
|
|
6
6
|
};
|
|
7
7
|
|
|
8
|
+
const updateTab = async (projectId, tabName, tabType, tabId, context) => {
|
|
9
|
+
const tabModel = { projectId, tabName, type: tabType, tabId };
|
|
10
|
+
return tabsAPI.updateTab(tabModel, context);
|
|
11
|
+
};
|
|
12
|
+
|
|
8
13
|
const getTabsByProjectId = async (projectId, context) => {
|
|
9
14
|
return tabsAPI.getTabsByProjectId(projectId, context);
|
|
10
15
|
};
|
|
@@ -33,6 +38,7 @@ const getOrCreateTab = async (projectId, tabName, tabType, context) => {
|
|
|
33
38
|
module.exports = {
|
|
34
39
|
getTabsByProjectId,
|
|
35
40
|
createTab,
|
|
41
|
+
updateTab,
|
|
36
42
|
deleteTabById,
|
|
37
43
|
getOrCreateTab,
|
|
38
44
|
getTabsByName
|
|
@@ -36,6 +36,18 @@ const putRequestHandler = async (url, apiKey, body, headers = {}) => {
|
|
|
36
36
|
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
+
const patchRequestHandler = async (url, apiKey, body, headers = {}) => {
|
|
40
|
+
enrichApiKey(headers, apiKey);
|
|
41
|
+
try {
|
|
42
|
+
const response = await axios.patch(url, body, { headers });
|
|
43
|
+
return response;
|
|
44
|
+
} catch (error) {
|
|
45
|
+
const message = error.response.data && JSON.stringify(error.response.data) || error.message;
|
|
46
|
+
throw Error(message);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
};
|
|
50
|
+
|
|
39
51
|
const deleteRequestHandler = async (url, apiKey, headers = {}, params = {}, data = {}) => {
|
|
40
52
|
enrichApiKey(headers, apiKey);
|
|
41
53
|
try {
|
|
@@ -52,4 +64,10 @@ const enrichApiKey = (headers, apiKey) => {
|
|
|
52
64
|
headers['x-api-key'] = apiKey;
|
|
53
65
|
};
|
|
54
66
|
|
|
55
|
-
module.exports = {
|
|
67
|
+
module.exports = {
|
|
68
|
+
getRequestHandler,
|
|
69
|
+
postRequestHandler,
|
|
70
|
+
putRequestHandler,
|
|
71
|
+
patchRequestHandler,
|
|
72
|
+
deleteRequestHandler
|
|
73
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const requests = require('../common/requests');
|
|
2
|
+
const { openapiUrl } = require('../../../env').getEnv();
|
|
3
|
+
const { isLocalhost } = require('../../../env');
|
|
4
|
+
|
|
5
|
+
const contractorUrl = isLocalhost() ? 'contractors' : 'records';
|
|
6
|
+
|
|
7
|
+
const Endpoints = {
|
|
8
|
+
getAllContractors: `${openapiUrl}/${contractorUrl}/all`,
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const getAllContractors = async (apiKey, params) => {
|
|
12
|
+
return requests.getRequestHandler(Endpoints.getAllContractors, apiKey, params).then(res => res.data);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
module.exports = { getAllContractors };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const contractorsApi = require('./contractors.api');
|
|
2
|
+
|
|
3
|
+
const getContractors = async (apiKey, { projectId, type, activationStatuses } = {}) => {
|
|
4
|
+
if (activationStatuses) {
|
|
5
|
+
activationStatuses = activationStatuses.reduce((f, s) => `${f},${s}`);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
return contractorsApi.getAllContractors(apiKey, { propertyId: projectId, type, activationStatuses });
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
module.exports = { getContractors };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const requests = require('../common/requests');
|
|
2
|
+
const { openapiUrl } = require('../../../env').getEnv();
|
|
3
|
+
|
|
4
|
+
const Endpoints = {
|
|
5
|
+
getProjectsByName: `${openapiUrl}/properties`,
|
|
6
|
+
getAllProjects: `${openapiUrl}/properties/all`,
|
|
7
|
+
getModifiedProjects: `${openapiUrl}/properties/modified`,
|
|
8
|
+
createProject: `${openapiUrl}/properties`,
|
|
9
|
+
updateProject: projectId => `${openapiUrl}/properties/${projectId}`
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const getProjectsByName = async (apiKey, params) => {
|
|
13
|
+
return requests.getRequestHandler(Endpoints.getProjectsByName, apiKey, params).then(res => res.data);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const getAllProjects = async apiKey => {
|
|
17
|
+
return requests.getRequestHandler(Endpoints.getAllProjects, apiKey).then(res => res.data);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const getModifiedProjects = async (apiKey, params) => {
|
|
21
|
+
return requests.getRequestHandler(Endpoints.getModifiedProjects, apiKey, params).then(res => res.data);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const createProject = async (apiKey, project) => {
|
|
25
|
+
return requests.postRequestHandler(Endpoints.createProject, apiKey, project).then(res => res.data);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const updateProject = async (apiKey, projectId, projectData) => {
|
|
29
|
+
return requests.patchRequestHandler(Endpoints.updateProject(projectId), apiKey, projectData).then(res => res.data);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
module.exports = {
|
|
33
|
+
getProjectsByName,
|
|
34
|
+
getAllProjects,
|
|
35
|
+
getModifiedProjects,
|
|
36
|
+
createProject,
|
|
37
|
+
updateProject
|
|
38
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const projectsApi = require('./projects.api');
|
|
2
|
+
|
|
3
|
+
const getProjectsByName = async (apiKey, name) => {
|
|
4
|
+
return projectsApi.getProjectsByName(apiKey, { name });
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
const createProject = async (apiKey, project) => {
|
|
8
|
+
return projectsApi.createProject(apiKey, project);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const updateProject = async (apiKey, projectId, projectData) => {
|
|
12
|
+
return projectsApi.updateProject(apiKey, projectId, projectData);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const getAllProjects = async apiKey => {
|
|
16
|
+
return projectsApi.getAllProjects(apiKey);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const getModifiedProjects = async (apiKey, timestamp) => {
|
|
20
|
+
return projectsApi.getModifiedProjects(apiKey, { timestamp });
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
module.exports = {
|
|
24
|
+
getProjectsByName,
|
|
25
|
+
createProject,
|
|
26
|
+
updateProject,
|
|
27
|
+
getAllProjects,
|
|
28
|
+
getModifiedProjects
|
|
29
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
function CopyRequirementModel(sourceRequirementId, destinationTabId = null,
|
|
2
|
+
newRequirementName = null, certificateHolder = null, additionalInsured = null) {
|
|
3
|
+
this.sourceRequirementId = sourceRequirementId;
|
|
4
|
+
this.destinationTabId = destinationTabId;
|
|
5
|
+
this.newRequirementName = newRequirementName;
|
|
6
|
+
this.certificateHolder = certificateHolder;
|
|
7
|
+
this.additionalInsured = additionalInsured;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
module.exports = CopyRequirementModel;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const requests = require('../common/requests');
|
|
2
|
+
const { openapiUrl } = require('../../../env').getEnv();
|
|
3
|
+
|
|
4
|
+
const Endpoints = {
|
|
5
|
+
copyRequirement: sourceRequirementId => `${openapiUrl}/requirement/${sourceRequirementId}/copy`,
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
const copyRequirement = async (apiKey, sourceRequirementId, newRequirementOverrides) => {
|
|
9
|
+
return requests.postRequestHandler(Endpoints.copyRequirement(sourceRequirementId), apiKey,
|
|
10
|
+
newRequirementOverrides).then(res => res.data);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
module.exports = { copyRequirement };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const requirementsApi = require('./requirements.api');
|
|
2
|
+
|
|
3
|
+
const { validateType } = require('../../../common/validations/typeValidations');
|
|
4
|
+
const CopyRequirementModel = require('./models/copy.requirement.model');
|
|
5
|
+
|
|
6
|
+
const copyRequirement = async (apiKey, copyRequirementModel) => {
|
|
7
|
+
validateType(copyRequirementModel, CopyRequirementModel);
|
|
8
|
+
const {
|
|
9
|
+
sourceRequirementId,
|
|
10
|
+
destinationTabId,
|
|
11
|
+
newRequirementName,
|
|
12
|
+
certificateHolder,
|
|
13
|
+
additionalInsured
|
|
14
|
+
} = copyRequirementModel;
|
|
15
|
+
|
|
16
|
+
const newRequirementOverrides = { destinationTabId, newRequirementName, certificateHolder, additionalInsured };
|
|
17
|
+
return requirementsApi.copyRequirement(apiKey, sourceRequirementId, newRequirementOverrides);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
module.exports = { copyRequirement };
|
|
File without changes
|