@getjones/test-infra 1.1.1 → 1.1.3

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 (48) hide show
  1. package/README.md +50 -1
  2. package/package.json +2 -1
  3. package/src/env.js +7 -1
  4. package/src/index.js +19 -4
  5. package/src/saas/internal-api/auth/api/auth.setup.js +11 -1
  6. package/src/saas/internal-api/coi/api/coi.api.js +29 -0
  7. package/src/saas/internal-api/coi/api/coi.setup.js +18 -0
  8. package/src/saas/internal-api/coi/index.js +6 -0
  9. package/src/saas/internal-api/coi/models/submit.coi.model.js +9 -0
  10. package/src/saas/internal-api/compliance/api/audit/audit.api.js +26 -0
  11. package/src/saas/internal-api/compliance/api/audit/audit.setup.js +18 -0
  12. package/src/saas/internal-api/compliance/api/waive/waive.api.js +23 -0
  13. package/src/saas/internal-api/compliance/api/waive/waive.setup.js +15 -0
  14. package/src/saas/internal-api/compliance/index.js +10 -0
  15. package/src/saas/internal-api/compliance/models/audit/audit.model.js +72 -0
  16. package/src/saas/internal-api/compliance/models/waive/waive.model.js +45 -0
  17. package/src/saas/internal-api/contractors/api/contractors.api.js +37 -1
  18. package/src/saas/internal-api/contractors/api/contractors.setup.js +39 -3
  19. package/src/saas/internal-api/contractors/index.js +2 -1
  20. package/src/saas/internal-api/contractors/models/edit.contractor.model.js +24 -0
  21. package/src/saas/internal-api/projects/api/{projects.api.js → core/projects.api.js} +2 -2
  22. package/src/saas/internal-api/projects/api/{projects.setup.js → core/projects.setup.js} +15 -4
  23. package/src/saas/internal-api/projects/api/settings/project.settings.api.js +18 -0
  24. package/src/saas/internal-api/projects/api/settings/project.settings.setup.js +17 -0
  25. package/src/saas/internal-api/projects/index.js +15 -3
  26. package/src/saas/internal-api/projects/models/settings/update.project.settings.model.js +34 -0
  27. package/src/saas/internal-api/reports/api/reports.api.js +12 -0
  28. package/src/saas/internal-api/reports/api/reports.setup.js +11 -0
  29. package/src/saas/internal-api/reports/index.js +11 -0
  30. package/src/saas/internal-api/reports/models/report.model.js +42 -0
  31. package/src/saas/internal-api/requirements/api/requirements.api.js +8 -3
  32. package/src/saas/internal-api/requirements/api/requirements.setup.js +5 -1
  33. package/src/saas/internal-api/tabs/api/tabs.api.js +7 -2
  34. package/src/saas/internal-api/tabs/api/tabs.setup.js +6 -0
  35. package/src/saas/internal-api/users/api/invite.api.js +29 -0
  36. package/src/saas/internal-api/users/api/invite.setup.js +19 -0
  37. package/src/saas/internal-api/users/index.js +3 -0
  38. package/src/saas/openapi/common/requests.js +19 -1
  39. package/src/saas/openapi/contractors/contractors.api.js +15 -0
  40. package/src/saas/openapi/contractors/contractors.setup.js +11 -0
  41. package/src/saas/openapi/projects/projects.api.js +38 -0
  42. package/src/saas/openapi/projects/projects.setup.js +29 -0
  43. package/src/saas/openapi/requirements/index.js +6 -0
  44. package/src/saas/openapi/requirements/models/copy.requirement.model.js +10 -0
  45. package/src/saas/openapi/requirements/requirements.api.js +13 -0
  46. package/src/saas/openapi/requirements/requirements.setup.js +20 -0
  47. package/src/saas/thread-scheduler/runner.js +17 -0
  48. /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.1",
3
+ "version": "1.1.3",
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
@@ -4,6 +4,7 @@ let privateMembers = {
4
4
  credentials: null,
5
5
  environment: null,
6
6
  accountCreationSecret: null,
7
+ threadSchedulerSecret: null
7
8
  };
8
9
 
9
10
  const init = conf => {
@@ -28,8 +29,13 @@ const requiredValidation = object => {
28
29
  }
29
30
  };
30
31
 
32
+ const isLocalhost = () => {
33
+ return privateMembers.backendUrl.includes('localhost');
34
+ };
35
+
31
36
  module.exports = {
32
37
  init,
33
38
  getEnv: () => privateMembers,
34
- requiredValidation
39
+ requiredValidation,
40
+ isLocalhost
35
41
  };
package/src/index.js CHANGED
@@ -4,11 +4,12 @@ const init = conf => {
4
4
  env.init(conf);
5
5
  const internalAPI = getInternalAPI();
6
6
  const openAPI = getOpenAPI();
7
- return { internalAPI, openAPI };
7
+ const threadScheduler = require('./saas/thread-scheduler/runner');
8
+
9
+ return { internalAPI, openAPI, threadScheduler };
8
10
  };
9
11
 
10
12
  const getInternalAPI = () => {
11
-
12
13
  const auth = require('./saas/internal-api/auth');
13
14
  const accounts = require('./saas/internal-api/accounts');
14
15
 
@@ -18,20 +19,34 @@ const getInternalAPI = () => {
18
19
  const requirements = require('./saas/internal-api/requirements');
19
20
  const contractors = require('./saas/internal-api/contractors');
20
21
 
22
+ const coi = require('./saas/internal-api/coi');
23
+ const compliance = require('./saas/internal-api/compliance');
24
+ const users = require('./saas/internal-api/users');
25
+
26
+ const reports = require('./saas/internal-api/reports');
27
+
21
28
  const internalAPI = {
22
29
  auth,
23
30
  accounts,
24
31
  projects,
25
32
  tabs,
26
33
  requirements,
27
- contractors
34
+ contractors,
35
+ coi,
36
+ compliance,
37
+ reports,
38
+ users,
28
39
  };
40
+
29
41
  return internalAPI;
30
42
  };
31
43
 
32
44
  const getOpenAPI = () => {
33
45
  const tabs = require('./saas/openapi/tabs/tabs.setup');
34
- const openAPI = { tabs };
46
+ const contractors = require('./saas/openapi/contractors/contractors.setup');
47
+ const projects = require('./saas/openapi/projects/projects.setup');
48
+ const requirements = require('./saas/openapi/requirements');
49
+ const openAPI = { tabs, contractors, projects, requirements };
35
50
  return openAPI;
36
51
 
37
52
  };
@@ -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,6 @@
1
+ const submitCoiModel = require('./models/submit.coi.model');
2
+ const services = require('./api/coi.setup');
3
+
4
+ const models = { submit: submitCoiModel };
5
+
6
+ module.exports = { services, models };
@@ -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,12 @@ 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`,
11
+ edit: contractorId => `${backendUrl}/saas/contractors/${contractorId}/update`,
12
+ updateVendorExpiryDate: contractorId => `${backendUrl}/_saas/automation/contractor/${contractorId}/expiry-date`
8
13
  };
9
14
 
10
15
  const createContractors = async (createContractorModel, context) => {
@@ -15,8 +20,39 @@ const getContractorsByAccountId = async (params, context) => {
15
20
  return requests.getRequestHandler(Endpoints.get, params, context).then(res => res.data);
16
21
  };
17
22
 
23
+ const getContractorById = async (contractorId, context) => {
24
+ return requests.getRequestHandler(Endpoints.getContractorById(contractorId), {}, context).then(res => res.data);
25
+ };
26
+
18
27
  const deleteByContractorId = async (contractorId, context) => {
19
28
  return requests.deleteRequestHandler(Endpoints.delete(contractorId), context);
20
29
  };
21
30
 
22
- module.exports = { createContractors, getContractorsByAccountId, deleteByContractorId };
31
+ const archiveByContractorId = async (contractorId, context) => {
32
+ return requests.deleteRequestHandler(Endpoints.archive(contractorId), context);
33
+ };
34
+
35
+ const restoreByContractorId = async (contractorId, context) => {
36
+ return requests.postRequestHandler(Endpoints.restore(contractorId), {}, context);
37
+ };
38
+
39
+ const editContractor = async (editContractorModel, context) => {
40
+ const params = { updateInfoUser: 'EditVendor' };
41
+ return requests.postRequestHandler(Endpoints.edit(editContractorModel.contractorId), editContractorModel, context, {}, params).then(res => res.data);
42
+ };
43
+
44
+ const updateExpiryDate = async (contractorId, expiryDate, policyName) => {
45
+ const data = { [policyName]: expiryDate };
46
+ return requests.postRequestHandler(Endpoints.updateVendorExpiryDate(contractorId), data);
47
+ };
48
+
49
+ module.exports = {
50
+ createContractors,
51
+ getContractorsByAccountId,
52
+ getContractorById,
53
+ deleteByContractorId,
54
+ archiveByContractorId,
55
+ restoreByContractorId,
56
+ editContractor,
57
+ updateExpiryDate
58
+ };
@@ -1,18 +1,54 @@
1
1
  const contractorsAPI = require('./contractors.api');
2
2
  const { CreateContractorModel } = require('../models/create.contractor.model');
3
+ const { ContractorModel } = require('../models/edit.contractor.model');
3
4
  const { validateType } = require('../../../../common/validations/typeValidations');
5
+ const requests = require('../../common/requests');
4
6
 
5
7
  const createContractors = async (createContractorsModel, context) => {
6
8
  validateType(createContractorsModel, CreateContractorModel);
7
9
  return contractorsAPI.createContractors(createContractorsModel, context);
8
10
  };
9
11
 
10
- const getContractorsByAccountId = async (accountId, context) => {
11
- return contractorsAPI.getContractorsByAccountId({ accountId }, context);
12
+ const getContractorsByAccountId = async (accountId, context, activationStatus = null) => {
13
+ if (activationStatus) {
14
+ activationStatus = activationStatus.reduce((f, s) => `${f},${s}`);
15
+ }
16
+
17
+ return contractorsAPI.getContractorsByAccountId({ accountId, activationStatus }, context);
18
+ };
19
+
20
+ const getContractorById = (contractorId, context) => {
21
+ return contractorsAPI.getContractorById(contractorId, context);
12
22
  };
13
23
 
14
24
  const deleteByContractorId = (contractorId, context) => {
15
25
  return contractorsAPI.deleteByContractorId(contractorId, context);
16
26
  };
17
27
 
18
- module.exports = { createContractors, getContractorsByAccountId, deleteByContractorId };
28
+ const archiveByContractorId = (contractorId, context) => {
29
+ return contractorsAPI.archiveByContractorId(contractorId, context);
30
+ };
31
+
32
+ const restoreByContractorId = (contractorId, context) => {
33
+ return contractorsAPI.restoreByContractorId(contractorId, context);
34
+ };
35
+
36
+ const editContractor = async (editContractorModel, context) => {
37
+ validateType(editContractorModel, ContractorModel);
38
+ return contractorsAPI.editContractor(editContractorModel, context);
39
+ };
40
+
41
+ const updateExpiryDate = async (contractorId, expiryDate, policyName) => {
42
+ return contractorsAPI.updateExpiryDate(contractorId, expiryDate, policyName);
43
+ };
44
+
45
+ module.exports = {
46
+ createContractors,
47
+ getContractorsByAccountId,
48
+ getContractorById,
49
+ deleteByContractorId,
50
+ archiveByContractorId,
51
+ restoreByContractorId,
52
+ editContractor,
53
+ updateExpiryDate
54
+ };
@@ -1,6 +1,7 @@
1
1
  const createModel = require('./models/create.contractor.model');
2
+ const editModel = require('./models/edit.contractor.model');
2
3
  const services = require('./api/contractors.setup');
3
4
 
4
- const models = { create: createModel };
5
+ const models = { create: createModel, edit:editModel };
5
6
 
6
7
  module.exports = { services, models };
@@ -0,0 +1,24 @@
1
+ const { validateType } = require('../../../../common/validations/typeValidations');
2
+
3
+ function ContractorModel(contractorId, company, emailAddress, tab, tenantRecord) {
4
+ this.contractorId = contractorId;
5
+ this.company = company;
6
+ this.emailAddress = emailAddress;
7
+ this.tab = tab;
8
+ this.tenantRecord = tenantRecord;
9
+
10
+ validateType(tenantRecord, TenantRecordModel);
11
+ validateType(tab, VendorTabModel);
12
+ }
13
+
14
+ function TenantRecordModel(id, companyName, emailAddress) {
15
+ this.id = id;
16
+ this.companyName = companyName;
17
+ this.emailAddress = emailAddress;
18
+ }
19
+
20
+ function VendorTabModel(type){
21
+ this.type = type;
22
+ }
23
+
24
+ module.exports = { ContractorModel, TenantRecordModel, VendorTabModel };
@@ -1,5 +1,5 @@
1
- const requests = require('../../common/requests');
2
- const { backendUrl } = require('../../../../env').getEnv();
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('../../accounts/api/core/accounts.core.setup');
3
- const { validateType } = require('../../../../common/validations/typeValidations');
4
- const CreateProjectModel = require('../models/create.project.model');
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 services = require('./api/projects.setup');
2
- const CreateProjectModel = require('./models/create.project.model');
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 models = { CreateProjectModel };
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,11 @@
1
+ const reportService = require('./api/reports.setup');
2
+ const reportModels = require('./models/report.model');
3
+
4
+ const services = {
5
+ report: reportService
6
+ };
7
+ const models = {
8
+ report: reportModels,
9
+ };
10
+
11
+ module.exports = { models, services };
@@ -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
- get: `${backendUrl}/saas/requirements`,
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.get, { tabId }, context).then(res => res.data);
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
- delete: `${backendUrl}/saas/vendortab`,
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
@@ -0,0 +1,29 @@
1
+ const requests = require('../../common/requests');
2
+ const { backendUrl } = require('../../../../env').getEnv();
3
+
4
+ const Endpoints = {
5
+ invite: projectId => `${backendUrl}/saas/project/${projectId}/team-member`,
6
+ getByProjectId: projectId => `${backendUrl}/saas/project/${projectId}/team-members`,
7
+ getByEmail: email => `${backendUrl}/saas/team-member/by-email/${email}`,
8
+ delete: userId => `${backendUrl}/saas/users/${userId}`,
9
+ };
10
+
11
+ const invite = async (projectId, invitedUser, context) => {
12
+ return requests.putRequestHandler(Endpoints.invite(projectId), invitedUser, context).then(
13
+ res => res.data
14
+ );
15
+ };
16
+
17
+ const getUsersByProjectId = async (projectId, context) => {
18
+ return requests.getRequestHandler(Endpoints.getByProjectId(projectId), null, context).then(res => res.data);
19
+ };
20
+
21
+ const getUserByEmail = async (email, context) => {
22
+ return requests.getRequestHandler(Endpoints.getByEmail(email), null, context).then(res => res.data);
23
+ };
24
+
25
+ const deleteUser = async (userId, context) => {
26
+ return requests.deleteRequestHandler(Endpoints.delete(userId), context);
27
+ };
28
+
29
+ module.exports = { invite, getUsersByProjectId, getUserByEmail, deleteUser };
@@ -0,0 +1,19 @@
1
+ const inviteUserAPI = require('./invite.api');
2
+
3
+ const invite = async (projectId, invitedUser, context) => {
4
+ return inviteUserAPI.invite(projectId, invitedUser, context);
5
+ };
6
+
7
+ const getUsersByProjectId = async (projectId, context) => {
8
+ return inviteUserAPI.getUsersByProjectId(projectId, context);
9
+ };
10
+
11
+ const getUserByEmail = async (email, context) => {
12
+ return inviteUserAPI.getUserByEmail(email, context);
13
+ };
14
+
15
+ const deleteUser = (userId, context) => {
16
+ return inviteUserAPI.deleteUser(userId, context);
17
+ };
18
+
19
+ module.exports = { invite, getUsersByProjectId, getUserByEmail, deleteUser };
@@ -0,0 +1,3 @@
1
+ const services = require('./api/invite.setup');
2
+
3
+ module.exports = { services };
@@ -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 = { getRequestHandler, postRequestHandler, putRequestHandler, deleteRequestHandler };
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,6 @@
1
+ const services = require('./requirements.setup');
2
+
3
+ const CopyRequirementModel = require('./models/copy.requirement.model');
4
+ const models = { CopyRequirementModel };
5
+
6
+ module.exports = { ...services, models };
@@ -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 };
@@ -0,0 +1,17 @@
1
+ const requests = require('../internal-api/common/requests');
2
+ const { backendUrl, threadSchedulerSecret } = require('../../env').getEnv();
3
+
4
+ const Endpoints = {
5
+ run: `${backendUrl}/threadSchedular/${threadSchedulerSecret}`
6
+ };
7
+
8
+ const runThreadScheduler = ({ contractorIds = null } = {}) => {
9
+ if (contractorIds) {
10
+ contractorIds = contractorIds.reduce((f, s) => `${f},${s}`);
11
+ }
12
+
13
+ const params = { contractorIdsList: contractorIds };
14
+ return requests.getRequestHandler(Endpoints.run, params);
15
+ };
16
+
17
+ module.exports = { runThreadScheduler };